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

状态机-重叠序列检测

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

相关推荐

12-19 16:52
门头沟学院
点赞 评论 收藏
分享
八极星:有什么不能问的,(/_\),这又不是多珍贵的机会,你有什么可失去的
点赞 评论 收藏
分享
评论
8
收藏
分享

创作者周榜

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