XCORE SDK
XCORE Software Development Kit
Public Attributes | List of all members
ic_state_t Struct Reference

IC state structure. More...

#include <ic_state.h>

Public Attributes

bfp_s32_t y_bfp [IC_Y_CHANNELS]
 
bfp_complex_s32_t Y_bfp [IC_Y_CHANNELS]
 
int32_t y [IC_Y_CHANNELS][IC_FRAME_LENGTH+FFT_PADDING]
 
bfp_s32_t x_bfp [IC_X_CHANNELS]
 
bfp_complex_s32_t X_bfp [IC_X_CHANNELS]
 
int32_t x [IC_X_CHANNELS][IC_FRAME_LENGTH+FFT_PADDING]
 
bfp_s32_t prev_y_bfp [IC_Y_CHANNELS]
 
int32_t y_prev_samples [IC_Y_CHANNELS][IC_FRAME_LENGTH - IC_FRAME_ADVANCE]
 
bfp_s32_t prev_x_bfp [IC_X_CHANNELS]
 
int32_t x_prev_samples [IC_X_CHANNELS][IC_FRAME_LENGTH - IC_FRAME_ADVANCE]
 
bfp_complex_s32_t Y_hat_bfp [IC_Y_CHANNELS]
 
complex_s32_t Y_hat [IC_Y_CHANNELS][IC_FD_FRAME_LENGTH]
 
bfp_complex_s32_t Error_bfp [IC_Y_CHANNELS]
 
bfp_s32_t error_bfp [IC_Y_CHANNELS]
 
complex_s32_t Error [IC_Y_CHANNELS][IC_FD_FRAME_LENGTH]
 
bfp_complex_s32_t H_hat_bfp [IC_Y_CHANNELS][IC_X_CHANNELS *IC_FILTER_PHASES]
 
complex_s32_t H_hat [IC_Y_CHANNELS][IC_FILTER_PHASES *IC_X_CHANNELS][IC_FD_FRAME_LENGTH]
 
bfp_complex_s32_t X_fifo_bfp [IC_X_CHANNELS][IC_FILTER_PHASES]
 
bfp_complex_s32_t X_fifo_1d_bfp [IC_X_CHANNELS *IC_FILTER_PHASES]
 
complex_s32_t X_fifo [IC_X_CHANNELS][IC_FILTER_PHASES][IC_FD_FRAME_LENGTH]
 
bfp_complex_s32_t T_bfp [IC_X_CHANNELS]
 
bfp_s32_t inv_X_energy_bfp [IC_X_CHANNELS]
 
int32_t inv_X_energy [IC_X_CHANNELS][IC_FD_FRAME_LENGTH]
 
bfp_s32_t X_energy_bfp [IC_X_CHANNELS]
 
int32_t X_energy [IC_X_CHANNELS][IC_FD_FRAME_LENGTH]
 
unsigned X_energy_recalc_bin
 
bfp_s32_t overlap_bfp [IC_Y_CHANNELS]
 
int32_t overlap [IC_Y_CHANNELS][IC_FRAME_OVERLAP]
 
int32_t y_input_delay [IC_Y_CHANNELS][IC_Y_CHANNEL_DELAY_SAMPS]
 
uint32_t y_delay_idx [IC_Y_CHANNELS]
 
float_s32_t mu [IC_Y_CHANNELS][IC_X_CHANNELS]
 
float_s32_t error_ema_energy [IC_Y_CHANNELS]
 
float_s32_t max_X_energy [IC_X_CHANNELS]
 
bfp_s32_t sigma_XX_bfp [IC_X_CHANNELS]
 
int32_t sigma_XX [IC_X_CHANNELS][IC_FD_FRAME_LENGTH]
 
float_s32_t sum_X_energy [IC_X_CHANNELS]
 
ic_config_params_t config_params
 
ic_adaption_controller_state_t ic_adaption_controller_state
 

Detailed Description

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.

Member Data Documentation

◆ config_params

ic_config_params_t ic_state_t::config_params

Configuration parameters for the IC.

◆ Error

Storage for Error and error mantissas. Note IFFT is done in-place so the Error storage is reused for error.

◆ Error_bfp

bfp_complex_s32_t ic_state_t::Error_bfp[IC_Y_CHANNELS]

BFP array pointing to the frequency domain Error output.

◆ error_bfp

bfp_s32_t ic_state_t::error_bfp[IC_Y_CHANNELS]

BFP array pointing to the time domain Error output.

◆ error_ema_energy

float_s32_t ic_state_t::error_ema_energy[IC_Y_CHANNELS]

Filtered error energy.

◆ H_hat

Storage for H_hat mantissas.

◆ H_hat_bfp

BFP array pointing to the frequency domain estimate of transfer function.

◆ ic_adaption_controller_state

ic_adaption_controller_state_t ic_state_t::ic_adaption_controller_state

State and configuration parameters for the IC adaption controller.

◆ inv_X_energy

int32_t ic_state_t::inv_X_energy[IC_X_CHANNELS][IC_FD_FRAME_LENGTH]

Storage for inv_X_energy mantissas.

◆ inv_X_energy_bfp

bfp_s32_t ic_state_t::inv_X_energy_bfp[IC_X_CHANNELS]

BFP array pointing to the inverse X energies used for normalisation.

◆ max_X_energy

float_s32_t ic_state_t::max_X_energy[IC_X_CHANNELS]

Used to keep track of peak X energy.

◆ mu

Mu value used for controlling adaption rate.

◆ overlap

int32_t ic_state_t::overlap[IC_Y_CHANNELS][IC_FRAME_OVERLAP]

Storage for overlap mantissas.

◆ overlap_bfp

bfp_s32_t ic_state_t::overlap_bfp[IC_Y_CHANNELS]

BFP array pointing to the overlap array used for windowing and overlap operations.

◆ prev_x_bfp

bfp_s32_t ic_state_t::prev_x_bfp[IC_X_CHANNELS]

BFP array pointing to previous x samples which are used for framing.

◆ prev_y_bfp

bfp_s32_t ic_state_t::prev_y_bfp[IC_Y_CHANNELS]

BFP array pointing to previous y samples which are used for framing.

◆ sigma_XX

int32_t ic_state_t::sigma_XX[IC_X_CHANNELS][IC_FD_FRAME_LENGTH]

Storage for sigma_XX mantissas.

◆ sigma_XX_bfp

bfp_s32_t ic_state_t::sigma_XX_bfp[IC_X_CHANNELS]

BFP array pointing to the EMA filtered X input energy.

◆ sum_X_energy

float_s32_t ic_state_t::sum_X_energy[IC_X_CHANNELS]

X energy sum used for maintaining the X FIFO.

◆ T_bfp

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.

◆ x

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.

◆ x_bfp

bfp_s32_t ic_state_t::x_bfp[IC_X_CHANNELS]

BFP array pointing to the time domain x input signal.

◆ X_bfp

bfp_complex_s32_t ic_state_t::X_bfp[IC_X_CHANNELS]

BFP array pointing to the frequency domain X input signal.

◆ X_energy

int32_t ic_state_t::X_energy[IC_X_CHANNELS][IC_FD_FRAME_LENGTH]

Storage for X_energy mantissas.

◆ X_energy_bfp

bfp_s32_t ic_state_t::X_energy_bfp[IC_X_CHANNELS]

BFP array pointing to the X energies.

◆ X_energy_recalc_bin

unsigned ic_state_t::X_energy_recalc_bin

Index state used for calculating energy across all X bins.

◆ X_fifo

Storage for X_fifo mantissas.

◆ X_fifo_1d_bfp

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.

◆ X_fifo_bfp

BFP array pointing to the frequency domain X input history used for calculating normalisation.

◆ x_prev_samples

int32_t ic_state_t::x_prev_samples[IC_X_CHANNELS][IC_FRAME_LENGTH - IC_FRAME_ADVANCE]

Storage for previous x mantissas.

◆ y

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.

◆ y_bfp

bfp_s32_t ic_state_t::y_bfp[IC_Y_CHANNELS]

BFP array pointing to the time domain y input signal.

◆ Y_bfp

bfp_complex_s32_t ic_state_t::Y_bfp[IC_Y_CHANNELS]

BFP array pointing to the frequency domain Y input signal.

◆ y_delay_idx

uint32_t ic_state_t::y_delay_idx[IC_Y_CHANNELS]

Index state used for keeping track of y delay FIFO.

◆ Y_hat

Storage for Y_hat mantissas.

◆ Y_hat_bfp

bfp_complex_s32_t ic_state_t::Y_hat_bfp[IC_Y_CHANNELS]

BFP array pointing to the estimated frequency domain Y signal.

◆ y_input_delay

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.

◆ y_prev_samples

int32_t ic_state_t::y_prev_samples[IC_Y_CHANNELS][IC_FRAME_LENGTH - IC_FRAME_ADVANCE]

Storage for previous y mantissas.


The documentation for this struct was generated from the following file: