常见时钟约束(源同步)

数据路径:数据在整个传输起点和传输终点所经过的路径。

时钟路径:时钟从源端到达源端寄存器和目的寄存器的路径。通常由时钟源到源寄存器和时钟源到目的寄存器两条路径组成。

FPGA和外部芯片的同步通信接口,根据时钟来源可以分为系统同步接口源同步接口

FPGA与外部芯片之间的通信时钟都由外部同一时钟源(系统时钟)产生时,称为系统同步接口。(外部时钟分别给外部芯片和FPGA)

FPGA与外部芯片之间的通信时钟都是由源寄存器所在一侧(输出端产生),称为源同步接口。(从FPGA给到外部芯片、外部芯片给到FPGA)就是输入到FPGA的数据引脚,有对应的同步时钟信号也连接到FPGA引脚,并且在FPGA器件的内部也使用这个同步时钟信号去锁存该输入的数据信号。

时序分析的四种模型:

  1. reg——reg
  2. reg——pin
  3. pin——reg
  4. pin——pin

全局时钟网络是走的网 络节点,时钟到达每个寄存器的偏斜(skew)比较小,而自分频时钟走的是数据线,到达每个寄存器的延时不一样,跟布线就有关系。

Osc(振荡器)

Input_delay发射延(lunch)到达数据开始的位置。

LrMax(lunch rise)越大,影响的是建立时间。

LrMin(lunch rise)越小,影响的是保持时间。

Output_delay:采样延(latch)到数据开始的位置。

约束顺序:

## Timing Assertions Section

# Primary clocks

# Virtual clocks

# Generated clocks

# Clock Groups

# Bus Skew constraints

# Input and output delay constraints

## Timing Exceptions Section

# False Paths

# Max Delay / Min Delay

# Multicycle Paths

# Case Analysis

# Disable Timing

## Physical Constraints Section

# located anywhere in the file, preferably before or after the timing constraints

# or stored in a separate constraint file

三类约束:

•Clocks

° Primary clocks

° Generated clocks

° Forwarded clocks

° External feedback delays

• Input and output ports

°

Input delays

° Output delays

° Combinatorial delays

• Clock domain crossings

° Physically exclusive clock groups

° Logically exclusive clock groups with no interaction

Logically exclusive clock groups with interaction

° Asynchronous clock domain crossings

• Constraints Summary

常见时序约束

  1. input_delay(以千兆网rx为例)
  1. 约束输入时钟,input_delay。

  1. 约束输入数据,通过indelay_control。

   (* IODELAY_GROUP = <iodelay_group_name> *) // Specifies group name for associated IDELAYs/ODELAYs and IDELAYCTRL

   IDELAYCTRL IDELAYCTRL_inst (

      .RDY(RDY),       // 1-bit output: Ready output

      .REFCLK(REFCLK), // 1-bit input: Reference clock input

      .RST(RST)        // 1-bit input: Active high reset input

   );

IDELAYE2 #(

      .CINVCTRL_SEL("FALSE"),          // Enable dynamic clock inversion (FALSE, TRUE)

      .DELAY_SRC("IDATAIN"),           // Delay input (IDATAIN, DATAIN)

      .HIGH_PERFORMANCE_MODE("FALSE"), // Reduced jitter ("TRUE"), Reduced power ("FALSE")

      .IDELAY_TYPE("FIXED"),           // FIXED, VARIABLE, VAR_LOAD, VAR_LOAD_PIPE

      .IDELAY_VALUE(0),                // Input delay tap setting (0-31)

      .PIPE_SEL("FALSE"),              // Select pipelined mode, FALSE, TRUE

      .REFCLK_FREQUENCY(200.0),        // IDELAYCTRL clock input frequency in MHz (190.0-210.0, 290.0-310.0).

      .SIGNAL_PATTERN("DATA")          // DATA, CLOCK input signal

   )

   IDELAYE2_inst (

      .CNTVALUEOUT(CNTVALUEOUT), // 5-bit output: Counter value output

      .DATAOUT(DATAOUT),         // 1-bit output: Delayed data output

      .C(C),                     // 1-bit input: Clock input

      .CE(CE),                   // 1-bit input: Active high enable increment/decrement input

      .CINVCTRL(CINVCTRL),       // 1-bit input: Dynamic clock inversion input

      .CNTVALUEIN(CNTVALUEIN),   // 5-bit input: Counter value input

      .DATAIN(DATAIN),           // 1-bit input: Internal delay data input

      .IDATAIN(IDATAIN),         // 1-bit input: Data input from the I/O

      .INC(INC),                 // 1-bit input: Increment / Decrement tap delay input

      .LD(LD),                   // 1-bit input: Load IDELAY_VALUE input

      .LDPIPEEN(LDPIPEEN),       // 1-bit input: Enable PIPELINE register to load data input

      .REGRST(REGRST)            // 1-bit input: Active-high reset tap-delay input

   );

如果refclk为200兆,那么每增加1,延迟为1/(32*2*200) us

注:一般专用芯片这个数据之间的skew很小,几乎是数据周期的 1/40 左右,比如 8ns 周期,data skew=8/40=0.2ns。

2.Output_delay

对于跨时钟域的信号一般不处理,因为我们已经使用了fifo去做跨时钟处理了,所以一般set false path。

Set multicycle path一些多周期的信号可以拉长它们的建立或者保持时间

3.生成时钟

  • 19
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FPGA异步时钟约束方法有几种常见的做法: 1. 异步复位:在异步时钟域中添加一个异步复位信号,用于保证系统在上电或者复位时的正确初始化。复位信号需要经过适当的同步处理,以确保在时钟稳定后再生效。 2. 时序同步器(Synchronizer):在异步时钟域和同步时钟域之间插入一个时序同步器,用于将异步信号转换为同步信号。时序同步器包括两个触发器(Flip-Flop),一个触发器位于异步时钟域,另一个触发器位于同步时钟域。通过两个触发器的级联,可以确保异步信号在同步时钟域中得到稳定的采样。 3. 时序约束:使用时序约束(Timing Constraint)来限制异步时钟域中的逻辑路径。时序约束定义了信号在电路中传输的最大延迟和最小延迟,以及时钟与数据的关系等。通过正确设置时序约束,可以确保异步时钟域中的逻辑在同步时钟域的正确操作。 4. FIFO缓冲:在异步时钟域和同步时钟域之间添加一个FIFO缓冲区,用于缓解两个时钟之间的不匹配。FIFO缓冲区可以通过流水线技术实现,将异步时钟域中的数据按照同步时钟域的速率进行处理。 这些方法可以根据具体的设计需求选择使用,通常需要结合具体的FPGA开发工具和芯片手册来实施。同时,对于复杂的异步时钟域设计,还需要进行静态时序分析和时钟域交叉验证等工作,以确保设计的正确性和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值