开始Vivado
先决条件
在开始本指南之前,请确保安装了Vivado。欲了解更多信息,请参阅我们的安装Vivado指南。
介绍
1.开始Vivado
2.起始页
1.创建新项目
这个按钮将打开新建项目向导。该向导指导用户创建一个新项目。该向导将在第3节逐步完成。
2.开放项目
这个按钮将打开一个文件浏览器。导航到所需的XPR文件并单击打开打开Vivado中的项目。
3.打开示例项目
这将指导用户基于一个示例项目创建一个新项目。这些项目并不适用于所有设备。
4.开放硬件管理器
这将打开没有关联项目的硬件管理器。如果连接和编程一个设备是用户所需要的一切,这是使用的按钮。
3.创建新项目
3.5
这将打开创建源文件对话框,如下所示。这个对话框对于新文件有三个选项。第一个是文件的类型。这允许在不同的HDL文件类型,Verilog, VHDL, Verilog头和SystemVerilog之间进行选择。最后一种可用的类型是内存文件选项。这是用于内存设备初始化,大多数时候可以忽略。
第二个框用于文件名。输入要创建的文件的名称。包括文件扩展名是可选的,Vivado将根据所选择的文件类型添加一个扩展名。最后一个选项是将文件存储在何处。大多数情况下,这可以被保留为<本地项目>.
重要提示:不要在文件名中使用空格。这将导致Vivado出现问题。而是使用下划线,破折号,或骆驼香烟盒.
3.6
也可以将源文件导入项目中。在添加资源对话框中单击添加文件按钮并导航到源文件以导入到项目中。除非有原因不,否则确保将源代码复制到项目中复选框以在项目中本地复制源文件。由于文件是复制的,所以对一个项目内的文件所做的任何更改都不会影响原始文件。
3.9
对话框再次呈现三种选项。文件名和文件位置具有与其中相同的属性创建源文件对话。什么是可以创建的文件类型。唯一可用的选项是XDC,它代表Xilinx设计约束。此文件将定义时钟,引脚映射和时序限制。
重要提示:不要在文件名中使用空格。这将导致Vivado出现问题。而是使用下划线,破折号,或骆驼香烟盒.
3.10
既然已经创建了必要的文件,现在就该选择目标设备了。有两种选择目标的方法。第一个是来自实际的板上组件,第二个是来自安装适当的板文件和挑选板。
3.10.1
要从板上组件中选择一个目标,找到集成电路的部件号,并在选择列表中找到它。我们的电路板有两个地方可以找到零件号。首先是看黑板上的实际组成部分,试着辨别文字。另一种是看参考页面对于目标板。
3.10.2
要从电路板列表中选择一个目标,请安装董事会文件在创建新项目之前。然后从列表中选择要用作目标的棋盘。
4.流导航器
5.项目经理
Sources窗格包含项目层次结构,用于打开文件。文件夹结构是这样组织的,以便HDL文件保存在设计来源文件夹,约束保持在下面约束文件夹下,并保存仿真文件模拟来源文件夹中。通过双击Sources窗格中的相应条目,可以在Workspace中打开文件。也可以通过右键单击要添加文件的文件夹并选择来添加源添加资源或点击添加资源按钮()。
6.编写HDL和约束
在第26和27行之间添加以下代码:
reg[24.:0.]数数=0.;分配引领=数数[24.];总是@(posedge(clk的)的)数数< =数数+1;
如果Genesys 2,NetFPGA-1G-CML或NetFPGA-Sume正在目标,请清除整个文件的内容并用以下内容替换:
模块前(输入clk_p那输入clk_n那输出引领的);线clk;IBUFGDS.#(的)clk_inst.(.O(clk的)那.I(clk_p的)那.IB(clk_n的)的);reg[25.:0.]数数=0.;分配引领=数数[25.];总是@(posedge(clk的)的)数数< =数数+1;endmodule
这是不同的,因为这些电路板有一个使用差分逻辑的输入时钟。如果你想了解更多,请阅读这篇文章低压差分信号.
现在打开XDC文件。现在它是空的,所以根据目标板粘贴下面的代码。
约束文件源代码 | |
---|---|
董事会 | 约束代码 |
ar | set_property -dict {PACKAGE_PIN E3 IOSTANDARD LVCMOS33} [get_ports clk] create_clock -add -name sys_clk_pin -period 10.50 -波形{0 5}[get_ports clk] set_property -dict {PACKAGE_PIN H5 IOSTANDARD LVCMOS33} [get_ports led] |
Basys 3 | set_property -dict {PACKAGE_PIN W5 IOSTANDARD LVCMOS33} [get_ports clk] create_clock -add -name sys_clk_pin -period 10.50 -波形{0 5}[get_ports clk] set_property -dict {PACKAGE_PIN U16 IOSTANDARD LVCMOS33} [get_ports led] |
CmodA7 | set_property -dict {package_pin l17 iostandard lvcmos33} [get_ports clk] create_clock -add -name sys_clk_pin -period 83.33 -waveform {0 41.66} [get_ports clk] set_property -dict {package_pin a17 iostandard lvcmos33} [get_ports led] |
Genesys 2 | set_property -dict {package_pin ad11 iostandard lvds} [get_ports clk_n] set_property -dict {package_pin ad12 iostandard lvds} [get_ports clk_p] create_clock -period 5.000-name sys_clk_pin -waveform {0.000 2.500} -add [get_ports clk_p] set_property -dict {package_pinT28 iostandard lvcmos33} [get_ports LED] |
在下4 | set_property -dict {PACKAGE_PIN E3 IOSTANDARD LVCMOS33} [get_ports clk] create_clock -add -name sys_clk_pin -period 10.50 -波形{0 5}[get_ports clk] set_property -dict {PACKAGE_PIN T8 IOSTANDARD LVCMOS33} [get_ports led] |
在下4 DDR | set_property -dict {PACKAGE_PIN E3 IOSTANDARD LVCMOS33} [get_ports clk] create_clock -add -name sys_clk_pin -period 10.50 -波形{0 5}[get_ports clk] set_property -dict {PACKAGE_PIN H17 IOSTANDARD LVCMOS33} [get_ports led] |
在下视频 | set_property -dict {PACKAGE_PIN R4 IOSTANDARD LVCMOS33} [get_ports clk] create_clock -add -name sys_clk_pin -period 10.50 -波形{0 5}[get_ports clk] set_property -dict {PACKAGE_PIN T14 IOSTANDARD LVCMOS25} [get_ports led] |
netfpga-1g-cml | set_property -dict {PACKAGE_PIN AA2 IOSTANDARD LVDS} [get_ports clk_n] set_property -dict {PACKAGE_PIN AA3 IOSTANDARD LVDS} [get_ports clk_p] create_clock -add -name sys_clk_pin -period 5.50 -波形{0 2.5}[get_ports clk_n] set_property -dict {PACKAGE_PIN E17 IOSTANDARD LVCMOS33} [get_ports led] |
NetFPGA-SUME | set_property -dict {PACKAGE_PIN G18 IOSTANDARD LVDS} [get_ports clk_n] set_property -dict {PACKAGE_PIN H19 IOSTANDARD LVDS} [get_ports clk_p] create_clock -add -name sys_clk_pin -period 5.50 -波形{0 2.5}[get_ports clk_n] set_property -dict {PACKAGE_PIN AR22 IOSTANDARD LVCMOS15} [get_ports led] |
ZedBoard | set_property -dict {PACKAGE_PIN Y9 IOSTANDARD LVCMOS33} [get_ports clk] create_clock -add -name sys_clk_pin -period 10.50 -波形{0 5}[get_ports clk] set_property -dict {PACKAGE_PIN T22 IOSTANDARD LVCMOS33} [get_ports led] |
Zybo | set_property -dict {PACKAGE_PIN L16 IOSTANDARD LVCMOS33} [get_ports clk] create_clock -add -name sys_clk_pin -period 8.00 -波形{0 4}[get_ports clk] set_property -dict {PACKAGE_PIN M14 IOSTANDARD LVCMOS33} [get_ports led] |
完成之后,代码就准备好“编译”了。
8.合成、实现和比特流生成
为了创建一个可用于对目标程序进行编程的文件,需要进行“编译管道”。
这从合成开始。综合将HDL文件转变为基于定时和I / O约束的晶体管级别描述。运行综合单击在工具栏或在流导航器中。然后,Synthesis的输出被传递给Implementation。
实现有几个步骤。始终运行的步骤是Opt Design(优化设计以适应目标FPGA)、Place Design(将设计布局到目标FPGA结构中)和Route Design(通过结构的路由信号)。要运行实现,单击其中之一在工具栏或在流导航器中。然后将输出传递给Bitstream Generator。
比特流生成器产生编程FPGA所需的最终输出。要运行比特流生成,请单击在工具栏或在流导航器中。没有更改设置,生成器将创建一个BIT文件。
9.硬件管理器
硬件管理器用于编程目标设备。
给设备编程的第一步是连接它。有两种方法可以做到这一点。
1.打开新的硬件目标
第一种方法是手动打开目标。如果硬件连接到另一台计算机,这是必需的。要进入“打开硬件目标”向导,可以打开硬件管理器并单击绿色横幅中的链接或单击按钮下方的“Flow Navigator”中的.从打开的下拉菜单中选择.向导将打开,单击下一个.
2.Auto-Connect
第二种方法是自动打开目标。为了到达按钮打开硬件管理器,然后单击绿色横幅中的链接或单击按钮下方的“Flow Navigator”中的.从打开的下拉菜单中选择.Vivado将尝试在本地计算机上找到运行的硬件服务器,并将连接到服务器上的设备。
编程
要使用前面生成的BIT文件对设备进行编程,可以单击绿色横幅中的链接或单击按钮下方的“Flow Navigator”中的.从打开的下拉菜单中选择要编程的设备(例如:)和以下窗口将打开:
这比特流文件应使用前面生成的位文件填充字段。如果没有,请单击单击字段右边末端的按钮,并导航到
<项目目录> / <项目名称> .runs / impl_1/,并选择位文件(示例:)。现在点击程序.这将连接到电路板,清除当前配置以及使用新位文件的程序。