|
|
|
@ -52,22 +52,11 @@
|
|
|
|
{b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}
|
|
|
|
{b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}
|
|
|
|
</pre>
|
|
|
|
</pre>
|
|
|
|
@par
|
|
|
|
@par
|
|
|
|
<code>pState</code> points to the array of state variables and some working memory for the Helium version.
|
|
|
|
<code>pState</code> points to the array of state variables.
|
|
|
|
<code>pState</code> is of length <code>numTaps+blockSize-1</code> samples (except for Helium - see below), where <code>blockSize</code> is the number of input samples processed by each call to <code>arm_fir_f32()</code>.
|
|
|
|
<code>pState</code> is of length <code>numTaps+blockSize-1</code> samples, where <code>blockSize</code> is the number of input samples processed by each call to <code>arm_fir_f32()</code>.
|
|
|
|
@par Initialization of Helium version
|
|
|
|
|
|
|
|
For Helium version the array of coefficients must be a multiple of 4 (4a) even if less
|
|
|
|
@par
|
|
|
|
then 4a coefficients are defined in the FIR. The additional coefficients
|
|
|
|
There is no Helium version of the fir F64.
|
|
|
|
(4a - numTaps) must be set to 0.
|
|
|
|
|
|
|
|
numTaps is still set to its right value in the init function. It means that
|
|
|
|
|
|
|
|
the implementation may require to read more coefficients due to the vectorization and
|
|
|
|
|
|
|
|
to avoid having to manage too many different cases in the code.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@par Helium state buffer
|
|
|
|
|
|
|
|
The state buffer must contain some additional temporary data
|
|
|
|
|
|
|
|
used during the computation but which is not the state of the FIR.
|
|
|
|
|
|
|
|
The first blockSize samples are temporary data.
|
|
|
|
|
|
|
|
The remaining samples are the state of the FIR filter.
|
|
|
|
|
|
|
|
So the state buffer has size <code> numTaps + 2 * blockSize - 1 </code>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|