#include <farrow.h>
Collaboration diagram for SPUC::farrow< Numeric >:
Public Member Functions | |
Numeric | out () |
Get current output. | |
Numeric | check (long i) |
Clock in new sample & compute current output. | |
farrow (char order) | |
Need to cover different orders! | |
void | reset (void) |
reset | |
~farrow (void) | |
void | input (Numeric in) |
Only input new sample. | |
Numeric | update (Numeric in, double offset) |
Numeric | fir (double offset) |
Calculate output for current coefficients. Offset is between 0 and 1. | |
Numeric | rephase (double offset) |
Rephase => recalculate coefficients and output for new offset (for upsampling). | |
void | calculate_coeff2 (void) |
Calculate coefficients for linear (not tested). | |
void | calculate_coeff3 (void) |
Calculate coefficients for square. | |
void | calculate_coeff3a (void) |
Calculate coefficients for parabolic. | |
void | calculate_coeff4 (void) |
Calculate coefficients for 4th order. | |
Public Attributes | |
long | num_taps |
Numeric * | coeff |
Protected Attributes | |
Numeric * | z |
Numeric | output |
: Farrow implementation of a polynomial interpolation This covers 3 (orders) cases of interpolation 1. Linear (not efficient using this method) 2. Piecewise-Parabolic 3. Cubic Although derived from the Lagrange coefficients the multiplication factor have been simplified to allow simple VLSI implementations. see Interpolation in Digital Modem - Part II, IEEE Trans. on Comms. June 1993.
|
Need to cover different orders!
|
|
|
|
Calculate coefficients for linear (not tested). Calculate coefficients |
|
Calculate coefficients for square. Calculate coefficients |
|
Calculate coefficients for parabolic. Calculate coefficients |
|
Calculate coefficients for 4th order.
|
|
Clock in new sample & compute current output.
|
|
Calculate output for current coefficients. Offset is between 0 and 1. Perform FIR |
|
Only input new sample. Update history of inputs Add new input |
|
Get current output.
|
|
Rephase => recalculate coefficients and output for new offset (for upsampling).
Here is the call graph for this function: ![]() |
|
reset
|
|
: Update => Clock in new input sample, recalculate coefficients and determine output Update history of inputs Add new input Calculate coefficients Perform FIR Here is the call graph for this function: ![]() |
|
|
|
|
|
|
|
|