//检测10010
module test(
input clk ,
input rst_n ,
input din ,
output flag
);
parameter IDLE =4'd0;
parameter S1 =4'd1;
parameter S2 =4'd2;
parameter S3 =4'd3;
parameter S4 =4'd4;
parameter S5 =4'd5;
reg [3:0] state,next_state;
always@(posedge clk or negedge rst_n)begin
if(!rst_n)begin
state <= IDLE;
end
else begin
state <= next_state;
end
end
always@(*)begin
next_state = IDLE;
case(state)
IDLE:
if(din)
next_state = S1;
else
next_state = IDLE;
S1:
if(din)
next_state = S1;
else
next_state = S2;
S2:
if(din)
next_state = S1;
else
next_state = S3;
S3:
if(din)
next_state = S4;
else
next_state = IDLE;
S4:
if(din)
next_state = S1;
else
next_state = S5;
S5:
if(din)
next_state = S1;
else
next_state = S3;
default:next_state = IDLE;
endcase
end
assign flag = (state == S5)?1'b1:1'b0;
endmodule
|
———————————————— 版权声明:本文为CSDN博主「狗哥天下第一」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/weixin_44072819/article/details/124087011