VERILOG语言实现检测输入序列中0101出现的次数,要求用状态机实现。

例如,检测输入序列01110101001010101001......中0101出现的次数,要使用状态机 多谢

当检测到0101时候,out输出1,其余情况输出0。所以要想知道0101出现的次数,只要数out信号的高脉冲数就行了。(程序已经通过quartus ii的编译和综合,放心使用。)
module state_machine(clock,reset,in,out);
input clock,reset,in;
output out;
reg[3:0]state;
reg out;

parameter s0=4'b1000,
s1=4'b0100,
s2=4'b0010,
s3=4'b0001;

always @(posedge clock)
if(!reset)
begin
state<=s0;
out<=0;
end
else
case(state)
s0:if(in==1) begin state<=s0;out<=0;end
else begin state<=s1;out<=0;end
s1:if(in==0) begin state<=s1;out<=0;end
else begin state<=s2;out<=0;end
s2:if(in==1) begin state<=s0;out<=0;end
else begin state<=s3;out<=0;end
s3:if(in==0) begin state<=s1;out<=0;end
else begin state<=s0;out<=1;end
default:begin state<=s0;out<=0;end
endcase
endmodule
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-12-31
2楼的思路是对的
第2个回答  2009-12-24
你把状态表给出来就好办了。。。;
相似回答