• <li id="m4mkm"></li>
  • <bdo id="m4mkm"></bdo>
  • 0
    • 聊天消息
    • 系统消息
    • 评论与回复
    登录后你可以
    • 下载海量资料
    • 学习在线课程
    • 观看技术视频
    • 写文章/发帖/加入社区
    创作中心

    完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

    3天内不再提示

    使用普通的多路复用器进行切换时钟会发生什么?

    冬至子 ? 来源:IC设计er ? 作者:Fantasy ? 2023-09-20 10:53 ? 次阅读

    在现代芯片中,芯片运行时有必要在两个不同的时钟之间切换。如果我们使用普通的多路复用器进行切换时钟会发生什么?多路复用器有一个名为 SELECT 的控制信号,该信号在设置为“零”时将 CLK1 传播到输出,或者在设置为“1”时将 CLK2 传播到输出。当 SELECT 值更改时,由于输出从当前时钟源立即切换到下一个时钟源,可能会引起毛刺。

    图片

    图1普通多路复用器

    verilog代码:

    module clk_select1(
    input                                   clk1,
    input                                   clk2,
    input                                   rst_n,
    input                                   sel,
    output                                  out_clk 
    );
    assign out_clk = sel?clk2:clk1;
    endmodule
    

    图片

    图2时钟切换的正常多路复用器实现的波形(有毛刺)

    假如时钟由 clk1 切换到 clk2,且切换时刻为 clk1 输出电平为高的时候,此时立即切换时钟就会导致输出时钟出现毛刺(glitch)。在两个时钟电平相反的时候切换时钟,肯定有毛刺;电平相同的时候,即使不产生毛刺,时钟切换后的第一个时钟的周期或占空比也不是理想的。所以,为避免毛刺的产生,需要在两个时钟都为低电平的时候进行时钟切换。

    时钟切换方案的设计思路

    1.先关断当前选择的时钟,再新选择的时钟;

    2.在时钟为低电平的时钟进行时钟切换;

    一种典型的时钟切换电路如下所示。其中左边部分存在一个 互锁结构 ,与SR锁存器结构类似,不同之处是中间嵌入了2个下降沿触发器,这个设计非常巧妙。 互锁电路保证了当输出稳定后,其两端的输出值是互斥的 。插入dff后,电路有了记忆功能, 将互锁的逻辑用下降沿DFF抓一拍后反馈给另一侧,即使当目前select发现变化,只要当前选择的时钟下降沿没有到来时,不会切换时钟,只有当select发生变化,且当前选择的时钟下降沿到来后,关闭当前选择的时钟系统,等到另一个时钟系统下降沿到来时,切换至另一个时钟系统,完成时钟无毛刺切换 ,具体如下:

    1. 当select稳定值为0时,此时系统选择的是clk1时钟,i_and1=1,flop1_o=1;i_and2=0,flop2_o=0;
    2. 当selec由0向1进行变化时,i_and1输出变为0,但是在clk1下降沿到来前,flop1_0会稳定输出为1,因此i_and2仍然输出0,flop2_o保持为0,此时选择的是clk1时钟;
    3. 当clk1下降沿到来时,flop1_0输出变为0,关闭clk1,i_and2的输出会变为1,在clk2下降沿到来前,flop2_o保持为0,此时系统输出低电平;
    4. 当clk2下降沿到来时,flop2_0输出变为1,打开clk2,此时系统选择的时clk2时钟;

    图片

    图3无毛刺时钟多路复用器

    verilog代码:

    module clk_select2(
    
    
    input                                   clk1,
    input                                   clk2,
    input                                   rst_n,
    input                                   sel,
    output                                  out_clk 
    );
    
    
    reg ff1;
    reg ff2;
    
    
    always @(negedge clk1 or negedge rst_n) begin   
        if(!rst_n) 
            ff1 <= 1'b0;    
           else begin
            ff1 <= ~ff2 & !sel;
          end
        end
    always @(negedge clk2 or negedge rst_n) begin
        if(!rst_n) 
            ff2 <= 1'b0;    
        else begin
            ff2 <= ~ff1 & sel;
          end
        end
    
    
    assign out_clk = (ff1 & clk1) | (ff2 & clk2); 
    
    
    endmodule
    

    考虑到选择信号有可能是异步信号,需要在时钟选择信号的缓存触发器之前加两级触发器进行同步处理,来减少亚稳态的传播,结构图如下。该时钟切换电路更具有普遍性。

    图片

    图4无毛刺时钟多路复用器(使用双同步器)

    verilog代码:

    module clk_select3(
    
    
    input                                   clk1,
    input                                   clk2,
    input                                   rst_n,
    input                                   sel,
    output                                  out_clk 
    );
    
    
    reg ff1,ff1_d;
    reg ff2,ff2_d;
    
    
    always @(negedge clk1 or negedge rst_n) begin
        if(!rst_n)  
            {ff1,ff1_d} <= 2'b00;
        else begin
            ff1_d <= ~ff2 & !sel;
            ff1 <= ff1_d;
          end
        end
    always @(negedge clk2 or negedge rst_n) begin
        if(!rst_n) {ff2,ff2_d} <= 2'b00;    
        else begin
            ff2_d <= ~ff1 & sel;
            ff2 <= ff2_d;        
          end
        end
    
    
    assign out_clk = (ff1 & clk1) | (ff2 & clk2); 
    
    
    
    
    endmodule
    
    声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
    • 时钟
      +关注

      关注

      10

      文章

      1357

      浏览量

      129937
    • 锁存器
      +关注

      关注

      7

      文章

      682

      浏览量

      40605
    • 多路复用器
      +关注

      关注

      9

      文章

      818

      浏览量

      64734
    • 触发器
      +关注

      关注

      13

      文章

      1466

      浏览量

      59841
    • CLK
      CLK
      +关注

      关注

      0

      文章

      76

      浏览量

      16793
    • 时钟切换电路

      关注

      0

      文章

      7

      浏览量

      5710
    收藏 人收藏

      评论

      相关推荐

      你真的了解的模拟多路复用器和开关的原理和应用吗?

      多路复用器和开关的原理是什么?如何设计出模拟多路复用器和开关解决方案
      发表于 03-11 07:46

      电源多路复用器是什么

      复用器电源多路复用器(Power MUX)是一组电子开关,用于选择两个或更多输入功率路径并转换到单个输出。目的旨在灵活地在不同类型的输入电源(桶式插孔,USB电缆,无线充电)之间进行选择的系统
      发表于 10-29 09:16

      组合逻辑基础之多路复用器设计

      多路复用器设计多路复用器也叫数据选择器,如下图所示,是根据选择信号Sel的值从多个数据输入中选择其中一个进行输出,是数字系统中应用非常广泛的一种逻辑电路。如下是一个典型的四选一
      发表于 08-04 17:06

      模拟开关和多路复用器的基础参数

      多路复用器有着非常广泛的应用,例如运放的增益调节、ADC分时采集多路传感器信号等等。虽然它的功能很简单,但是仍然有很多
      发表于 11-08 07:02

      多路复用器的运算放大器切换到新设置需要多长时间?

      多路复用器的运算放大器。例如:STM32G4、STM32F3、STM32H7 系列等。如果我使用控制状态寄存器(OPAMPx_CSR::VP_SEL 或 VN_SEL)更改多路复用器输入设置,多路复用器切换到新设置需要多长时间?数据表没有此信息。
      发表于 12-08 07:57

      cd4052b模拟多路复用器

      多路复用器/多路
      发表于 11-30 18:27 ?43次下载

      AD9559/PCBZ 时钟多路复用器参考设计

      时钟多路复用器参考设计.pdf》资料免费下载
      发表于 12-31 06:31 ?11次下载

      AD9558/PCBZ 时钟多路复用器参考设计

      时钟多路复用器参考设计.pdf》资料免费下载
      发表于 12-31 06:34 ?14次下载

      AD9552/PCBZ 时钟多路复用器参考设计

      时钟多路复用器参考设计.pdf》资料免费下载
      发表于 12-31 06:37 ?19次下载

      AD9557/PCBZ 时钟多路复用器参考设计

      时钟多路复用器参考设计.pdf》资料免费下载
      发表于 12-31 06:40 ?9次下载

      1-of-8 FET 多路复用器/解复用器-CBT3251

      多路复用器/解复用器-CBT3251
      发表于 02-16 21:03 ?0次下载
      1-of-8 FET <b>多路复用器</b>/解<b>复用器</b>-CBT3251

      复用器多路复用

      复用器多路复用  
      发表于 01-07 14:27 ?1076次阅读

      多路复用器:并非那么简单

      多路复用器的电容和电阻一起可限制信号带宽。当多路复用器切换通道并影响输出处的稳定时间时,电荷注入可能引起瞬态误差。 为了优化信号链性能,理解这些示例及多路复用器可影响信号的许多其他
      发表于 04-18 03:35 ?884次阅读

      关于如何让多路复用器变得简单

      多路复用器的电容和电阻一起可限制信号带宽。当多路复用器切换通道并影响输出处的稳定时间时,电荷注入可能引起瞬态误差。 为了优化信号链性能,理解这些示例及多路复用器可影响信号的许多其他
      的头像 发表于 07-10 09:36 ?1.3w次阅读
      关于如何让<b>多路复用器</b>变得简单

      如何改进开关/多路复用器LTspice模型

      多路复用器,那么还能改进开关/多路复用器LTspice模型吗?
      的头像 发表于 03-01 13:34 ?2306次阅读
      如何改进开关/<b>多路复用器</b>LTspice模型
      私人尢物精品无码不卡
    • <li id="m4mkm"></li>
    • <bdo id="m4mkm"></bdo>