ZYNQ PL系列(一)VIVADO 的使用
第一章 VIVADO 的使用
前言
使用黑金的开发板,安装VIVADO 2017.4。
创建 Vivado 工程
- 启动 Vivado
- 在 Vivado 开发环境里点击“Create New Project”,创建一个新的工程。
- 弹出一个建立新工程的向导,点击“Next”
- 在弹出的对话框中输入工程名和工程存放的目录,我们这里取一个 led 的工程名。
- 在工程类型中选择“RTL Project”
- 目标语言“Target language”选择“Verilog”,虽然选择 Verilog,但 VHDL 也可以使用,支
持多语言混合编程。 - 点击“Next”,不添加任何文件
- 在“Part”选项中,器件家族“Family”选择“Zynq-7000”,“Package”选择“clg400”,Speed 选择”-1”,在下拉列表中选择“xc7z010clg400-1”
- 点击“Finish”就可以完成以后名为“led”工程的创建。
创建 Verilog HDL 文件点亮 LED
- 点击 Project Manager 下的 Add Sources 图标(或者使用快捷键 Alt+A)
- 选择添加或创建设计源文件“Add or create design sources”,点击“Next”
- 选择创建文件“Create File”
- 文件名“File name”设置为“led”,点击“OK”
- 点击“Finish”,完成“led.v”文件添加
- 在弹出的模块定义“Define Module”,中可以指定“led.v”文件的模块名称“Module name”,这里默认不变为“led”,还可以指定一些端口,这里暂时不指定,点击“OK”。
- 在弹出的对话框中选择“Yes”
- 双击“led.v”可以打开文件,然后编辑
- 编写“led.v”
module led(
input sys_clk,
input rst_n,
output reg [3:0] led
);
reg[31:0] timer_cnt;
always@(posedge sys_clk or negedge rst_n)
begin
if (!rst_n)
begin
led <= 4'd0 ;
timer_cnt <= 32'd0 ;
end
else if(timer_cnt >= 32'd49_999_999)
begin
led <= ~led;
timer_cnt <= 32'd0;
end
else
begin
led <= led;
timer_cnt <= timer_cnt + 32'd1;
end
end
endmodule
- 编写好代码后保存
添加管脚约束
Vivado 使用的约束文件格式为 xdc 文件。xdc 文件里主要是完成管脚的约束,时钟的约束,
以及组的约束。这里我们需要对 led.v 程序中的输入输出端口分配到 FPGA 的真实管脚上。
- 点击“Open Elaborated Design”
- 在弹出的窗口中点击“OK”按钮
- 在菜单中选择“Window -> I/O Ports”
- 在弹出的 I/O Ports 中可以看到管脚分配情况
- 将复位信号 rst_n 绑定到 PL 端的按键,给 LED 和时钟分配管脚、电平标准,完成后点击保存图标
- 弹出窗口,要求保存约束文件,文件名我们填写“led”,文件类型默认“XDC”,点击“OK”
- 打开刚才生成的“led.xdc”文件,我们可以看到是一个 TCL 脚本,如果我们了解这些语
法,完全可以通过自己编写 led.xdc 文件的方式来约束管脚
下面来介绍一下最基本的 XDC 编写的语法,普通 IO 口只需约束引脚号和电压,管脚约束
如下:
set_property PACKAGE_PIN "引脚编号" [get_ports “端口名称”]
电平信号的约束如下:
set_property IOSTANDARD "电平标准" [get_ports “端口名称”]
这里需要注意文字的大小写,端口名称是数组的话用{ }刮起来,端口名称必须和源代码中
的名字一致,且端口名字不能和关键字一样。
电平标准中“LVCMOS33”后面的数字指 FPGA 的 BANK 电压,LED 所在 BANK 电压为 3.3
伏,所以电平标准为“LVCMOS33”。Vivado 默认要求为所有 IO 分配正确的电平标准和管脚编
号。
添加时序约束
一个 FPGA 设计除了管脚分配以外,还有一个重要的约束,那就是时序约束,这里通过向
导方式演示如果进行一个时序约束。
- 点击“Run Synthesis”开始综合
- 弹出对话框点击“OK”
- 综合完成以后点击“Cancel”
- 点击“Constraints Wizard”
- 在弹出的窗口中点击“Next”
- 时序约束向导分析出设计中的时钟,这里把“sys_clk”频率设置为 50Mhz,然后点击“Skip to Finish”结束时序约束向导。
- 弹出的窗口中点击“OK”
- 点击“Finish”
- 这个时候 led.xdc 文件已经更新,点击“Reload”重新加载文件,并保存文件。
生成 BIT 文件
- 编译的过程可以细分为综合、布局布线、生成 bit 文件等,这里我们直接点击“Generate Bitstream”,直接生成 bit 文件。
- 在弹出的对话框中可以选择任务数量,这里和 CPU 核心数有关,一般数字越大,编译越快,点击“OK
- 这个时候开始编译,可以看到右上角有个状态信息,在编译过程中可能会被杀毒软件、电脑管家拦截运行,导致无法编译或很长时间没有编译成功。
- 编译中没有任何错误,编译完成,弹出一个对话框让我们选择后续操作,可以选择“Open Hardware Manger”,当然,也可以选择“Cancel”,我们这里选择 “Cancel”,先不下载。