一个简单的序列检测器
1,该检测器不使用状态机,采用将待测信号移位暂存,然后与目标序列比较的方法实现。
2,目标序列的长度可自由修改
`timescale 1ns / 1ps
module det(
input wire clk ,
input wire i_rst_n ,
input wire i_data_in ,
output wire o_data_out
);
localparam DW = 6;
localparam SEQUENCE = 6'b101001;
reg [DW-1:0] data_temp;
always @(posedge clk)
begin
if(!i_rst_n)
begin
data_temp <= 0;
end
else
begin
data_temp <= {data_temp[DW-2:0],i_data_in};
end
end
assign o_data_out = (data_temp == SEQUENCE) ? 1'b1 : 1'b0;
endmodule
3,仿真如图
该仿真检测的是位宽为6bit的序列101001,检测到目标序列o_data_out 输出高电平。