当下一状态组合逻辑块转换中的“当前状态”值时,系统 Verilog FSM“下一状态”不会转换 - 三元运算符

问题描述

在我的 Verilog 代码中,ns 值没有分配给 next state logic 中的任何值。当我对 next state logic 进行编码以在 ns 中发生转换时为 ps 状态变量赋值。

这是 FSM 代码片段

    // State registers
    always@(posedge clk,negedge rst) begin
        if(!rst) ps <= S1;
        else ps <= ns;
    end
    assign present_state = ps;
    assign next_state = ns;
     
     // Next state logic
    always@(ps,start) begin
        case(ps)
            S1: ns = start ? S2 : S1;
            S2: ns = S3;
            S3: ns = S1;
            //default : ns = S1;
        endcase
    end

这是tb代码片段

    initial begin 
        #0 rst = 0; start = 0;
        #2 rst = 1;
        #10 a = 3; b = 4;
        #10 start = 1;

最后是波形输出

fsm_ns_notransition

我的目的是让 ps <= nsS1 无缝转换到 S2S3 回到 S1 等等,但是出于某种原因,尽管always_comb 下一个状态逻辑块,在 t=0 时 ps 的状态变化没有将 ns 分配给有效状态?导致所有进一步的 ps <= ns 分配始终为 'x 状态

这个逻辑有问题吗?

非常感谢您的快速帮助

谢谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)