|
module xulie(
clk,
rst_n,
in,
out
);
input clk,rst_n,in;
output reg out;
//01101
reg [2:0] state,next_state;
parameter idle=3'd0;//
parameter s1=3'd1;//0
parameter s2=3'd2;//01
parameter s3=3'd3;//011
parameter s4=3'd4;//0110
parameter s5=3'd5;//01101
always @ (posedge clk or negedge rst_n)
if(!rst_n)
state<=idle;
else
state<=next_state;
always @ (state or in)
begin
next_state=3'bxxx;
case(state)
idle:if(in==0)
next_state=s1;
else
next_state=idle;
s1:if(in==1) //0
next_state=s2;
else
next_state=s1;
s2:if(in==1) //01
next_state=s3;
else
next_state=s1;
s3:if(in==1) //011
next_state=idle;
else
next_state=s4;
s4:if(in==1) //0110
next_state=s5;
else
next_state=s1;
s5:if(in==1) //01101
next_state=s3;
else
next_state=s1;
default:next_state=idle;
endcase
end
always @ (state)
case(state)
idle,s1,s2,s3,s4:out<=1'b0;
s5:out<=1'b1;
default:out<=1'b0;
endcase
endmodule
这是一个简单的检测01101序列的程序,进行后仿真的时候,发现idle之后的状态全部是undefined,但是程序依然能正确输出。
这是怎么一回事?
有一个警告:Warning: Can't display state machine states -- register holding state machine bit "|xulie|state.idle" was synthesized away
我F1了一下,大概意思就是状态被综合掉 。
请大家看看是怎么回事,
如果用功能仿真的话就没这种问题
![](http://cache.amobbs.com/bbs_upload782111/files_45/ourdev_674374E3QXKX.jpg)
(原文件名:FM(VWSLHF{5E4N0ICMB%J]X.jpg) |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|