约束文件,也被称为魔法移动楼梯

对于许多FPGA设计新手来说,约束文件是一个令人困惑的地方。人们习惯于编写代码并让它工作。然而,在FPGA设计中,我们必须指定所使用的硬件。

大多数用户最容易掌握的部分是.v或.vhd文件,这取决于您是用Verilog还是VHDL编写。这是你写你想写的东西的地方。所以,假设你想实现一个简单的AND门。你希望输入是开关,输出是LED。在Verilog中,你可以这样写:

分配LED = SW0 & SW1;

这将和SW0和SW1在一起,并将该值分配给LED。在计算机科学中,在这一点上你就已经完成了。变量LED有它的值。

然而,在硬件语言中,您需要将“网络”连接到物理组件或其引脚位置。对交换机也需要做同样的工作。这是在约束文件中完成的。

我喜欢把约束文件想象成《哈利波特》中的魔法楼梯:

楼梯的底部就像一个网。你知道它通向哪里,但是楼梯有能力去任何地方(任何物理针的位置),直到它们连接起来,它们不会通向任何地方。约束文件就像连接楼梯。一旦约束文件被写入,引脚位置被设置,你知道楼梯的底部连接到LED,你知道顶部连接到H17。然而,就像楼梯一样,你可以很容易地改变最终目的地,通过改变别针的位置。

当使用Xilinx工具时,也就是Digilent板使用的工具,你有两种类型的约束文件,UCF(用户约束文件),XDC文件(xilinx约束文件)与…一起使用伊势Vivado,分别。

每种类型的约束文件包含相同的信息。对于所有的引脚,它包含一个网名,一个引脚位置,和IO信令标准。网名,就像一个变量名。这就是你想让大头针在你的设计中连接到的地方。引脚位置是你想要发送信号到的物理引脚。IOStandard就像一个通信协议。

这是约束文件需要的基本信息,但它还可以包含更多信息。

假设我想连接销H17在Nexys 4上,我的输出是0领导, iostandardLVCMOS33

对于一个佛罗里达大学文件我需要写:

网”领导“LOC =H17| IOSTANDARD =LVCMOS33

对于一个XDC文件我需要写:

set_property -dict {PACKAGE_PINH17IOSTANDARDLVCMOS33} [get_ports {领导});

幸运的是,对于想要在FPGA上使用的所有内容,您不必从头开始输入这些内容。你可以下载主版本佛罗里达大学XDC文件,取消注释所需的行,并更改网名以匹配您的设计。

所以,为了完成我的例子,在设计中我需要:

#。v文件

模块和(
输入SW0,
输入SW1,
输出了
);

分配LED = SW0 & SW1;

endmodule

对于约束文件:

# UCF

Net " sw0 " loc = j15 | iostandard = lvcmos33;
Net " sw1 " loc = l16 | iostandard = lvcmos33;
Net " led " loc = h17 | iostandard = lvcmos33;

或者:

# XDC

set_property -dict {PACKAGE_PIN J15 IOSTANDARD LVCMOS33} [get_ports {SW0}];
set_property -dict {PACKAGE_PIN L16 IOSTANDARD LVCMOS33} [get_ports {SW1}];
set_property -dict {PACKAGE_PIN H17 IOSTANDARD LVCMOS33} [get_ports {LED}];

XDC佛罗里达大学我在这个例子中使用的文件在Nexys 4 DDR产品页面.去看一XDC佛罗里达大学文件在行动中看到我们的许多FPGA的例子维基

关于凯特林弗朗茨

查看所有由Kaitlyn Franz→的帖子

留下一个回复

您的电子邮件地址将不会被公布。必填字段被标记