![]() |
![]() |
Contains functions related to generate FFT twiddle factors. The functions are optimized for speed to allow quick reconfiguration when switching sub-frames in advanced frame mode. For FFT size less than or equal to 1024, the implementation is to store look-up table which is very high in memory consumption. For FFT size 2048, 4096, and 8192, the implementation is to use trigonometry formulas for interpolation from the look-up table. More...
Functions | |
int32_t | mmwavelib_gen_twiddle_fft16x16 (int16_t *w, int32_t n) |
Function Name : mmwavelib_gen_twiddle_fft16x16. More... | |
int32_t | mmwavelib_gen_twiddle_fft16x16_imre_sa (int16_t *w, int32_t n) |
Function Name : mmwavelib_gen_twiddle_fft16x16_imre_sa. More... | |
int32_t | mmwavelib_gen_twiddle_smallfft_16x16 (int16_t *w, int32_t n) |
Function Name : mmwavelib_gen_twiddle_smallfft_16x16. More... | |
int32_t | mmwavelib_gen_twiddle_smallfft_16x16_imre_sa (int16_t *w, int32_t n) |
Function Name : mmwavelib_gen_twiddle_smallfft_16x16_imre_sa. More... | |
int32_t | mmwavelib_gen_twiddle_largefft_16x16 (int16_t *w, int32_t n) |
Function Name : mmwavelib_gen_twiddle_largefft_16x16. More... | |
int32_t | mmwavelib_gen_twiddle_largefft_16x16_imre_sa (int16_t *w, int32_t n) |
Function Name : mmwavelib_gen_twiddle_largefft_16x16_imre_sa. More... | |
int32_t | mmwavelib_gen_twiddle_largefftUp8k_16x16 (int16_t *w, int32_t n) |
Function Name : mmwavelib_gen_twiddle_largefftUp8k_16x16. More... | |
int32_t | mmwavelib_gen_twiddle_fft32x32 (int32_t *w, int32_t n) |
Function Name : mmwavelib_gen_twiddle_fft32x32. More... | |
int32_t | mmwavelib_gen_twiddle_smallfft_32x32 (int32_t *w, int32_t n) |
Function Name : mmwavelib_gen_twiddle_smallfft_32x32. More... | |
int32_t | mmwavelib_gen_twiddle_largefft_32x32 (int32_t *w, int32_t n) |
Function Name : mmwavelib_gen_twiddle_largefft_32x32. More... | |
Variables | |
const int32_t | mmwavelib_twiddleTableCommon [2 *256] |
Lookup table for FFT twiddle factors generation(FFT size less than or equal to 1024) and DFT single bin DFT calculation. It contains 256 complex exponentials e(k) = cos(2*pi*k/1024)+j*sin(2*pi*k/1024), k=0,...,255, Imaginary values are in even, and real values are in odd locations. Values are in Q31 format, saturated to +/- 2147483647. More... | |
const int32_t | mmwavelib_twiddleTableLargeFFTSize [2 *14] |
Lookup table for big size(2048, 4096, 8192) FFT twiddle factor generation. It contains the interpolation values for FFT size 2048, 4096, and 8192. For FFT size 2048, two complex interpolation values, exp(j* 2*pi*[0:1]/2048), For FFT size 4096, four complex interpolation values exp(j* 2*pi*[0:3]/4096), For FFT size 8192, eight complex interpolation values exp(j*2*pi*[0:7]/8192). Imaginary values are in even, and real values are in odd locations. Values are in Q31 format, saturated to +/- 2147483647. More... | |
Contains functions related to generate FFT twiddle factors. The functions are optimized for speed to allow quick reconfiguration when switching sub-frames in advanced frame mode. For FFT size less than or equal to 1024, the implementation is to store look-up table which is very high in memory consumption. For FFT size 2048, 4096, and 8192, the implementation is to use trigonometry formulas for interpolation from the look-up table.
const int32_t mmwavelib_twiddleTableCommon[2 *256] |
Lookup table for FFT twiddle factors generation(FFT size less than or equal to 1024) and DFT single bin DFT calculation. It contains 256 complex exponentials e(k) = cos(2*pi*k/1024)+j*sin(2*pi*k/1024), k=0,...,255, Imaginary values are in even, and real values are in odd locations. Values are in Q31 format, saturated to +/- 2147483647.
Following Matlab code was used to generate this table:
Generates lookup table for fast twiddle table generation for DSP lib FFT functions 16x16 and 32x32 for FFT sizes up to 1024. It saturates the amplitude to +/- 2147483647. The values are saved to file as imaginary %(sine) to even, and real (cosine) to odd index positions. M = 2147483647.5; nMax = 1024; table=round(M*exp(1j*2*pi/1024*[0:1*nMax/4-1]')); table=max(min(real(table),2147483647),-2147483647) + 1j* max(min(imag(table),2147483647),-2147483647); fid = fopen('twiddle_table_all.dat','w');
tableRI = [imag(table) real(table)]'; tableRI = tableRI(:); tableRI(tableRI<0) = tableRI(tableRI<0) + 4294967296;
fprintf(fid, [repmat(' 0x%08x,', 1, 8) '
'], tableRI);
const int32_t mmwavelib_twiddleTableLargeFFTSize[2 *14] |
Lookup table for big size(2048, 4096, 8192) FFT twiddle factor generation. It contains the interpolation values for FFT size 2048, 4096, and 8192. For FFT size 2048, two complex interpolation values, exp(j* 2*pi*[0:1]/2048), For FFT size 4096, four complex interpolation values exp(j* 2*pi*[0:3]/4096), For FFT size 8192, eight complex interpolation values exp(j*2*pi*[0:7]/8192). Imaginary values are in even, and real values are in odd locations. Values are in Q31 format, saturated to +/- 2147483647.