|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
Mealy型有限状态机的序列检测器Verilog的仿真,原意是:w输入,z输出,当w为1001或者1111时,z为1,否则z为0。
我设计的状态表:(A:000,B:001,C:010,D:011,E:100,F:101)
当前状态 下状态 输出
w=0 w=1 w=0 w=1
A A B 0 0
B C E 0 0
C D B 0 0
D A B 0 1
E C F 0 0
F C F 0 1
我用QuartusII仿真结果是:当w为111时候z就为1了,而当w为1001时出现一个尖峰的1(时间很短),请问有哪位高手知道原因,能指点一下,谢谢!代码如下:
module sequence_detector(clk,rst,w,z);
input clk,rst,w;
output reg z;
reg [2:0] Y,y;
parameter A=3'b000,B=3'b001,C=3'b010,D=3'b011,E=3'b100,F=3'b101;
always @(w or y)
case (y)
A:if(w)
begin
z=0;
Y=B;
end
else
begin
z=0;
Y=A;
end
B:if(w)
begin
z=0;
Y=E;
end
else
begin
z=0;
Y=C;
end
C:if(w)
begin
z=0;
Y=B;
end
else
begin
z=0;
Y=D;
end
D:if(w)
begin
z=1;
Y=B;
end
else
begin
z=0;
Y=A;
end
E:if(w)
begin
z=0;
Y=F;
end
else
begin
z=0;
Y=C;
end
F:if(w)
begin
z=1;
Y=F;
end
else
begin
z=0;
Y=C;
end
endcase
always @(negedge rst or posedge clk)
if(rst==0) y<=A;
else y<=Y;
endmodule |
|