Xlinx_ZYNQ7Z020——2. Led工程
2. LED工程
Add Sources
- 打开Vivado,点击QuickStart,创建新工程
- 命名工程名字,以及文件路径等
- 选择RTL Project(寄存器传输级工程)
- 无需添加约束,点击下一步
- 选择芯片型号等
- 点击Finish创建完毕
- 新建工程文件,右键Design Source
- Add design source
- Create File,命名,点击OK,点击Finish完成即可
- 会弹出提示,定义模块,可以选择Cancel取消,从代码中定义
编写代码
Led工程
`timescale 1ns / 1ps //1是数据1 ,不是字母l; 前面1ns表示时间单位,1ps表示时间精度;
module led //模块名是led
(
input wire sys_clk, //inut默认类型是wire型
output reg[3:0] led
);
reg [31:0] timer_cnt; //计数器32位
initial //代表了程序开始,
begin
//<=表示同时执行,同时赋值,称为非阻塞赋值;=赋值为阻塞赋值
led<= 4'b1111; //4'b1111 表示4位二进制1111;4’hf1111表示4位16进制
timer_cnt <=32'd0;//32位10进制0;b、o、d、h表示二进制、八进制、十进制、十六进制代表
end
[email protected](posedge sys_clk) //表示始终执行[email protected](条件);posedge表示上升沿,negegde表示下降沿 ;
begin
if(timer_cnt>=32'd49_999_999)//49_999_999阅读方便;板载晶振50MHz,一秒钟50M下,因此0到49_999_999正好是1秒钟;
begin
led<=~led;
timer_cnt<=32'd0;
end
else
begin
led<=led;
timer_cnt <=timer_cnt+32'd1;
end
end
endmodule
- 保存之后led.v工程文件会自动变成顶层模块,表示所有程序都从这个地方开始执行,相当于main.c
SIMULATION
- 添加仿真源文件
- 添加文件
- 取消模块定义
- 编辑led_test.v文件
`timescale 1ns / 1ns //1是数据1 ,不是字母l; 前面1ns表示时间单位,后面的1ns表示时间精度;
//默认是1ps,但是仿真的进度越高,那么仿真的速度越慢,在这里没有必要;
module led_test //模块名是led_test
(
);
reg sys_clk;
wire [3:0]led;
initial
begin
sys_clk=0;
end
always #10 sys_clk<=~sys_clk;//50MHz,时间为20ns;always # 10 表示延时10个时间单位,及最上方的timescale的1ns时间单位;
//因此表示10ns翻转一次;一个周期翻转2次,及20ns,因此是50MHz;
led led_test
(
.sys_clk(sys_clk),
.led(led)
);
endmodule
- 点击SIMULATION 的Run Simulation即可
RTL ANALYSIS
- 点击RTL ANALYSIS进行约束设置(设置对应引脚)
- 接着打开菜单栏上方的Windows,选择I/O Ports
- 电平标准改为LVCMOS33即对应3.3V
- 接着去板子原理图或者开发板用户手册查找时钟源管脚,以及Led管脚
- Package Pin改为实际板子上的对应管脚即可
- 保存xdc文件即可
SYNTHESIS
- 点击SYNTHESIS,启动综合,启动多线程综合
- 综合完毕之后,打开Open Synthesized Design可以看到资源信息
- 接着创建时钟约束,点击Constraints Wizard约束向导
- 输入50MHz,点击Skip to Finish即可
- 之所以创建时钟约束,是因为可以在Project Summary中Power功耗部分是利用时钟来进行估计的
- 但是不设置时钟约束,程序也是可以运行的
- 设置完时钟约束之后,要重新进行综合,因为out of date过期了
IMPLEMENTATION
- 点击Run Implementation 即可实现,并且可以在Projcet Summary中可以看到所有的摘要等
- 功耗、资源利用情况等
PROGRAM AND DEBUG
- 点击Generate Bitstream创建比特流文件
- 接着打开Open HardWare Manager
- 将板子上电,连接J-TAG接口,点击工程上方的Open target
- 检测到设备之后点击Program device
- 即可看到板子上灯的闪烁