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

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

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 s0=0;
parameter s1=1;
parameter s2=2;
parameter s3=3;
parameter s4=4;
parameter s5=5;
reg[2:0] state;
reg[2:0] next_state;
always@(posedge clk or negedge rst)
begin if(!rst)
   state<=0;
   else 
   state<=next_state;
end

always@(*)
begin 
	case(state)
	s0: if(data) next_state=s1; else next_state=s0; 
	s1: if(data) next_state=s1; else next_state=s2; 
	s2: if(data) next_state=s3; else next_state=s0; 
	s3: if(data) next_state=s4; else next_state=s2; 
	s4: if(data) next_state=s5; else next_state=s2; 
	// s5: if(data) next_state=s1; else next_state=s2; 
	default: next_state=s0;
	endcase

end
always@(posedge clk or negedge rst)
begin if(!rst)
  flag<=0;
  else if(next_state==s5)
  flag<=1;
  else 
  flag<=0;
end

//*************code***********//
endmodule

全部评论

相关推荐

这就是伊泽瑞尔:进什么厂,就是三方面决定,八股+项目可以进中小厂,要进大厂再刷刷算法。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务