时序约束:

 

 

同步时序模型

时钟源clk到rega的时钟端口,会有一定时间的延迟Tclka。

同理时钟源clk到regb的始终端口,会有一定时间的延时Tclkb。

有效数据到寄存器的Q端口还有一定的时间Tco

Tdata为数据延时,这部分延时包括组合逻辑延时的走线延时。

Tus表示捕获寄存器的建立时间要求

Th表示捕获寄存器保持时间要求

Tco、Tsu、Th是由FPGA的芯片工艺决定的

时序约束实际就是对时钟延时Tclk和Tdata做干预和要求,Tdata可通过代码和布局布线做优化。

 

 

时间裕量:

时间余量包括建立时间裕量和保持时间余量。

 

FPGA综合后是否满足时序要求,就看所有的捕获寄存器是否能正确稳定的捕获到发起寄存器的数据,那么到达捕获寄存器的数据输入端口D(regb/D)的数据要满足建立和保持时间要求,也就是Tsu之前,current data valid 要准备就绪,在Th之后current data valid 还要维持一段时间。Tsu之前和Th之后的时间称之为裕量(Setup Slack和Hold Slack)

 

 

最大延时和最小延时:

当延时时间大于T-Tus时:在Tus到来时数据还没来,此时不满足建立时间要求,

当数据延时时间小于Th时,data在保持时间(Th)内已经发生了变化,不满足保持时间要求,且数据不稳定了。

当数据延迟了Th时:Tsu时间内数据到来,且保持了Th时间,满足建立时间和保持时间要求。

 

所以最大时间延迟是T-Tsu,最小时间延时是Th,因为一个时钟周期传输一次数据,数据的时间周期就是一个时钟周期,所以为了满足保持时间要求,最小的延迟时间就是Th。

FPGA的时序问题,根本原因就是建立时间和保持时间的问题,解决建立时间不足的方法是减少延时,解决保持时间不足的方法是增加延时