今天给大侠带来Vivado设计流程,话不多说,上货。
本篇通过创建一个简单的HDL工程,学会使用Vivado集成开发环境。学会如何使用Vivado进行设计、仿真、综合以及实现一个项目,生成比特流文件并下载到 FPGA开发板。
- 在Vivado中创建一个新的HDL工程项目
- 添加引脚约束(XDC)文件
- 编写测试平台(Testbench)进行功能仿真
- 综合、实现设计工程
- 生成比特流文件,下载到 FPGA开发板进行功能验证
操作步骤
1. 创建新的工程项目。
1) 双击桌面图标打开Vivado 2017.2,或者选择开始>所有程序>Xilinx Design Tools> Vivado 2017.2>Vivado 2017.2;
2) 点击‘Create Project’,或者单击File>New Project创建工程文件;
3) 弹出工程导向窗口,点击Next继续;
4) 将新的工程项目命名为‘lab1’,选择工程保存路径,勾选‘Create project subdirectory’,创建一个新的工程文件夹,点击Next继续;
5) 选择新建一个RTL工程,点击Next继续;
6) 使用下拉按键,将目标语言和仿真器语言都设置为Verilog;
点击左上角蓝色‘ ’按键,选择‘Add Files’,或者直接点击中间的‘Add Files’按键添加源文件;
查找文件(例如:C:Basys3_workshopsourceslab1),添加lab1.v文件。
添加完成后,我们可以看到lab1.v文件已经出现在列表中。如果‘Copy sources into project’没有勾选,需要勾选该选项将源文件复制到创建的工程文件夹中,点击Next继续。
7) 提示添加约束文件(Constraints),这个将会在后面进行介绍。此处先直接点击Next继续。
8) 选择目标FPGA器件
A. 如果没有在Vivado中安装Digilent开发板文件,那么在Board一项中将无法找到Basys3。在Parts一项中选择Basys3 FPGA的芯片xc7a35tcpg236-1。可以通过筛选器帮助快速找到器件:
Family: Artix-7
Package: cpg236
Speed grade: -1
B. 如果已经安装Digilent开发板文件,那么可以在Board一项中直接找到Basys3。同样,可以通过筛选器快速找到Basys3:
Vendor:digilentinc.com
Display Name: Basys3
Board Rev: C.0
9) 完成选择后点击Next继续,下一步会显示创建工程的总结信息,如项目名称、添加的源文件以及约束文件的数量和选择的目标FPGA器件。确认信息无误后,点击Finish完成工程创建。
10) 在Sources窗格中展开Design Sources,双击lab1.v在文本编辑器中打开源文件,查看源文件内容。
11) 查看RTL级电路原理图,在左侧的Flow Navigator中依次展开RTL ANALYSIS>Open Elaborated Design,点击‘Schematic’。
2. 使用Vivado内建仿真器对设计进行功能仿真
1) 搭建测试平台,添加‘lab1_tb.v’测试平台文件。
1.1 在Vivado界面左侧的Flow Navigator一栏中展开PROJECT MANAGER,点击‘Add Sources’。
1.2 选择‘Add or create simulation sources’,点击Next继续。
1.3 点击蓝色‘ ’选择‘Add Files’或者直接选择中间的‘Add Files’按键。
1.4 查找文件(例如:C:Basys3_workshopsourceslab1),选择添加lab1_tb.v文件。确认‘Copy sources into project’已经勾选,点击Finish完成添加。
1.5 在Sources窗格中依次展开Simulation Sources>sim_1
lab1_tb.v文件被添加到Simulation Sources中,lab1.v作为被测实例自动的被添加到lab1_tb.v层级中。
1.6 双击‘lab1_tb.v’在文本编辑窗口中查看文件内容。
2) 使用Vivado内建仿真器对设计进行200ns仿真
2.1 在Flow Navigator中展开PROJECT MANAGER,选择‘Settings’。
2.2 弹出窗口中,在Project Settings一栏中选择‘Simulation’,目标仿真器选择‘Vivado Simulator’,在Simulation一项中将‘xsim.simulate.runtime’的值设为200ns,点击‘Apply’。
2.3 在Flow Navigator中,展开SIMULATION,点击‘Run Simulation’,选择‘Run Behavioral Simulation’。
仿真完成后,主界面如下图所示。我们可以观察到四个主要部分:(1)Scope: 显示测试平台的层级以及glbl实例;(2)Objects: 显示顶层信号;(3)波形窗口;(4)Tcl Console: 显示仿真进程。
3. 综合
1) 使用Vivado自带的综合工具对设计进行综合并分析综合结果
1.1 在Vivado界面左侧的Flow Navigator栏中展开SYNTHESIS,点击‘Run Synthesis’开始综合。
1.2 弹出窗口中可以选择电脑处理器核使用个数,允许多个任务同时进行。
1.3 综合完成后会弹出对话框,选择的‘Open Synthesized Design’,点击OK,查看综合结果。
1.4 在顶部工具栏选择Window>Project Summery,或者直接点击快捷按钮,查看项目总结报告。
1.5 在Flow Navigator中,展开SYNTHESIS>Open Synthesized Design,选择Schematic查看电路原理图。
4. 添加I/O约束
1) 手动添加I/O约束,自动生成约束文件
1.1 在顶部工具栏选择Layout>I/O Planning
1.2 Vivado会打开I/O Planning窗口,如下图所示。我们在窗口中指定Basys3的引脚和电平标准来进行I/O配置。
1.3 根据Basys3产品手册,选择相应的I/O引脚标号,Basys3物理引脚的电平标准都为3.3V,故选择‘LVCMOS33’。
1.4 选择完成后,点击保存或者‘Ctrl S’保存修改。Vivado会弹出对话框,提示创建并保存约束(XDC)文件,我们输入文件名‘lab1_Basys3’,点击OK创建并保存。
1.5 完成后,在Sources窗格中展开Constraints>constrs_1,可以看到‘lab1_Basys3.xdc’已经被创建并添加到工程中,双击打开可以查看。
2) 直接添加约束文件
2.1 在Flow Navigator中,展开PROJECT MANAGER,选择‘Add Sources’。
2.2 在弹出窗口中选择‘Add or create constraints’,点击Next继续。
2.3 点击‘Add Files’,查找文件(例如:C:Basys3_workshopsourceslab1),添加‘lab1_basys3.xdc’文件。点击Finish完成添加。
5. 实现
1) 使用Vivado工具对设计进行实现并观察实现结果
1.1 在Flow Navigator中,展开IMPLEMENTATION,点击‘Run Implementation’。
1.2 完成后,选择‘Open Implemented Design’,查看实现结果。
1.3 在Device窗口中可以查看设计在Basys3 FPGA芯片上布局布线的结果,如果Device窗口没有打开可以在顶部工具栏选择Layout>Default Layout。选中图标查看布线,在Netlist窗格中选中需要查看的线网,在Device窗口查看其布线。
6. 使用Vivado内建仿真器对设计进行时序仿真
1) 在Flow Navigator中,展开SIMULATION,点击‘Run Simulation’,选择‘Run Post-Implementation Timing Simulation’。
2) 仿真完成后,查看波形可以发现,我们在测试文件(lab1_tb.v)设置的delay是10ns,而实际的delay是9.23ns。
7. 生成比特流文件及功能验证
1) 在Flow Navigator中,展开PROGRAM AND DEBUG,点击‘Generate Bitstream’开始生成比特流文件。
2) 完成后,选择‘Open Hardware Manager’打开硬件管理器,点击OK继续。
3) 确保Basys3 JP2跳线设置为USB供电模式,连接Basys3开发板和电脑,打开Basys3开发板电源。
4) 等待设备自动完成驱动安装后,在上方点击‘Open target’,选择‘Auto Connect’连接设备。
5) 连接完成后,我们可以在Hardware窗格中找到连接的设备。
6) 点击上方的‘Program device’,在弹出的窗口中选择相应的比特流文件,点击‘Program’开始下载。
7) 下载完成后,Basys3开发板右上角的LD19(DONE)会常亮。可以通过操作拨码开关观察LED灯来验证结果。
LED4-7通过对应位置的拨码开关SW4-7控制其亮灭。
END