牛客进阶题目12:重叠序列检测

注意看波形,flag相对于data的输入延迟两拍。也就是在输入1011后,第一拍进行检测,第二拍拉高flag。

`timescale 1ns/1ns

module sequence_test2(
	input wire clk  ,
	input wire rst  ,
	input wire data ,
	output reg flag
);
//*************code***********//
reg[3:0] seq_shift	;

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

always @(posedge clk or negedge rst) begin
	if(!rst)
		flag <= 1'b0 ;
	else if(seq_shift==4'b1011)
		flag <= 1'b1 ;
	else
		flag <= 1'b0 ;
end

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

注意看波形,falg先对于data的输入延迟两拍。也就是在输入1011后,第一拍进行检测,第二拍拉高flag,。

`timescale 1ns/1ns

module sequence_test2(
	input wire clk  ,
	input wire rst  ,
	input wire data ,
	output reg flag
);
//*************code***********//
reg[3:0] seq_shift	;

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

always @(posedge clk or negedge rst) begin
	if(!rst)
		flag <= 1'b0 ;
	else if(seq_shift==4'b1011)
		flag <= 1'b1 ;
	else
		flag <= 1'b0 ;
end

//*************code***********//
endmodule
posted @ 2023-01-08 16:24  骑猪上树的少年  阅读(33)  评论(0编辑  收藏  举报
回到顶部