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