关于检测五位二进制序列10010的状态机设计问题
一个是tb 一个主程序
采用Moore机,画出状态图,并写出状态转移输出表。为了简单起见,我们这里采用的是无重复的序列检测。
程序代码:
module VrSMex( CLOCK, X, Z);
input CLOCK, X;
output Z;
reg Z;
reg [2:0] Sreg, Snext;
parameter [2:0] A = 3'b000,
B = 3'b001,
C = 3'b010,
D = 3'b011,
E = 3'b100,
F = 3'b101;
always @ (posedge CLOCK)
Sreg <= Snext;
always @ (X, Sreg) begin
case (Sreg)
A: if(X==0) Snext = A;
else Snext = B;
B: if(X==0) Snext = C;
else Snext = B;
C: if(X==0) Snext = D;
else Snext = B;
D: if(X==0) Snext = A;
else Snext = E;
E: if(X==0) Snext = F;
else Snext = B;
F: if(X==0) Snext = A;
else Snext = B;
default Snext = A;
endcase
end
always @ (Sreg)
case (Sreg)
A, B, C, D, E: Z = 0;
F: Z = 1;
default z = 0;
endcase
endmodule
谢谢你,我还想问一下,就是我是按书上一个例子写的,但是我觉得当x=1时,state应该为001,但是为什么仿真结果在x=1的一个周期之后才变为001,能帮我看看是为什么么?
你把你的testbench的39行改成非阻塞赋值看看 data<={data[22:0],data[23]}
这个例子你可以把它改成异步low reset 看看 波形怎么变化 这样你才会看到同步和异步的区别
谢谢你,这个我试过了,没有变化
你说的异步low reset怎么弄,我百度了一些相关的,感觉不是太明白,我就觉得按逻辑变化分析和仿真结果不一样,可能是我想错了,不知道问题在哪里
你查一下异步的 这个实验用异步会消除前面的不定态
谢谢分享谢谢分享谢谢分享
谢谢分享谢谢分享 谢谢分享
谢谢分享谢谢分享 谢谢分享
谢谢分享 谢谢分享谢谢分享谢谢分享
谢谢分享 谢谢分享 谢 谢
谢谢分享 谢谢分享 谢 谢
谢谢分享 谢谢分享 分 分
谢谢分享 谢谢分享 享 享
谢谢分享 谢谢分享 谢 谢
谢谢分享 谢谢分享 谢 谢
谢 谢谢分享 谢谢分享 分 分
谢谢 谢谢分享 谢谢分享 享 享
谢谢分 谢谢分享 谢谢分享 谢 谢
谢谢分 谢谢分享 谢 谢
谢谢分谢谢分享 谢 谢
谢谢谢谢 分 分
我知道了,那个上跳沿不能算作X==1,粗心了,刚学不久,还是谢谢你的回答