天天看点

FPGA时序约束理论之IO约束(4)

1. IO约束分类

  • 管脚约束和延迟约束

2. 管脚约束

  • 管脚约束就是指管脚分配
  • 需要设置两个属性PACKAGE_PIN:管脚位置 和 IOSTANDARD:管脚的电平标准
  • 在vivado中,在xdc中对管脚约束的例子
    set_property -dict {PACKAGE_PIN AJ16  IOSTANDARD  LVCMOS18} [get_ports "led[0]"    ]
               
  • 这里有一个注意点,对差分信号的约束:
  1. 管脚约束除了管脚位置和电平,还有端接,当使用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)
       );
               
    I 和 IB 是差分输入信号
  2. 但在Ultrascale中的IBUFDS,却把端接这个选项去掉了,所以要在I/O Ports界面中,手动指定。
    FPGA时序约束理论之IO约束(4)

3. 延迟约束

  • 延迟约束使用set_input_delay 和 set_output_delay
  • 约束的时钟源可以是时钟输入管脚,也可以是虚拟时钟
  • set_input_delay:
FPGA时序约束理论之IO约束(4)

 set_input_delay告诉的是输入信号和输入时钟之间的延迟关系,它属于FPGA外部的延迟,并不能

  •  set_output_delay: 与set_input_delay类似
  • 如果想要调整输入信号的延迟,只能使用IDELAY