组合逻辑搭建的时钟产生器会引入毛刺,使功能出现问题。在同步设计中,数据输入端的毛刺不会引起任何问题,因为数据是在时钟边沿处捕获的。然而毛刺或尖峰脉冲出现在时钟输入端(或者寄存器的异步输入端)就会产生明显的影响。
内部产生的时钟
时钟信号要求全部从PLL产生。内部产生的时钟信号会出现毛刺。窄毛刺信号会违背寄存器的最小脉冲宽度要求**(寄存器对时钟信号也有要求)。**在毛刺到达时钟输入端时,如果寄存器的数据发生变化,会违背建立和保持时间。可以通过在组合逻辑后加入一级触发器加以过滤毛刺。
tco:时钟边沿到数据输出的延迟;tcomb:两级触发器间组合逻辑延迟;tskew:由于时钟生成逻辑而产生的时钟偏移量;
***此外还要注意关键一点::***由于组合逻辑而对时钟信号产生偏移量大于两级触发器的数据路径延迟时(tskew > tco + tcomb),会违背寄存器的建立时间要求。(这里通过公式:tco + tcomb < TMIN + tskew - tsetup也许会认为时序没有问题甚至是更优了,实际上会产生下图2.17的结果,外部输入信号被当前驱动的这个加上偏移量时钟所采样,那么肯定会出现建立时间违例的现象)