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

状态机-重叠序列检测

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

重叠的话直接移位寄存,寄存后的数据与序列数做对比,相等则flag为1,不等则为0,两个always正好延迟两拍
`timescale 1ns/1ns

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

reg [3:0] data_r;

always@(posedge clk or negedge rst)
	if(!rst)
		data_r 	<= 4'd0;
	else
		data_r 	<= {data_r[2:0],data};

always@(posedge clk or negedge rst)
	if(!rst)
		flag 	<= 1'b0;
	else if(data_r[3:0] == 4'b1011)
		flag 	<= 1'b1;
	else
		flag 	<= 1'b0;

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

全部评论
这个应该是我看到最简洁且高效的做法了,点个赞!
点赞 回复 分享
发布于 2024-05-04 16:18 湖北

相关推荐

dao_yi:投了1000个左右,回消息的很少,要简历然后说过几天联系的都没有消息了,约面试的基本都是3000左右,足够在当地生活,最后去了一个武汉的3000,干了两天回来考研了,感觉这个行业加班是常态,看能不能考研上岸找个国企,或者大厂。
点赞 评论 收藏
分享
评论
7
收藏
分享

创作者周榜

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