题解 | #状态机-非重叠的序列检测#

状态机-非重叠的序列检测

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

全部评论

相关推荐

2024-12-23 11:36
中南大学 Java
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务