凡亿教育 · 电子工程师实战教育品牌
嵌入式硬件培训:长沙/广州校区
|
课程咨询:15989478308(同微信)
免费领取课程大纲

状态机编码没错,输出为何还会冒窄脉冲?

状态机编码没错,输出为何还会冒窄脉冲?

状态机的状态序列正确,不代表由状态位和输入组合译码出的外部控制信号没有传播延迟毛刺

0.png 

功能仿真里状态转移完全正确,板上外部使能却偶发冒出几纳秒窄脉冲。下游器件如果把它当异步控制,哪怕脉冲远小于一个时钟周期,也可能真实触发。

排查状态机时,人们习惯先看编码、转移条件和default分支。它们都正确后,问题往往被归到示波器串扰。可毛刺的来源可能不在状态“走错”,而在多个状态位与输入经过不同组合路径到达输出。

RTL功能仿真假设同一时刻更新,布局布线后每条路径都有延迟。组合译码在转换窗口短暂命中错误条件,外部端口就会冒出窄脉冲。关键控制输出是否寄存化,比选独热码还是二进制码更先决定风险。

先确认毛刺来自组合范围判断还是状态译码

资料用多位计数器范围判断说明组合逻辑的共同问题:多个比特翻转时,各级加法器和比较器延迟不同,输出可能短暂改变。状态机的多位状态编码和Mealy输入参与译码,本质上也会形成多条不同长度的组合路径。

1.png 

1  多位组合范围判断会产生毛刺,状态译码具有同类路径风险

用网表查看外部输出的驱动源。如果端口直接来自assign、always_comb或状态与输入的布尔表达式,它就是组合输出;若端口由同一时钟沿触发的寄存器驱动,时钟间毛刺风险会小很多。

寄存器输出把变化收拢到时钟边沿

资料给出的改写把持续多个周期的组合条件转换成时序逻辑。寄存器只在指定边沿采样条件,外部信号在两个边沿之间保持稳定。代价是可能增加一个周期延迟,并要求设计者明确置位、清零和优先级。

这不是把所有组合逻辑都删掉。下一状态译码仍可组合实现,关键是跨模块使能、复位、片选、写脉冲等敏感信号从寄存器输出。若协议允许零周期响应,也应把目标端的采样方式和最小脉宽一起纳入时序设计。

2.png 

2  将跨周期控制条件写入时序过程,可避免组合毛刺直接出端口

**寄存化解决的是端口稳定性,不能替代完整状态转移和时序约束。**

Mealy输出更容易把异步输入带进组合路径

Mealy输出同时依赖当前状态和输入,输入只要在周期内变化,输出就可能立即变化;Moore输出只依赖状态,但若状态位组合译码仍未寄存,也不自动保证无毛刺。两种分类不能代替对实际逻辑锥的检查。

Mealy响应速度必须保留,可先同步外部输入,控制组合逻辑层级,并在接收端使用时钟采样。若信号连接到器件异步引脚,则应优先改成寄存器输出或满足器件规定的脉宽与去毛刺条件。

3.png 

3  状态机应分开描述状态寄存器、下一状态组合逻辑与输出逻辑

状态编码改变毛刺概率,却不是根治

二进制编码在某些转移中多位翻转,独热码通常一位撤销、一位置位,格雷编码可让指定相邻状态单比特变化。编码会改变译码复杂度和路径数量,但布局延迟、非法状态恢复和输入参与仍可能产生窗口。

4.png 

4  FSM示例将状态寄存器与组合译码分开,便于识别输出路径

综合器还可能重编码状态机。若编码选择是安全分析的一部分,应使用工具支持的属性并在综合报告中确认实际实现;不要只看RTL里的parameter数值。时序收敛后,再检查端口是否被优化成组合逻辑。

捕获窄脉冲要换一种观测方法

普通片上逻辑分析仪按系统时钟采样,可能正好漏掉亚周期毛刺。可把可疑组合输出与其寄存版本同时引出,使用更高速采样时钟、外部示波器或器件内部毛刺检测逻辑。门级时序仿真也能帮助复现传播延迟窗口。

定位后保留可执行检查:外部关键控制是否寄存、输入是否同步、状态机是否覆盖非法状态、综合编码是否确认、下游是否异步敏感。把这些写进代码评审清单,比只规定“三段式状态机”更能防止同类问题。

复位释放也可能制造相似毛刺。多个状态位的异步复位解除时间不一致时,状态寄存器可能短暂处于非法组合。更稳妥的做法是异步置位或清零、同步释放,并让非法状态有明确恢复路径。

复位与跨时钟边界

跨时钟域的状态输入若未同步,亚稳态和多周期不一致会直接进入组合译码。此时寄存外部输出只能把不确定结果延后一拍,不能解决跨域语义。单比特控制、握手或编码总线应先按CDC方法处理。

时序约束中不要把关键组合输出路径随意设成false path。下游若异步使用,它更需要功能与脉宽分析;下游若同步采样,则应建立正确的输入输出延迟或内部时钟关系,让工具真正检查到接收边沿。

结论

状态机编码和转移都正确,只能证明功能序列正确。组合译码仍可能在传播延迟窗口产生窄脉冲,尤其当多位状态和输入共同决定外部控制时。

让跨模块关键输出由寄存器驱动,并用实现后网表与高速观测确认,比单纯更换状态编码更可靠。

声明:

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

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


上一篇共模电感只拦共模,为何差模也会变? 下一篇差分ADC摆幅没超,为何输入仍会削顶?