P
US5586068AExpiredUtilityPatentIndex 82

Adaptive electronic filter

Assignee: TERAYON CORPPriority: Dec 8, 1993Filed: Dec 8, 1993Granted: Dec 17, 1996
Est. expiryDec 8, 2013(expired)· nominal 20-yr term from priority
Inventors:RAKIB SHLOMO
H03H 17/0607H03H 21/0012
82
PatentIndex Score
20
Cited by
24
References
11
Claims

Abstract

A programmable and adaptive electronic filter for filtering digital signals. The filter uses a table which contains the outputs corresponding to all possible inputs, so that the filter may be constructed of memory, adders and multiplexers, and does not require multipliers. The input sample is used as an address to determine the location in the memory which contains the output corresponding to that input. The table of outputs is placed in a particular order such that the change between the inputs corresponding to each two adjacent locations is a single digit, thus allowing the table to be easily calculated, since the difference between the outputs in those two locations is two times the weighting coefficient for the digit in the input which is changed. Adaptive filtering is accomplished by using a second filter which has as its input the difference between the actual output of the filter and the desired output, and as its output changes to the weighting coefficients of the filter.

Claims

exact text as granted — not AI-modified
What is claimed is: 
     
       1. A method for loading data into a memory to be used as a look-up-table in a finite impulse response filter, said method comprising the steps of: (a) storing a set of weighting coefficients into a coefficient register; (b) generating an initial input vector having a plurality of bites, each bit corresponding to one of the weighting coefficients in said coefficient register;   (c) generating an initial table value to associate with said initial input vector, said initial table value representing the negative of the sum of the weighting coefficients;   (d) storing said initial table value into a memory location associated with said initial input vector, and into a temporary register;   (e) generating a new input vector having a plurality of bits, each bit corresponding to one of the weighting coefficients in said coefficient register, the new input vector differing from the input vector just previously generated in just one bit, said bit being referred to as the changed bit;   (f) determining whether the changed bit changed from a 1 to a 0, or from a 0 to a 1;   (g) in response to a determination that the changed bit changed from a 1 to a 0: 1. selecting the coefficient corresponding to the changed bit from the coefficient register; and   2. subtracting twice the corresponding coefficient from the table value currently stored in the temporary register to derive a new table value;     (h) in response to a determination that the changed bit changed from a 0 to a 1: 1. selecting the coefficient corresponding to the changed bit from the coefficient register; and   2. adding twice the corresponding coefficient to the table value currently stored in the temporary register to derive a new table value;     (i) storing said new table value into a memory location associated with the new input vector, and into said temporary register; and   (j) repeating steps (e) through (i) until a selected number of table values have been loaded into the memory.   
     
     
       2. The method of claim 1, wherein step (e) comprises the step of: generating said new input vector using gray coding.   
     
     
       3. The method of claim 2, wherein step (i) comprises the steps of: converting said new input vector from a gray code to a binary code; and   storing said new table value into a memory location indicated by said binary code.   
     
     
       4. A finite impulse response filter, comprising: a coefficient register for storing a set of weighting coefficients;   an input vector generator for generating a plurality of input vectors, each input vector having a plurality of bits, each bit corresponding to one of the weighting coefficients in said coefficient register, said generator generating an initial input vector and a plurality of successive input vectors with each successive input vector differing from an immediately prior input vector by only one bit, this one bit in each input vector being referred to as the changed bit;   means for deriving an initial table value to associate with said initial input vector, said initial table value representing the negative of the sum of the weighting coefficients;   a temporary register for storing a most recently derived table value;   means for generating, for each of said successive input vectors, a table value associated with the input vector, said generating means determining for each successive input vector whether the changed bit changed from a 1 to a 0, or from a 0 to a 1, and in response to a determination that the changed bit changed from a 1 to a 0, said generating means selecting the coefficient corresponding to the changed bit from the coefficient register and subtracting twice the corresponding coefficient from the table value currently stored in said temporary register to derive a table value for the input vector, and in response to a determination that the changed bit changed from a 0 to a 1, said generating means selecting the coefficient corresponding to the changed bit from the coefficient register and adding twice the corresponding coefficient to the table value currently stored in said temporary register to derive a table value for the input vector;   means for storing each table value into said temporary register after each table value is generated;   a memory;   means for storing said table values into said memory, with each table value being stored in a memory location associated with the input vector corresponding to the table value; and   means for receiving an actual input vector and accessing a memory location in said memory associated with said actual input vector to cause said memory to output the table value associated with said actual input vector, the outputted table value representing a filtered output for the actual input vector.   
     
     
       5. The finite impulse response filter of claim 4, wherein said input vector generator is a gray counter for generating a gray code sequence. 
     
     
       6. The finite impulse response filter of claim 5, wherein said means for storing said table values into said memory comprises: means for converting said input vector from a gray code to a binary code; and   means for storing the table value corresponding to said input vector into a memory location indicated by said binary code.   
     
     
       7. The finite impulse response filter of claim 6, wherein said means for receiving an actual vector comprises: means for converting said actual input vector into an actual binary code; and   means for accessing a memory location indicated by said actual binary code to cause said memory to output the table value stored therein.   
     
     
       8. A method for adaptively filtering digital input samples, comprising the steps of: storing a set of weighting coefficients in a coefficient register:   generating a plurality of possible sets of input samples and associated table values, each table value representing a sum of the products of the associated input samples and said weighting coefficients;   storing said table values into a memory to be used as a look-up table;   applying input samples to the memory to cause the memory to output selected table values, these selected table values representing filtered outputs of the applied input samples;   comparing the filtered outputs from the memory with a set of desired outputs to derive an error vector;   generating a set of coefficient adjustments based on said error vector:   combining said set of coefficient adjustments with said weighting coefficients to derive a set of revised weighting coefficients;   storing said revised weighting coefficients into the coefficient register;   generating another plurality of possible sets of input samples and associated revised table values, each revised table value representing a sum of the products of the associated input samples and said revised weighting coefficients;   storing said revised table values into the memory; and   applying input samples to the memory to cause the memory to output selected revised table values, these revised table values representing the revised filtered outputs of the applied input samples.   
     
     
       9. An adaptive digital filter, comprising: a coefficient register for storing a set of weighting coefficients;   means for generating a plurality of possible sets of input samples and associated table values, each table value representing a sum of the products of the associated input samples and said weighting coefficients;   a memory for use as a look-up table;   means for storing said table values into said memory;   means for applying input samples to said memory to cause said memory to output selected table values, these selected table values representing filtered outputs of the applied input samples;   means for comparing said filtered outputs from said memory with a set of desired outputs to derive an error vector;   means for generating a set of coefficient adjustments based on said error vector;   means for combining said set of coefficient adjustments with said weighting coefficients to derive a set of revised weighting coefficients;   means for storing said revised weighting coefficients into said coefficient register;   means for generating another plurality of possible sets of input samples and associated revised table values, each revised table value representing a sum of the products of the associated input samples and said revised weighting coefficients;   means for storing said revised table values into said memory; and   means for applying input samples to said memory to cause said memory to output selected revised table values, these revised table values representing revised filtered outputs of the applied input samples.   
     
     
       10. In an adaptive digital filter wherein an input digital stream is filtered using a set of weighting coefficients to derive a filtered output, an apparatus for correlating said input digital stream with an error vector derived from said filtered output, comprising: a coefficient register for storing said error vector;   means for generating a plurality of possible sets of input samples and associated table values, each table value representing a sum of the products of the associated input samples and said error vector;   a memory for use as a look-up table;   means for storing said table values into said memory;   means for applying said input digital stream to said memory to cause said memory to output selected table values, these selected table values representing coefficient adjustments for adjusting said weighting coefficients.   
     
     
       11. In an adaptive digital filter wherein an input digital stream is filtered using a set of weighting coefficients to derive a filtered output, an apparatus for correlating said input digital stream with an error vector derived from said filtered output, comprising: a coefficient register for storing said input digital stream;   means for generating a plurality of possible sets of input samples and associated table values, each table value representing a sum of the products of the associated input samples and said input digital stream;   a memory for use as a look-up table;   means for storing said table values into said memory;   means for applying said error vector as input to said memory to cause said memory to output selected table values, these selected table values representing coefficient adjustments for adjusting said weighting coefficients.

Cited by (0)

No later patents cite this yet.

References (0)

No backward citations on record.