当前位置: 首页 > news >正文

glitch free clk en和clkmux 设计

glitch fress clk en设计:

电路图和波形如上图所示,RTL实现如下:

verilog描述也很简单

always @ (clk_in or EN) begin

if ( ! clk_in)

clkEn <= EN;

end

assign gated_clk = clkEn & clk_in;

参考文档:Clock Gating 技术解析 (一)

glitch free clkmux设计:

有了上面clk gate的思想,下面介绍glitch free clkmux 的设计思路:

如上图电路所示,我们只需要用RTL来实现这个电路即可:

module glitch_free_ckmux ( input rstn , input [ 1:0] i_clk , input sel , output o_clk ); wire [1:0] src_clk_lb, clk_en ; reg [1:0] n_en_reg ; reg [1:0] n_en_reg_dly ; wire [1:0] sync_clken_out ; wire [1:0] src_clk_inv ; wire [1:0] out_clk_and ; genvar index; generate for(index=0;index<2;index=index+1) assign src_clk_lb[index] = i_clk[index]; assign src_clk_inv[index] = i_clk[index]; //sync 三拍 stsoc_sync_l3 sync_clk_en ( .ck (src_clk_lb[0]), .clb (rstn), .d (clk_en[0]), .o (sync_clken_out[0]) ); //sync 三拍 stsoc_sync_l3 sync_clk_en ( .ck (src_clk_lb[1]), .clb (rstn), .d (clk_en[1]), .o (sync_clken_out[1]) ); always @(posedge src_clk_inv[index] or negedge rstn) if(!rstn) begin n_en_reg[0] <= 1'b1 ; n_en_reg_dly[0] <= 1'b1 ; n_en_reg[1] <= 1'b0 ; n_en_reg_dly[1] <= 1'b0 ; end else begin n_en_reg[index] <= sync_clken_out[index] ; n_en_reg_dly[index] <= n_en_reg[index] ; end endgenerate assign clk_en[0] = ~sel & (!n_en_reg_dly[1]) ; assign clk_en[1] = sel & (!n_en_reg_dly[0]) ; //and gate assign out_clk_and[0] = n_en_reg[0] & i_clk[0]; assign out_clk_and[1] = n_en_reg[1] & i_clk[1]; //or gate assign o_clk = out_clk_and[0] | out_clk_and[1]; endmodule

参考文档:面试题分析 -- 时钟切换

http://www.jsqmd.com/news/603355/

相关文章:

  • MTKClient终极指南:高效解锁联发科设备完整实战手册
  • 如何在Mac上免费实现NTFS读写?终极完整解决方案
  • Adrenaline终极指南:让你的PSP模拟器焕然一新的强大固件
  • 别光笑AI吵架!拆解“医启论”:它可能是未来智能体的“基础设施”
  • Kubernetes与边缘计算的深度集成
  • 3大方案突破AI编程助手限制:开源工具Cursor Free VIP全攻略
  • 差动放大电路设计避雷手册:从温漂抑制到CMRR提升技巧
  • FastReport技巧:动态补打空白行实现完美分页打印
  • 用Python手把手实现MDS降维:从水果口味数据到可视化分析
  • MATLAB:构建高效多功能的平均值计算工具箱(附完整源码)
  • Mojo全局解释器锁(GIL)绕过实战:在Python主线程中安全并发执行Mojo原生代码的3种工业级方案
  • VMagicMirror:普通摄像头驱动的虚拟形象交互革命
  • yiwai
  • GBase 8a 物化视图刷新失败与依赖失效排查
  • 绝地求生罗技鼠标宏全攻略:从弹道控制到精准射击的进阶之路
  • 5分钟搞定Windows系统依赖难题:VisualCppRedist AIO一站式解决方案终极指南
  • 用DE2-115玩转数字逻辑:手把手教你用Quartus II实现智能灯光控制系统
  • WinUtil:Windows系统智能管理效率引擎
  • Kindle电子书封面丢失终极解决方案:5大场景化修复指南与防患策略
  • FLUX.1文生图效果展示:SDXL风格节点下的高清作品集,每一张都惊艳
  • 告别Labelme标注烦恼:手把手教你用Python脚本将Labelme数据一键转成YOLACT可用的COCO格式
  • 云原生安全的零信任架构实践
  • Django 与 FastAPI 架构对比:学习路径指南
  • 【紧急避坑】某量产车型OTA升级后TCP/IP协议栈握手失败——C++17 constexpr配置校验缺失引发的协议不兼容(附静态断言模板)
  • Kaggle数据集文件结构合并的‘潜规则’:一个拖拽操作,避免你的文件夹乱成一团
  • 实测好用!3款免费PPT工具推荐,亲测高效出稿不内耗
  • 手把手教你用VSCode和ST-Link V2给ODrive V3.6编译烧录056固件(附避坑指南)
  • JetBrains IDE试用期管理工具深度解析:技术原理与实践指南
  • HoRain云--Selenium4文件上传下载终极指南
  • 2026贵州家政服务选哪家?TOP5 最新权威榜单|优质可靠机构推荐 - 深度智识库