在 Run Conenction Automation 窗口內(nèi),我們選擇 Custom (其實(shí)也可以在這邊直接選擇 leds 4bits)
接下來勾選 S_AXI ,并點(diǎn)選 Ok 進(jìn)行確認(rèn)。
好了后會像這樣,我們接下來對 axi_gpio_0 這個區(qū)塊點(diǎn)兩下,進(jìn)行手動設(shè)定
在 IP Configuration 頁面,設(shè)定 GPIO 為輸出腳,并設(shè)寬度為 4 ,這邊我將輸出默認(rèn)值設(shè)定為 0xF, 也就是預(yù)設(shè)這四個 LED 用的輸出腳都是 High 的電壓。完成后點(diǎn)選 OK, 結(jié)束 AXI_GPIO 的設(shè)定。
接下來點(diǎn)選 Validate Design 按鈕,我們要確認(rèn)我們的 Block Design 沒問題才能夠繼續(xù)往下走。
正常來講不會有啥問題才對,我們結(jié)束 Block Design 的工作
加入 Constraints
在 zybo board 開發(fā)記錄: 透過可程序邏輯控制 LED 閃爍 一文有提到如何取得 Constraints 檔案,不過為了讓這篇文章完整,我們再講一次。
我們先連結(jié)到 Zybo Resource Center 去下載 Master XDC 檔案。
你也可以直接透過 wget 命令下載并解壓出 ZYBO_Master.xdc 這個檔案,它就是本節(jié)要加入的 Constraints 檔
coldnew@gentoo /tmp $ wget https://reference.digilentinc.com/_media/zybo/zybo_master_xdc.zip
coldnew@gentoo /tmp $ unzip zybo_master_xdc.zip
Archive: zybo_master_xdc.zip
inflating: ZYBO_Master.xdc
接下來一樣選擇 Project Manager -> Add sources 來增加檔案
這次我們要增加的是 Constraints 檔,因此選擇 Add or create constraints
透過 Add Files 添加剛剛下載的 ZYBO_Master.xdc 檔案
ZYBO_Master.xdc
在 ZYBO_Master.xdc 里面,預(yù)設(shè)所有對應(yīng)接腳都是被批注掉的,這邊我們反批注我們需要的 led 接腳,要記得一下這邊的 I/O 名稱,我們等等要和產(chǎn)生出來的 HDL Wrapper 進(jìn)行對應(yīng)的工作。
##LEDs
##IO_L23P_T3_35
set_property PACKAGE_PIN M14 [get_ports {led[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[0]}]
##IO_L23N_T3_35
set_property PACKAGE_PIN M15 [get_ports {led[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[1]}]
##IO_0_35
set_property PACKAGE_PIN G14 [get_ports {led[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[2]}]
##IO_L3N_T0_DQS_AD1N_35
set_property PACKAGE_PIN D18 [get_ports {led[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[3]}]
這樣我們就可以準(zhǔn)備將 Block Design 和硬件接腳對應(yīng)在一起了。
產(chǎn)生 HDL Wrapper
接下來我們要透過 Block Design 產(chǎn)生我們的 HDL wrapper,對你的 Block Design 檔案點(diǎn)選右鍵,選擇 Create HDL Wrapper 。它會根據(jù)你項(xiàng)目設(shè)定的語言 (VHDL 或是 Verilog) 來產(chǎn)生相對的 HDL 程序代碼。
產(chǎn)生出來的東西我們可能需要改些東西,為了避免麻煩這邊我選第一個選項(xiàng)。
好了后,假設(shè)你的 Block Design 檔案叫做 design_1.bd,那就會產(chǎn)生 design_1_wrapper.v 或是 design_1_wrapper.vhdl 這樣的檔案
我們接著要修改這個 HDL Wrapper,這是為什么呢? 回去看一下前面做好的 Block Design 以及 Constraints 的信息,我們可以看到 Block Design 設(shè)定好的 AXI_GPIO 其輸出腳叫做 gpio_rtl ,而在 COnstraints 中,我們目標(biāo)的 LED 輸出腳名稱是 led ,因此我們要調(diào)整一下這個 HDL Wrapper 讓 gpio_rtl 和 led 可以對應(yīng)在一起。
評論