I/O约束
I/O约束是必须要用的约束,又包括管脚约束和延迟约束。
管脚约束
管脚约束就是指管脚分配,我们要指定管脚的PACKAGE_PIN和IOSTANDARD两个属性的值,前者指定了管脚的位置,后者指定了管脚对应的电平标准。
在vivado中,使用如下方式在xdc中对管脚进行约束。
set_property -dict {PACKAGE_PIN AJ16 IOSTANDARD LVCMOS18} [get_ports "led[0]" ]
在Vivado规定,必须要指定管脚电平,不然在最后一步生成比特流时会出错。
除了管脚位置和电平,还有一个大家容易忽略但很容易引起错误的就是端接,当我们使用差分电平时比如LVDS,在在V6中我们使用IBUFDS来处理输入的差分信号时,可以指定端接为TRUE。
IBUFDS #(
.DIFF_TERM("TRUE"), // Differential Termination
.IOSTANDARD("DEFAULT") // Specify the input I/O standard
) IBUFDS_inst (
.O(O), // Buffer output
.I(I), // Diff_p buffer input (connect directly to top-level port)
.IB(IB) // Diff_n buffer input (connect directly to top-level port)
);
但在Ultrascale中的IBUFDS,却把端接这个选项去掉了
IBUFDS #(
.DQ