65 lines
2.1 KiB
NASM
65 lines
2.1 KiB
NASM
/************************************************************************
|
|
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 */
|
|
|
|
|
|
|
|
|
|
|
|
|