FPGA學習——Xilinx Vivado 實現led流水燈詳解
整個流程
創建工程
設計代碼、編寫功能
RTL分析——引腳定義和綁定
綜合synthesis
時序約束
仿真設置並配置激勵文件(中小等項目可跳過,直接在線調試畢竟仿真時間太久)
生成bit文件導入fpga中——在線調試
判斷是否達成目標功能
1. 建立工程
建立led工程,然后Next直到選擇開發板型號(我的是xilinx黑金zynq7010),選錯也沒事,后面進入工程可以修改,選好就按finish完成
在這里插入圖片描述
在這里插入圖片描述
2. 編寫功能代碼
主界面如下,點擊加號添加資源文件led.v,然后點擊finish-ok-yes完成,並編寫代碼
主界面如上
在這里插入圖片描述
插入此段代碼,實現流水燈,還有其它幾種寫法,不懂可以討論。
//代碼如下 module led(clk,rst_n,led); input clk; //時鍾信號輸入 input rst_n; //復位信號 output reg [3:0] led; //4個led燈 reg [1:0] state; //標志位 reg [31:0] counter; //計數量 /* 也可以這樣表示引腳綁定變量在()中 module led( input clk, input rst_n, output reg [3:0] led); reg [1:0] state; reg [31:0] counter; */ always@(posedge clk or negedge rst_n) //時序電路非阻塞賦值寫法 begin if(!rst_n) begin led <= 4'b1111; state <= 2'd0; counter <= 32'd0; end else begin case(state) 0: begin led <= 4'b0111; if(counter < 32'd49_999_999) //50MHz,延時1s begin counter <= counter+32'd1; end else begin counter <= 0; state <= 2'd1; end end 1: begin led <= 4'b1011; if(counter < 32'd49_999_999) begin counter <= counter+32'd1; end else begin counter <= 0; state <= 2'd2; end end 2: begin led <= 4'b1101; if(counter < 32'd49_999_999) begin counter <= counter+32'd1; end else begin counter <= 0; state <= 2'd3; end end 3: begin led <= 4'b1110; if(counter < 32'd49_999_999) begin counter <= counter+32'd1; end else begin counter <= 0; state <= 2'd0; end end default: state <= 2'd0; endcase end end endmodule
3. RTL分析——引腳定義
重要!(根據開發板原理圖設置,這是我的led引腳)
兩種方法實現:在這里插入圖片描述在這里插入圖片描述
- 圖形界面設置: 設置好點擊保存在這里插入圖片描述在這里插入圖片描述
- 代碼設置:
新建並打開led.xdc文件,設置引腳和電平。
在這里插入圖片描述
set_property PACKAGE_PIN M14 [get_ports {led[0]}] //設置引腳接口 set_property PACKAGE_PIN M15 [get_ports {led[1]}] set_property PACKAGE_PIN K16 [get_ports {led[2]}] set_property PACKAGE_PIN J16 [get_ports {led[3]}] set_property PACKAGE_PIN U18 [get_ports clk] set_property PACKAGE_PIN N15 [get_ports rst_n] set_property IOSTANDARD LVCMOS33 [get_ports {led[3]}] //設置引腳電平 set_property IOSTANDARD LVCMOS33 [get_ports {led[2]}] set_property IOSTANDARD LVCMOS33 [get_ports {led[1]}] set_property IOSTANDARD LVCMOS33 [get_ports {led[0]}] set_property IOSTANDARD LVCMOS33 [get_ports clk] set_property IOSTANDARD LVCMOS33 [get_ports rst_n]
在這里插入圖片描述
5. run synthesis綜合
在這里插入圖片描述
綜合完成后出現這個框框可以關掉,也可以直接選擇對應操作進行,把鼠標放在對應選擇上有提示出現。
在這里插入圖片描述
6. 時序約束
在這里插入圖片描述
create_clock -period 20.000 -name clk -waveform {0.000 10.000} [get_ports clk] //在led.xdc代碼最后插入
1
在這里插入圖片描述
7. 在線調試
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
8.仿真調試和使用自帶的邏輯分析儀(后面補充)
原文鏈接:https://blog.csdn.net/moumourenaini/article/details/103892062