|
本帖最后由 fpgaw 于 2010-11-19 06:48 编辑
如何在板子上调试符合要求的状态机?
小弟最近在写了一个简单的状态机,仿真是符合我的要求,就是启动之后,一直输出0010 0010 0010 0010 0010,可是为什么我在板子上用嵌入式逻辑分析仪一看输出的结果如下图所示输出的是01100001 000001 000011 ,很奇怪,要么是每隔5个0输出一个1,要么是每隔4个0输出2个1
我应该从哪下手调试呢?不知道哪位大哥能帮帮忙!
这是我写的代码:
module fsm(clk,clr,enable,outdata);
input clk,clr,enable;
output outdata;
reg outdata;
reg [1:0]state,next_state;
parameter state0=2'b00,state1=2'b01,
state2=2'b11,state3=2'b10;
[email=always@(posedge]always@(posedge[/email] clk or negedge clr)
begin
if(!clr)state<=state0;
else state<=next_state;
end
[email=always@(state]always@(state[/email])
begin
case(state)
state0:begin
if(enable) next_state<=state1;
end
state1:begin
if(enable) next_state<=state2;
end
state2:begin
if(enable) next_state<=state3;
end
state3:begin
if(enable) next_state<=state0;
end
default:next_state<=state0;
endcase
end
[email=always@(state]always@(state[/email])
begin
case(state)
state0: outdata=1'b0;
state1: outdata=1'b0;
state2: outdata=1'b0;
state3: outdata=1'b1;
default : outdata=1'b0;
endcase
end
endmodule
是一个很简单的三段状态机,我测试的方法是enable一直加高电平,请大家帮帮忙! |
|