3个输入:
1、时钟信号clk
2、复位信号rst_n
3、串行数据a
一个输出
检测合格标志位match
这个题跟上一道题没有任何区别,有无关项那我们就在判断的时候不判断无关项就好了。移位储存并检测的方法是一样的,这个题直接上代码了,如果不理解可以看我上一道题的帖子。
`timescale 1ns/1ns
module sequence_detect(
	input clk,
	input rst_n,
	input a,
	output reg match
	);

  parameter a_reg_true = 'b011000110;	//这里保证前三位和后三位是题目要求就好,中间三位可以随便填,我用了000来占位。

reg [8:0] a_reg;
	
initial 
	begin
		a_reg = 9'b000000000;
	end
	
	
always@(posedge clk or negedge rst_n)           //移位存储
	if(rst_n == 1'b0)
		a_reg <= 9'd0;
	else 
		a_reg <= {a,a_reg[8:1]};
		
always@(posedge clk or negedge rst_n)           
	if(rst_n == 1'b0)
		match <= 1'b0;
	else if(a_reg[8:6] == a_reg_true[8:6] && a_reg[2:0] == a_reg_true[2:0])  //只检测前三位和后三位就好了
		match <= 1'b1;
	else
		match <= 1'b0;
    
endmodule