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