0
收藏
微博
微信
复制链接

用与门关时钟,为何会多出窄脉冲?

2026-08-28 11:11
23

用与门关时钟,为何会多出窄脉冲?

用与门关时钟,为何会多出窄脉冲?封面技术图
把clk与enable直接相与,仿真低速看着能停钟,上板后却可能多出窄脉冲或偶发状态错乱。核心原因是:enable若在clk高电平期间变化,组合门输出会立即截断或开启半个周期。普通LUT不属于低偏斜时钟资源,门控时钟还会带来毛刺、偏斜和新的约束边界。

为了降低某个模块的动态翻转,有人写下assign gclk = clk & en,再用gclk触发一组寄存器。功能仿真里,只要en恰好在低电平期间变化,波形看起来完全正确。真实系统中,en来自另一段逻辑,变化时刻并不会自动避开时钟高电平,窄脉冲就在这里出现。

01窄脉冲不是玄学,是组合逻辑的正常反应

当clk为高时,gclk的值直接跟随en。若en从1变0,输出高电平会被提前截断;若en从0变1,输出会在周期中途突然抬高。两个结果都不是完整时钟脉冲。寄存器的最小高、低电平宽度可能被破坏,不同寄存器还可能因为布线延迟而对这次边沿产生不同反应。

用与门关时钟,为何会多出窄脉冲?配图1:组合逻辑直接驱动使能或时钟,会把计数器译码毛刺带入后级。资料图:《FPGA开发全攻略(上)》。
组合逻辑直接驱动使能或时钟,会把计数器译码毛刺带入后级。

即便en与clk同域,也不能只说“它是同步信号”就安全。同步意味着它在某个边沿附近满足建立保持关系,不意味着整个高电平期间保持不变。若要用逻辑实现无毛刺门控,必须让使能只在安全相位更新,并使用器件认可的专用结构;自行拼门通常会把时钟问题藏进普通数据路径。

02普通LUT生成的网,不会自动变成全局时钟

FPGA的时钟网络经过专门设计,目标是低偏斜、低抖动并覆盖大量寄存器。LUT输出先走普通互连,再进入寄存器时钟脚,路径延迟与偏斜难以像专用时钟网那样控制。一个窄脉冲到达不同区域的时间和宽度可能不同,结果就从确定性错误变成偶发错误。

门控输出还创建了一个新的时钟。时序工具需要知道它与源时钟的关系、边沿位置和传播路径。若没有generated clock或专用原语的自动推导,跨域分析可能漏掉;若把它误当普通数据,报告里的时序收敛也不能证明时钟质量。

用与门关时钟,为何会多出窄脉冲?配图2:门控前后的时钟波形对比:半周期开启或截断会形成窄脉冲。
门控前后的时钟波形对比:半周期开启或截断会形成窄脉冲。

03寄存器CE解决的是“数据要不要更新”

多数FPGA寄存器自带Clock Enable。使用CE时,主时钟仍走专用时钟网络,每个有效边沿都完整到达;en只决定寄存器在这个边沿保持原值还是装载新数据。这样可以停止无意义的数据翻转,又不需要制造第二棵时钟树。综合工具通常也能把标准写法映射到寄存器CE。

CE并不等于整个时钟树完全停止,时钟网络本身仍有功耗。若芯片功耗目标确实要求关闭大范围时钟,应使用器件提供的全局或区域时钟控制资源。这些原语内部实现无毛刺切换,并对布线、时序和使能采样有明确规则。具体名字与限制要回到当前器件手册。

用与门关时钟,为何会多出窄脉冲?配图3:推荐用法让主时钟保持在专用网络上,用CE控制寄存器是否更新。资料图:《FPGA开发全攻略(上)》。
推荐用法让主时钟保持在专用网络上,用CE控制寄存器是否更新。资料图:《FPGA开发全攻略(上)》。
用与门关时钟,为何会多出窄脉冲?配图4:分频器的普通设计与CE优化设计对比,后者减少新增时钟树。资料图:《FPGA开发全攻略(上)》。
分频器的普通设计与CE优化设计对比,后者减少新增时钟树。

04现有设计里发现gclk,按这个顺序收口

  1. 检索RTL中时钟与逻辑信号的与、或、选择器组合,列出所有派生时钟。

  2. 能用寄存器CE表达的模块先改为CE,保持单一主时钟与完整边沿。

  3. 必须切换或关断时钟时,替换成器件专用无毛刺时钟控制原语。

  4. 为保留的派生时钟建立正确约束,并复核所有进入和离开该时钟域的路径。

  5. 在实现报告中检查时钟资源、偏斜与非专用时钟告警,不只看功能仿真。

验证时别用普通ILA采样同一条异常时钟就下结论,因为采样逻辑本身也需要可靠时钟。可以先从实现后的时钟资源报告、门级时序仿真和外部可观测行为入手;若把时钟引到管脚测量,还要考虑输出缓冲和探头只看到局部节点,不能替代全芯片偏斜分析。

跨时钟切换还要处理状态一致性。即使用专用无毛刺资源,切换前后的两个时钟若频率、相位无关,下游逻辑也不能假定计数或握手连续。需要停稳模块、同步切换请求,并对跨域数据使用FIFO或握手协议;无毛刺只保证输出不产生坏脉冲,不会自动解决CDC。

功耗评估也应从实现报告出发。把寄存器数据翻转停掉,通常已经能减少局部动态功耗;若时钟树仍占主要部分,再评估区域时钟门控是否值得增加架构复杂度。为节省很小功耗而制造难约束的新时钟,往往得不偿失。

判断标准很清楚:想暂停状态更新,优先用CE;想真正关闭时钟树,使用专用无毛刺资源;普通组合逻辑不应承担时钟门控。你当前设计里的“省电时钟”是寄存器CE、专用时钟控制资源,还是由普通LUT逻辑直接生成的新时钟?


声明:

本文由凡亿教育整理,转载请注明来源!

投稿/招聘/广告/课程合作/资源置换 请加微信:13237418207

登录后查看更多
0
评论 0
收藏
侵权举报
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表凡亿课堂立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。

热门评论0

相关文章

凡亿教育

凡亿教育打通了“人才培养+人才输送”的闭环,致力于做电子工程师的梦工厂,打造“真正有就业保障的电子工程师职业教育平台”。帮助电子人快速成长,实现升职加薪。 为了满足学员多样化学习需求,凡亿教育课程开设了硬件、PCB、仿真、电源、EMC、FPGA、电机、嵌入式、单片机、物联网、人工智能等多门主流学科。

开班信息