【verilog基础】时钟无毛刺切换电路 Clock Glitch Free

本文介绍了时钟无毛刺切换电路的重要性,详细讲解了如何通过在S端增加控制通路避免毛刺产生,并探讨了异步时钟无毛刺切换电路的设计,使用同步电路解决亚稳态问题。内容包括理论分析、电路图及代码示例,还提供了相关笔试题目的解答,深入解析DFF在电路中的作用和去掉可能的风险。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、时钟切换电路:容易产生毛刺

  • 1、在芯片运行时经常需要切换时钟源,通常的实现方式是:通过mux来选择不同的时钟源输出
    在这里插入图片描述
  • 2、这两个时钟在频率上可能完全不相关,也可能成倍数关系。不管是哪种情况,都有可能在开关门控时产生毛刺(Glitch)
  • 3、由于SELECT 信号会在时钟源的任意电平位置发生变化,从而导致输出时钟截断或者产生毛刺,如下图所示:
    在这里插入图片描述
  • 4、Glitch free:保证select信号只在两个时钟源都为低电平期间发生跳变

二、时钟无毛刺切换电路:在S端增加一些控制通路

    ### 关于 Clock Glitch 05 的技术解决方案 Clock glitch 是指由于时钟信号切换不当而导致的瞬态错误脉冲现象。这种现象可能发生在时钟切换过程中,尤其是在异步或多域时钟环境中[^1]。为了防止此类问题的发生,在设计无毛刺时钟切换电路时,通常采用特定的设计策略和技术手段。 #### 1. 防止 Clock Glitch 的基本原理 为了避免 clock glitch 的发生,核心原则是在新旧时钟源之间实现平滑过渡。这可以通过以下方法来完成: - **同步机制**:对于相关时钟源(即共享共同祖先的时钟),可以利用同步器确保两个时钟之间的相位关系稳定后再进行切换[^1]。 - **握手协议**:在异步时钟环境下,通过引入额外的状态机或控制逻辑,确认目标时钟已经完全稳定并被采样后才允许切换操作。 #### 2. 具体设计方案——Glitch-Free Clock Switching 以下是针对 `clock_glitch05` 提供的一种典型解决思路: ##### (a) 使用双锁存器结构 一种常见的做法是使用两级触发器组成的同步器来消除亚稳态影响。具体实现如下所示: ```verilog module clk_switch ( input wire old_clk, input wire new_clk, output reg out_clk ); reg [1:0] state; always @(posedge old_clk or posedge new_clk) begin case(state) 2'b00: if (~old_clk && new_clk) state <= 2'b01; // Detect rising edge of new_clk 2'b01: if (!new_clk) state <= 2'b10; // Wait until falling edge of new_clk default: ; endcase // Output the selected clock based on stable conditions if (state == 2'b10) out_clk <= new_clk; else out_clk <= old_clk; end endmodule ``` 此模块通过检测新旧时钟边沿的变化情况,确保只有当新的时钟信号处于稳定的低电平时才会执行实际切换过程,从而有效避免了潜在的毛刺问题。 ##### (b) 引入缓冲区与门控逻辑 另一种方式则是结合 buffer 和 AND/OR gate 来构建更复杂的开关网络。这种方法特别适用于需要频繁改变工作频率的应用场景下。例如下面展示了一个简单的例子: ```verilog // Example implementation using gated clocks wire en_newclk, sel_oldclk; assign en_newclk = ~sel_oldclk & new_clk; assign sel_oldclk = |{reg_sel}; always @(*) begin : CLK_MUX out_clk = sel_oldclk ? old_clk : {en_newclk}; end ``` 这里的关键在于合理配置 enable signal (`en_newclk`) 及其关联条件表达式,使得最终输出始终维持单一有效的时钟波形而不会产生任何意外跳变[^2]。 #### 3. 功耗优化考虑 —— Clock Gating 技术应用 除了关注功能层面的安全性之外,还应注意到动态功耗管理的重要性。正如之前提到过的那样,通过对不必要活动区域实施局部关闭措施即可显著降低整体能耗水平。因此,在某些情况下也可以将 clock gating 思想融入进来作为辅助手段之一[^2]。 --- ### 结论 综上所述,“clock_glitch05”的主要应对方案包括但不限于运用双重锁存架构或者精心设计带使能端口的选择单元等方式达成无缝衔接效果;与此同时还要兼顾节能需求适时加入相应的抑制机制以进一步提升系统性能表现。
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包

    打赏作者

    ReRrain

    觉得写的不错,不妨请我喝杯~

    ¥1 ¥2 ¥4 ¥6 ¥10 ¥20
    扫码支付:¥1
    获取中
    扫码支付

    您的余额不足,请更换扫码支付或充值

    打赏作者

    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值