這篇博客將針對AMD Zynq 7000 SoC ZC706 Evaluation Kit板卡(對應(yīng)Vivado創(chuàng)建工程時FPGA型號:XC7Z045ffg900-2)實現(xiàn)基本的點燈程序。
假定已知的前置知識
本文對以下內(nèi)容不再介紹,
- 使用Vivado進行綜合、實現(xiàn)、生成比特流并燒錄FPGA
- FPGA的概念、Verilog的基礎(chǔ)語法
需求:
板卡時鐘為200MHz,讓板子上的一個LED燈保持0.5秒亮,0.5秒滅。
注意點:
①板卡使用JTAG接口燒錄時,必須將SW4撥為01,如圖所示:
②ZC706的時鐘都是差分時鐘,必須使用Verilog原語將其轉(zhuǎn)換為單端時鐘才可以直接使用:
IBUFGDS IBUFGDS_inst( .O(single_clock), //Clock buffer Output .I(clk_p), //Diff_p clock buffer input (connect directly to top-level port) .IB(clk_n) //Diff_n clock buffer input(connect directly to top-level port) );
其中IBUFGDS是Xilinx的原語,不需要引入IP,可以直接使用。文章來源:http://www.zghlxwxcb.cn/news/detail-830663.html
③對于200MHz的時鐘,即每秒運行210^8個周期,想要每0.5s亮,0.5秒滅,就是要求每0.5秒將led取反一次,
那么應(yīng)當(dāng)讓計數(shù)器,計數(shù)到110^8個周期時對led取反。文章來源地址http://www.zghlxwxcb.cn/news/detail-830663.html
代碼實現(xiàn):
頂層模塊
`timescale 1ns / 1ps
module top_module(
input clk_n,
input clk_p,
input rst_b,
output led
);
wire single_clock;
IBUFGDS IBUFGDS_inst(
.O(single_clock), //Clock buffer Output
.I(clk_p), //Diff_p clock buffer input (connect directly to top-level port)
.IB(clk_n) //Diff_n clock buffer input(connect directly to top-level port)
);
Hello hello_inst(
.clock(single_clock),
.reset(rst_b),
.io_led(led)
);
endmodule
led閃爍模塊
module Hello(
input clock,
input reset,
output io_led
);
reg [31:0] cntReg;
reg blkReg;
wire [31:0] _cntReg_T_1 = cntReg + 32'h1;
assign io_led = blkReg;
always @(posedge clock) begin
if (reset) begin
cntReg <= 32'h0;
end else if (cntReg == 32'd100_000_000) begin
cntReg <= 32'h0;
end else begin
cntReg <= _cntReg_T_1;
end
if (reset) begin
blkReg <= 1'h0;
end else if (cntReg == 32'd100_000_000) begin
blkReg <= ~blkReg;
end
end
endmodule
xdc約束
#綁定復(fù)位按鈕
set_property PACKAGE_PIN AK25 [get_ports rst_b]
#設(shè)置復(fù)位按鈕的IO電壓為2.5V
set_property IOSTANDARD LVCMOS25 [get_ports rst_b]
#對Verilog中的led端口和板卡上的Y21燈進行綁定
set_property PACKAGE_PIN Y21 [get_ports led]
#設(shè)置IO電壓為2.5V
set_property IOSTANDARD LVCMOS25 [get_ports led]
#clk_p和clk_n是兩個差分時鐘信號,要通過IBUFGDS原語轉(zhuǎn)化到單端時鐘再使用
set_property PACKAGE_PIN H9 [get_ports clk_p]
set_property PACKAGE_PIN G9 [get_ports clk_n]
set_property IOSTANDARD LVDS [get_ports clk_p]
set_property IOSTANDARD LVDS [get_ports clk_n]
到了這里,關(guān)于【IC設(shè)計】ZC706板卡點燈入門(含Verilog代碼,xdc約束,實驗截圖)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!