Hi all.
Ive a stream of DNA sequence.
A G T G C T T G
and I want a output of
input A G T G C T T C
outputs A G
A G T
G T G
T G C
G C T
C T T
T T C
T C 
For now what I think is to used Shift Register (Serial In Serial
Out(SISO)). Below the the SISO and its testbench verilog code.
module SISO (Clk, Load, SIn, SOut);
parameter PE = 3;
parameter QCbit = 3;
input Clk, Load;
input [QCbit1:0] SIn;
output [QCbit1:0] SOut;
reg [(QCbit*PE)1:0] sr ; //3 x 3QC = 24 bits
always@(posedge Clk)
begin
if (Load)
begin
sr <= {sr[2:0], SIn}; //shift by 2 and concatenate Input
end
else
begin
sr <= 1'd0;
end
end
assign SOut = sr[5:3]; // complete shiftreg is serially output
endmodule

module SISO_tb();
/*parameter InWidth = 3;*/
localparam
N_A = 3'b000, //nucleotide "A"
N_C = 3'b001, //nucleotide "C"
N_G = 3'b010, //nucleotide "G"
N_T = 3'b011; //nucleotide "T"
reg Clk,Load;
reg [2:0] SIn;
wire [2:0] SOut;
initial
begin
Clk = 0;
forever
begin
Clk = 0; #20;
Clk = 1; #20;
end
end
initial
begin
Load = 0; #10;
Load = 1; #600; // 2*length of SISO
Load = 0; #10;
end
initial
begin
SIn = N_A; #30;
SIn = N_G; #40;
SIn = N_T; #40;
SIn = N_G; #40;
SIn = N_C; #40;
SIn = N_T; #40;
SIn = N_T; #40;
SIn = N_C; #40;
end
initial
begin
#700$finish;
end
SISO SISO_inst(
.Clk (Clk),
.Load (Load),
.SIn (SIn),
.SOut (SOut)
);
endmodule 
Is it possible to produce that kind of word output using SISO?
Do you guys have idea?