专栏首页根究FPGAglitch-free clock switching circuit

glitch-free clock switching circuit

glitch:毛刺,glitch-free clock switching circuit:无毛刺时钟切换电路,今天讨论的主题就是如何实现时钟的无毛刺切换,本文将从有毛刺的时钟切换电路、无毛刺的源同步时钟切换电路、无毛刺的异步时钟切换电路三方面展开。

有毛刺的时钟切换电路:

之前曾在降低功耗相关的一篇推送中讲到过时钟使能信号:时钟使能降低功耗,当时一位大哥说这样并不是很好,很容易产生毛刺,其电路结构图为:

上图中的时钟切换电路是一个纯组合逻辑,输出时钟OUT_CLK由SELECT信号控制,但是正是因为使用了纯组合逻辑,导致该电路存在时钟毛刺的重要问题,如下所示,在进行时钟切换时,产生斩波输出时钟或在输出端产生毛刺:

同源时钟切换电路:

随着越来越多的多频时钟在芯片中的应用,经常需要在芯片运行时进行同源时钟切换,为了抑制源同步时钟切换时产生的glitch,可以在时钟选择路径中插入下降沿触发的DFF,在每个时钟的下降沿寄存选择控制信号,在其他时钟被取消使能之后才启用选择功能,提供了极好的输出故障保护,电路结构如下所示:

该电路的时钟输出波形如figure-2所示:

可以看到,在CLK的下降沿对SELECT信号进行采样,DFF的输出作为另一级DFF的disable信号,在SELECT进行任意切换时,无论其如何切换,只有在该路径上的enable信号(另一级的DFF的反向输出)为1时该路径才会生效。

因为SELECT是在下降沿被采集,而在时钟的下降沿时DFF的反向输出已经稳定,可以理解为在SELECT未选中该路径时,则释放该路径的控制权,同时通过~Q将控制权交给另一级时钟路径。

另一级时钟路径在获得控制权的前提下,在时钟的下降沿采集使能信号,并产生相应的输出,代码描述为:

reg en_r0,en_r1;
always@(negedge CLK0)   en_r0<=(~SELECT)&(~en_r1)
always@(negedge CLK1)   en_r1<=(SELECT)&(~en_r0)
assign OUT_CLK=( en_r0 & CLK0 ) | ( en_r1 & CLK1 );

异步时钟切换电路:

该电路是针对无关时钟源切换的毛刺保护电路:

该电路的输出时钟为:

为什么这种异步时钟切换电路不会产生毛刺时钟输出呢?

第一级DFF在上升沿对使能信号进行锁存,在第二级触发器在时钟下降沿对上一级的锁存使能信号输出进行寄存,第一级锁存的目的是为了消除亚稳态,第二级的作用是确定时钟路径的仲裁器,确定将时钟输出的控制权交给哪一条路径。在箭头1处将路径控制权交给路径2,路径2的第一级DFF在“3”处锁存输出使能信号,第二级DFF在“4”处寄存并输出使能信号,同时持续disable另一条路径(保持控制权),从而路径2输出时钟有效,代码描述为:

reg clk1_en1,clk1_en2;
reg clk2_en1,clk2_en2;
//时钟路径0
always@(posedge CLK0) clk0_en1<= sel & (~clk1_en2);
always@(negedge CLK0) clk0_en2<= clk_en1;
//时钟路径1
always@(posedge CLK1) clk1_en1<= sel & (~clk0_en2);
always@(negedge CLK1) clk1_en2<= clk_en1;
//输出时钟
assign OUT_CLK=( clk_en1 & CLK1 ) | ( clk_en0 & CLK0 );

- END -

本文分享自微信公众号 - 根究FPGA(gh_08b5d93f8fa5),作者:叫什么好呢啊

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-09-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 一道简单的笔试题_时钟切换电路(Glitch-free clock switching circuit)

    DFF1和DFF3作用:在选择路径插入一个上升沿触发器,用于缓存数据,将数据传递给下一级;若去掉,会电路产生由异步信号引起的亚稳态;

    数字芯片社区
  • 联发科笔试题——Glitch free 无毛刺时钟切换电路、时钟无缝切换、时钟无毛刺切换技术

    无毛刺时钟切换电路,又叫 Glitch free 电路、时钟无缝切换电路,在笔试中遇到过,如果没有接触过,很可能无从下手。

    FPGA探索者
  • 时钟切换电路(clock switching glitch free)英文版

    链接: https://pan.baidu.com/s/1x9h8iM9T6CPArWLTdnMyhw

    碎碎思
  • 低功耗 | Glitch Power 分析

    老驴发现『问题』地出现是有聚集效应的——某段时间突然间许多人都在关心Congestion 就像每个客户的每个Design 都被Congestion 阻挡住了前进...

    老秃胖驴
  • Glitch, Glitch, Glitch

    在IC 圆桌派群,每每提及power 都会说到glitch power, 数字电路实现中有许多重名的概念,如DRC 可回顾《数字电路实现中的DRC》如Glitc...

    老秃胖驴
  • combinational clock gating Vs sequential clock gating

    关于clock gating 已经写过:《clock gating | 从ICG cell 在 library 中的定义说起》《clock gating | G...

    老秃胖驴
  • P&R | 物理设计流程概述

    题记,VLSI System Design 上的这篇文章其实没什么实质性的内容,只是一个特别特别笼统的概述,而且由于年久失修,某些地方的概念欠完备,但该文趣味十...

    老秃胖驴
  • How do I reset my FPGA?

    Editor’s Note: This article first appeared in the Summer 2011 issue of Xcell Jou...

    瓜大三哥
  • 关于shared pool的深入探讨(六)

    http://www.eygle.com/internal/shared_pool-6.htm

    数据和云01
  • Tmux快捷键总结

    In tmux, hit the prefix ctrl+b (my modified prefix is ctrl+a) and then:

    marsggbo
  • 构建 ARM Linux 4.7.3 嵌入式开发环境 —— BusyBox 构建 RootFS

    上一篇我们已经成功将 ARM Linux 4.7.3 的内核利用 U-BOOT 引导了起来。但是细心的你会发现,引导到后面,系统无法启动,出现内核恐慌 (Ker...

    RainMark
  • 2019-08-17 awesome-java,JAVA开发的武器库

    A curated list of awesome Java frameworks, libraries and software.

    Albert陈凯
  • 鸿蒙系统研究之五:替换 AOSP 预编译库,关闭 SELinux

    言归正传,在我的上一篇文章 吐槽一下开源鸿蒙系统 中,我提到过,开源鸿蒙标准系统的系统文件主要来自 AOSP 的预编译文件,这对于追踪启动过程中的问题非常不友好...

    云水木石
  • 鸿蒙系统研究之六:U-Boot引导

    U-Boot 的全称是 Universal Boot Loader,其作用就是引导系统。对于我们熟悉的 PC,上电后,通过 BIOS 引导操作系统 (Windo...

    云水木石
  • 精!思科设备命令大全

    网络技术联盟站
  • 全网最优质的思科设备命令大全

    前两天给大家分享了H3C和华为的命令大全,得到了大家的认可,昨天有粉丝在华为命令大全中提到锐捷相关的命令大全,我寻思了一下,其实思科和锐捷的命令是相近的,所以想...

    网络技术联盟站
  • 全网最全思科命令大全,分类清晰,强烈建议收藏!

    ip address 172.16.0.1 255.255.0.0 配置接口的ip 地址

    网络技术联盟站
  • RFC2616-HTTP1.1-Header Field Definitions(头字段规定部分—单词注释版)

    zaking
  • Aurora 8B/10B光口通信

    本课程内容参考XILINX 官方文档PG046(https://www.xilinx.com/support/documentation/ip_document...

    碎碎思

扫码关注云+社区

领取腾讯云代金券