无毛刺时钟切换电路

随着多时钟技术被应用到芯片,通常在芯片运行时需要切换不同的时钟源。两个不同的时钟之间可能是完全不相关的,即频率与相位均不相关,也可能存在一定的相位关系或频率倍数关系。不论是何种时钟关系,不可靠的切换可能会在切换过程中引入毛刺(glitch),这些毛刺信号可能会被一部分触发器(flip-flop)捕获到边沿,而另外一部分flip-flop忽略了该边沿,在这种情况下会导致输出逻辑错误,因此设计稳定可靠的电路控制多路选择器(multiplexer)的选择端至关重要。

在文中会先分析任意时刻切换时钟存在的问题,然后引出无毛刺时钟切换时钟电路。分别介绍两种稳定的切换电路,第一种主要针对具有倍数关系的时钟,第二种针对时钟完全无关的系统。

  1. 任意时刻切换时钟存在的问题

在图 1展示了一种简单的时钟切换电路,是采用与或非门构成的选择器,时钟信号分别从CLKx输入,SELECT为时钟选择端,CLK_OUT为时钟输出端。当SELECT发生翻转时会切换时钟源,由于切换信号的时刻是不确定的,因此可能会出现毛刺。

图 1 时钟切换选择器

在图 2波形中,展示了glitch产生的情况。因为select信号能够在任意时刻发生变化,因此造成了这种问题,当不知道两个时钟的频率的关系时,应该要避免在输出为高时切换时钟。

图 2 任意时刻切换产生的毛刺

  1. 具有倍数关系的时钟切换

当时钟具有倍数关系时可以采用如图 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个timing path需要特别关注,

  1. SELECT到DFF1与到DFF2;
  2. DFF1的输出到DFF2的输入;
  3. 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。

  1. 不相关时钟无毛刺切换

在上述图 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/

数字电路时钟无毛刺切换相关推荐

  1. IC基础知识:时钟无毛刺切换

    参考这篇文章:数字电路时钟无毛刺切换 因为直接用组合逻辑判断去切换时钟,会产生毛刺,如下图所示. 产生该毛刺的原因: sel没有在时钟跳边沿改变.因为我们一般是用clk上升沿采样数据,所以我们sel选 ...

  2. 无毛刺的时钟切换电路(Glitch-free clock switching circuit)设计(Verilog)

    从秋招的经验来看,Verilog设计类的题目,如:奇偶分频,状态机,序列检测,波形产生,跨时钟域处理,门控时钟,同步FIFO,格雷码与二进制码转换,异步复位同步释放,时钟切换,异步FIFO等,其中最为 ...

  3. 无毛刺时钟切换(glitch free clock switching)

    时钟切换电路的意义 为什么要做clock switching,在现代的SoC设计中,很多时候我们设计的模块并不是要跑在一个固定的频率下,而是根据性能和功耗的要求要跑在不同的时钟频率下,当需要降低功耗以 ...

  4. 数字电路时钟问题——Jitter与Skew区别

    在博文:时序分析之静态分析基础中提到了一次时钟偏斜问题,只是一笔带过而已,这里重新拿过来看看,并且添加时钟抖动(Jitter)相关知识点,这是学习FPGA经常遇到的名词. 先贴出来时钟偏斜的定义: 时 ...

  5. ProxySQL+MGR实现读写分离和主节点故障无感知切换

    ProxySQL+MGR实现读写分离和主节点故障无感知切换 一.环境准备 192.168.153.149 mgr-node1 192.168.153.150 mgr-node2 192.168.153 ...

  6. ProxySQL+MGR实现读写分离和主节点故障无感知切换 - 完整操作记录

    ProxySQL+MGR实现读写分离和主节点故障无感知切换 - 完整操作记录 前面的文章介绍了ProxySQL用法,这里说下ProxySQL中间件针对Mysql组复制模式实现读写分离以及主节点故障时能 ...

  7. jQuery实现无刷新切换主题皮肤功能

    主题皮肤切换功能在很多网站和系统中应用,用户可以根据此功能设置自己喜欢的主题颜色风格,增强了用户体验.本文将围绕如何使用jQuery实现点击无刷新切换主题皮肤功能. 实现该功能的原理就是通过点击定义的 ...

  8. 关于门控时钟的毛刺解决

    平台:ise14.7 仿真平台:modelsim se10.4d 在使用AD采集控制的时候往往需要使用SPI来读取外部的数据,需要逻辑内部产生门控时钟提供给外部器件使用. 逻辑上使用组合逻辑分配时钟. ...

  9. 51单片机七段数码管显示时钟无按键控制—①—74HC595版

    参考链接: 51单片机七段数码管显示时钟加按键控制-③-74HC595版 51单片机七段数码管显示时钟加按键控制-②-74HC595版 文章目录 一.实验内容: 二.实验分析: 三.仿真图: 四.源代 ...

  10. 优雅地实现Android主流图片加载框架封装,可无侵入切换框架

    项目开发中,往往会随着需求的改变而切换到其它图片加载框架上去.如果最初代码设计的耦合度太高,那么恭喜你,成功入坑了.至今无法忘却整个项目一行行去复制粘贴被支配的恐惧.:) 那么是否存在一种方式 能够一 ...

最新文章

  1. github下载速度改善
  2. 选择排序算法(基于Java实现)
  3. 项目分发系统-expect
  4. 自定义Adapter中实现startActivityForResult的分析
  5. leetcode题解【持续更新】
  6. 自然语言处理中的自注意力机制(Self-Attention Mechanism)
  7. 重载与覆盖(java)
  8. Atitit it sftwr dev 原则准则 principle 目录 第一章 简单原则 kiss 1 第一节 . You Ain’t Gonna Need It(YAGNI)避免过度设计 1
  9. 兄弟7180dn拆机_兄弟DCP-7010拆机图解
  10. e480win7显卡驱动_e480安装了windows7显卡驱动装不上
  11. 《Linux内核设计与实现》勘误
  12. MyBatis-Spring(五)--MapperScannerConfigurer实现增删改查
  13. SpringDataJPA教程 三种配置方式
  14. ElasticSearch7学习笔记之Mapping
  15. allure如何设置新logo
  16. Selenium 与(Firefox、GeckoDriver)和(Chrome、ChromeDriver)版本对应关系
  17. 公司内部网络解决码云配置问题(gitee码云公玥管理)
  18. 计算机硬盘管理 3t,3T硬盘的使用方法总结与分享
  19. DP4361国产六通道立体声D/A音频转换器芯片替代CS4361
  20. 前端笔试题汇总 2018/12/04 (1)

热门文章

  1. 什么是NFV?什么是SDN?他与SDN的区别是什么
  2. 微信公众号h5中调用微信支付
  3. AGV车载控制系统搭建(初学者入门)
  4. python group与groups 详解以及区分
  5. 抖音短视频去水印教程
  6. 阿里云OSS云存储简介 与 基本概念
  7. linux系统的unip命令
  8. [HAOI2009] 毛毛虫
  9. 嵌入式和单片机不一样?
  10. 消费者行为分析包含了哪些内容?