题解 | #输入序列不连续的序列检测#

输入序列不连续的序列检测

https://www.nowcoder.com/practice/f96d0e94ec604592b502b0f1800ed8aa

`timescale 1ns/1ns
module sequence_detect(
	input clk,
	input rst_n,
	input data,
	input data_valid,
	output reg match
	);

parameter	[2:0]	IDLE = 3'd0,
					GET_0 = 3'd1,
					GET_01 = 3'd2,
					GET_011 = 3'd3,
					GET_0110 = 3'd4;

reg		[2:0]	c_state,n_state;

always@(posedge clk or negedge rst_n)
	if(!rst_n)
		c_state <= IDLE;
	else
		c_state <= n_state;

always@(*)
	if(data_valid)
		case(c_state)
		IDLE		:	n_state = data ? IDLE	 	: GET_0		;
		GET_0		:	n_state = data ? GET_01 	: GET_0		;
		GET_01		:	n_state = data ? GET_011 	: GET_0		;
		GET_011		:	n_state = data ? IDLE	 	: GET_0110	;
		GET_0110	:	n_state = data ? GET_01		: GET_0		;
		endcase
	else
		n_state = n_state;

always@(posedge clk or negedge rst_n)
	if(!rst_n)
		match = 1'b0;
	else if(data_valid & n_state[2])	//这里给通过的答案和题目描述不一样,按题目描述应该用c_state
		match = 1'b1;
	else
		match = 1'b0;
endmodule

全部评论

相关推荐

不愿透露姓名的神秘牛友
04-30 11:43
春招失败、父母离婚,好像我的人生一团糟,一年来压力大到常常崩溃。不知道能跟谁聊,朋友其实对我非常好,但是她无意中表达出来的家庭幸福都会刺痛到我……和ai聊天,我的未来在更高处,不在楼下,忍不住爆哭😭
youngfa:害,妹妹,我是一个研究生(很上进很想找到好工作的那种),但去年因为生病回家休养错过了秋招(当时对我的冲击也是非常大的),这学期返校来了也是把论文盲审交了后才开始找工作,现在也是一个offer没有,但我就没有像你一样把这个阶段性的事情绑定到人生上,人生不仅很长,也很广阔,先停下来,放松一下哦。不要被外部环境灌输的思维操控了,好好爱自己!
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务