题解 | #状态机-非重叠的序列检测#
状态机-非重叠的序列检测
https://www.nowcoder.com/practice/2e35c5c0798249aaa2e1044dbaf218f2
`timescale 1ns/1ns module sequence_test1( input wire clk , input wire rst , input wire data , output reg flag ); //*************code***********// parameter IDLE=0,BIT1=1,BIT2=2,BIT3=3,BIT4=4,BIT5=5; reg [2:0] state,n_state; always@(*) case(state) IDLE:n_state = data?BIT1:IDLE; BIT1:n_state = ~data?BIT2:IDLE; BIT2:n_state = data?BIT3:IDLE; BIT3:n_state = data?BIT4:IDLE; BIT4:n_state = data?BIT5:IDLE; BIT5:n_state = data?BIT1:IDLE; endcase always@(posedge clk or negedge rst) if(~rst) state<=0; else state<=n_state; always@(posedge clk or negedge rst) if(~rst) flag<=0; else if(n_state==BIT5) flag<=1; else flag<=0; //*************code***********// endmodule