第二章里面已經(jīng)說過了,MIZ701 PL部分沒有輸入時鐘,,因此驅(qū)動PL資源必須是通過PS來提供時鐘,,所以這個流水燈實驗也得建立一個最小系統(tǒng)了,然后再添加一個流水燈的自定義IP,。
3.0本章難度系數(shù)★★☆☆☆☆☆
3.1 硬件圖片
先來熟悉一下開發(fā)板的硬件:LED部分及按鈕部分
3.2 硬件原理圖
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創(chuàng)建自定義圖形IP
Step1:創(chuàng)建一個新的空的工程,,這個前面已經(jīng)講過了,唯一要注意的是規(guī)范,,筆者在創(chuàng)建之前就新建了ip_repo文件夾用于管理自定義IP,讀者可以參考筆者的文件管理方式,。
Step2:新建工程LED_ML 并且保存到ip_repo文件夾下,方便自定義管理,,后面的過程參考第二章新建工程部分,。
Step3:新建完成后,可以看到下面大紅框的文件,,然后在新建一個IPSRC的文件夾,,并且把led_ml.v文件復(fù)制進(jìn)去
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文件
Step5:添加完成后如圖
Step6:添加完成進(jìn)行創(chuàng)建IP 選擇Tools-> Create and Package IP
Step7:創(chuàng)建完成后如下圖
3.4VIVADO添加自定義IP
Step1:打開VIVADO工程,筆者這里直接復(fù)制上一章節(jié)的工程后打開工程文件,,打開工程后,,單機(jī)Project Setting
Step2:添加IP
Step2:添加完成后如下圖,單擊OK 完成
Step3:雙擊system工程,,然后可以可拿到出來了添加IP的控件,,選擇添加IP
Step4:添加LED_ML IP
Step5:完成連線注意引出到外部的端口,只要把鼠標(biāo)放到相應(yīng)的端口上,,右擊
Make Exteral就可以了
Step6:右擊 system 選擇Generate Output Products
Step7:右擊 system 選擇 Create HDL Wrapper
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 編譯并且產(chǎn)生bit文件
Step1:單擊綜合
Step2:單擊執(zhí)行
Step3:單擊產(chǎn)生bit(可以直接最后一步)
3.6導(dǎo)出到SDK直接運行任何一個程序
導(dǎo)出到SDK后直接運行任何一個程序,,F(xiàn)CLK_CLK0就會運行了
3.7實驗結(jié)果
下載過程下載完成后LED流水燈就運行起來了。
3.8本章小結(jié)
本章詳細(xì)講解了VIVADO 下如何創(chuàng)建自定義的工程,,并且通過IP連線快速完成工程設(shè)計,。由于LED 是PL資源需要PL時鐘才能工作,本章從PS部分的PLL引出的時鐘輸入給PL部分的LED程序,。之后啟動SDK,,SDK C程序運行后,由于FCLK_CLK0就啟動了,,之后流水燈就跑起來了,。
源碼下載地址;鏈接:http://pan.baidu.com/s/1c2fuVPe 密碼:s9ig
|