先定义两个术语:
Input Maximum Delay(IMD):外部信号从被外部时钟打入外部的触发器、到该信号到达FPGA信号输入端的最大延时。
同理定义Input Minimum Delay(ImD)。
一、Clock Setup Slack
根据之前章节的结论,Clock Setup Slack可以表示为:
Clock Setup Slack = SR + Tcs(min) – uTco – uTsu – Td(max) (1)
稍微调整一下,即可得到数据来自外部时的时序裕量计算方法。
1、SR保持不变;
2、Tcs表示到达FPGA时钟输入脚的时钟路径相对于到达外部数据触发器时钟输入端的时钟路径的时钟抖动。
3、用Tco代替uTco。Tco是指外部寄存器的clock-to-output时间。
4、用Tsu代替uTsu。Tsu是指以FPGA输入管脚为起点、在FPGA内部寄存器的数据、时钟输入处,数据相对于时钟的时序关系,这个值应该由Quartus II布局布线后计算给出(…reported by Quartus II TAN)。本人理解,这个值是应该包括FPGA内部寄存器的uTsu的,TAN时这个值应该没有包括进去,不过该值很小,所以影响也不会很明显。Tsu实际上包含了FPGA数据输入脚到寄存器数据输入端、FPGA时钟输入脚到寄存器时钟输入端的路径延时,这是很重要的。
5、Td是指外部寄存器输出端到FPGA数据输入管脚的延时。
新的Clock Setup Slack可以表示为:
Clock Setup Slack = SR + Tcs_ext(min) – Tco_ext – Tsu – Td_ext(max) (2)
回顾一下IMD,IMD实际上可以表示为:
IMD = Tco_ext + Td_ext(max) – Tcs_ext(min) (3)
这样,外部数据输入到FPGA的Clock Setup Slack可以表示为:
Clock Setup Slack = SR – Tsu – IMD (4)
二、Clock Hold Slack
Clock Hold Slack可以表示为:
Clock Hold Slack = Td(min) – HR – Tcs(max) – uThd + uTco (5)
定义ImD为:
ImD = Tco_ext(min) + Td_ext(min) – Tcs_ext(max) (6)
按照上面的思路调整一下,可得外部数据输入到FPGA的Clock Hold Slack。
Thd的调整思路与Setup Slack的相同。Thd除了包含原有的uThd以外,还应反映管脚到信号端的路径延时。
Clock Hold Slack = ImD – Thd – HR (7)