流水燈實驗是FPGA 的入門實驗。最簡單并且得到實在的體驗,我們就從這裡開始zynq 7000的體驗吧。
本實驗包括3部分:建立工程,添加和建立檔案,比特流産生和程式設計。
1:建立工程:打開Vivado,在如下界面裡選擇建立工程,Create Project。
由于不同的vivado的版本,可能界面不一,但都是找到Create Project。
出現create project 界面時,選擇Next。在如下界面輸入工程的名字,這裡是run_led,同時也要選擇工程的存放檔案夾。
到如下界面時,選擇RTL Project, 勾取Do not specify soources at this time。
到這個界面,選擇Part,太多了,不好選擇,可以指定一些條件,我們這裡選擇系列為Zynq-7000。
再選擇封裝為clg400,就看到了我的Part, 我的是:xc7z010clg400-1。不同的闆子這裡可能不同,你要查詢好你的Part 型号。
到這裡是個彙總,有不對的,可以傳回選擇。
工程建立完了,就是這個樣子。看看圖中2個紅箭,下面我們要添加2個檔案在這裡。
2:添加或建立檔案:
在工程管理界面裡,添加設計源碼檔案。先選擇Design Source,然後右鍵或下圖中+按鈕,Add Source。
這裡選擇添加檔案類型,這裡是 Add or create design sources。
選擇 Next 後到如下界面,可以添加或者建立檔案,這裡選擇Create File
出現對話框,這裡輸入檔案名led_top,還有檔案位置。
OK 之後,回到如下界面。檔案已在清單中。
選擇Finish 後,出現如下界面,OK就好了。
還有這一個對話框,Yes。
回到管理界面了。Design Sources 下有了檔案,點一下,右邊就會顯示出來,可以編輯修改。
在限制下還要添加檔案。點一下 Constraints, 與上面添加檔案一樣操作。右鍵或+按鈕, Add Source。
這裡檔案類型選擇是 Add or create constraints。
限制檔案取名run_led,點開可以右邊顯示。
看看我們建立的2個檔案都顯示在右邊。右上可以最大化。
檔案都建立好了,現在要修改檔案的内容了。
led_top.v檔案内容如下:
module led_top(
input CLK_i,
input RSTn_i,
output reg [3:0]LED_o
);
reg [31:0]C0;
always @(posedge CLK_i)
if(!RSTn_i)
begin
LED_o <= 4'b1;
C0 <= 32'h0;
end
else
begin
if(C0 == 32'd50_000_000)
begin
C0 <= 32'h0;
if(LED_o == 4'b1000)
LED_o <= 4'b1;
else LED_o <= LED_o << 1;
end
else
begin
C0 <= C0 + 1'b1;
LED_o <= LED_o;
end
end
endmodule
你可以這裡複制,粘貼過去。顯示如下,多了一些注釋之類的。
run_led.xdc 的内容與硬體相關。在這裡要注意你的硬體管腳對應關系。我這裡是米聯 MZ7XA 的硬體定義。
CLK_i H16
T19 RSTn_i
J16 LED_o[0]
K16 LED_o[1]
H15 LED_o[2]
G15 LED_o[3]
run_led.xdc 的内容如下,複制粘貼過去。如果管腳對應不一樣,修改這個内容。
create_clock -period 10.000 -name CLK_i [get_ports CLK_i]
set_property PACKAGE_PIN H16 [get_ports CLK_i]
set_property IOSTANDARD LVCMOS33 [get_ports CLK_i]
set_property PACKAGE_PIN T19 [get_ports RSTn_i]
set_property IOSTANDARD LVCMOS33 [get_ports RSTn_i]
set_property PACKAGE_PIN J16 [get_ports {LED_o[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {LED_o[0]}]
set_property PACKAGE_PIN K16 [get_ports {LED_o[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {LED_o[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {LED_o[2]}]
set_property PACKAGE_PIN H15 [get_ports {LED_o[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {LED_o[3]}]
set_property PACKAGE_PIN G15 [get_ports {LED_o[2]}]
檔案内容修改後,記得儲存。
3:比特流産生和程式設計運作
檔案内容都做好了,儲存檔案,然後點選Generate BitStream。
他會産生提示對話框,Yes就好。
還出現這個,OK
這個需要些時間,你可以看到右上在旋轉,表示在計算,看看日志在更新。
運作結束後會有如下完成對話框。這是告訴你結束了,下面怎麼做,可以Cancel, 也可以選擇一個下面的内容。這裡選擇紅箭訓示的 Open Hardware manager,完成了,我就打開硬體管理器。
如果你選擇了Cancel或者沒有選擇打開硬體管理,也可以如下圖打開硬體管理界面。Flow Navigator->Program and debug->Open Hardware Manager。還可以菜單Flow -> Open Hardware Manager。
硬體管理面闆如下。這裡說沒有連接配接硬體,你要連接配接好你的硬體,然後Open target
現在硬體連接配接上了,但還沒有程式設計裝置。按照紅箭的位置,點選 Program Devices。
選擇比特率檔案,如果沒有自動輸入,那你手動選擇,記得下圖檔案位置和名字。
點選Program , 程式就下載下傳并運作了。實驗也就結束了。