You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Verilog实现12位序列110001010111检测FSM输出触发异常求助

12位序列检测FSM输出异常问题排查结果

核心问题原因

  • 复位逻辑未正确执行:你的序列检测模块采用高电平复位,要求仿真启动阶段先将复位信号拉高至少1个时钟周期,将状态寄存器st初始化为初始状态w。但Testbench中把复位初始化代码注释,直接将reset设为低电平,导致st初始为不定态,后续状态跳转完全偏离预期。
  • 输入激励对齐问题(次要):Testbench中输入信号变化与时钟上升沿完全对齐,可能存在采样建立时间违规,导致模块采样到错误的输入值。

修复方案

  1. 恢复Testbench中的复位初始化逻辑,修改initial块代码如下:
initial
begin
    reset = 1'b1;
    test_input = 1'b0;
    #(2*T); // 保持复位2个时钟周期,确保所有寄存器初始化完成

    reset = 1'b0;
    test_input = 1'b1;
    #(T); 
    test_input = 1'b1;
    #(T); 
    test_input = 1'b0;
    #(T); 
    test_input = 1'b0;
    #(T); 
    test_input = 1'b0;
    #(T); 
    test_input = 1'b1;
    #(T); 
    test_input = 1'b0;
    #(T); 
    test_input = 1'b1;
    #(T); 
    test_input = 1'b0;
    #(T); 
    test_input = 1'b1;
    #(T);
    test_input = 1'b1;
    #(T);
    test_input = 1'b1;
    #(T);
    $finish;
end
  1. (可选优化)将输入信号切换逻辑对齐到时钟下降沿,避免采样时序风险,可将输入激励的延迟单位改为#(T/2),或者采用negedge clk触发的赋值逻辑更新输入值。

验证说明

经核验,你设计的状态跳转逻辑完全匹配目标检测序列110001010111,复位逻辑修复后即可在检测到完整序列时在预期位置输出高电平tick。

实测波形参考:
实测波形

内容的提问来源于stack exchange,提问作者Kartik Mann

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 14:24:03