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

状态机-重叠序列检测

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 湖北

相关推荐

绝迹的星:前端和后端写两份简历, 如果想干全栈就直接写求职意向为全栈工程师
点赞 评论 收藏
分享
程序员小白条:找的太晚,别人都是大三实习,然后大四秋招春招的,你大四下了才去实习,晚1年
点赞 评论 收藏
分享
评论
7
收藏
分享

创作者周榜

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