Article View: comp.dsp
Article #779Re: FIR Chip Info Needed
From: John B. Milton
Date: Fri, 25 May 1990 14:39
Date: Fri, 25 May 1990 14:39
70 lines
3638 bytes
3638 bytes
In article <56424@bbn.BBN.COM> moyarzun@BBN.COM (Miguel Oyarzun) writes:
>Greetings DSPeople,
>
>I'm trying to pick a FIR filter chip to implement a FIR with the following
>rough specs:
>
> - 12 KHz sampling rate
> - 127 tap FIR
> - 12 or 16 bits of input
> - 12, 16 or more bits of coefficient
> - 16 bits of output
>
>I have looked at the Motorola DSP56200, but it seems like an overkill for
>my application. I would prefer a device that requires minimal 'glue'.
>If anyone out there in DSPland has recently looked at FIR chips, any info
>you could send my way would be greatly appreciated.
How about the Analog Devices ADSP210[15]. They have not yet been released, but
will prices of about $55 for the 2101 and, get this, $9.90 for the 2105. Both
parts are code and pin-for-pin compatible. The 2105 has half the on-chip memory
and 1 instead of two serial ports. With a 10MHz clock, they're 10 MIPS.
Below is the source to an FIR example on the 2101 simulator demo disk.
John
---
{******************************************************************************}
{This is the ADSP-2100 assembly subroutine that executes the core of an FIR }
{filter. This routine is called from a main program (MAIN.DSP) upon an }
{interrupt from the input A/D converter. This routine takes its input from an }
{A/D and send its output to a D/A converter. }
{******************************************************************************}
.module/ram/boot=0 FIR_ROUTINE; {Relocatable FIR interrupt module}
{The following are some variable, I/O port and subroutine declarations}
.include <const.h>; {Include constant declaration file}
.port AD_SAMPLE; {Declare memory mapped A/D}
.port DA_DATA; {Declare memory mapped D/A}
.entry FIR; {Entry point to the FIR routine}
.external DATA_BUFFER,COEFF,INPUT_DATA,OUTPUT_DATA,COEFP;
{The following is the main body of the program}
FIR: AY0=TAPS;
AR=AY0-1;
CNTR=AR; {Set counter to the # of taps minus 1}
SI=DM(AD_SAMPLE); {Read new sample from A/D}
DM(I1,M1)=SI; {Write sample to memory for}
{later display purposes}
DM(I0,M0)=SI; {Write sample to circ. buffer}
{******The following section executes the convolution for the FIR filter******}
MR=0,MX0=DM(I0,M0),MY0=PM(I4,M4);
DO TAPLOOP UNTIL CE;
TAPLOOP: MR=MR+MX0*MY0 (ss), MX0=DM(I0,M0),MY0=PM(I4,M4);
MR=MR+MX0*MY0 (RND); {Filtered output sample}
IF MV SAT MR; {If overflow occurred, saturate}
{the output}
DM(DA_DATA)=MR1; {Write result to D/A}
DM(I2,M2)=MR1; {Write result to memory for}
{later display purposes}
RTI;
.endmod;
--
John Bly Milton IV, jbm@uncle.UUCP, n8emr!uncle!jbm@osu-cis.cis.ohio-state.edu
(614) h:252-8544, w:469-1990; N8KSN, AMPR: 44.70.0.52; Don't FLAME, inform!
Technical Details
Message-ID:
<1990May25.143948.25398@celebr.uucp>Path:
arc1-ca.pugleaf.net!utzoo!utgpu!news-server.csri.toronto.edu!rutgers!tut.cis.ohio-state.edu!n8emr!uncle!celebr!jbmReferences:
<56424@bbn.BBN.COM>Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!utgpu!news-server.csri.toronto.edu!rutgers!tut.cis.ohio-state.edu!n8emr!uncle!celebr!jbm From: jbm@celebr.uucp (John B. Milton) Newsgroups: comp.dsp Subject: Re: FIR Chip Info Needed Message-ID: <1990May25.143948.25398@celebr.uucp> Date: 25 May 90 14:39:48 GMT References: <56424@bbn.BBN.COM> Distribution: usa Organization: Celebrezze Committee Lines: 70