fig1 shows the overall hardware connections of the preferred embodiment . a computer ( 100 ) executes filter - design software ( 110 ), which software ( 110 ) includes the methods disclosed in this specification . the computer ( 100 ) typically has a processor , a ram , and a mass storage device , such as a hard drive . the computer ( 100 ) is connected via a data bus ( 120 ) to an evaluation circuit board ( 130 ). the data bus ( 120 ) is preferably a serial bus , such as the universal serial bus ( usb ) standard , although other data - bus protocols could be used . the evaluation board ( 130 ) is configured to connect with a digital - filter integrated circuit ( ic ) ( 200 ). the filter ic ( 200 ) is a mixed - signal , silicon integrated circuit . the device preferably has a serial bus interface for communicating with the pc ; a non - volatile memory for storing the filter coefficients and the device control parameters ; a static , random - access memory for storing the digitized input data stream and intermediate results of the filtering operation ; one or more arithmetic units for performing the add , multiply , and accumulate operations associated with filter computations ; and the necessary program control , clock generation and control , power conditioning , and power - on reset functions for chip operation . the ic may also have an analog - to - digital converter ( adc ), and a digital - to - analog converter ( dac ) and related anti - aliasing and reconstruction filters , and signal - conditioning circuitry , to allow the filter to interface directly with analog data input and output . fig2 is an overview of such an ic ( 200 ) in the preferred embodiment . typically , the ic ( 200 ) has an input ( 210 ) for the serial bus ( 120 ). as described below , the serial bus ( 120 ) carries programming instructions and data defining a particular digital filter . the ic ( 200 ) has an adc ( 220 ) for input of analog signals to be processed . in other embodiments of the system , the input to the ic ( 200 ) may be a digital signal , and no adc will be required . the ic ( 200 ) has an area of non - volatile memory ( 230 ) for storage of filter coefficients and control parameters , as described below . the ic thus includes a processor ( 240 ), as described below , to perform the required digital - filter calculations according to the filter coefficients and control parameters downloaded into it when it is connected to the evaluation board ( 130 ). the results of these calculations are typically placed into a dac ( 260 ) for output , although other embodiments omit the dac ( 260 ) and output a digital data stream . the chip will have a clock source ( 250 ) typically controlled by an external crystal ( 270 ). the reader should note that the processor ( 240 ) is not a conventional digital - signal microprocessor , but is rather a special integrated circuit adapted to accept filter coefficients and control parameters that define a specified digital filter . fig3 shows the plan for the processor ( 240 ) portion of the preferred embodiment . the filter ic ( 200 ), and thus the processor ( 240 ), may be embodied in an application - specific ic ( asic ), or it may be implemented in a field - programmable gate array chip if only a digital i / o solution is desired , such as the virtex ii chip manufactured by xilinx , inc . of san jose , calif . such implementations are greatly preferable to a conventional digital - signal microprocessor , because they can execute filter operations much faster . the processor ( 240 ) receives data through a data port ( 300 ). the data port ( 300 ) is connected to a data bus ( 305 ). an address bus ( 310 ) connects address and control registers ( 315 ). the data bus ( 305 ) and the address bus ( 310 ) connect to odd operand memory ( 320 ), even operand memory ( 325 ) and coefficient memory ( 330 ). according to the control instructions , as discussed below , the processor ( 240 ) implements the typical mathematical operations required for signal processing digital filters and also controls the input and output interfaces . in the preferred embodiment , there is a first set of multiplicand and multiplier registers ( 335 ), a first adder ( 340 ) that produces a second multiplicand ; a second set of multiplicand and multiplier registers ( 345 ), a multiplier ( 350 ), a second adder ( 355 ), and a final multiply - and - accumulate register ( 360 ). a data output port ( 365 ) presents computed results from the second adder ( 355 ). a design for a typical digital filter ic ( 200 ) of the preferred embodiment may be specified as follows for a filter with 3 memory or register banks , where one bank is for coefficients , having an address range of 0 - 255 , and two banks are for data , with odd / even interleaved addresses in the range of 0 - 511 . the maximum number of taps in the design illustrated is 512 , although the design could be extended to any number of taps consistent with the hardware available . power - on - reset clears all registers , establishes a default clock , and initiates the download of control and filter parameters from the on - board nonvolatile memory . this download initializes all address and control registers , writes the filter coefficients into the coefficient memory ( or registers ), and zeros the data memory . address and control registers are set to the appropriate values , and the analog sections are initialized , if used . data in operand from input pins or adc , clocked into data in register di0 data in valid control register set by input pin or adc data out filter output to output pin or dac do2 data out valid control from filter to output pin or dac reset by external device or dac where n = number of taps of the filter r0 = memory address register for operand to fill multiplicand 0 register ( mc0 ) r1 = memory address register for operand to fill multiplicand 1 register ( mc1 ) c = memory address register for coefficient to fill multiplier 0 register ( mp0 ) ctr = counter to countdown number of taps w = memory address register for store location of next data point r0 = 0 , r1 = n − 1 , c = 0 , ctr = n − 1 , w = n − 1 if di0 = 0 , then wait else , ( w )= data in , di0 ′= 0 , di1 ′= 1 if w = 0 , then w ′= n − 1 else , w ′= w − 1 if di1 = 0 , then wait else mc0 ′=( r0 ), mc1 ′=( r1 ), mp0 ′=( c ) if ctr = 0 , then r0 ′= 0 , r1 ′= n − 1 , c ′= 0 , ctr ′= n − 1 , di1 = 0 , do0 =, di2 = di1 else if c = n / 2 − 1 , then r0 ′= ctr , r1 ′= ctr - 1 , c ′= 0 , ctr ′= ctr - 1 else if r0 = n − 1 , then r0 ′= 0 else r0 ′= r0 + 1 if r1 = 0 , then r1 ′= n − 1 else r1 ′= r1 − 1 if di2 = 0 , then wait else mc ′= mc0 + mc1 , mp ′= mp0 , di3 ′= di2 , do1 ′= do0 , do0 ′= 0 if di3 = 0 , then wait else mac ′= mac +( mc × mp ) if do1 = 1 , then dataout ′= mac =( mc × mp ), do1 ′= 0 , do2 ′= 1 ( do2 reset by receiving logic — external or dac ) the preceding section described a typical hardware implementation of the preferred embodiment . the following sections describe the software processes of the preferred embodiment . fig4 shows the flow of execution in the software process for the design portion of the system . a user interacts with a design - input dialog at step 400 . in this dialog , the user can select the desired filter type , such as lowpass , highpass , bandpass or bandstop , the desired windowing function , and the frequency range . at step 405 , the user can select the cutoff frequency , stopband frequency , ripple , attenuation , and the sample rate , and the bit length ( or precision ) of the input and output data stream . at step 410 , the software computes the number of filter taps , the sample rate , the filter coefficients , and the response , using conventional techniques , such as the parks - mcclellan method . the resulting filter response is displayed at step 415 , and at step 420 , the user can approve the designed filter , or return to modify the design and repeat the process . this first set of parameters represents the ideal mathematical design for the desired filter . when the user approves the filter design at step 420 , execution passes to step 500 , shown on fig5 . fig5 depicts the flow of execution for the physical design of the filter just computed . at step 500 , the user selects a digital - filter ic ( 200 ) having the parameters suitable for the mathematical design , such as memory capacity , execution speed , and desired analog features . preferably , the program should not proceed if there is no device in the device file that can execute the desired filter . at step 505 , the program then loads the device file ( 510 ) for that filter ic ( 200 ). the device file is discussed in the following section . the device file contains all control fields , initial register values , and coefficient values necessary to program the operation of a filter for up to n taps . these fields also define the mode of operation of the device , including input / output selection and data types , sample / clock rates , adc / dac enablement and gain settings , anti - aliasing filter settings , cascaded integrator - comb ( cic ) filter decimation values , and communication interface mode and protocol . these control parameters are memory mapped into the non - volatile storage on the device , and also into the memory and registers on the device . this map tells the software what must be configured for each device type . the device may operate on the input data stream with one or more filters , up to the capacity of the on - chip memory , and within the maximum rate values . each filter on the device requires a memory map as next described . the data structure of a typical device file map is shown in the table below . the table illustrates the file organization for a filter device with an anti - aliasing filter and adc for analog inputs , followed by a decimating cic filter and the n - tap digital filter hardware . the output section in the example includes a dac . the filter may be used in a digital only mode with either serial or parallel i / o , or the adc and dac can be individually enabled to provide an analog filter replacement . at step 520 , the user can select various options for the filter ic ( 200 ), such as digital or analog input or output , analog input gain , digital output gain and similar parameters . execution then passes to step 525 , where the computed coefficients are quantitized for the particular filter ic architecture . the mathematical modeling described above is preferably done with 32 - bit floating - point numbers . these must be converted to two &# 39 ; s compliment binary form or other form compatible with the hardware of the filter ic ( 200 ). it is thus necessary to generate a simulation of the filter using coefficients quantitized for fixed binary arithmetic and for calculations in the same format , so that the hardware implementation of the filter on the filter ic ( 200 ) will satisfactorily reproduce the desired filter response . in the preferred embodiment , this is accomplished at step 525 by re - running the simulation using values appropriately quantitized . for example , the simulation may be re - run using 16 - bit , two &# 39 ; s complement arithmetic , giving four decimal digits of accuracy , instead of the typical 15 decimal digits of accuracy achieved by floating - point calculations . in filters where accuracy is more important , such as those with large numbers of taps , 20 - bit fixed - point arithmetic may be used , and the filter ic ( 200 ) constructed to perform calculations at this precision . the results of this simulation are displayed at step 530 . if the results are not satisfactory , the user can return to step 405 to modify filter parameters . if the results are satisfactory , then the data representing the result is ready to download to the filter ic ( 200 ). this second set of parameters includes both the coefficients for the filter under design , as well as control parameters for the operation of the filter . the second set of parameters thus represents a complete functional digital filter that can be executed on the filter ic . the data set may be downloaded into the filter ic ( 200 ) on the evaluation board ( 130 ) for further engineering evaluation , or into one or more filter ic &# 39 ; s ( 200 ) on a programming fixture to create pre - programmed chips for use in a system . alternatively , the data may be stored on a user &# 39 ; s system for real - time download as needed in the user &# 39 ; s end equipment . in general , the calculated data set representing the digital filter can be stored on computer - readable media such as hard disks , cd - roms , flash roms , nonvolatile rom and ram . since those skilled in the art can modify the specific embodiments described above , we intend that the claims be interpreted to cover such modifications and equivalents .