门控时钟一般是用于多比特的数据,因为门控单元也有资源消耗,需要耗电,一般数据位宽超过3bit才会有收益。
1.与门(或门)门控时钟
门控时钟的控制信号可以选用高电平有效或低电平有效,若控制信号高电平有效,可以使用与门进行时钟门控,时钟被关闭时恒为0,且此时控制信号只能在低电平处跳变,否则容易产生毛刺;若控制信号低电平有效,可以使用或门进行时钟门控,时钟被关闭时恒为1,且此时控制信号只能在低电平处跳变,否则容易产生毛刺。
2.锁存器门控时钟
若使用与门(或门)进行门控,容易产生毛刺,因此可以使用锁存器进行时钟门控,若控制信号高电平有效,D锁存器则应该低电平有效,以此保证控制信号只会在时钟低电平跳变,其结构如下:
由于锁存器是电平敏感,由于存在skew,锁存器门控时钟仍可能会带来毛刺。
另外,使能信号的跳变可能会导致亚稳态。
3.寄存器门控时钟
使用寄存器门控时钟能够避免控制信号不是以周期为单位变化而产生的毛刺问题,但是若skew较大,理论上仍然会出现毛刺,但是由于控制信号是以周期为单位进行变化的,因此由于skew导致毛刺的概率会相对较小。
门控时钟在 ASIC 中使用较多,在 FPGA 使用较少,使用门控时钟会影响时序分析。且ASIC中使用门控时钟一般是基于锁存器的门控时钟,因为锁存器消耗的资源更少,且有专门的门控时钟单元,因此走线延迟带来的毛刺问题基本不会出现。
参考资料:
芯片设计进阶之路——门控时钟 - 知乎
门控时钟与控制信号电平、与门门控、或门门控、上升沿门控、下降沿门控 (qq.com)
关于控制信号的跳变,还涉及到时钟无毛刺切换技术,具体可以参考下面的文章: