In addition to the method described above, Super Sample Rate, FIR can decompose the interpolation process into multiple parallel polyphases using template parameter: TP_PARA_INTERP_POLY
.
When used a TP_PARA_INTERP_POLY
number of output paths will be created.
Note
Total number of output paths will be the result of multiplication of: NUM_OUTPUT_PORTS = TP_PARA_INTERP_POLY x TP_SSR
.
The polyphases are executed in parallel and output data produced by each polyphase directly becomes the filter’s output.
TP_PARA_INTERP_POLY
does not affect the number of input data paths. It is only useful when the filter has an interpolation factor greater than 1.
For example, when TP_SSR = 1
, and TP_PARA_INTERP_POLY = 3
, the input stream would look like this:
in[0] = i0, i1, i2, i3, i4, i5, i6, i7, i8, ...
And the output stream would look like this :
out[0] = o0, o3, o6, o9, o12, o15, ... out[1] = o1, o4, o7, o10, o13, o16, ... out[2] = o2, o5, o8, o11, o14, o17, ...
When TP_SSR = 1
, TP_PARA_INTERP_POLY = 4
, the input stream would still be the same as before, because TP_PARA_INTERP_POLY
only affects the number of output streams.
The output stream would look like:
out[0] = o0, o4, o8, o12, ... out[1] = o1, o5, o9, o13, ... out[2] = o2, o6, o10, o14, ... out[3] = o3, o7, o11, o15, ...
And when TP_SSR = 2
, TP_PARA_INTERP_POLY = 3
, the input stream would need to look like this:
in[0] = i0, i2, i4, i6, i8, i10, ... in[1] = i1, i3, i5, i7, i9, i11, ...
The output stream would produce data in this form:
out[0] = o0, 06, o12, o18, o24, ... out[1] = o1, o7, o13, o19, o25, ... out[2] = o2, o8, o14, o20, o26, ... out[3] = o3, o9, o15, o21, o27, ... out[4] = o4, o10, o16, o22, o28, ... out[5] = o5, o11, o17, o23, o29, ...
We see that we can think of TP_SSR x TP_PARA_INTERP_POLY
as an effective OUT_SSR
which gives us the maximum output sample rate of the filter.