Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Scroll Documents: Update page title prefix

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

...