Add real ADSP-2191 assembly examples + open21xx assembler test
This commit is contained in:
64
examples/adsp-2191_iir/iir_test.asm
Normal file
64
examples/adsp-2191_iir/iir_test.asm
Normal file
@@ -0,0 +1,64 @@
|
||||
/************************************************************************
|
||||
File Name: IIR_test.asm
|
||||
|
||||
Date Modified: 6/21/01 BJM
|
||||
|
||||
Description: ADSP-2192 single-core program to call
|
||||
IIR.asm. IIR.asm implements a Cascaded
|
||||
Biquad IIR filter. All data values and
|
||||
coefficients are assumed to be in 1.15
|
||||
format.
|
||||
|
||||
************************************************************************/
|
||||
|
||||
#define N_samp 256
|
||||
#define Biquad_secs 2
|
||||
#define Coef_Length 4*Biquad_secs + 1
|
||||
|
||||
.EXTERN IIR, Zero_Dline;
|
||||
.GLOBAL Dline, Coefs, Outbuf;
|
||||
|
||||
/* A2 A1 B2 B1 A2 A1 B2 B1 */
|
||||
/* A21, A11, B21, B11, A22, A12, B22, B12*/
|
||||
.section/pm data2;
|
||||
.VAR Coefs[4 * Biquad_secs] = "coef_hex.dat";
|
||||
|
||||
.section/data data1;
|
||||
.VAR Inbuf[N_samp] = "inreal_256.dat";
|
||||
.VAR Dline[2 * Biquad_secs];
|
||||
.VAR Outbuf[N_samp]; /* Filtered sample buffer */
|
||||
|
||||
/* PM interrupt vector code */
|
||||
.section/pm IVreset;
|
||||
JUMP start; NOP; NOP; NOP; /* Interupt vector table */
|
||||
|
||||
/* Program memory code */
|
||||
.section/pm program;
|
||||
start:
|
||||
DMPG2 = page(Coefs);
|
||||
I0=Dline; /* Initialize delay line pointer */
|
||||
I1 = Inbuf; /* Initialize input data pointer */
|
||||
I2 = Outbuf; /* Initialize output data pointer */
|
||||
I4 = Coefs;
|
||||
M0=1;
|
||||
M3 = 1;
|
||||
M4 = 1;
|
||||
AX0 = I0;
|
||||
reg(B0) = AX0; /* Initialize pointer to delay line */
|
||||
AX0 = I4;
|
||||
reg(B4) = AX0; /* Initialize pointer to delay line */
|
||||
|
||||
CALL Zero_Dline (db); /* Call zero delay function */
|
||||
L0 = length(Dline); /* Initialize delay line circular buffer */
|
||||
L1 = 0; /* Initialize for modulo addressing */
|
||||
CALL IIR (db); /* Call IIR filter function */
|
||||
M0 = 0;
|
||||
L4 = Coef_Length; /* Initialize for modulo addressing */
|
||||
|
||||
looping: JUMP looping; /* Loop upon itself */
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user