探讨时钟切换电路的实现

电子说

1.3w人已加入

描述

时钟对芯片功能准确性、性能高低和功耗高低有着至关重要的影响。芯片的时钟来源一般有三种:

第一,通过外部引脚直接输入时钟信号,常用于接口芯片、传感器芯片,SOC系统中少见;

第二,外部晶振+内部时钟发生器产生时钟,常见于低速单片机;

第三,内部时钟发生器+内部PLL +内部分频器产生时钟,常见于对安全、功耗有特殊要求的芯片;

第四,外部晶振+内部时钟震荡器+内部PLL +内部分频器产生时钟,性能高一点的MCU基本都采用这种方案。   

以第四时钟方案为例,其采用外部晶振是因为外部晶振精度高,采用内部时钟振荡器是利用其安全、灵活、低功耗的优势,配置PLL可将外部晶振和内部振荡器的时钟倍频,再通过分频器分频供给到各个模块。且为了节省功耗该SOC系统往往工作频率可变,性能要求高时使用高频率、任务简单时使用低频率,不工作的时候可关掉时钟。这就是广泛应用的多时钟模式系统,实现该系统需要采用时钟切换、clock gating甚至power gating技术。

本文首先探讨时钟切换的实现,对于clock gating和power gating问题后续探讨。

分频器

图1

首先讨论两个时钟间的切换问题,这两个时钟可能是具有倍频关系的同步时钟,也能是不相关的异步时钟。很容易想到采用二选一选择器就可以实现这一功能,不幸的是无论这两个时钟关系如何,都可能在时钟线上引入毛刺,如图1所示。

二选一选择器采用与或门的形式实现,SEL是选择信号,选择CLK0或CLK1到输出端口CLKOUT,也就是说CLKOUT是CLK0和CLK1拼接的结果。

图1中,SEL信号由低到高变化,CLK0为高电平、CLK1为低电平,此时CLKOUT就会出现向下的毛刺;如果此时CLK0的频率高于CLK1,那么CLKOUT的毛刺就是向上的脉冲。既然毛刺的出现是选择信号SEL变化时,两个输入时钟CLK0和CLK1高低交错,高低电平拼接造成的。

那么,如果让选择信号在两个时钟的下降沿处分别将时钟截断,再拼接成输出时钟,是不是就可以避免毛刺出现了呢?为此,我们在选择路径中插入下降沿触发器对SELECT信号进行下降沿采样,如图2(a)所示。

分频器

图 2(a)

分频器

图 2(b)

但这样仍存在问题,存在着CLK0没有被SELECT关断,CLK1已经开始输出的情况,这仍有可能产生输出毛刺,如图2(b)所示。

为了保证一个时钟选择信号关断后另一个时钟再输出,再在触发器前插入与门,连接成交叉反馈结构,如图3(a)所示,这就是经典的时钟转换电路。但这还是不够,如果CLK1和CLK0是异步的,那还需要对其进行同步,采用传统同步方式,插入上升沿触发器即可,如图3(b)所示。
 

分频器


图 3(a)
 

分频器

图 3(b)

到这里我们已经掌握了实现两个时钟切换的电路设计的基本思路,那如果有三个甚至更多时钟相切换又该怎么办?沿袭以上设计思路,将该电路结构进行扩展,每一路双锁存输出都相互交叉反馈即可,图4以四个时钟切换为例,给出了电路结构图。
 

分频器

图 4

以上就完成了时钟切换基础设计,总结一下大家需要知道,多时钟系统已经广泛应用,在进行时钟转换设计时, 1、单纯采用MUX对时钟做选择是不行的; 2、图3所示的时钟切换电路能够以较小的消耗而消除时钟切换时的毛刺; 3、该时钟切换电路结构可扩展,可按照这样的设计思路设计多选一时钟切换电路; 4、如果是异步时钟还要插入双锁存结构消除亚稳态。



审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分