在文中会先剖析任意时候切换时钟存在的问题,然后引出无毛刺时钟切换时钟电路。分别先容两种稳定的切换电路,第一种紧张针对具有倍数关系的时钟,第二种针对时钟完备无关的系统。
1. 任意时候切换时钟存在的问题在图 1展示了一种大略的时钟切换电路,是采取与或非门构成的选择器,时钟旗子暗记分别从CLKx输入,SELECT为时钟选择端,CLK_OUT为时钟输出端。当SELECT发生翻转时会切换时钟源,由于切换旗子暗记的时候是不愿定的,因此可能会涌现毛刺。
图1 时钟切换选择器
在图 2波形中,展示了glitch产生的情形。由于select旗子暗记能够在任意时候发生变革,因此造成了这种问题,当不知道两个时钟的频率的关系时,该当要避免在输出为高时切换时钟。
图2 任意时候切换产生的毛刺
2. 具有倍数关系的时钟切换
当时钟具有倍数关系时可以采取如图 3所示的时钟切换电路,在图中利用了负边沿触发的D触发器,SELECT旗子暗记只在时钟clockx的低落边沿采样,因此确保了切换只会发生在时钟clockx为低电平的状态下。同时才用了反馈构造,确保只有在A路时钟一定为低电平的状态下B路时钟才会发生切换,反之亦然。
图3 倍数频率关系时钟无毛刺切换电路
当SELECT发生切换时,时序如图 4与图 5所示,通过剖析时序图,能够剖析出当从A切换到B时,会在A时钟的低电平阶段先割断时钟,即电路中A对应的D触发器Q端为0,然后再B时钟的低落沿切换为B时钟,此时输出时钟保持为低电平。
图4 时钟1切换到时钟2时序图
图5 时钟2切换到时钟1时序图
在电路图 3中存在3个timingpath须要特殊关注,
SELECT到DFF1与到DFF2;DFF1的输出到DFF2的输入;DFF2的输出到DFF1的输入;这3个路径上的旗子暗记如果在DFF触发的边沿发生变革,那么可能会发生亚稳态(meta-stable)。把稳到SELECT旗子暗记必定是与CLK1或者CLK2干系的,为了避免发生亚稳态,SELECT旗子暗记该当与时钟切换的DFF利用不同的边沿,在此设计中SELECT该当选择为上升沿触发。
把稳事变:
在上电复位阶段,DFF1与DFF2都该当保持Q端为低电平输出,这样确保两个时钟都不会当选中,同时这种设计也使得时钟切换具有容错性(fault tolerance)。详细的,当在初始阶段,时钟A由于缺点没有toggle。此时如果掌握时钟A的DFFx复位时处于1状态,那么该时钟一贯当选中,同时由于没有时钟驱动,触发器DFFx的Q端会一贯处于1状态,在这种情形下输出时钟会一贯保持为低,且无法切换到其余一起时钟,此时处于锁去世状态。但是若初始复位后DFF的Q端保持为0,只管一起时钟没有事情,也还能够切换到其余一起正常事情的时钟。因此DFFx须要确保复位后输出为0。
3. 不干系时钟无毛刺切换在上述图 3切换电路哀求时钟具有倍数关系,由于只有在这种情形下,才能避免涌现异步旗子暗记,图 3所示电路没有任何处理异步旗子暗记的机制,无法用来切换无关系的任意两个时钟。
为了处理异步旗子暗记,须要在图 3所示的电路的根本上引入同步器(synchronizer),当须要切换的两个时钟是没有关系时,产生异步旗子暗记的源头是掌握旗子暗记SELECT与DFF的反馈旗子暗记。在图 6所示电路中引入了同步器,经由两级DFF同步SELECT与DFF的反馈旗子暗记,从而减小了亚稳态传播的概率。
图6 异步时钟无毛刺切换电路
在图 7描述了CLK2切换到CLK1的过程,个中DFF5Q与DFF6Q为同步器的Q端输出。
图7 时钟2切换到时钟1
仿真实验测试如图 8所示,剖析仿真结果可知图6所示电路实现了时钟无毛刺切换。
图8 任意时钟切换仿真
图 3与图 7所示的电路具有一样平常性,在图中描述的是二输入端口的时钟切换电路,当设计多时钟切换电路时,对每一个时钟切换的使能旗子暗记须要与其他的时钟源的反馈旗子暗记进行与运算。
别走开,Jayden小哥哥又有话说,仿真工程与源码可扫描二维码关注"大众年夜众号鼓捣猫尼回答“时钟切换工程源码”得到(不要引号)。在Jayden小哥哥的杂货铺会不定期的更新关于PFGA、IC设计、仿照电路、嵌入式编程等学习心得,期待小伙伴的关注与点赞,I need U。
参考文献:
https://www.eetimes.com/techniques-to-make-clock-switching-glitch-free/