第三章 VIVADO 自定義IP 流水燈實驗


 

第二章里面已經說過了,MIZ701 PL部分沒有輸入時鍾,因此驅動PL資源必須是通過PS來提供時鍾,所以這個流水燈實驗也得建立一個最小系統了,然后再添加一個流水燈的自定義IP。

3.0本章難度系數★☆☆☆☆☆

3.1 硬件圖片

先來熟悉一下開發板的硬件:LED部分及按鈕部分

wps9671.tmp

3.2 硬件原理圖

wps9681.tmpwps9682.tmp

PIN腳定義:

LD_A0:F17

LD_A1:J15

LD_A2:G14

LD_A3:D18

LD_B0:M14

LD_B1:M15

BIN0:R18

BIN1:T17

SW0:MIO50

SW1:MIO51

3.3VIVADO創建自定義圖形IP

Step1:創建一個新的空的工程,這個前面已經講過了,唯一要注意的是規范,筆者在創建之前就新建了ip_repo文件夾用於管理自定義IP,讀者可以參考筆者的文件管理方式。

wps9693.tmp

Step2:新建工程LED_ML 並且保存到ip_repo文件夾下,方便自定義管理,后面的過程參考第二章新建工程部分。

wps9694.tmp

Step3:新建完成后,可以看到下面大紅框的文件,然后在新建一個IPSRC的文件夾,並且把led_ml.v文件復制進去

wps96A4.tmp

wps96A5.tmp

LED_ML.v源碼

// Target Devices: XC7Z020-FGG484

// Tool versions: VIVADO2015.4

// Description: water led

// Revision: V1.1

// Additional Comments:

//1) _i PIN input

//2) _o PIN output

//3) _n PIN active low

//4) _dg debug signal

//5) _r reg delay

//6) _s state machine

//////////////////////////////////////////////////////////////////////////////

module LED_ML(

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'b0001;

C0 <= 32'h0;

end

else

begin

if(C0 == 32'd50_000_000)

begin

C0 <= 32'h0;

if(LED_o == 4'b1000)

LED_o <= 4'b0001;

else LED_o <= LED_o << 1;

end

else begin C0 <= C0 + 1'b1; LED_o <= LED_o; end

end

endmodule

Step4:選擇Add Sources添加LED_ML.v文件

wps96A6.tmp

wps96B7.tmp

wps96B8.tmp

wps96B9.tmp

Step5:添加完成后如圖

wps96BA.tmp

Step6:添加完成進行創建IP  選擇Tools-> Create and Package IP

wps96CB.tmp

wps96CC.tmp

wps96CD.tmp

wps96CE.tmp

wps96CF.tmp

Step7:創建完成后如下圖

wps96D0.tmp

3.4VIVADO添加自定義IP

Step1:打開VIVADO工程,筆者這里直接復制上一章節的工程后打開工程文件,打開工程后,單機Project Setting

wps96E0.tmp

Step2:添加IP

wps96E1.tmp

wps96E2.tmp

Step2:添加完成后如下圖,單擊OK 完成

wps96E3.tmp

Step3:雙擊system工程,然后可以可拿到出來了添加IP的控件,選擇添加IP

wps96E4.tmp

Step4:添加LED_ML IP

wps96E5.tmp

Step5:完成連線注意引出到外部的端口,只要把鼠標放到相應的端口上,右擊

Make Exteral就可以了

wps96F6.tmp

Step6:右擊 system 選擇Generate Output Products

wps96F7.tmp

Step7:右擊 system 選擇 Create HDL Wrapper

wps96F8.tmp

Step8:添加PIN 約束

Zynq_pin.xdc

set_property PACKAGE_PIN E17 [get_ports PHY_Rst[0]]

set_property IOSTANDARD LVCMOS33 [get_ports PHY_Rst[0]]

set_property PACKAGE_PIN F17 [get_ports {LED_o[0]}]

set_property IOSTANDARD LVCMOS33 [get_ports {LED_o[0]}]

set_property PACKAGE_PIN J15 [get_ports {LED_o[1]}]

set_property IOSTANDARD LVCMOS33 [get_ports {LED_o[1]}]

set_property PACKAGE_PIN G14 [get_ports {LED_o[2]}]

set_property IOSTANDARD LVCMOS33 [get_ports {LED_o[2]}]

set_property PACKAGE_PIN D18 [get_ports {LED_o[3]}]

set_property IOSTANDARD LVCMOS33 [get_ports {LED_o[3]}]

set_property PACKAGE_PIN R18 [get_ports {RSTn_i}]

set_property IOSTANDARD LVCMOS33 [get_ports {RSTn_i}]

3.5 編譯並且產生bit文件

Step1:單擊綜合

Step2:單擊執行

Step3:單擊產生bit(可以直接最后一步)

wps96F9.tmp

3.6導出到SDK直接運行任何一個程序

導出到SDK后直接運行任何一個程序,FCLK_CLK0就會運行了

3.7實驗結果

下載過程下載完成后LED流水燈就運行起來了。


3.8本章小結

本章詳細講解了VIVADO 下如何創建自定義的工程,並且通過IP連線快速完成工程設計。由於LED 是PL資源需要PL時鍾才能工作,本章從PS部分的PLL引出的時鍾輸入給PL部分的LED程序。之后啟動SDK,SDK C程序運行后,由於FCLK_CLK0就啟動了,之后流水燈就跑起來了。

源碼下載地址;鏈接:http://pan.baidu.com/s/1c2fuVPe 密碼:s9ig


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM