数字前端基础电路:经典时钟切换电路

在设计多时钟信号的数字系统时,涉及到了时钟切换,在网上找到了一篇文献:Trouble-Free Switching Between Clocks,第 20 页,这篇极短的小文章可能是 Xilinx 元老 Peter Alfke 写的,非常实用,受益匪浅。

一、时钟电路分析

下面就是文章中设计的时钟切换电路图:

数字前端基础电路:经典时钟切换电路

Xilinx 这个电路的基本思想是 SR latch。 去掉图中两个 flip flop,最前端的两个 AND 组成一个类似 SR latch 的电路,只不过 SR Latch 的 S,R 输入换成了 Select 和 Select inverted。为了使 SR Latch 的输出能与所需控制的时钟同步,加上了一级 flip flop 同步一下。

Xilinx 这个电路里有一个非常重要的小细节,牵涉到时钟切换的一条重要原则——先关断当前选择的时钟,再使能新选择的时钟。 QB 反馈到 Clock A 那边经过一个反向再和 Select 反向 AND,QA 反馈到 Clock B 那边经过一个反向再和 Select AND,保证了先关断再使能这个重要原则。

Xilinx 这个电路里还有个非常重要的小细节,也是该电路的精妙之处。 

这两个 flip flop 的时钟输入端有个小泡泡,意思是时钟下降沿触发,这是一个重要的设计思想。如果要 gate off 掉一个时钟,在该时钟低电平时 gate off 是最安全的。 如果是在高电平时做切换,很容易造成高电平被切掉一段变成一个毛刺,这可是大大的危害。

搞笑的是网上 随便搜一下 “glitchless clock switching”,会出来一大堆文章,虽然都是基于 Xilinx 这个电路,但大部分漏掉了低电平触发这个细节。

二、改进后的时钟切换电路

上面的电路虽然概念上是对的,但有明显瑕疵。如果 Select 相对于 Clock A,Clock B 是完全异步(asynchronous),电路中的两个 flip flop 在 Select 变化时会有亚稳态(metastability)的可能性。 克服这个瑕疵的 fix 很简单,把图中的单个 flip flop 换成两级 flip flop 组成的同步器(synchronizer)就可以了。

下面是改进的电路,一级 flip flop 换成了两级 flip flop 同步而已。

数字前端基础电路:经典时钟切换电路

三、仿真分析

电路启动波形

数字前端基础电路:经典时钟切换电路

切换波形:fast to slow

数字前端基础电路:经典时钟切换电路

切换波形:slow to fast

数字前端基础电路:经典时钟切换电路

以上是一个比较经典的时钟切换电路。 根据实际使用场景的不同,时钟切换有很多不同的实现方法,都可以做得非常经典。 时钟,复位,是数字设计里最最基本的电路,稍有不慎,就会毁了整个设计,一定要谨慎再谨慎。

扫码关注尚为网微信公众号

尚为网微信公众号
每天学习电路设计嵌入式系统的专业知识,关注一波,没准就用上了。

原创文章,作者:sunev,如若转载,请注明出处:https://www.sunev.cn/embedded/1267.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022年8月19日 19:58
下一篇 2022年8月23日 20:27

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注