前言
这几天查了一些关于时钟源切换电路的资料,最后终于把切换的原理看明白了。恰巧时钟源切换电路又是很多IC前端工程师的重要笔试或面试题目(应该吧),因此我也关于多时钟源切换写一篇博客,谈谈自己的理解。
设计思路
如下图所示,使用组合逻辑实现的多时钟源切换模块可能会产生毛刺。
所谓的毛刺,实际上就是电路中产生的我们不期望的脉冲信号。由于现代集成电路中基本都存在时序电路的模块,因此毛刺可能会使电路不满足时序或数据要求,对电路产生严重影响。
为了避免毛刺的产生,我们设计的多时钟源切换模块必须满足:在切换时钟时不能对电路原来的时序产生影响。这就要求在控制时钟选择的信号sel变化时,时钟的切换不是马上进行的,应在满足时序的前提下进行切换。
首先,我们来看看毛刺产生的根源:在clk1的高电平的时候进行切换,如果此时clk2正好为高电平,这时候clk2和clk1的高电平可能占空比变大也可能使占空比变小,总的来说有可能产生毛刺。在clk1的高电平的时候进行切换,如果此时clk2正好为低电平,那么肯定产生毛刺,因此这不能这样切换。从Clk2切向clk1也是这么一个原理。于是我们就有下面的结论:
电平相反的时候切换时钟,肯定有毛刺;电平相同的时候,有可能产生毛刺。这里我们关注低电平上产生的