Add real ADSP-2191 assembly examples + open21xx assembler test
This commit is contained in:
115
examples/adsp-2191_iir/ADSP-2191_IIR.txt
Normal file
115
examples/adsp-2191_iir/ADSP-2191_IIR.txt
Normal file
@@ -0,0 +1,115 @@
|
||||
****************************************************************************
|
||||
|
||||
IIR.asm Infinite impulse response filter (IIR)
|
||||
|
||||
Analog Devices, Inc.
|
||||
DSP Division
|
||||
Three Technology Way
|
||||
P.O. Box 9106
|
||||
Norwood, MA 02062
|
||||
|
||||
23-JUNE-2001 BJM
|
||||
|
||||
This directory contains an example ADSP-2191, single-core Infinite
|
||||
Impulse Response (IIR) filter.
|
||||
The IIR code uses coefficients, in an ordered array and applies them to
|
||||
the filter. A detailed discussion of the IIR algorithm can be found
|
||||
in the source header comments of "IIR.ASM".
|
||||
|
||||
Files contained in this directory:
|
||||
|
||||
iir.asm ADSP-2191 source for an example IIR filter
|
||||
iir_test.asm ADSP-2191 source to call iir.asm
|
||||
adsp-2191.ldf Linker description file for the IIR example
|
||||
iir.dpj The VDSP project file for the IIR example.
|
||||
inreal_256.dat Input data for IIR example in 1.15 format.
|
||||
coefs_hex.dat Coefficients for IIR example in 1.15 format.
|
||||
_________________________________________________________________
|
||||
|
||||
CONTENTS
|
||||
|
||||
I. FUNCTION/ALGORITHM DESCRIPTION
|
||||
II. IMPLEMENTATION DESCRIPTION
|
||||
III. DESCRIPTION OF INPUT DATA
|
||||
|
||||
I. FUNCTION/ALGORITHM DESCRIPTION
|
||||
|
||||
The IIR filter code executes a canonical form (also called direct form II)
|
||||
realization structure. The equation of the canonical form is
|
||||
|
||||
w(n)=x(n) + b1*w(n-1) + b2*w(n-2)
|
||||
y(n)=w(n) + a1*w(n-1) + a2*w(n-2)
|
||||
|
||||
The input sample is x(n) and the output is y(n). The term w(n) is the
|
||||
intermediate value; w(n-1) is the previous value and w(n-2) the one before
|
||||
that. The variables a and b are the coefficients for the filter.
|
||||
|
||||
This example of canonical equation uses a variant that limits the summation
|
||||
in the canonical form to two. This type of IIR is called a biquad and is a
|
||||
second order filter. Higher order filters can be achieved by cascading several
|
||||
sections of biquads together.
|
||||
|
||||
|
||||
II. IMPLEMENTATION DESCRIPTION
|
||||
|
||||
The assembly language module IIR_TEST.ASM initializes the input and
|
||||
coefficient buffers and then calls IIR.ASM.
|
||||
|
||||
The first buffer declared, INBUF, is N_samp sample locations long.
|
||||
|
||||
The next buffer declared, OUTBUF, is also N_samp samples long, and stores the
|
||||
output of the filter.
|
||||
|
||||
DLINE is the third buffer declared. This buffer holds the delay line for each
|
||||
biquad. That is w(n-1) and w(n-2) for each biquad section of the filter. Since
|
||||
there are two past intermediate vales for each stage of the biquad, the length of
|
||||
this buffer is twice as long as the stages.
|
||||
|
||||
The coefficient buffer, COEFS, contains the IIR filter coefficients. The
|
||||
coefficients are typically generated by a filter
|
||||
design software package.
|
||||
|
||||
The linker descriptive file is ADSP-2191.LDF, which describes the hardware in
|
||||
terms of memory spaces and peripherals.
|
||||
|
||||
Because there is no data dependency between DSP cores, it is possible
|
||||
to do perform an IIR in DSP core 1, while also performing an IIR in DSP core 2
|
||||
on separate input data, using different coefficients.
|
||||
|
||||
|
||||
III. DESCRIPTION OF INPUT DATA
|
||||
|
||||
1. INPUT SAMPLES:
|
||||
-----------------
|
||||
This IIR routine expects input data which conforms to the following criteria:
|
||||
|
||||
Generate input data such that an array of input fixed point values are
|
||||
in 1.15 format, with the data being arranged in the following order:
|
||||
|
||||
INPUT DATA
|
||||
|
||||
indata(0)
|
||||
indata(1)
|
||||
indata(2)
|
||||
indata(3)
|
||||
etc...
|
||||
|
||||
|
||||
2. COEFFICIENT DATA:
|
||||
-----------------------
|
||||
This IIR routine expects [Biquad_secs*4] fixed point values to be used as coefficients.
|
||||
|
||||
|
||||
COEFFICIENT DATA
|
||||
|
||||
A2(0)
|
||||
A1(0)
|
||||
B2(0)
|
||||
B1(0)
|
||||
...
|
||||
...
|
||||
...
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user