FIR

Parent Previous Next

VisualSim.simulators.sdf.lib 

Class FIR


This actor implements a type polymorphic finite-impulse response filter with multirate capability. Since this filter operates on Tokens, it is polymorphic in the type of data it operates on.

Note that the current implementation of this actor only reads its parameters during initialization, so the filter cannot be changed during execution.

When the decimation (interpolation) parameters are different from unity, the filter behaves exactly as it were followed (preceded) by a DownSample (UpSample) actor. However, the implementation is much more efficient than it would be using UpSample or DownSample actors; a polyphase structure is used internally, avoiding unnecessary use of memory and unnecessary multiplication by zero. Arbitrary sample-rate conversions by rational factors can be accomplished this way.

To design a filter for a multirate system, simply assume the sample rate is the product of the interpolation parameter and the input sample rate, or equivalently, the product of the decimation parameter and the output sample rate. In particular, considerable care must be taken to avoid aliasing. Specifically, if the input sample rate is f, then the filter stopband should begin before f/2. If the interpolation ratio is i, then f/2 is a fraction 1/2i of the sample rate at which you must design your filter.

The decimationPhase parameter is somewhat subtle. It is exactly equivalent the phase parameter of the DownSample actor. Its interpretation is as follows; when decimating, samples are conceptually discarded (although a polyphase structure does not actually compute the discarded samples). If you are decimating by a factor of three, then you will select one of every three outputs, with three possible phases. When decimationPhase is zero (the default), the latest (most recent) samples are the ones selected. The decimationPhase must be strictly less than the decimation ratio.

Note: in this description "sample rate" refers to the physical sampling rate of an A/D converter in the system. In other words, the number of data samples per second. This is not usually specified anywhere in an SDF system, and most definitely does NOT correspond to the SDF rate parameters of this actor. This actor automatically sets the rates of the input and output ports to the decimation and interpolation ratios, respectively.

For more information about polyphase filters, see F. J. Harris, "Multirate FIR Filters for Interpolating and Desampling", in Handbook of Digital Signal Processing, Academic Press, 1987.



Field Detail

decimation

public VisualSim.data.expr.Parameter decimation


decimationPhase

public VisualSim.data.expr.Parameter decimationPhase


interpolation

public VisualSim.data.expr.Parameter interpolation


taps

public VisualSim.data.expr.Parameter taps


_data

protected VisualSim.data.Token[] _data


_mostRecent

protected int _mostRecent


_phaseLength

protected int _phaseLength


_decimationValue

protected int _decimationValue


_interpolationValue

protected int _interpolationValue


_decimationPhaseValue

protected int _decimationPhaseValue


_reinitializeNeeded

protected boolean _reinitializeNeeded


_taps

protected VisualSim.data.Token[] _taps


_zero

protected VisualSim.data.Token _zero

 


Created with the Personal Edition of HelpNDoc: Easily create Qt Help files