在Vivado IPI设计中添加层次块
在Vivado,分层块是块设计中的块设计。这些模块允许工程师将他们的设计划分为不同的功能组。本指南逐步介绍了将预先存在的层次块添加到块设计的过程,重新创建它的示例软件应用程序,并在硬件中运行设计。
库存
-
一种Digilent FPGA开发板。
-
一台安装了Vivado的电脑。
-
看到安装Vivado, Xilinx SDK, Digilent Board Files指南以获取更多信息。
-
-
熟悉Vivado IP Integrator和基本块设计工作。
-
后,入门Vivado IP Integrator指南将导致符合所有需求的设计。
-
指南
建立依赖关系
检查Vivado -library是否已经包含在Vivado项目中,如果不是,那么应该下载:
vivado -图书馆- zmod - v1 - 2019.1 - 2. - zip
熟悉git的人可能想要克隆层次结构,而不是下载ZIP。下面的下拉菜单包含了简短的说明。
- 使用git克隆层次结构
-
git clone https://github.com/digilent/vivado-library -b hierarchies
否则(如果vivado-library包含在项目中),使用git工具检出分支:
警告!如果库中的IP已经包含在项目中,那么签出一个不同的分支可能会导致对它们的更改。小心!
CD (path)/vivado-library git checkout hierarchies
在硬件设计中添加层次块
1.
启动Vivado,然后打开Vivado项目要使用的层次块,并打开项目的块设计。
请注意:设计必须包含可用于标准输出的处理器和外围设备。在Microblaze的情况下,UART IP必须连接到单板的USBUART接口。在Zynq中,默认使用PS UART。
完成入门Vivado IP Integrator指南将导致设计符合使用这些分层块的要求。
2.
在Vivado的TCL控制台中,输入以下命令:
/vivado-library/hierarchies/(hierarchy of choice)/ create_hierer .tcl . Source (path)/vivado-library/hierarchies/(hierarchy of choice
当脚本完成运行时,块设计将包含一个分层块里面有几个IPIP将被连接到另一个和块的端口和引脚。层次结构的内容可以通过“+”按钮。
3.
查看README.txt文件,可以在vivado-library/ Hierarchy的Hierarchy block文件夹中找到,以获得关于Hierarchy的端口必须如何连接到设计的其余部分的额外信息。记住这一点:
-
通过单击将所有层次块的axis接口连接到设计中的处理器连接自动化运行,并在适当的方框中勾选。这些接口可能会在连接自动化对话框中出现不止一次。为每个接口只选择一个条目。
-
将层次结构可能拥有的任何中断连接到适当的中断控制器:AXI中断控制器IP(用于Microblaze设计),Zynq处理系统的irq_f2p端口(用于Zynq设计)。
-
将任何附加时钟连接到内存接口生成器或时钟向导(用于Microblaze设计)或Zynq处理系统(用于Zynq设计)生成的时钟。
4.
下一步,约束层次结构的外部端口,有两个不同的工作流:
-
如果在创建项目时选择了一个板,则板流可用于此步骤。
-
如果选择的是一个部件而不是一个板,或板流由于任何原因不能使用,则手动约束流应该被使用。
4.1—创建外部Pmod端口
打开下面所选工作流的下拉菜单,并按照说明操作。
请注意:此步骤仅用于Pmod层次块。Zmod分层脚本自动创建它们的外部端口。出于本指南的目的,考虑使用Manual Constraint Flow创建Zmod的外部端口。
- 板流
-
去Vivado董事会选项卡并选择Pmod连接器以连接到层次结构块。右键单击连接器的条目(通常命名为“connector JA”),然后选择连接板组件.在弹出窗口中,在连接到现有IP,选择层次结构的Pmod桥接IP的“Pmod_out”接口。点击好吧.
- 手动约束流
-
选择Pmod_out端口,然后右键单击它并选择使外部.在设计中选择新创建的外部接口端口(名称类似于“Pmod_out_0”),并为其命名。
4.2 -验证设计并创建包装器文件
不管选择的工作流是什么,通过单击validate按钮来验证块设计()并保存它。
然后创建一个HDL包装器文件(如果还不存在的话),方法是右键单击来源窗格并选择“创建HDL包装器”。
4.3 -约束设计
这一步的工作原理略有不同,取决于分层块的目标外设是否为Zmod或者一个Pmod.为选择的外围设备选择下拉菜单:
- Pmod
-
如果板流,打开vivado-library- hierarchy中层次结构块文件夹中的README.txt文件,以确定是否需要任何额外的约束。如果没有,跳过本节的其余部分.
当创建层次结构时,一个名为“(层次结构名称)_Pmod_out”的约束文件。,被导入到Vivado项目中。该文件包含所有必需约束的模板,而不管使用的流是什么。打开它现在从来源通过在窗格下找到它约束然后双击它。
所需的约束条件板流默认为未注释。
如果手动约束流被选中时,取消注释掉任何以" set_property "开头的行,方法是删除每一行开头的" # "符号。
文本“FIXME”在约束文件中用于指示特定于电路板和设计的值必须手工输入的位置。
两种类型的手动输入值是典型的约束文件在这些层次:
港口的名字:
这些fixme出现在文本“get_ports”之后。通过查看步骤5.1中创建的HDL包装器文件,可以找到这些fixme的正确值。查找连接到HDL包装器的端口映射中的层次结构的Pmod_out接口的端口名称。将这些名称输入到层次结构的约束文件中相应的位置。位置约束:
这些fixme出现在文本“PACKAGE_PIN”之后,并且只在手动约束流.通过查看目标板的主XDC文件可以找到这些fixme的正确值。Digilent主板的主XDC文件可以在digilent-xdc在Github库。找到与分层块的Pmod_out端口要连接的Pmod连接器对应的LOC属性值。将这些值输入到层次结构的约束文件中的相应位置。
- Zmod
-
当create_hier。tcl为Zmod层次块运行,一个约束文件被导入,其中包含脚本创建的每个外部端口的模板约束。约束文件以脚本创建的层次块命名,后跟特定Zmod的名称,例如:“ZmodADC_0_ZmodADC.xdc”。约束文件可以在Vivado IP Integrato的源窗格的约束部分找到。
在撰写本文时,每个Zmod分层块为eclipse Z7的每个Zmod端口提供模板约束。默认情况下,ZmodADC连接到eclipse Z7的Zmod端口A, ZmodDAC要连接到另一个端口,用户只需要注释掉xdc中与默认端口对应的部分,并取消注释与所选端口对应的部分。
对于其他板,用户必须用所选板的主XDC文件中找到的相应位置替换Zmod端口的PACKAGE_PIN位置约束,该位置约束可以通过digilent-xdc在GitHub库。
5.
点击产生的比特流.这个过程可能需要一些时间,这取决于项目的复杂性。
Baremetal软件
Zmod分层块由Zmod库在软件中支持。如果使用Zmod,请参阅Zmod基础库用户指南,跳过本指南的其余部分。如果希望Petalinux支持添加的层次结构,请首先查看Zmod Petalinux配置指南
3.
使用“空应用程序”模板创建一个新的应用程序项目。确保检查分层块是否需要对项目设置进行任何更改,或者是否必须向BSP添加任何库。这些需求(如果有的话)在vivado-library- hierarche文件夹中分层块的sdk_sources文件夹中的README.txt文件中有详细说明。
5.
确保开发板的编程模式选择跳线被设置为JTAG。将电路板通过microrousb编程端口插入计算机,并打开电源。
将SDK终端连接到单板关联的端口。的绿色按钮在“串行终端”窗格中启动连接到串口对话框。默认情况下,Zynq的波特率为115200,Microblaze的波特率为9600(当使用AXI Uartlite IP时)。如果需要,可以使用其他终端,如Tera Term或PuTTY。
6.
通过选择来编程FPGAXilinx→程序FPGA从Xilinx SDK的顶部菜单栏。
FPGA编程完成后,通过右键单击应用程序项目并选择来运行应用程序项目Run→在硬件上运行(系统调试器).
在串行终端中可以看到演示应用程序打印的消息。
下一个步骤
既然层次块的示例设计正在运行,就可以很容易地对硬件或软件进行修改。
分层块所提供的SDK源代码是经过设置的,这样它们就可以很容易地包含在使用该块的任何设计中。sdk_sources下面的子文件夹包含该块所需的所有驱动程序。
更多关于Digilent产品的参考资料和指南,请浏览它们的资源中心,这里是Digilent维基.
有关技术支持,请访问Digilent论坛.