在数字电路设计中,模块的运行时钟切换时,需要考虑到是否会产生glitch,小小的glitch有可能导致电路运行的错误。所以时钟切换时需要特别的处理。
第一步
这个电路显然不能用于时钟的选择,因为这将导致输出时钟存在毛刺,后级电路是不能直接用的
改进的时钟切换电路
为了保证不在时钟的高电平时期进行选择信号的时钟的切换。在时钟的下降沿寄存选择信号(SELECT)可确保在任一时钟处于高电平时输出端不会发生变化,从而防止斩波输出时钟(意思是下降沿寄存,可以保证下降沿到来之前输出端保持不变,这样就不会斩断当前时钟了)。所以采用下降沿触发的D触发器进行所存。
再次改进的时钟切换电路
由于输入的时钟本身就是跨时钟域的时钟,为了防止亚稳态的传输,所以在采集的时候,先进行一级D触发器的缓存,处理CDC的问题,第二级触发器进行下降沿采集,防止斩断时钟,最后选择时钟输出,完成时钟切换电路。