FPGA时钟约束在高速信号的传输设计中是非常重要的,主要是考虑到了建立裕量和保持裕量,如果上述两个量有其中一个为负,则会导致锁存的数据处于亚稳态的状态。
一.当clock由外部时钟提供,分析如下:
上图是在外部数据传到FPGA的一个示意图,对各个延时的解释如下:
clk1:时钟信号从PLL或者I/O口到源寄存器的延时;
clk2:时钟信号从PLL或者I/O口到目标寄存器的延时:
Tco: 在源寄存器接受到时钟信号之后到寄存器最后输出数据的延时。
Tpcb: 走线延时
建立时间Ftus:在时钟有效沿之前,数据必须保持的最短时间
保持时间FTh: 在时钟有效沿之后,数据必须保持的最短时间
时序图如下图所示:
数据到达时间:Tclk1+Tco+Tpcb
数据保持时间:Tclk1+Tco+Tpcb+Ts(数据保持周期)
建立时间:Tclk2+Tclk-Ftus
保持时间:Tclk2+Tclk+Fth
建立裕量:建立时间-数据到达时间
即(Tclk2+Tclk-Ftus)-(Tclk1+Tco+Tpcb)>0
如果建立裕量为正,说明可以在规定的时间内到达目标,反之,则说明数据有可能会处于亚稳态状态。
保持裕量:数据保持时间-保护时间
即(Tclk1+Tco+Tpcb+Ts)-(Tclk2+Tclk+Fth)>0
如果保持裕量为正,说明数据在锁存的时候有足够多的稳定时间,反之,则说明数据有误或亚稳态状态。
二.当clk由FPGA时钟提供的时候,分析如下:
Tskew:时钟信号从时钟源传输到源寄存器的延时定义为CLK1,传输到目的寄存器的延时定义为CLK2;将Clk2-Clk1定义为时钟偏移Tskew
数据到达时间:Tclk1+FTco+Tpcb
数据保持时间:Tclk1+FTco+Tpcb+Ts(数据保持时间)
建立时间:Tclk2+Tclk-Tsu
保持时间:Tclk2+Tclk+Th
建立裕量:建立时间-数据到达时间
即:(Tclk2+Tclk-Tsu)-(Tclk1+FTco+Tpcb)>0
Tclk+Tskew-Tsu-FTco-Tpcb>0
如果建立裕量为正,说明可以在规定的时间内到达目标,反之,则说明数据有可能会处于亚稳态状态。
保持裕量:数据保持时间-保持时间
即:(Tclk2+Tclk+Th)-(Tclk1+FTco+Tpcb+Ts)>0
Tclk+Tskew+Th-Tpcb-FTco-Ts>0
如果保持裕量为正,说明数据在锁存的时候,可以有足够的时间,反之数据有误或处于亚稳态状态。