XCORE SDK
XCORE Software Development Kit
|
IC state structure. More...
#include <ic_state.h>
IC state structure.
This is the main state structure for an instance of the Interference Canceller. Before use it must be initialised using the ic_init() function. It contains everything needed for the IC instance including configuration and internal state of both the filter, adaption logic and adaption controller.
ic_config_params_t ic_state_t::config_params |
Configuration parameters for the IC.
complex_s32_t ic_state_t::Error[IC_Y_CHANNELS][IC_FD_FRAME_LENGTH] |
Storage for Error and error mantissas. Note IFFT is done in-place so the Error storage is reused for error.
bfp_complex_s32_t ic_state_t::Error_bfp[IC_Y_CHANNELS] |
BFP array pointing to the frequency domain Error output.
bfp_s32_t ic_state_t::error_bfp[IC_Y_CHANNELS] |
BFP array pointing to the time domain Error output.
float_s32_t ic_state_t::error_ema_energy[IC_Y_CHANNELS] |
Filtered error energy.
complex_s32_t ic_state_t::H_hat[IC_Y_CHANNELS][IC_FILTER_PHASES *IC_X_CHANNELS][IC_FD_FRAME_LENGTH] |
Storage for H_hat mantissas.
bfp_complex_s32_t ic_state_t::H_hat_bfp[IC_Y_CHANNELS][IC_X_CHANNELS *IC_FILTER_PHASES] |
BFP array pointing to the frequency domain estimate of transfer function.
ic_adaption_controller_state_t ic_state_t::ic_adaption_controller_state |
State and configuration parameters for the IC adaption controller.
int32_t ic_state_t::inv_X_energy[IC_X_CHANNELS][IC_FD_FRAME_LENGTH] |
Storage for inv_X_energy mantissas.
bfp_s32_t ic_state_t::inv_X_energy_bfp[IC_X_CHANNELS] |
BFP array pointing to the inverse X energies used for normalisation.
float_s32_t ic_state_t::max_X_energy[IC_X_CHANNELS] |
Used to keep track of peak X energy.
float_s32_t ic_state_t::mu[IC_Y_CHANNELS][IC_X_CHANNELS] |
Mu value used for controlling adaption rate.
int32_t ic_state_t::overlap[IC_Y_CHANNELS][IC_FRAME_OVERLAP] |
Storage for overlap mantissas.
bfp_s32_t ic_state_t::overlap_bfp[IC_Y_CHANNELS] |
BFP array pointing to the overlap array used for windowing and overlap operations.
bfp_s32_t ic_state_t::prev_x_bfp[IC_X_CHANNELS] |
BFP array pointing to previous x samples which are used for framing.
bfp_s32_t ic_state_t::prev_y_bfp[IC_Y_CHANNELS] |
BFP array pointing to previous y samples which are used for framing.
int32_t ic_state_t::sigma_XX[IC_X_CHANNELS][IC_FD_FRAME_LENGTH] |
Storage for sigma_XX mantissas.
bfp_s32_t ic_state_t::sigma_XX_bfp[IC_X_CHANNELS] |
BFP array pointing to the EMA filtered X input energy.
float_s32_t ic_state_t::sum_X_energy[IC_X_CHANNELS] |
X energy sum used for maintaining the X FIFO.
bfp_complex_s32_t ic_state_t::T_bfp[IC_X_CHANNELS] |
BFP array pointing to the frequency domain T used for adapting the filter coefficients (H). Note there is no associated storage because we re-use the x input array as a memory optimisation.
int32_t ic_state_t::x[IC_X_CHANNELS][IC_FRAME_LENGTH+FFT_PADDING] |
Storage for x and X mantissas. Note FFT is done in-place so the x storage is reused for X.
bfp_s32_t ic_state_t::x_bfp[IC_X_CHANNELS] |
BFP array pointing to the time domain x input signal.
bfp_complex_s32_t ic_state_t::X_bfp[IC_X_CHANNELS] |
BFP array pointing to the frequency domain X input signal.
int32_t ic_state_t::X_energy[IC_X_CHANNELS][IC_FD_FRAME_LENGTH] |
Storage for X_energy mantissas.
bfp_s32_t ic_state_t::X_energy_bfp[IC_X_CHANNELS] |
BFP array pointing to the X energies.
unsigned ic_state_t::X_energy_recalc_bin |
Index state used for calculating energy across all X bins.
complex_s32_t ic_state_t::X_fifo[IC_X_CHANNELS][IC_FILTER_PHASES][IC_FD_FRAME_LENGTH] |
Storage for X_fifo mantissas.
bfp_complex_s32_t ic_state_t::X_fifo_1d_bfp[IC_X_CHANNELS *IC_FILTER_PHASES] |
1D alias of the frequency domain X input history used for calculating normalisation.
bfp_complex_s32_t ic_state_t::X_fifo_bfp[IC_X_CHANNELS][IC_FILTER_PHASES] |
BFP array pointing to the frequency domain X input history used for calculating normalisation.
int32_t ic_state_t::x_prev_samples[IC_X_CHANNELS][IC_FRAME_LENGTH - IC_FRAME_ADVANCE] |
Storage for previous x mantissas.
int32_t ic_state_t::y[IC_Y_CHANNELS][IC_FRAME_LENGTH+FFT_PADDING] |
Storage for y and Y mantissas. Note FFT is done in-place so the y storage is reused for Y.
bfp_s32_t ic_state_t::y_bfp[IC_Y_CHANNELS] |
BFP array pointing to the time domain y input signal.
bfp_complex_s32_t ic_state_t::Y_bfp[IC_Y_CHANNELS] |
BFP array pointing to the frequency domain Y input signal.
uint32_t ic_state_t::y_delay_idx[IC_Y_CHANNELS] |
Index state used for keeping track of y delay FIFO.
complex_s32_t ic_state_t::Y_hat[IC_Y_CHANNELS][IC_FD_FRAME_LENGTH] |
Storage for Y_hat mantissas.
bfp_complex_s32_t ic_state_t::Y_hat_bfp[IC_Y_CHANNELS] |
BFP array pointing to the estimated frequency domain Y signal.
int32_t ic_state_t::y_input_delay[IC_Y_CHANNELS][IC_Y_CHANNEL_DELAY_SAMPS] |
FIFO for delaying y channel (w.r.t x) to enable adaptive filter to be effective.
int32_t ic_state_t::y_prev_samples[IC_Y_CHANNELS][IC_FRAME_LENGTH - IC_FRAME_ADVANCE] |
Storage for previous y mantissas.