目录
一、开发板资料相关介绍
二、创建Vivado工程
三、添加工程文件
四、仿真文件(此步骤可有可无,主要验证代码的正确性)
五、添加管脚约束文件
六、编译并产生bit文件
七、下载程序
本系列博客采用ZYNQ 7000系列的开发板。本章也可只使用其他开发板,后续主要以ZYNQ嵌入式SOC学习为主。
一、开发板资料相关介绍
开发板的相关硬件原理图:
开发板提供四个用户按键,按键原理图:
相关按键的管脚:开发板提供五个LED灯,LED原理图:
相关LED管脚定义:
二、 创建Vivado工程
启动vivado软件,并创建新建工程
创建名为 flow_led工程名,并保存在相应路径(注意不要有中文路径)
工程类型选择RTL描述
选择芯片的型号,可以筛选出对应的芯片,具体根据自己的芯片
可以看到我们创建工程的summary,以上设置也可以在后续操作中更改。
创建后的工程窗口:
三、添加工程文件
添加source文件,然后给source文件命名(命名规范),然后在Design Source中可以看到创建的flow_led.v文件,然后即可以编写我们的Verilog代码
双击我们创建的文件打开编辑器,可以看到创建的信息。博主用的编辑器为Gvim编辑器。
编写程序并添加工程信息
//省略
`timescale 1ns / 1ps
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 1. _i PIN input
// 2. _o PIN output
// 3. _n PIN active low
// 4. _dg debug signal
// 5. _r reg delay
// 6. _s state machine
//
module flow_led(
input clk_i, rst_n_i,
output reg [3:0] led_o
);
//define a count
reg [31:0] count;
//
always@(posedge clk_i)
begin
if (! rst_n_i) //reset
begin
count <= 0;
led_o <= 4'b0001;
end
else
begin
if (count == 32'd50_000_000 ) //count restart
begin
count <= 0;
if (led_o == 4'b1000) // and shift 1 bit
led_o <= 4'b0001;
else
led_o <= led_o << 1;
end
else
begin
count <= count + 1'b1; //or continue count
led_o <= led_o;
end
end
end
endmodule
四、仿真文件(此步骤可有可无,主要验证代码的正确性)
新建仿真文件testbench, 参考上面创建文件的方法,只需更改下面的步骤即可,并重新命名为tb_test。
打开并编写测试仿真文件
相关的测试编写规则可参考上一篇博文:https://blog.csdn.net/vivid117/article/details/90247582
编写测试内容:
module tb_test(
);
reg clk_i, rst_n_i; // the type of input is generally reg
wire [3:0] led_o; // the type of output is generally wire
//cite the module
flow_led flow_led_u(
.clk_i(clk_i),
.rst_n_i(rst_n_i),
.led_o(led_o)
);
//initial the module
initial begin
clk_i = 0;
rst_n_i = 0;
#10
rst_n_i =1;
end
always #0.001 clk_i = ~clk_i; // period is 2ps to fastly simulate
endmodule
仿真结果:仿真注意:由于仿真只是验证功能的正确性,可以适当的吧计数器的技术终值减小,以减小计数周期带来的大量仿真时间。
Vivado编译起来相当的慢,其实可以提高编译速度,在VIVADO中一个run编译时支持的线程数:
在tcl脚本处输入如下命令:
基于自己电脑线程数设置线程数,可以适当加快仿真速度。不过每次在执行imp之前都需要输入一次,这个不要忘记设置多线程的命令为:set_param general.maxThreads 4
读取当前线程数的命令:get_param general.maxThreads
五、添加管脚约束文件
管脚约束文件.xdc,添加约束文件一般有三种常用的方法,分别是手动添加xdc PIN管脚约束文件、直接加入已写好文件、综合后添加管脚约束文件。
我们采用综合后添加约束文件的方式。
综合工程
可以看到vivado右上方显示正在综合,并等待。
然后选择open synthesized design
可以查看schematic(按F4键或者在tools工具栏中选择):管脚配置:
选择工具栏中的Window的I/O Port, 可以看到如下,分别对其进行Pin管脚的配置和电平配置。
rst_n_i 对应T19. clk_i 对应H16,电平选择LVCOMOS33其他分别如下
然后保存生.XDC文件 即可:
打开可以看到如下信息(所以建议大家还是自己编写.XDC文件较好):
注:可以将电平约束的一组改写为:
set_property IOSTANDARD LVCMOS33 [get_ports {led_o[*]}]
优化管脚约束文件
为减小bit文件的大小,提高下载速度,在约束文件后添加:
六、编译并产生bit文件
综合,执行,产生bit文件
结果如下:
七、下载程序
首先给开发板供电,并连接好下载器。
然后按如下操作
可以看待如下信息
然后program device
找到产生的bit文件
program 即可以完成看到流水灯点亮。