有毛刺的时钟切换电路
原理图如图1所示:
这个时钟切换电路是一个纯组合逻辑,输出时钟(OUT CLOCK)由选择信号(SELECT)控制,当SELECT为1时输出CLK1,反之,输出CLK0.
看似很简单,实现了时钟的切换,实则存在着很大的隐患,会产生毛刺,如图2所示:
对上图的Verilog描述:
assign outclk = (clk1 & select) | (~select & clk0);
针对相关时钟源的毛刺保护
图3显示了防止源时钟为相互倍数的时钟开关输出出现毛刺的解决方案。在每个时钟源的选择路径中插入一个负边沿触发的D触发器。 在时钟的下降沿采样选择控制(SELECT),以及仅在使其他时钟无效后使能选择(SELECT),可以提供出色的输出保护 :