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

状态机-重叠序列检测

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

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

相关推荐

废铁汽车人:秋招真是牛鬼蛇神齐聚一堂
点赞 评论 收藏
分享
伟大的烤冷面被普调:暨大✌🏻就是强
点赞 评论 收藏
分享
评论
7
收藏
分享
牛客网
牛客企业服务