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

京公网安备 11010502036488号