Digital Signal Processing Reference
In-Depth Information
x n
0
h 0
h 1
h 1+ h 0
h 2
h 2 +h 0
h 2 +h 1
h 2 +h 1+ h 0
….
0
1
x n-1
….
P 0
0
4' b0110
add/sub
x n-2
….
0 1
add/sub
x n-3
….
0
h 3
h 4
h 4+ h 3
h 5
h 5 +h 3
h 5 +h 4
h 5 +h 4+ h 3
0
1
x n-4
P 1
P 2
P 3
P 4
….
9:2
2 -1
x n-5
add/sub
….
x n-15
….
0
h 15
h 16
h 16+ h 15
h 17
h 17 +h 15
h 17 +h 16
h 17 +h 16+ h 15
0
1
x n-16
….
P 5
x n-17
add/sub
….
clk g
rst_n
clk g
clk g
rst_n
clk G
clk G
en
CPA
clk G
Figure 6.21 DA-based parallel implementation of an 18-coefficient FIR filter setting L ¼ 3 and M ¼ 6
4'd6: rom_out=17'b00111101110111000; // h2+h1
4'd7: rom_out=17'b00111110111011100; // h2+h1+h0
4'd8: rom_out=17'b00000001000100100; // h3
4'd9: rom_out=17'b00000010001001000; // h3+h0
4'd10: rom_out=17'b00100000000000000; // h3+h1
4'd11: rom_out=17'b00100001000100100; // h3+h1+h0
4'd12: rom_out=17'b00100000000000000; // h3+h2
4'd13: rom_out=17'b00100001000100100; // h3+h2+h0
4'd14: rom_out=17'b00111110111011100; // h3+h2+h1
4'd15: rom_out=17'b01000000000000000; // h3+h2+h1+h0
default: rom_out= 17 ' bx;
endcase
end
assign valid = (|contr); // output data valid signal
assign msb = contr // msb = 1 for contr = ff
assign sum = (acc +
{rom_out^{17{msb}}, 16 ' b0} + // takes 1 ' s complement for msb
 
Search WWH ::




Custom Search