如何用verilog实现任意序列的检测?

最近在入门verilog语言,在做序列检测的实验时要求该序列检测器可以识别任意输入的序列,即格式、长度不一、即0101、10101、011等字符串,并且有额外的输入端口:目标序列(target)、目标序列长度(length)。但是本人找遍全网只发现了针对特定位数和序列的检测器(;′⌒`)

5bit序列01101的检测器代码如下,如果有需要增添或修改的,还望有大佬指点迷津🙏

module SerialSequenceDetector(
    input d,
	 input rst_n,
    input clk,
    output  reg flag
    );
	 
	reg [4:0] CurrentSequence;
	parameter Sequence=5'd01101;
	
	always @(posedge clk or negedge rst_n)begin
	   if(!rst_n) begin
			CurrentSequence[4:0] <= { CurrentSequence[3:0],d};
				if(CurrentSequence[4:0] == Sequence[4:0])
					flag <= 1'b1;
				else
					flag <= 1'b0;
		  end
		end
endmodule

test.v如下:

`timescale 1ns / 1ns
`define halfperiod 10

module SerialSequenceDetector_tb;

	// Inputs

	reg clk;
	reg [23:0]data;
	reg rst_n;

	// Outputs
	wire d;
	
	// Instantiate the Unit Under Test (UUT)
	SerialSequenceDetector uut (
		.d(d), 
		.rst_n(rst_n),
		.clk(clk), 
		.flag(flag)
	);
	
	always #5 clk = ~clk;
	initial begin

		clk = 1;
		rst_n=0;
		#5 rst_n=1;
		#15 rst_n=0;data=24'b0011_1100_1101_0110_1001_0100;
		#(`halfperiod * 200) $stop;  //执行100个时钟周期
		
	end	
	always@(negedge clk) #10 data = {data[22 : 0], data[23]};
	assign d = data[23]; //将最高位输入到序列检测器中

endmodule