建立时间(Tsu:set up TIme)是指在时钟沿到来之前数据从不稳定到稳定所需的时间,如果建立的时间不满足要求那么数据将不能在这个时钟上升沿被稳定的打入触发器;保持时间(Th:hold TIme)是指数据稳定后保持的时间,如果保持时间不满足要求那么数据同样也不能被稳定的打入触发器。建立时间和保持时间这两个指标说明器件本身不是理想的(有时延等),正是这个不理想的特性,限制了FPGA的时钟工作频率。
首先我们都知道setup TIme 和holdup time是由器件决定的,并不是说可以随着你FPGA设计的改变而改变。那么FPGA时钟频率是怎么计算的呢,在不考虑时钟延时抖动等条件下,一个信号从触发器的D端到Q端的延时假设是Tcd,从Q端出来之后会经过组合电路延时,这里注意即使没有组合电路,就单单经过导线也是有延时的,这个延时称作Tdelay,经过这个延时之后,信号将要去下一个触发器,而且必须要满足触发器的建立时间tsetup,不然时钟无法采样到稳定的数据。所以这三个时间加起来应该比时钟周期要小,否则数据无法打入下一个触发器,那就会进入亚稳态。
至于FPGA时钟频率与holdup time的关系,具体做设计的时候还是需要满足Tcd+Tdelay+TsetupTholdup,也就是说Tholdup 决定了最短路径的下限,也就是说组合逻辑是不能太大也不能太小的。这就是hold time 能起作用的地方吧。其实一般都能满足保持时间,一般只要考虑都是要满足建立时间。