CMSIS-DSP
Verison 1.1.0
CMSIS DSP Software Library
|
Functions | |
void | arm_cfft_radix2_f32 (const arm_cfft_radix2_instance_f32 *S, float32_t *pSrc) |
Processing function for the floating-point Radix-2 CFFT/CIFFT. | |
arm_status | arm_cfft_radix2_init_f32 (arm_cfft_radix2_instance_f32 *S, uint16_t fftLen, uint8_t ifftFlag, uint8_t bitReverseFlag) |
Initialization function for the floating-point CFFT/CIFFT. | |
arm_status | arm_cfft_radix2_init_q15 (arm_cfft_radix2_instance_q15 *S, uint16_t fftLen, uint8_t ifftFlag, uint8_t bitReverseFlag) |
Initialization function for the Q15 CFFT/CIFFT. | |
arm_status | arm_cfft_radix2_init_q31 (arm_cfft_radix2_instance_q31 *S, uint16_t fftLen, uint8_t ifftFlag, uint8_t bitReverseFlag) |
Initialization function for the Q31 CFFT/CIFFT. | |
void | arm_cfft_radix2_q15 (const arm_cfft_radix2_instance_q15 *S, q15_t *pSrc) |
Processing function for the fixed-point CFFT/CIFFT. | |
void | arm_cfft_radix2_q31 (const arm_cfft_radix2_instance_q31 *S, q31_t *pSrc) |
Processing function for the fixed-point CFFT/CIFFT. |
2*fftLen
samples through the transform. pSrc
points to In-place arrays containing 2*fftLen
values. pSrc
points to the array of in-place buffer of size 2*fftLen
and inputs and outputs are stored in an interleaved fashion as shown below. {real[0], imag[0], real[1], imag[1],..}
Complex Fast Fourier Transform:
x(n) = xa + j * ya x(n+N/2 ) = xb + j * ybwhere N is length of FFT
X(2r) = xa'+ j * ya' X(2r+1) = xb'+ j * yb'
Wn = cosVal + j * (- sinVal)
xa' = xa + xb ya' = ya + yb xb' = (xa-xb)* cosVal + (ya-yb) * sinVal yb' = (ya-yb)* cosVal - (xa-xb) * sinVal
Complex Inverse Fast Fourier Transform:
xa' = xa + xb ya' = ya + yb xb' = (xa-xb)* cosVal - (ya-yb) * sinVal yb' = (ya-yb)* cosVal + (xa-xb) * sinVal
arm_cfft_radix2_instance_f32 S = {fftLen, ifftFlag, bitReverseFlag, pTwiddle, pBitRevTable, twidCoefModifier, bitRevFactor, onebyfftLen}; arm_cfft_radix2_instance_q31 S = {fftLen, ifftFlag, bitReverseFlag, pTwiddle, pBitRevTable, twidCoefModifier, bitRevFactor}; arm_cfft_radix2_instance_q15 S = {fftLen, ifftFlag, bitReverseFlag, pTwiddle, pBitRevTable, twidCoefModifier, bitRevFactor};
fftLen
length of CFFT/CIFFT; ifftFlag
Flag for selection of CFFT or CIFFT(Set ifftFlag to calculate CIFFT otherwise calculates CFFT); bitReverseFlag
Flag for selection of output order(Set bitReverseFlag to output in normal order otherwise output in bit reversed order); pTwiddle
points to array of twiddle coefficients; pBitRevTable
points to the array of bit reversal table. twidCoefModifier
modifier for twiddle factor table which supports all FFT lengths with same table; pBitRevTable
modifier for bit reversal table which supports all FFT lengths with same table. onebyfftLen
value of 1/fftLen to calculate CIFFT;void arm_cfft_radix2_f32 | ( | const arm_cfft_radix2_instance_f32 * | S, |
float32_t * | pSrc | ||
) |
Processing function for the floating-point CFFT/CIFFT.
[in] | *S | points to an instance of the floating-point Radix-2 CFFT/CIFFT structure. |
[in,out] | *pSrc | points to the complex data buffer of size 2*fftLen . Processing occurs in-place. |
References arm_bitreversal_f32(), arm_radix2_butterfly_f32(), arm_radix2_butterfly_inverse_f32(), arm_cfft_radix2_instance_f32::bitReverseFlag, arm_cfft_radix2_instance_f32::bitRevFactor, arm_cfft_radix2_instance_f32::fftLen, arm_cfft_radix2_instance_f32::ifftFlag, arm_cfft_radix2_instance_f32::onebyfftLen, arm_cfft_radix2_instance_f32::pBitRevTable, arm_cfft_radix2_instance_f32::pTwiddle, and arm_cfft_radix2_instance_f32::twidCoefModifier.
arm_status arm_cfft_radix2_init_f32 | ( | arm_cfft_radix2_instance_f32 * | S, |
uint16_t | fftLen, | ||
uint8_t | ifftFlag, | ||
uint8_t | bitReverseFlag | ||
) |
[in,out] | *S | points to an instance of the floating-point CFFT/CIFFT structure. |
[in] | fftLen | length of the FFT. |
[in] | ifftFlag | flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. |
[in] | bitReverseFlag | flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. |
fftLen
is not a supported value.ifftFlag
controls whether a forward or inverse transform is computed. Set(=1) ifftFlag for calculation of CIFFT otherwise CFFT is calculated bitReverseFlag
controls whether output is in normal order or bit reversed order. Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order. fftLen
Specifies length of CFFT/CIFFT process. Supported FFT Lengths are 16, 64, 256, 1024. References ARM_MATH_ARGUMENT_ERROR, ARM_MATH_SUCCESS, armBitRevTable, arm_cfft_radix2_instance_f32::bitReverseFlag, arm_cfft_radix2_instance_f32::bitRevFactor, arm_cfft_radix2_instance_f32::fftLen, ifftFlag, arm_cfft_radix2_instance_f32::ifftFlag, arm_cfft_radix2_instance_f32::onebyfftLen, arm_cfft_radix2_instance_f32::pBitRevTable, arm_cfft_radix2_instance_f32::pTwiddle, status, arm_cfft_radix2_instance_f32::twidCoefModifier, and twiddleCoef.
arm_status arm_cfft_radix2_init_q15 | ( | arm_cfft_radix2_instance_q15 * | S, |
uint16_t | fftLen, | ||
uint8_t | ifftFlag, | ||
uint8_t | bitReverseFlag | ||
) |
[in,out] | *S | points to an instance of the Q15 CFFT/CIFFT structure. |
[in] | fftLen | length of the FFT. |
[in] | ifftFlag | flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. |
[in] | bitReverseFlag | flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. |
fftLen
is not a supported value.ifftFlag
controls whether a forward or inverse transform is computed. Set(=1) ifftFlag for calculation of CIFFT otherwise CFFT is calculated bitReverseFlag
controls whether output is in normal order or bit reversed order. Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order. fftLen
Specifies length of CFFT/CIFFT process. Supported FFT Lengths are 16, 64, 256, 1024. References ARM_MATH_ARGUMENT_ERROR, ARM_MATH_SUCCESS, armBitRevTable, arm_cfft_radix2_instance_q15::bitReverseFlag, arm_cfft_radix2_instance_q15::bitRevFactor, arm_cfft_radix2_instance_q15::fftLen, ifftFlag, arm_cfft_radix2_instance_q15::ifftFlag, arm_cfft_radix2_instance_q15::pBitRevTable, arm_cfft_radix2_instance_q15::pTwiddle, status, arm_cfft_radix2_instance_q15::twidCoefModifier, and twiddleCoefQ15.
arm_status arm_cfft_radix2_init_q31 | ( | arm_cfft_radix2_instance_q31 * | S, |
uint16_t | fftLen, | ||
uint8_t | ifftFlag, | ||
uint8_t | bitReverseFlag | ||
) |
Initialization function for the Radix-2 Q31 CFFT/CIFFT.
[in,out] | *S | points to an instance of the Q31 CFFT/CIFFT structure. |
[in] | fftLen | length of the FFT. |
[in] | ifftFlag | flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. |
[in] | bitReverseFlag | flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. |
fftLen
is not a supported value.ifftFlag
controls whether a forward or inverse transform is computed. Set(=1) ifftFlag for calculation of CIFFT otherwise CFFT is calculated bitReverseFlag
controls whether output is in normal order or bit reversed order. Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order. fftLen
Specifies length of CFFT/CIFFT process. Supported FFT Lengths are 16, 64, 256, 1024. References ARM_MATH_ARGUMENT_ERROR, ARM_MATH_SUCCESS, armBitRevTable, arm_cfft_radix2_instance_q31::bitReverseFlag, arm_cfft_radix2_instance_q31::bitRevFactor, arm_cfft_radix2_instance_q31::fftLen, ifftFlag, arm_cfft_radix2_instance_q31::ifftFlag, arm_cfft_radix2_instance_q31::pBitRevTable, arm_cfft_radix2_instance_q31::pTwiddle, status, arm_cfft_radix2_instance_q31::twidCoefModifier, and twiddleCoefQ31.
void arm_cfft_radix2_q15 | ( | const arm_cfft_radix2_instance_q15 * | S, |
q15_t * | pSrc | ||
) |
Processing function for the Q15 CFFT/CIFFT.
[in] | *S | points to an instance of the fixed-point CFFT/CIFFT structure. |
[in,out] | *pSrc | points to the complex data buffer of size 2*fftLen . Processing occurs in-place. |
References arm_bitreversal_q15(), arm_radix2_butterfly_inverse_q15(), arm_radix2_butterfly_q15(), arm_cfft_radix2_instance_q15::bitRevFactor, arm_cfft_radix2_instance_q15::fftLen, arm_cfft_radix2_instance_q15::ifftFlag, arm_cfft_radix2_instance_q15::pBitRevTable, arm_cfft_radix2_instance_q15::pTwiddle, and arm_cfft_radix2_instance_q15::twidCoefModifier.
void arm_cfft_radix2_q31 | ( | const arm_cfft_radix2_instance_q31 * | S, |
q31_t * | pSrc | ||
) |
Processing function for the Radix-2 Q31 CFFT/CIFFT.
[in] | *S | points to an instance of the fixed-point CFFT/CIFFT structure. |
[in,out] | *pSrc | points to the complex data buffer of size 2*fftLen . Processing occurs in-place. |
References arm_bitreversal_q31(), arm_radix2_butterfly_inverse_q31(), arm_radix2_butterfly_q31(), arm_cfft_radix2_instance_q31::bitRevFactor, arm_cfft_radix2_instance_q31::fftLen, arm_cfft_radix2_instance_q31::ifftFlag, arm_cfft_radix2_instance_q31::pBitRevTable, arm_cfft_radix2_instance_q31::pTwiddle, and arm_cfft_radix2_instance_q31::twidCoefModifier.