Logo
MSP DSP Library
DSPLib_filter.h
1 #ifndef __DSPLIB_FILTER_H__
2 #define __DSPLIB_FILTER_H__
3 
4 //******************************************************************************
5 //
23 //
24 //******************************************************************************
25 
26 //******************************************************************************
27 //
28 // If building with a C++ compiler, make all of the definitions in this header
29 // have a C binding.
30 //
31 //******************************************************************************
32 #ifdef __cplusplus
33 extern "C"
34 {
35 #endif
36 
37 //******************************************************************************
38 //
43 //
44 //******************************************************************************
45 #define MSP_ALIGN_FIR_Q15(n) (n*4)
46 
47 //******************************************************************************
48 //
53 //
54 //******************************************************************************
55 #define MSP_ALIGN_FIR_IQ31(n) (n*8)
56 
57 //******************************************************************************
58 //
63 //
64 //******************************************************************************
65 #define MSP_ALIGN_CMPLX_FIR_Q15(n) (n*8)
66 
67 //******************************************************************************
68 //
73 //
74 //******************************************************************************
75 #define MSP_ALIGN_CMPLX_FIR_IQ31(n) (n*16)
76 
77 //******************************************************************************
78 //
82 //
83 //******************************************************************************
84 typedef struct msp_fir_q15_params {
87  uint16_t length;
90  uint16_t tapLength;
93  const _q15 *coeffs;
98 
99 //******************************************************************************
100 //
104 //
105 //******************************************************************************
106 typedef struct msp_fir_iq31_params {
109  uint16_t length;
112  uint16_t tapLength;
115  const _iq31 *coeffs;
120 
121 //******************************************************************************
122 //
126 //
127 //******************************************************************************
131  uint16_t length;
134  uint16_t tapLength;
137  const _q15 *coeffs;
142 
143 //******************************************************************************
144 //
148 //
149 //******************************************************************************
153  uint16_t length;
156  uint16_t tapLength;
159  const _iq31 *coeffs;
164 
165 //******************************************************************************
166 //
170 //
171 //******************************************************************************
184  uint16_t reserved1;
192 
193 //******************************************************************************
194 //
198 //
199 //******************************************************************************
214 
215 //******************************************************************************
216 //
220 //
221 //******************************************************************************
225  uint16_t length;
237 
238 //******************************************************************************
239 //
243 //
244 //******************************************************************************
248  uint16_t length;
252  uint16_t stages;
264 
265 //******************************************************************************
266 //
271 //
272 //******************************************************************************
276  uint16_t reserved1;
297  uint16_t reserved2;
299 
300 //******************************************************************************
301 //
305 //
306 //******************************************************************************
315 
316 //******************************************************************************
317 //
321 //
322 //******************************************************************************
326  uint16_t length;
338 
339 //******************************************************************************
340 //
344 //
345 //******************************************************************************
349  uint16_t length;
353  uint16_t stages;
365 
366 //******************************************************************************
367 //
372 //
373 //******************************************************************************
380  uint16_t reserved1;
401  uint16_t reserved2;
403 
404 //******************************************************************************
405 //
409 //
410 //******************************************************************************
437 
438 //******************************************************************************
439 //
443 //
444 //******************************************************************************
448  uint16_t length;
460 
461 //******************************************************************************
462 //
467 //
468 //******************************************************************************
472  uint16_t length;
476  uint16_t stages;
488 
489 //******************************************************************************
490 //
517 //
518 //******************************************************************************
519 extern msp_status msp_fir_q15(
520  const msp_fir_q15_params *params,
521  const _q15 *src,
522  _q15 *dst);
523 
524 //******************************************************************************
525 //
552 //
553 //******************************************************************************
554 extern msp_status msp_fir_iq31(
555  const msp_fir_iq31_params *params,
556  const _iq31 *src,
557  _iq31 *dst);
558 
559 //******************************************************************************
560 //
587 //
588 //******************************************************************************
590  const msp_cmplx_fir_q15_params *params,
591  const _q15 *src,
592  _q15 *dst);
593 
594 //******************************************************************************
595 //
622 //
623 //******************************************************************************
625  const msp_cmplx_fir_iq31_params *params,
626  const _iq31 *src,
627  _iq31 *dst);
628 
629 //******************************************************************************
630 //
654 //
655 //******************************************************************************
657  const msp_biquad_df1_q15_params *params,
658  const _q15 *src,
659  _q15 *dst);
660 
661 //******************************************************************************
662 //
684 //
685 //******************************************************************************
687  const msp_biquad_cascade_df1_q15_params *params,
688  const _q15 *src,
689  _q15 *dst);
690 
691 //******************************************************************************
692 //
717 //
718 //******************************************************************************
720  const msp_biquad_df2_q15_params *params,
721  const _q15 *src,
722  _q15 *dst);
723 
724 //******************************************************************************
725 //
747 //
748 //******************************************************************************
750  const msp_biquad_cascade_df2_q15_params *params,
751  const _q15 *src,
752  _q15 *dst);
753 
754 //******************************************************************************
755 //
783 //
784 //******************************************************************************
786  const msp_biquad_df2_ext_q15_params *params,
787  const _q15 *src,
788  _q15 *dst);
789 
790 //******************************************************************************
791 //
815 //
816 //******************************************************************************
819  const _q15 *src,
820  _q15 *dst);
821 
822 //*****************************************************************************
823 //
824 // Mark the end of the C bindings section for C++ compilers.
825 //
826 //*****************************************************************************
827 #ifdef __cplusplus
828 }
829 #endif
830 
831 #endif //__DSPLIB_FILTER_H__
msp_biquad_df1_q15_states * states
Definition: DSPLib_filter.h:262
_q15 q2
Definition: DSPLib_filter.h:313
uint16_t length
Definition: DSPLib_filter.h:153
uint16_t length
Definition: DSPLib_filter.h:326
_q15 min
Definition: DSPLib_filter.h:432
uint16_t length
Definition: DSPLib_filter.h:248
msp_biquad_df2_ext_q15_states * states
Definition: DSPLib_filter.h:458
Coefficients for direct form 2 biquad filter. When using LEA these coefficients must be placed into s...
Definition: DSPLib_filter.h:273
_q15 x2
Definition: DSPLib_filter.h:203
States for direct form 1 biquad filter.
Definition: DSPLib_filter.h:200
int32_t _iq31
Signed fixed point data type with 1 integer bit and 31 fractional bits.
Definition: DSPLib_types.h:100
uint16_t reserved1
Definition: DSPLib_filter.h:184
_q15 b1By2
Definition: DSPLib_filter.h:395
_q15 b2
Definition: DSPLib_filter.h:294
uint16_t length
Definition: DSPLib_filter.h:448
_q15 y2
Definition: DSPLib_filter.h:209
const _q15 * coeffs
Definition: DSPLib_filter.h:93
Parameter structure for FIR filter.
Definition: DSPLib_filter.h:106
uint16_t reserved1
Definition: DSPLib_filter.h:276
_q15 b2
Definition: DSPLib_filter.h:175
uint16_t tapLength
Definition: DSPLib_filter.h:90
msp_status
Enumerated type to return the status of an operation.
Definition: DSPLib_types.h:119
msp_biquad_df2_ext_q15_states * states
Definition: DSPLib_filter.h:486
uint16_t tapLength
Definition: DSPLib_filter.h:134
uint16_t length
Definition: DSPLib_filter.h:109
_q15 q1
Definition: DSPLib_filter.h:310
Parameter structure for direct form 1 biquad filter.
Definition: DSPLib_filter.h:222
Coefficients for extended direct form 2 biquad filter. When using LEA these coefficients must be plac...
Definition: DSPLib_filter.h:374
_q15 a1By2
Definition: DSPLib_filter.h:386
bool enableCircularBuffer
Definition: DSPLib_filter.h:140
msp_biquad_df2_q15_states * states
Definition: DSPLib_filter.h:336
msp_status msp_cmplx_fir_iq31(const msp_cmplx_fir_iq31_params *params, const _iq31 *src, _iq31 *dst)
Discrete-time convolution of a complex source vector with complex coefficients to apply an FIR filter...
Parameter structure for cascaded direct form 2 biquad filter.
Definition: DSPLib_filter.h:346
const _iq31 * coeffs
Definition: DSPLib_filter.h:115
_q15 b0
Definition: DSPLib_filter.h:392
_q15 a1By2
Definition: DSPLib_filter.h:282
bool enableCircularBuffer
Definition: DSPLib_filter.h:96
const _iq31 * coeffs
Definition: DSPLib_filter.h:159
Parameter structure for extended direct form 2 biquad filter.
Definition: DSPLib_filter.h:445
_q15 b2
Definition: DSPLib_filter.h:398
const msp_biquad_df2_ext_q15_coeffs * coeffs
Definition: DSPLib_filter.h:480
_q15 b1By2
Definition: DSPLib_filter.h:178
const msp_biquad_df1_q15_coeffs * coeffs
Definition: DSPLib_filter.h:256
msp_status msp_biquad_df2_q15(const msp_biquad_df2_q15_params *params, const _q15 *src, _q15 *dst)
Second-order direct form 2 biquad filter.
uint16_t stages
Definition: DSPLib_filter.h:353
msp_biquad_df1_q15_states * states
Definition: DSPLib_filter.h:235
_q15 a0
Definition: DSPLib_filter.h:389
_q15 b1By2
Definition: DSPLib_filter.h:291
msp_status msp_biquad_df1_q15(const msp_biquad_df1_q15_params *params, const _q15 *src, _q15 *dst)
Second-order direct form 1 biquad filter.
_q15 a1By2
Definition: DSPLib_filter.h:190
_iq31 bias
Definition: DSPLib_filter.h:377
msp_status msp_biquad_df2_ext_q15(const msp_biquad_df2_ext_q15_params *params, const _q15 *src, _q15 *dst)
Second-order direct form 2 biquad filter extended with DC bias and minimum and maximum tracking...
_q15 b0
Definition: DSPLib_filter.h:181
States for extended direct form 2 biquad filter.
Definition: DSPLib_filter.h:411
uint16_t stages
Definition: DSPLib_filter.h:476
_q15 a2
Definition: DSPLib_filter.h:187
_q15 minOdd
Definition: DSPLib_filter.h:423
Coefficients for direct form 1 biquad filter.
Definition: DSPLib_filter.h:172
States for direct form 2 biquad filter.
Definition: DSPLib_filter.h:307
Parameter structure for FIR filter.
Definition: DSPLib_filter.h:84
uint16_t stages
Definition: DSPLib_filter.h:252
uint16_t length
Definition: DSPLib_filter.h:131
_q15 q1
Definition: DSPLib_filter.h:414
_q15 a0
Definition: DSPLib_filter.h:285
int16_t _q15
Signed fixed point data type with 1 integer bit and 15 fractional bits.
Definition: DSPLib_types.h:79
const _q15 * coeffs
Definition: DSPLib_filter.h:137
uint16_t length
Definition: DSPLib_filter.h:472
const msp_biquad_df2_q15_coeffs * coeffs
Definition: DSPLib_filter.h:330
msp_status msp_biquad_cascade_df2_ext_q15(const msp_biquad_cascade_df2_ext_q15_params *params, const _q15 *src, _q15 *dst)
Cascaded direct form 2 biquad filter extended with DC bias and minimum and maximum tracking...
Parameter structure for cascaded extended direct form 2 biquad filter.
Definition: DSPLib_filter.h:469
_q15 y1
Definition: DSPLib_filter.h:212
msp_status msp_fir_q15(const msp_fir_q15_params *params, const _q15 *src, _q15 *dst)
Discrete-time convolution of a source vector with real coefficients to apply an FIR filter...
_q15 max
Definition: DSPLib_filter.h:435
msp_status msp_cmplx_fir_q15(const msp_cmplx_fir_q15_params *params, const _q15 *src, _q15 *dst)
Discrete-time convolution of a complex source vector with complex coefficients to apply an FIR filter...
bool enableCircularBuffer
Definition: DSPLib_filter.h:118
uint16_t reserved2
Definition: DSPLib_filter.h:297
_q15 q2
Definition: DSPLib_filter.h:417
Parameter structure for complex FIR filter.
Definition: DSPLib_filter.h:128
msp_status msp_biquad_cascade_df2_q15(const msp_biquad_cascade_df2_q15_params *params, const _q15 *src, _q15 *dst)
Cascaded direct form 2 biquad filter.
_q15 maxOdd
Definition: DSPLib_filter.h:429
const msp_biquad_df1_q15_coeffs * coeffs
Definition: DSPLib_filter.h:229
_q15 maxEven
Definition: DSPLib_filter.h:426
_q15 a2
Definition: DSPLib_filter.h:383
_q15 x1
Definition: DSPLib_filter.h:206
Parameter structure for direct form 2 biquad filter.
Definition: DSPLib_filter.h:323
_q15 a2
Definition: DSPLib_filter.h:279
uint16_t tapLength
Definition: DSPLib_filter.h:112
msp_biquad_df2_q15_states * states
Definition: DSPLib_filter.h:363
uint16_t tapLength
Definition: DSPLib_filter.h:156
Parameter structure for complex FIR filter.
Definition: DSPLib_filter.h:150
const msp_biquad_df2_ext_q15_coeffs * coeffs
Definition: DSPLib_filter.h:452
uint16_t length
Definition: DSPLib_filter.h:225
Parameter structure for cascaded direct form 1 biquad filter.
Definition: DSPLib_filter.h:245
uint16_t length
Definition: DSPLib_filter.h:349
uint16_t reserved1
Definition: DSPLib_filter.h:380
_q15 minEven
Definition: DSPLib_filter.h:420
_q15 b0
Definition: DSPLib_filter.h:288
msp_status msp_biquad_cascade_df1_q15(const msp_biquad_cascade_df1_q15_params *params, const _q15 *src, _q15 *dst)
Cascaded direct form 1 biquad filter.
uint16_t reserved2
Definition: DSPLib_filter.h:401
msp_status msp_fir_iq31(const msp_fir_iq31_params *params, const _iq31 *src, _iq31 *dst)
Discrete-time convolution of a source vector with real coefficients to apply an FIR filter...
uint16_t length
Definition: DSPLib_filter.h:87
bool enableCircularBuffer
Definition: DSPLib_filter.h:162
const msp_biquad_df2_q15_coeffs * coeffs
Definition: DSPLib_filter.h:357