网站首页

人工智能P2P分享搜索全网发布信息网站地图标签大全

当前位置:诺佳网 > 电子/半导体 > 嵌入式技术 >

怎么设计一个Glitch Free的时钟切换电路呢?

时间:2023-06-05 17:23

人气:

作者:admin

标签: 怎么  Fre  Glitch  设计  一个 

导读:输入sel,clka,clkb,sel为1输出clka,sel为0输出clkb。...

输入sel,clka,clkb,sel为1输出clka,sel为0输出clkb。

一、两个时钟源是倍数的关系

图片

module Change_Clk_Source(
  input clk1,
  input clk0,
  input select,
  input rst_n,
  output outclk
);
  reg out1;
  reg out0;

  always @(negedge clk1 or negedge rst_n)begin
    if(rst_n == 1'b0)
      out1 <= 0;
    else
      out1 <= ~out0 & select;
  end

  always @(negedge clk0 or negedge rst_n)begin
    if(rst_n == 1'b0)
      out0 <= 0;
    else
      out0 <= ~select & ~out1;
  end

   assign outclk = (out1 & clk1) | (out0 & clk0);


endmodule

二、两个时钟源为异步时钟的关系

图片

module Change_Clk_Source(
  input clk1,
  input clk0,
  input select,
  input rst_n,
  output outclk
);
  reg out_r1;
  reg out1;
  reg out_r0;
  reg out0;


  always @(posedge clk1 or negedge rst_n)begin
    if(rst_n == 1'b0)
      out_r1 <= 0;
    else 
      out_r1 <= ~out0 & select;
  end


  always @(negedge clk1 or negedge rst_n)begin
    if(rst_n == 1'b0)
      out1 <= 0;
    else 
      out1 <= out_r1;
  end


  always @(posedge clk0 or negedge rst_n)begin
    if(rst_n == 1'b0)
      out_r0 <= 0;
    else 
      out_r0 <= ~select & ~out1;
  end

  always @(negedge clk0 or negedge rst_n)begin
    if(rst_n == 1'b0)
      out0 <= 0;
    else 
      out0 <= out_r0;
  end

  assign outclk = (out1 & clk1) | (out0 & clk0);




endmodule
温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信