什么是约束文件?

当通过Xilinx的Vivado等软件编程FPGA时,您需要告知软件FPGA上的哪些物理引脚,您计划使用或连接到与描述FPGA行为相关的HDL代码。

在微控制器领域,这很像在微控制器上写一个高或低寄存器来转动领导开或关,驱动时钟,或充当数据线。然而,在微控制器中,许多这些引脚是“硬连线”的,在某种意义上,您不能将连接到SPI控制器的引脚重新定位到微控制器上的物理上不同的引脚。一般来说,这不是一个选择。

这不是FPGA的情况;相反,您可以用HDL创建一个硬件接口,然后将该接口上相应的输入和输出限制到(本质上)FPGA上任何您想要的引脚,使FPGA对于复杂和定制设计非常灵活。

然而,这并不是说您可以通过软件在物理上重新安排电路板上的PCB布局。FPGA板制造商,如Digilent,可能会在合理的情况下将一些FPGA引脚物理连接到某些板上组件,例如将FPGA上的一些高速收发通道路由到HDMI端口,而不是Pmod主机端口或板上领导.你将无法改变那些物理位置。这并不会阻止你在你的代码中指定你的时钟引脚被限制在一个HDMI连接器内的时钟引脚上……你只是在物理上很难访问它(同时正常使用HDMI)。

Xilinx的Vivado使用的约束文件称为XDC文件(Xilinx Design constraints文件)。为没有经验的用户编写自己的约束文件可能非常困难,因为FPGA引脚连接到板上的物理位置会限制您,如果您不知道它们在哪里以及它们支持的电气性能标准……这很快就会变得非常令人沮丧。


我可以在哪里找到XDC文件?

在Vivado中积极支持的所有Digilent板的主XDC文件可以在digilent-xdc在Github库。下载此ZIP以获取以下文件的最新版本:digilent-xdc-master.zip

主板的主XDC文件列出了所有的FPGA引脚,这些引脚路由到主板上的物理引脚;它们是由外部组件组安排在板上一般方便。主XDC文件上的所有引脚都被注释掉了,因此用户只需要取消注释他们打算使用的引脚。


如何将XDC文件导入项目?

如果您的项目不包含板的主Xilinx Design Constraint (XDC)文件,下面的下拉菜单将详细说明如何添加它。此文件包含您的板对使用它的设计施加的约束——特定接口连接到特定引脚、时钟频率和FPGA银行电压,举例说明。单击下面的下拉列表了解如何将此文件添加到项目中。

将主XDC文件添加到Vivado项目

下载并提取digilent-xdc-master.zip.这个文件包含了Digilent的所有最新的XDC模板文件,这些文件可以在Github的digilent-xdc存储库。


返回Vivado,单击添加资源按钮项目经理部分的流导航器窗格。这将启动一个对话框,您可以使用该对话框向项目添加各种类型的源文件(或创建新的源文件)。


在第一个屏幕上,选择添加或创建约束.点击下一个继续。


在下一个屏幕中,确保指定的约束集(主XDC将被添加到的约束集)被设置为constrs_1,它是活跃的集。单击添加文件按钮。


在弹出的对话框中,导航到digilent-xdc-master.zip文件被提取到。突出显示您的板的XDC文件,然后单击好吧继续。


回到添加资源对话框中,确保所选的约束文件出现在表中。同时,确保复制约束文件到项目检查框。如果不选中此框,则该文件将由项目链接,在项目中进行的任何修改都将影响下载的版本。由于您可能需要在其他项目中再次使用此文件,因此建议复制约束文件,以便您总是可以从一个新的副本工作。

点击完成将约束文件添加到项目中。


添加后,XDC文件将出现在来源选项卡(与董事会选项卡)。双击它以打开文件。


我该怎么处理这个XDC文件呢?

是啊,这就是问题所在;可能也是你一开始点击这个页面的原因。

通常,XDC文件中惟一需要更改的部分是外部引脚的名称get_ports它被花括号包围{}匹配您在主模块代码中创建的输入/输出,如下图所示。你还需要确保删除第一个井号来取消注释你正在使用的引脚,,排队。

一个编辑过的XDC和代码模块示例(点击放大)