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