开始Vivado
介绍
本指南的目标是让读者通过硬件的hello世界熟悉Vivado工具领导.
注意:虽然本指南是使用Vivado 2016.4创建的,但所描述的工作流并没有发生实质性的变化,该指南按照编写本文时最新版本Vivado 2019.2的描述工作。
先决条件
在开始本指南之前,请确保安装Vivado:
-
对于2019.2及以上版本,请参见安装Vivado, Vitis和勤勉板文件.
-
2019.2之前的版本,请参见安装Vivado, Xilinx SDK, Digilent Board Files.
指南
1.启动Vivado
2.起始页
1.创建新项目
这个按钮将打开新建项目向导。该向导指导用户创建一个新项目。该向导将在第3节逐步完成。
2.开放项目
这个按钮将打开一个文件浏览器。导航到所需的Xilinx Project (.xpr)文件并单击开放打开Vivado中的项目。
3.打开示例项目
这将指导用户创建基于示例项目的新项目。这些项目并不适用于所有设备。
4.开放硬件管理器
这将打开没有关联项目的硬件管理器。如果连接和编程一个设备是用户所需要的,那么这是使用的按钮。
3.创建新项目
3.3
第一步是设置项目的名称。Vivado将在生成其文件夹结构时使用此名称。
重要的
不要在项目名称或位置路径中使用空格。这将导致Vivado出现问题。而是使用下划线,破折号,或CamelCase.
点击下一个继续。
3.4
现在项目已经有了名称和保存文件的位置,我们需要选择将要创建的项目类型。选择RTL项目一定要检查一下此时不指定来源.源文件将在创建项目之后添加和创建。高级用户可以使用此屏幕上的其他选项,但本指南将不介绍这些选项。
点击下一个继续。
3.5
重要的
如果您的电路板没有出现在这个列表中,那么Digilent的电路板文件还没有安装。如果是这种情况,请重新访问本指南的先决条件部分,然后关闭Vivado,重新开始。
现在是时候选择目标设备了。单击董事会选项卡在对话框顶部,然后从列表中选择您的板子。
点击下一个继续。
4.流导航器
5.项目经理
的来源窗格包含项目层次结构,用于打开文件。文件夹结构是这样组织的,以便HDL文件保存在设计来源文件夹中,约束保持在约束文件夹下,并保存仿真文件模拟源文件夹中。通过双击Sources窗格中的相应条目,可以在Workspace中打开文件。源也可以通过右键单击要添加文件的文件夹并选择来添加添加资源或点击添加资源按钮().
位于“项目管理器”窗口底部的未命名窗格由几个用于调试项目的不同有用工具组成。最重要的是要知道消息工具。该工具解析Tcl控制台的错误、警告和其他重要信息,并以一种有用的方式显示它。
可以通过选择该窗格底部的不同选项卡来访问这些工具。
6.添加约束文件
为了将HDL代码与FPGA的物理引脚连接,需要添加或创建一个约束文件。Digilent为我们的每个电路板都制作了一个Xilinx设计约束(XDC)文件。下载digilent-xdc-master.zip,包含每个主XDC文件的ZIP Archive,然后将其解压缩到您将记住的位置。
6.5
在来源面板的项目经理,扩大约束文件夹,然后双击刚刚添加的XDC文件。Digilent的每个XDC文件都包含各自电路板上每个常用外围设备的约束。对于这个演示,限制默认的系统时钟和一个led是必需的。
查找并取消对调用的行进行注释get_ports在以[0]和CLK开头的名称上删除行首的“#”符号。在某些单板上,时钟端口由两个不同的端口组成,clk_p和clk_n。时钟端口有时被命名为sysclk,但是应该出现在XDC文件的顶部。取消的create_clock也遵循时钟端口/秒定义的行。
提示
使用clk_p/clk_n引脚的板意味着使用差分逻辑的输入时钟。如果你想了解更多,请阅读这篇文章低压差分信号.
将get_ports调用中的名称从'led[0]'更改为'led'。如果时钟不是'clk'或'clk_p'和'clk_n',那么对它做同样的处理。
7.创建Verilog源文件
7.2
与前面一样,在这个阶段,我们将得到一个列表,其中包含当我们单击Finish时将添加或创建的所有源文件。不要单击“添加文件”,单击创建文件.
提示
还可以使用与前面添加约束文件相同的方式添加现有的源文件。
7.3
系统将提示您选择一个文件类型,文件名称,文件位置.一定要挑选Verilog和<本地项目>的类型和位置。给你的文件一个以'.v'结尾的文件名。
重要的
不要在文件名中使用空格。这将导致Vivado出现问题。而是使用下划线,破折号,或CamelCase.
点击好吧继续。
7.5
与添加约束文件时不同,此时a定义模块对话框将弹出。方法重命名Verilog模块模块名称菲尔德,但这是不必要的。Verilog模块的时钟和led端口需要定义。单击添加(按钮将为端口添加一个空槽到I / O端口定义列表。
为每个模块的I/O端口定义五个字段:
-
端口名称:该字段定义了端口的名称,并且需要匹配XDC文件中使用的名称之一。
-
方向:这个下拉菜单可以设置为输入,输出,或inout,定义信号通过这个端口传播的方向,相对于你的模块。输出是模块将要控制的信号。
-
总线:这可以检查或不,当检查时,该端口由多个单位信号组成,分组成一个单一的总线。
-
最高有效位:如果是总线,端口的最有效位的索引。对于单位端口,此选项是灰色的。
-
LSB:如果是总线,则端口的最低有效位的索引。对于单位端口,此选项是灰色的。
提示
如果你定义了一个将在另一个模块中实例化的模块(在本指南中我们不会讨论这个问题),请注意,端口名称不应该在XDC中声明,这只适用于你的“top”模块。
如果您的板使用差分时钟,添加两个单位输入端口,它们的名称与XDC文件中未注释的正时钟端口和负时钟端口相同。否则,添加一个与XDC文件中未注释的时钟端口同名的单位输入端口。
添加一个与。名称相同的单位输出端口领导在XDC文件中未注释的端口。
添加完这两个或三个端口后,单击好吧继续。
7.6
此时,新的源文件将被添加到设计来源文件夹中来源面板的项目经理.展开此文件夹并双击文件以打开它。
接下来,需要编写一些Verilog代码来定义设计的实际行为。
在模块端口列表后面的');'和'endmodule'语句之间,添加以下代码:
注册[24:0]数=0;分配领导=数[24];总是@(posedge(clk))数<=数+1;
如果你的板是差频的,在');'和'reg [24:0] count = 0;'之前添加以下代码行:
线clk;IBUFGDS clk_inst(.O(clk),.I(clk_p),.IB(clk_n));
应该注意的是,时钟闪烁的速率将根据使用的板子而不同。不同的Digilent板上的系统时钟运行在许多不同的速率,这取决于板的需要。系统时钟周期(以纳秒为单位)可以在create_clock行的XDC文件。
在完成本指南后,建议尝试更改提供的Verilog代码,使时钟以1赫兹的频率闪烁——不建议在注释或取消注释整行之外更改XDC文件。
8.合成、实现和比特流生成
为了创建一个可用于对目标板编程的文件,需要运行“编译管道”的每个阶段。
这开始于合成.Synthesis将HDL文件转换为基于时间和I/O约束的晶体管级别描述。要运行Synthesis,请单击其中之一在工具栏或在流导航器.然后,Synthesis的输出被传递给Implementation。
实现有几个步骤。总是运行的步骤是选择设计(优化设计以适应目标FPGA),地方的设计(在目标FPGA结构中布局设计),并且路线设计(路由信号通过fabric)。要运行实现,单击其中之一在工具栏或在流导航器.然后将输出传递给Bitstream Generator。
的比特流发生器生成FPGA编程所需的最终输出。要运行比特流生成,请单击其中之一在工具栏或在流导航器.没有改变设置,生成器将创建一个'。一些文件。
9.硬件管理器
的硬件管理器用于对目标设备进行编程。
对设备进行编程的第一步是将Vivado硬件服务器连接到设备。有两种方法可以做到这一点。
1.打开新的硬件目标
2.Auto-Connect
第二种方法是自动打开目标。到达按钮或打开硬件管理器并单击链接绿色的旗帜在窗口顶部或单击按钮流导航器下.从打开的下拉菜单中选择.Vivado将尝试找到运行在本地机器上的硬件服务器,并连接到服务器上的设备。
编程
要使用先前生成的位文件对设备进行编程,可以单击链接绿色的旗帜在窗口顶部或单击按钮流导航器下.从打开的下拉菜单中,选择要编程的设备(例如:),并会开启以下窗口:
的比特流文件字段应该用前面生成的位文件自动填充。如果没有,请单击单击字段右边末端的按钮,并导航到
<项目目录> / <项目名称> .runs / impl_1/,并选择位文件(示例:).现在点击程序.这将连接到板,清除当前配置,并使用新的位文件程序。
10.完成了!
您现在应该看到您的板上的一个led闪烁!
请务必访问您的董事会的资源中心,以获得更多的教程和演示项目。可以找到每个资源中心的链接在这里.