ESP-IDF Firmware
Firmware architecture and call graph
Loading...
Searching...
No Matches
dsps_fft4r.h
Go to the documentation of this file.
1// Copyright 2018-2019 Espressif Systems (Shanghai) PTE LTD
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15#ifndef _dsps_fft4r_H_
16#define _dsps_fft4r_H_
17#include "dsp_err.h"
18#include "sdkconfig.h"
19
20#include "dsps_fft_tables.h"
21#include "dsps_fft4r_platform.h"
22
23#ifdef __cplusplus
24extern "C"
25{
26#endif
27
28extern float *dsps_fft4r_w_table_fc32;
30extern uint8_t dsps_fft4r_initialized;
31
32extern int16_t *dsps_fft4r_w_table_sc16;
34extern uint8_t dsps_fft4r_sc16_initialized;
35
57esp_err_t dsps_fft4r_init_fc32(float *fft_table_buff, int max_fft_size);
59
69void dsps_fft4r_deinit_fc32(void);
71
90esp_err_t dsps_fft4r_fc32_ansi_(float *data, int N, float *table, int table_size);
91esp_err_t dsps_fft4r_fc32_ae32_(float *data, int N, float *table, int table_size);
92esp_err_t dsps_fft4r_fc32_aes3_(float *data, int N, float *table, int table_size);
93esp_err_t dsps_fft4r_fc32_arp4_(float *data, int N, float *table, int table_size);
95// This is workaround because linker generates permanent error when assembler uses
96// direct access to the table pointer
97#define dsps_fft4r_fc32_ansi(data, N) dsps_fft4r_fc32_ansi_(data, N, dsps_fft4r_w_table_fc32, dsps_fft4r_w_table_size)
98#define dsps_fft4r_fc32_ae32(data, N) dsps_fft4r_fc32_ae32_(data, N, dsps_fft4r_w_table_fc32, dsps_fft4r_w_table_size)
99#define dsps_fft4r_fc32_aes3(data, N) dsps_fft4r_fc32_aes3_(data, N, dsps_fft4r_w_table_fc32, dsps_fft4r_w_table_size)
100#define dsps_fft4r_fc32_arp4(data, N) dsps_fft4r_fc32_arp4_(data, N, dsps_fft4r_w_table_fc32, dsps_fft4r_w_table_size/(N))
101
122
146esp_err_t dsps_cplx2real_fc32_ansi_(float *data, int N, float *table, int table_size);
147esp_err_t dsps_cplx2real_fc32_ae32_(float *data, int N, float *table, int table_size);
149#define dsps_cplx2real_fc32_ansi(data, N) dsps_cplx2real_fc32_ansi_(data, N, dsps_fft4r_w_table_fc32, dsps_fft4r_w_table_size)
150#define dsps_cplx2real_fc32_ae32(data, N) dsps_cplx2real_fc32_ae32_(data, N, dsps_fft4r_w_table_fc32, dsps_fft4r_w_table_size)
151
152
153esp_err_t dsps_gen_bitrev4r_table(int N, int step, char *name_ext);
154
155#ifdef __cplusplus
156}
157#endif
158
159#if CONFIG_DSP_OPTIMIZED
160
161#if (dsps_fft4r_fc32_ae32_enabled == 1)
162#define dsps_fft4r_fc32 dsps_fft4r_fc32_ae32
163#elif (dsps_fft4r_fc32_aes3_enabled == 1)
164#define dsps_fft4r_fc32 dsps_fft4r_fc32_aes3
165#elif (dsps_fft4r_fc32_arp4_enabled == 1)
166#define dsps_fft4r_fc32 dsps_fft4r_fc32_arp4
167#else
168#define dsps_fft4r_fc32 dsps_fft4r_fc32_ansi
169#endif // dsps_fft4r_fc32_ae32_enabled
170
171#define dsps_fft4r_sc16 dsps_fft4r_sc16_ae32
172#define dsps_bit_rev4r_fc32 dsps_bit_rev4r_fc32_ae32
173
174#if (dsps_cplx2real_fc32_ae32_enabled == 1)
175#define dsps_cplx2real_fc32 dsps_cplx2real_fc32_ae32
176#else
177#define dsps_cplx2real_fc32 dsps_cplx2real_fc32_ansi
178#endif // dsps_cplx2real_fc32_ae32_enabled
179
180
181#else
182#define dsps_fft4r_fc32 dsps_fft4r_fc32_ansi
183#define dsps_fft4r_sc16 dsps_fft4r_sc16_ansi
184#define dsps_bit_rev4r_fc32 dsps_bit_rev4r_fc32
185#define dsps_cplx2real_fc32 dsps_cplx2real_fc32_ansi
186#endif
187
188#endif // _dsps_fft4r_H_
esp_err_t dsps_fft4r_fc32_ansi_(float *data, int N, float *table, int table_size)
complex FFT of radix 4
esp_err_t dsps_cplx2real_fc32_ansi_(float *data, int N, float *table, int table_size)
Convert FFT result to complex array for real input data.
esp_err_t dsps_fft4r_init_fc32(float *fft_table_buff, int max_fft_size)
init fft tables
esp_err_t dsps_fft4r_fc32_aes3_(float *data, int N, float *table, int table_size)
esp_err_t dsps_fft4r_fc32_ae32_(float *data, int N, float *table, int table_size)
int dsps_fft4r_w_table_sc16_size
uint8_t dsps_fft4r_sc16_initialized
#define dsps_bit_rev4r_fc32
Definition dsps_fft4r.h:184
int16_t * dsps_fft4r_w_table_sc16
esp_err_t dsps_cplx2real_fc32_ae32_(float *data, int N, float *table, int table_size)
void dsps_fft4r_deinit_fc32(void)
deinit fft tables
esp_err_t dsps_fft4r_fc32_arp4_(float *data, int N, float *table, int table_size)
esp_err_t dsps_bit_rev4r_sc16_ansi(int16_t *data, int N)
esp_err_t dsps_gen_bitrev4r_table(int N, int step, char *name_ext)
esp_err_t dsps_bit_rev4r_direct_fc32_ansi(float *data, int N)
esp_err_t dsps_bit_rev4r_fc32_ae32(float *data, int N)
int dsps_fft4r_w_table_size
float * dsps_fft4r_w_table_fc32
uint8_t dsps_fft4r_initialized
int esp_err_t
Definition esp_err.h:21
static float data[128 *2]
Definition test_fft2r.c:34
#define N
Definition test_mmult.c:13