Company
Applications
Products
Services
News 
Applied Signal Processing C55x
Library
ReUse 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 –
ReUse Objects

Object Class 
Description 


Filtering: 

CButter 
Butterworth Filters, any order 
CButter2ord

Butterworth Filters, 2^{nd} 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 CCallable 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: 

butterDFI^{C} 
Generates Butterworth low pass filter coefficients
in cascaded 2^{nd} 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 2^{nd}
order sections (Direct Form I) 
iir2ordDFI 
IIR filtering routine – 2^{nd} 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(kdelay_val) 
delayC55 
Updates a circular buffer and returns x(kdelay_val)
(C55x Optional buffer architecture) 


Signal Sources: 

gal 
Generates a scaled element of a galois sequence
with zero mean 

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 2^{nd} order sections 
v_iir2nd_s_contig 
Filter N signals by a single filter, composed of
cascaded IIR 2^{nd} 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 ReUse 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
& ReUse Objects

Component 
Description 


Filtering: 

CNotch2ord 
2^{nd} 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 CCallable
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 
2^{nd} 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_GetMappedParameter^{C} 
Lookup Table Implementation – maps a parameter Y to
value X 

