home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power-Programmierung
/
CD1.mdf
/
magazine
/
drdobbs
/
1991
/
05
/
bittman
/
fir.gen
< prev
next >
Wrap
Text File
|
1991-02-10
|
2KB
|
59 lines
/********* Generated by DspHq from BittWare Research Systems **********/
/********** To create executable: d3make -Q -m6 <filename>.s **********/
PARMS
.global fircoef, isamp, adc1, static1, numtaps
.global begin, input, _fir, output
#include <dspregs.h>
FIRLENGTH
begin:
r5 = 0x0000 /* SETUP CONTROL REGISTERS */
pcw = r5
ioc=0x30CC0 /* SET-UP A/D-D/A INTERFACE */
r5e = isamp /* r5 POINTS TO INPUT (FLOATING POINT) */
r8e=adc1 /* ADDRESS TO STORE INPUT DATA */
r7e=numtaps /* NUMBER OF FILTER TAPS */
r1 = *r7 /* r1 = LENGTH OF THE FIR FILTER */
r3e = static1 /* r3 POINTS TO STATIC VARIABLES */
r1 = r1 - 3
input:
if (ibe) goto input /* WAIT FOR INPUT SAMPLE */
r2e = fircoef /* r2 POINTS TO COEFFICIENTS */
*r8=ibufe /* STORE INPUT DATA */
_fir:
r4e = static1 /* r4 POINTS TO STATIC VARIABLES */
*r5=a0=float(*r8) /* CONVERT INPUT SAMPLE TO FLOAT */
a1 = *r4++ * *r2++ /* CALCULATE FILTER */
do 0, r1
a1 = a1 + (*r3++ = *r4++) * *r2++
a0 = a1 + (*r3 = *r5) * *r2
*r8=a1=int(a0) /* STORE FILTER OUTPUT */
output:
if (obf) goto output /* WAIT TO OUTPUT RESULT */
r3e = static1 /* r3 POINTS TO STATIC VARIABLE */
goto input /* REPEAT FOREVER */
obufe = *r8 /* OUTPUT SAMPLE */
adc1: int 0 /* TEMP DATA STORAGE */
adc2: int 0 /* TEMP DATA STORAGE */
numtaps: int FIRLENGTH
.align 4 /* ALIGN FOR FLOATS */
isamp: float 0.0
/* FILTER COEFFICIENTS, IN REVERSE ORDER */
fircoef:
COEFF
.rsect ".ram1" /* LESS WAITS IF STATICS IN DIFFERENT RAM BANK */
static1:
(FIRLENGTH-1)*float 0.0 /* STATIC VARIABLES */