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

状态机-重叠序列检测

https://www.nowcoder.com/practice/10be91c03f5a412cb26f67dbd24020a9

写成了米利机,为了和答案对上,最后增加了一级寄存器输出。
`timescale 1ns/1ns

module sequence_test2(
	input wire clk  ,
	input wire rst  ,
	input wire data ,
	output reg flag
);
//*************code***********//

	parameter IDEL=0, S0=1, S1=2, S2=3;
	reg [1:0] cstate, nstate;

	always@(posedge clk or negedge rst) begin
		if(!rst) begin
			cstate <= IDEL;
		end
		else begin
			cstate <= nstate;
		end
	end

	always@(*) begin
		case(cstate)
			IDEL:   nstate = data?S0:IDEL;
			S0:		nstate = data?S0:S1;
			S1:		nstate = data?S2:IDEL;
			S2:		nstate = data?S0:S1;
			default:nstate = IDEL;
		endcase
	end

	reg flag_reg;
	always@(posedge clk or negedge rst) begin
		if(!rst) begin
			{flag,flag_reg} <= 2'b00;
		end
		else begin
			{flag,flag_reg} <= {flag_reg,(cstate==S2) & data};
		end
	end

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


全部评论

相关推荐

27届毕业,最近想找一段大厂实习,感觉简历有些问题,好多都不给面,求大佬们指点,最近好焦虑
重生之我学Java干...:我从后端的角度分析一下你的第一个项目,我感觉亮点不是很突出。因为我是因为组内有需求,临时上手学react干活。我用到的技术基本就cover你那个智慧园区管理平台的很多亮点了。那作为比较专业的前端,你上述的内容是不是有点单薄呢。感觉还得包装
点赞 评论 收藏
分享
Sigma429:极兔啊,薪资开的巨低,还在上海,索性不做笔试了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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