Libraries and Algorithms

   
Company

Applications

Products

Services

News

Applied Signal Processing C55x Library

Re-Use Objects

The Applied Signal Processing (ASP) C55x Library provides a few “object oriented” styled DSP objects or “classes”.  These objects are implemented in a C++ style in which the object and all required buffer space is defined and created dynamically. They provide a more natural abstract interface to common objects found in DSP systems. The ASP C55x library defines the interface to these objects, their attributes, and their related methods.

Applied Signal Processing C55x Library – Re-Use Objects

Object Class

Description

 

 

Filtering:

 

CButter

Butterworth Filters, any order

CButter2ord         

Butterworth Filters, 2nd order

CButterVs             

Vectorized Butterworth filters.

CLMS                    

LMS adaptive filter.

 

 

Audio Processing:

 

CEGate  

Energy Gate. Voice Activity Detection.

COutGrd               

Output Guard. Monitor signal level and shut off if too large.

 

DSP Support Functions

The Core of the ASP C55x library is a set of C-Callable hand written assembly functions.  The functions are listed in the following tables. Note: <name>C  denotes the function is written in C.

Applied Signal Processing C55x Library Functions


Function


Description

Filtering:

 

butterDFIC

Generates Butterworth low pass filter coefficients in cascaded 2nd order sections

delflt

FIR filter with input signal delay

filter

FIR filtering routine

filterRShift1

FIR filter with Right Shift 1of final output.

FiltUpdate

FIR filter and with automatic circular buffer update.

filter_gain

FIR filter with gain applied to final output.

iir2ndDFI

IIR filtering routine using cascaded 2nd order sections (Direct Form I)

iir2ordDFI

IIR filtering routine – 2nd order.

update

Performs circular buffer update

circ_clear

Clears circular buffer

circ_clearC55

Clears circular buffer (C55x Optional buffer architecture)

delay

Updates a circular buffer and returns x(k-delay_val)

delayC55

Updates a circular buffer and returns x(k-delay_val) (C55x Optional buffer architecture)

 

 

Signal Sources:

 

gal

Generates a scaled element of a galois sequence with zero mean

tone

Generates a sinusoid with an adjustable level, frequency and phase

 

 

Vector Support:

 

v_add

Adds two vectors

v_clear

Clears a vector

v_copy

Copies a vector

v_fill

Fills a vector with a scalar value

v_sub

Subtracts two vectors

lDot_n1

q31*q15 Dot product

 

 

v_update

Updates a 1xN vector of circular buffers with a 1xN vector of input values

v_dc_block

AC couple N signals

v_iir2nd_s                            

Filter N signals by a single filter, composed of cascaded IIR 2nd order sections

v_iir2nd_s_contig

Filter N signals by a single filter, composed of cascaded IIR 2nd order sections using contiguous X and Y buffer Space

CButterVs_Filter

Filter N signals by a single Butterworth filter descriptor.

 

 

Sliding DCT Support:

 

dcts_xget Updates a circular buffer and returns M delayed elements from the buffer

dcts

Computes N discrete cosine transform (DCT) IIR filter outputs

CDCT_CalcOddEvenAsm Calculate the x_odd and x_even terms for the dct difference equation

Freq Sampling Filter:

 

CFSF2_FilterCalc

 

Applied Signal Processing C55x Library Functions (continued)


Function


Description

 

 

LMS Adapt Support:

 

CLMS_LMSFiltAdaptUpdate

LMS filter output calculation and update on a buffer of filter coefficients

CLMS_LMSDelFiltAdaptUpdate

LMS filter output calculation update on a buffer of filter coefficients with input buffer delay

CLMS_NLMSDelFiltAdaptUpdate

Normalized LMS filter output calculation update on a buffer of filter coefficients with input buffer delay

CLMS_NLMSFiltAdaptUpdate

Normalized LMS filter output calculation and update on a buffer of filter coefficients

 

 

Expanded Instrinics:

 

_bit

Test a bit

l_EXP

Get the normalization shift of a long integer.

l_NormShift

Arithmetic shift of long argument via the NORM instruction

l_NormLongPair

Normalize a pair of long integers

 

 

Math Support:

 

QZ_QMULTOVUN(x,y,QZ,QX,QY) 

Generalize Mixed Q operand multiplication MACRO with  OVERFLOW and UNDERFLOW protection.  Will generate call to one of several possible ASM Q math functions

qz_QMultOVPosShiftGEQ8

QZ_QMULTOVUN support function

qz_QMultOVPosShiftLT8

QZ_QMULTOVUN support function

qz_QMultNegShiftUN

QZ_QMULTOVUN support function

qz_QMultOVPosShift

QZ_QMULTOVUN support function

qz_QMultOVUN

Generalize Mixed Q operand multiplication with  OVERFLOW and UNDERFLOW protection.

qz_QMultOV

Generalize Mixed Q operand multiplication with OVERFLOW protection

 

 

qx_NormDivide

Normalized divide of two 32 bit numbers, returned as desired Q type.

qx_NormDivideNoRnd

Normalized divide of two 32 bit numbers without rounding, returned as desired Q type

long_q16_DivideQx

Returns the long result of dividing two 16 bit numbers

qx_Divide

Divide two number and return as desired Q type

int_DivideRnd

Integer division with rounding.

int_Divide

Integer division without rounding.

q15_InverseInt

Invert an Integer

qx_InverseQ15

Invert a q15 number, return as desired Q type.

 

 

q15_sqrt

Take square root of a Q15 number

sin_taylor

Taylor Series Expansion estimate of sin(x)

q15_pow_q4exp

Raises x to the fractional power y, z = q15_x^(q4_y)

 

Other Re-Use Objects & Components Available

ASP has developed a variety of other software components for a variety of C55x applications.  These modules and objects are currently not part of the ASP C55x library, but could customized and/or generalized for use in any DSP system.  Components that follow the object oriented implementation style are identified with the C<name> identifier. 

Applied Signal Processing Software Components &  Re-Use Objects


Component


Description

 

 

 Filtering:

 

CNotch2ord

2nd Order Notch Filter

 

 

Audio Processing:

 

CFSF                     

Frequency Sampling Filter Bank. Splits signal into N frequency bands

CDCT    

Sliding Discrete Cosine Transform Object. Splits signal into N frequency bands

CToneSeq            

Tone Sequence Object – Defines and plays a given tone sequence of various frequencies and durations.

FBDetSuppress

Feedback Detection and Suppression

MSwitch

Microphone Switch – detects voice activity and selects a channel from an array of channels.

NRA      

Noise Reduction Algorithm – Cleans up speech signals

Spd_Comp

Generalized Speed Compensated Parameter (Volume, Equalization, etc)

Compressor

Audio Compressor with Downward Expansion, Linear, Compression and Limit Regions

 

 

Fault Reporting:

 

CDiagMsg

Diagnostic Message Objects and  Handling

CFault

Fault Reporting and Logging Object

CEventRecord

Diagnostic Event Object

 

 

General OS:

 

CQue

FIFO Queue

Mem      

Pseudo Dynamic memory allocation with multiple memory heaps

 

 

Data Acquisition:

 

CTraceChannel

Data Acquisition Channel – Playback/record any variable to/from a large memory buffer.

CTraceBuffer

Trace Buffer Object – synchronously playback/record several channels to/from a  large memory buffer.

 

 

Misc:

 

ParameterSector

Reads/Writes system parameters from/to a flash device.

PRB

Software Probes – probe any variable and optionally send its value to an Auxiliary Analog Output Channel.

 

Other DSP Support Functions Available

Applied Signal Processing has developed a variety of other C-Callable assembly functions for a variety of C55x applications.  These functions are currently not part of the ASP C55x library, but can be added to a custom built C55x library if so desired.

Applied Signal Processing Other ASM Functions


Function


Description

 

 

Filter Support:

 

v_dc_block32

DC Blocking filter with 32 bit recursive data path.  Good for extremely small Fc/Fs ratios.

q31_iir2ordDFI

2nd order IIR filter, returns a 32 bit result.

 

 

Vector Support:

 

lv_mag_avg_shft

Calculates the 32 bit average magnitude of  N time domain signals on a sample by sample basis using a forgeting factor.

llv_mag_avg

Calculates the 32 bit average magnitude of  N 32 bit time domain signals on a sample by sample basis using a forgeting factor.

ll_maxvec

Behaves like the matlab [maxval,Index]=max( ) function.  It takes a vector of longs as inputs and returns the maxval and maxindex.

 

 

Math Support:

 

q31 q15q31mult(q31 x, q15 y)

q15 x q31 multiply as q31

q31 q15q31mult1(q31* x, q15* y)

q15 x q31 multiply as q31

q31 q15q31mult2(q31* x, q15 y)

q15 x q31 multiply as q31

 

 

Misc:

 

gal31

31 bit galois sequence random noise generator.

CLookup_GetMappedParameterC

Lookup Table Implementation – maps a parameter Y to value X

 

 
 

Home    Contact Us   

Copyright 2005, Applied Signal Processing, Inc.