Overview
Efficient filterbank based FIR filter
Discussion
DSP Concepts Proprietary IP.
...
On the processors of 2159x where 2 FIR accelerators are available with dual SHARC+ cores, two FIR accelerators are used which further reduces the processing load of multiple channels with 4 channels can be processed in parallel with 1 channel processing in the core. i.e. the FIRA channels=floor((numChannels/5)*2). Please note that this module is not multi-core safe i.e. same module can not be used in Sharc1 and Sharc2 at the same time.
Type Definition
Code Block |
---|
typedef struct _ModuleFilterbankFIRNChan { ModuleInstanceDescriptor instance; // Common Audio Weaver module instance structure INT32 numBlocks; // Length of each complex FIR filter INT32 numTaps; // Length of time domain coefficients INT32 disableAccelerators; // User options for future use INT32 stateIndex; // Write index in to current complex state variables FLOAT32* coeffs; // Time domain filter coefficients FLOAT32* modInCoeffs; // Forward modulation coefficient array FLOAT32* modOutCoeffs; // Inverse modulation coefficient array void * fft_hardware_specific_struct_pointer; // This may point to a struct that varies based on the target platform void * fft_size_aligned_io_buffer_pointer; // This points to a buffer which is aligned by fft size void * fft_twiddle_buffer_pointer; // This points to twiddle buffer void * ifft_hardware_specific_struct_pointer; // This may point to a struct that varies based on the target platform void * ifft_size_aligned_io_buffer_pointer; // This points to a buffer which is aligned by fft size void * ifft_twiddle_buffer_pointer; // This points to twiddle buffer float ** filterBankState; // Array of pointers to filter bank states float ** filterBankCoeffs; // Array of pointers to filter bank coeffs void * hardware_specific_struct_pointer; // This is the internal TCB array used for ADI FIR accelerator } ModuleFilterbankFIRNChanClass; |
Variables
Properties
Name | Type | Usage | isHidden | Default value | Range | Units |
numBlocks | int | const | 1 | 5 | Unrestricted | |
numTaps | int | const | 1 | 1024 | Unrestricted | |
disableAccelerators | int | const | 1 | 0 | Unrestricted | |
stateIndex | int | state | 1 | 0 | Unrestricted | |
coeffs | float* | parameter | 0 | [1024 x 1] | Unrestricted | |
modInCoeffs | float* | state | 1 | [256 x 1] | Unrestricted | |
modOutCoeffs | float* | state | 1 | [256 x 1] | Unrestricted | |
fft_hardware_specific_struct_pointer | void * | state | 1 | Unrestricted | ||
fft_size_aligned_io_buffer_pointer | void * | state | 1 | Unrestricted | ||
fft_twiddle_buffer_pointer | void * | state | 1 | Unrestricted | ||
ifft_hardware_specific_struct_pointer | void * | state | 1 | Unrestricted | ||
ifft_size_aligned_io_buffer_pointer | void * | state | 1 | Unrestricted | ||
ifft_twiddle_buffer_pointer | void * | state | 1 | Unrestricted | ||
filterBankState | float ** | state | 1 | Unrestricted | ||
filterBankCoeffs | float ** | state | 1 | Unrestricted | ||
hardware_specific_struct_pointer | void * | state | 1 | Unrestricted |
Pins
Input Pins
Name: in
Description: Time domain input
...
Sample rate range: Unrestricted
Complex support: Real
Output Pins
Name: out
Description: Time domain output
Data type: float
Scratch Pins
Channel count: 1
Block size: 514
Sample rate: 48000
MATLAB Usage
File Name: filterbank_firnchan_module.m
...