FPGA学习——Xilinx Vivado 实现led流水灯详解

FPGA学习——Xilinx Vivado 实现led流水灯详解

整个流程

  • 创建工程
  • 设计代码、编写功能
  • RTL分析——引脚定义和绑定
  • 综合synthesis
  • 时序约束
  • 仿真设置并配置激励文件(中小等项目可跳过,直接在线调试毕竟仿真时间太久)
  • 生成bit文件导入fpga中——在线调试
  • 判断是否达成目标功能

1. 建立工程

  建立led工程,然后Next直到选择开发板型号(我的是xilinx黑金zynq7010),选错也没事,后面进入工程可以修改,选好就按finish完成
FPGA学习——Xilinx Vivado 实现led流水灯详解_第1张图片
FPGA学习——Xilinx Vivado 实现led流水灯详解_第2张图片

2. 编写功能代码

主界面如下,点击加号添加资源文件led.v,然后点击finish-ok-yes完成,并编写代码
FPGA学习——Xilinx Vivado 实现led流水灯详解_第3张图片
FPGA学习——Xilinx Vivado 实现led流水灯详解_第4张图片
插入此段代码,实现流水灯,还有其它几种写法,不懂可以讨论。

//代码如下
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引脚)
两种方法实现:FPGA学习——Xilinx Vivado 实现led流水灯详解_第5张图片FPGA学习——Xilinx Vivado 实现led流水灯详解_第6张图片

- 图形界面设置: 设置好点击保存FPGA学习——Xilinx Vivado 实现led流水灯详解_第7张图片FPGA学习——Xilinx Vivado 实现led流水灯详解_第8张图片

- 代码设置:
新建并打开led.xdc文件,设置引脚和电平。
FPGA学习——Xilinx Vivado 实现led流水灯详解_第9张图片

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]

FPGA学习——Xilinx Vivado 实现led流水灯详解_第10张图片

5. run synthesis综合

FPGA学习——Xilinx Vivado 实现led流水灯详解_第11张图片
综合完成后出现这个框框可以关掉,也可以直接选择对应操作进行,把鼠标放在对应选择上有提示出现。
FPGA学习——Xilinx Vivado 实现led流水灯详解_第12张图片

6. 时序约束

FPGA学习——Xilinx Vivado 实现led流水灯详解_第13张图片

create_clock -period 20.000 -name clk -waveform {0.000 10.000} [get_ports clk]     //在led.xdc代码最后插入

FPGA学习——Xilinx Vivado 实现led流水灯详解_第14张图片

7. 在线调试

FPGA学习——Xilinx Vivado 实现led流水灯详解_第15张图片
FPGA学习——Xilinx Vivado 实现led流水灯详解_第16张图片
FPGA学习——Xilinx Vivado 实现led流水灯详解_第17张图片

8.仿真调试和使用自带的逻辑分析仪(后面补充)

你可能感兴趣的:(fpga,fpga)