System and method for a highly-programmable fir filter
AssigneeAnalog Devices, Inc.
InventorAli I. Shaikh
Life of this patent
Estimating the term…
Abstract
A highly-programmable Finite Impulse Response (FIR) digital filter overcomes the limitations of conventional configurations. Specifically, a compound FIR filter configuration is provided, offering the advantages of heightened programmability in both transfer function coefficients hf, hg and in degree of interpolation; distribution and sharing of resources between F and G filter portions, mode-switching capability between high-pass and low-pass modes, and programmable truncation/saturation.
Claims27
1 A compound filter for processing digital data comprising:
- a first filter portion having first computational resources for performing a first filter function;
- a second filter portion having second computational resources for performing a second filter function;
- and
- wherein at least one of the first and second filter portions is configured to access and utilize the computational resources of the other filter portion for performing the filter function.
2 The compound filter of claim 1 wherein the first and second filter portions each comprise:
- a data bank having a plurality of data nodes;
- a coefficient bank for storing filter coefficients;
- a multiplier for multiplying filter data stored in the data nodes by corresponding filter coefficients stored in the coefficient bank, resulting in product data;
- and
- an accumulator for summing the product data to produce filtered data.
3 The compound filter of claim 2 wherein the data bank comprises a negative data bank having negative data nodes, a positive data bank having positive data nodes, and an adder for summing filter data contained in corresponding positive and negative data nodes prior to multiplication with the corresponding filter coefficient.
4 The compound filter of claim 2 wherein the data nodes comprise data registers.
5 The compound filter of claim 2 wherein the data nodes comprise memory locations referenced by pointers.
6 The compound filter of claim 1 wherein the first filter portion comprises an interpolation filter.
7 The compound filter of claim 1 wherein the second filter portion comprises a masking filter.
8 The compound filter of claim 1 wherein the first filter portion requires a first number of computations in a sample period and wherein the second filter portion requires a second number of filter computations in the sample period and wherein the first and second filter portions share their respective resources when the first number and second number are different.
9 The compound filter of claim 1 wherein the resources comprise an adder, a multiplier, and an accumulator.
10 The compound filter of claim 1 wherein the first and second filter functions are determined by filter parameters.
11 The compound filter of claim 10 wherein the filter parameters are programmable.
12 The compound filter of claim 1 wherein the filter parameters are selected from the group of parameters consisting of:
- filter coefficient values;
- number of coefficients;
- interpolation value;
- output scale offset, and high-pass activation switch.
13 The compound filter of claim 1 further comprising a delay unit coupled between an output of the second filter portion and an input of the first filter portion such that the compound filter is configured as a high-pass filter.
14 The compound filter of claim 13 wherein the delay unit has a delay value that is determined based on data propagating through the first filter portion and a coefficient count of the second filter portion.
15 The compound filter of claim 13 further comprising a switch coupled to the delay unit for activating the delay unit.
16 The compound filter of claim 15 wherein the switch is programmable.
17 A method for processing digital data in a compound filter comprising:
- performing a first filter function in a first filter portion having first computational resources;
- performing a second filter function in a second filter portion having second computational resources;
- and
- configuring at least one of the first and second filter portions to access and utilize the computational resources of the other filter portion for performing the filter function.
18 The method of claim 17 wherein the step of performing the first and second filter functions each comprise:
- providing a data bank having a plurality of data nodes;
- providing a coefficient bank for storing filter coefficients;
- providing a multiplier for multiplying filter data stored in the data nodes by corresponding filter coefficients stored in the coefficient bank, resulting in product data;
- and
- providing an accumulator for summing the product data to produce filtered data.
19 The method of claim 18 wherein the data bank comprises a negative data bank having negative data nodes, a positive data bank having positive data nodes, and an adder for summing filter data contained in corresponding positive and negative data nodes prior to multiplication with the corresponding filter coefficient.
20 The method of claim 18 wherein the data nodes comprise data registers.
21 The method of claim 18 wherein the data nodes comprise memory locations referenced by pointers.
22 The method of claim 17 wherein the first filter portion comprises an interpolation filter.
23 The method of claim 17 wherein the second filter portion comprises a masking filter.
24 The method of claim 17 wherein the first filter portion requires a first number of computations in a sample period and wherein the second filter portion requires a second number of filter computations in the sample period and wherein the first and second filter portions share their respective resources when the first number and second number are different.
25 The method of claim 17 further providing a delay unit between an output of the second filter portion and an input of the first filter portion such that the compound filter is configured as a high-pass filter.
26 The method of claim 25 wherein the delay unit has a delay value that is determined based on data propagating through the first filter portion and a coefficient count of the second filter portion.
27 The method of claim 25 further comprising providing a programmable switch for activating the delay unit.