问题: 2个频率无关的时钟,在sel的挑选下做切换。
有时一个看起来简略,实践上是在检测ASIC工程师的问题。
1.简略的讲便是做信号的2选1么,那么咱们就先做一个简答的2选1吧。
这是一个逻辑图,实践的2选1是由3个门电路进程的,比方2个与一个或:
这个电路明显不能用于时钟的挑选,由于这将导致输出时钟存在毛刺,后级电路是不能直接用的。
2. 咱们很天然的会想到,要是能在时钟低时切换到另一个时钟低电平,就能确保时钟的质量。这样在时钟切换时就必定要阅历4个阶段:1)挑选信号改动、2)在clk1为低时停掉clk1的挑选 、3)在clk2为低时翻开clk2的挑选端、3)正常作业,完结切换。
这样一想,好像要写一个状态机了。可是这儿面有一个问题先要处理:clk的低电平用什么来检测?当然,假如你有更高频率的时钟,确实是能够写一个状态机的,可是恐怕大都时分是没有那个高频时钟的。那咱们就只能用时钟的下降沿来检测时钟的低电平的到来了。所以咱们就根本有了方向。
这个电路是比较经典的,其考虑进程也很屈折,要害就在于寄存器前的那个与门,它的方位十分要害。
是不是这就能够了呢?当然不完全。咱们考虑了输出时钟的完整性,可是咱们忘了,图上的这2个寄存器自身便是跨时钟域的寄存器,其自身也存在压稳态的问题。并且这个压稳态会跟着输出的时钟扩展到很远。芯片恐怕是承受不了的。
3. 所以,咱们还需要一点特别处理(图就不画,有点烦,可是这一步很重要),便是在寄存器输出端到另一个寄存器前的与门之间用相应的时钟锁存2次(这是最一般的做法,地球人恐怕都知道)。