有毛刺的时钟切换
红色的地方会出现一个毛刺,因为clk0信号还没选完,就开始了clk1信号。也就是选择信号变化的位置没有和切换的时钟对齐。
相关时钟源的时钟切换
在每个时钟源的选择路径中插入负边沿触发的D触发器,确保在切换时钟源的时候,其处于低电平,也就是等这个时钟完全选择完后,才会切换到下一个时钟,可以将负边沿的dff换成正边沿的试试就明白了
为什么选择下降沿的触发器
如果不选择下降沿触发器的话,可能会出现毛刺,之前的一篇文章写过了:https://blog.csdn.net/Fortune77/article/details/132286971?spm=1001.2014.3001.5501
其主要原因是因为触发器的延迟, 假设为上升沿变化,以clk2为例,按理来说经过DFF之后,Q的变化沿和clk2的变化沿是同步变化,但是DFF可能会出现延迟,所以Q端的信号可能会晚到,这样还在上升沿变化的话,晚到的Q端会和CLK2相与,出现毛刺。但是用下降沿的话可以避免这个问题,就算晚到了,也是和0进行相与,所以没影响
仿真图像如下所示
异步时钟源的时钟切换
在相关时钟源的基础上插入了上升沿的D触发器,对选择信号进行同步处理,防止亚稳态 ,与SELECT相与的信号是clk2时钟域下的
所以 :
两个上升沿触发器作用:在选择路径插入一个上升沿触发器,用于缓存数据,将数据传 递给下一级;若去掉,会电路产生由异步信号引起的亚稳态;
两个下降沿触发器作用:SELECT 与反馈输出相与,下降沿采样反馈可以保证一个时钟 被完全取消选择后,输出才输出另一个时钟,从而避免产生毛刺。