问题描述
在我的 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;
我的目的是让 ps <= ns
从 S1
无缝转换到 S2
到 S3
回到 S1
等等,但是出于某种原因,尽管always_comb
下一个状态逻辑块,在 t=0 时 ps
的状态变化没有将 ns
分配给有效状态?导致所有进一步的 ps <= ns
分配始终为 'x
状态
这个逻辑有问题吗?
非常感谢您的快速帮助
谢谢
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)