|
|
|
|
@ -72,8 +72,15 @@ arm_status arm_cfft_radix2_init_q15(
|
|
|
|
|
uint8_t ifftFlag,
|
|
|
|
|
uint8_t bitReverseFlag)
|
|
|
|
|
{
|
|
|
|
|
/* Initialise the default arm status */
|
|
|
|
|
arm_status status = ARM_MATH_ARGUMENT_ERROR;
|
|
|
|
|
|
|
|
|
|
#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_FFT_ALLOW_TABLES)
|
|
|
|
|
|
|
|
|
|
#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_TWIDDLECOEF_Q15_4096)
|
|
|
|
|
|
|
|
|
|
/* Initialise the default arm status */
|
|
|
|
|
arm_status status = ARM_MATH_SUCCESS;
|
|
|
|
|
status = ARM_MATH_SUCCESS;
|
|
|
|
|
|
|
|
|
|
/* Initialise the FFT length */
|
|
|
|
|
S->fftLen = fftLen;
|
|
|
|
|
@ -85,6 +92,8 @@ arm_status arm_cfft_radix2_init_q15(
|
|
|
|
|
/* Initialise the Flag for calculation Bit reversal or not */
|
|
|
|
|
S->bitReverseFlag = bitReverseFlag;
|
|
|
|
|
|
|
|
|
|
#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || defined(ARM_TABLE_BITREVIDX_FXT_4096)
|
|
|
|
|
|
|
|
|
|
/* Initializations of structure parameters depending on the FFT length */
|
|
|
|
|
switch (S->fftLen)
|
|
|
|
|
{
|
|
|
|
|
@ -96,7 +105,7 @@ arm_status arm_cfft_radix2_init_q15(
|
|
|
|
|
/* Initialise the bit reversal table modifier */
|
|
|
|
|
S->bitRevFactor = 1U;
|
|
|
|
|
/* Initialise the bit reversal table pointer */
|
|
|
|
|
S->pBitRevTable = (uint16_t *) armBitRevTable;
|
|
|
|
|
S->pBitRevTable = (uint16_t *) armBitRevIndexTable_fixed_4096;
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
@ -108,7 +117,7 @@ arm_status arm_cfft_radix2_init_q15(
|
|
|
|
|
/* Initialise the bit reversal table modifier */
|
|
|
|
|
S->bitRevFactor = 2U;
|
|
|
|
|
/* Initialise the bit reversal table pointer */
|
|
|
|
|
S->pBitRevTable = (uint16_t *) & armBitRevTable[1];
|
|
|
|
|
S->pBitRevTable = (uint16_t *) & armBitRevIndexTable_fixed_4096[1];
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
@ -116,7 +125,7 @@ arm_status arm_cfft_radix2_init_q15(
|
|
|
|
|
/* Initializations of structure parameters for 1024 point FFT */
|
|
|
|
|
S->twidCoefModifier = 4U;
|
|
|
|
|
S->bitRevFactor = 4U;
|
|
|
|
|
S->pBitRevTable = (uint16_t *) & armBitRevTable[3];
|
|
|
|
|
S->pBitRevTable = (uint16_t *) & armBitRevIndexTable_fixed_4096[3];
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
@ -124,7 +133,7 @@ arm_status arm_cfft_radix2_init_q15(
|
|
|
|
|
/* Initializations of structure parameters for 512 point FFT */
|
|
|
|
|
S->twidCoefModifier = 8U;
|
|
|
|
|
S->bitRevFactor = 8U;
|
|
|
|
|
S->pBitRevTable = (uint16_t *) & armBitRevTable[7];
|
|
|
|
|
S->pBitRevTable = (uint16_t *) & armBitRevIndexTable_fixed_4096[7];
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
@ -132,7 +141,7 @@ arm_status arm_cfft_radix2_init_q15(
|
|
|
|
|
/* Initializations of structure parameters for 256 point FFT */
|
|
|
|
|
S->twidCoefModifier = 16U;
|
|
|
|
|
S->bitRevFactor = 16U;
|
|
|
|
|
S->pBitRevTable = (uint16_t *) & armBitRevTable[15];
|
|
|
|
|
S->pBitRevTable = (uint16_t *) & armBitRevIndexTable_fixed_4096[15];
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
@ -140,7 +149,7 @@ arm_status arm_cfft_radix2_init_q15(
|
|
|
|
|
/* Initializations of structure parameters for 128 point FFT */
|
|
|
|
|
S->twidCoefModifier = 32U;
|
|
|
|
|
S->bitRevFactor = 32U;
|
|
|
|
|
S->pBitRevTable = (uint16_t *) & armBitRevTable[31];
|
|
|
|
|
S->pBitRevTable = (uint16_t *) & armBitRevIndexTable_fixed_4096[31];
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
@ -148,7 +157,7 @@ arm_status arm_cfft_radix2_init_q15(
|
|
|
|
|
/* Initializations of structure parameters for 64 point FFT */
|
|
|
|
|
S->twidCoefModifier = 64U;
|
|
|
|
|
S->bitRevFactor = 64U;
|
|
|
|
|
S->pBitRevTable = (uint16_t *) & armBitRevTable[63];
|
|
|
|
|
S->pBitRevTable = (uint16_t *) & armBitRevIndexTable_fixed_4096[63];
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
@ -156,7 +165,7 @@ arm_status arm_cfft_radix2_init_q15(
|
|
|
|
|
/* Initializations of structure parameters for 32 point FFT */
|
|
|
|
|
S->twidCoefModifier = 128U;
|
|
|
|
|
S->bitRevFactor = 128U;
|
|
|
|
|
S->pBitRevTable = (uint16_t *) & armBitRevTable[127];
|
|
|
|
|
S->pBitRevTable = (uint16_t *) & armBitRevIndexTable_fixed_4096[127];
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
@ -164,7 +173,7 @@ arm_status arm_cfft_radix2_init_q15(
|
|
|
|
|
/* Initializations of structure parameters for 16 point FFT */
|
|
|
|
|
S->twidCoefModifier = 256U;
|
|
|
|
|
S->bitRevFactor = 256U;
|
|
|
|
|
S->pBitRevTable = (uint16_t *) & armBitRevTable[255];
|
|
|
|
|
S->pBitRevTable = (uint16_t *) & armBitRevIndexTable_fixed_4096[255];
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
@ -174,6 +183,9 @@ arm_status arm_cfft_radix2_init_q15(
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
#endif
|
|
|
|
|
#endif
|
|
|
|
|
return (status);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|