|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
晚辈最近在看前辈的一段Verilog语言编写的FSM,但是总觉得这个状态机编写的有问题,可以前辈不屑的总是说:这个代码都测试通过了,不会有问题的。所以晚辈就自己照的编写了一段类似的代码,请论坛里的老师们帮忙给指导一下,代码如下:module fsm (Clock,Reset,A,K2,K1);
input Clock,Reset,A;
output K2,K1;
reg K2,K1;
reg [2:0] state,nextstate;
parameter
Idle=3'b000,
Start=3'b001,
Stop=3'b010,
Clear=3'b011,
Duoyu=3'b100;
always @(posedge Clock)
if(! Reset)
state <=Idle;
else
state<=nextstate;
always @(state or A)
case (state)
Idle: if(A) nextstate =Start;
else nextstate = Idle;
Start:if(!A) nextstate =Stop;
else nextstate = Start;
Stop: if(A) nextstate =Clear;
else nextstate =Stop;
Clear: if(!A) nextstate = Idle;
else nextstate = Duoyu;
default: nextstate = 2'bxx;
endcase
always @(state or Reset or A)
if (! Reset) K1 = 0;
else
if (state == Clear && !A)
K1=1;
else K1=0;
always @(state or Reset or A)
if(! Reset) K2 =0;
else
if (state == Stop && A)
K2 = 1;
else K2 = 0;
endmodule
代码中红色标注的这个状态貌似不会达到,并且在综合之后的网表中找不到对应的寄存器。
这样的代码会不会存在安全问题,健壮性怎么样呢? |
|