Claims
- 1. A finite impulse response digital filter for filtering input values, comprising:
an interconnected series of k stages wherein k={1,2, . . . ,N−1}, each stage having:
a delay element z−1k having a delay element input and a delay element output; a weighting element having a weighting element input and a weighting element output, wherein a gain of the weighting element is selected to be a product of a gain hk required to achieve a desired digital filter response and a factor A selected to improve digital filter computational efficiency; and a summation element having a first summation element input, a second summation element input, and a summation element output; and a leading gain element with a gain of Ah0, wherein h0 is a gain selected to achieve a desired digital filter response, and the leading gain element includes a leading gain element input coupled to a first stage delay element input and a leading gain element output coupled to a first stage first summation element input; wherein the delay element output of each stage is coupled to the gain element input of the stage and the gain element output of each stage is coupled to the second summation element input of the stage; wherein the delay element output of each stage except a last stage is coupled to the delay element input of a following stage and the summation element output of each stage except the last stage is coupled to the first summation element input of the following stage; and a bias summation element coupled between the leading gain element and the first stage first summation element.
- 2. The finite impulse response digital filter of claim 1, wherein the bias is such as to compensate for the modified delayed, mapped, and weighted input values.
- 3. The finite impulse response digital filter of claim 1, wherein the factor A is two and the bias is selected from the group comprising
- 4. The finite impulse response digital filter of claim 1, further comprising:
a means for determining whether a majority of the input values are a zero input value or a non-zero input value; means for setting the bias to a value proportional to 19-∑0N-1hkwhen the majority of the input values is a zero input value; and means for setting the bias to a value proportional to 20∑0N-1hkwhen the majority of the input values is a non-zero input value.
- 5. The finite impulse response digital filter of claim 1, wherein the means for determining whether a majority of input values are a zero input value or a non-zero input value comprises:
an accumulator; and a logical circuit for selectively incrementing and decrementing the accumulator according to the input value and the last delayed input value.
- 6. The finite impulse response digital filter of claim 5, wherein the accumulator comprises a counter.
- 7. The finite impulse response digital filter of claim 5, wherein the accumulator comprises a pointer.
- 8. A method of filtering a series of mapped input data values {x0,x1, . . . ,xN−1}, comprising the steps of:
(a) successively delaying each of the input values to create tap values {t0,t1, . . . ,tN−1}; (b) multiplying each of the tap values {t0, t1, . . . ,tN−1} by A·{h0,h1, . . . ,hN−1}, to produce {At0h0, At1h1, . . . ,AtN−1hN−1} wherein values {h0,h1, . . . ,hN−1} are weight values selected to achieve a desired filter response and A is a factor selected to improve computational efficiency in filtering the input data stream; (c) summing the values {At0h0,At1h1, . . . ,AtN−1hN−1} to produce 21∑k=0N-1Atkhk;and (d) biasing the summed values {At0h0,At1h1, . . . ,AtN−1hN−1} to compensate for the factored weight values {At0h0,At1h1, . . . ,AtN−1hN−1} to produce a digital filter output.
- 9. The method of claim 8, wherein the weight values {h0,h1, . . . ,hN−1} are symmetrically definable as {a, b, c, . . . , c, b, a}.
- 10. The method of claim 8, wherein steps (b) and (c) are performed only for a subset of all tap values, the subset being input data dependent.
- 11. The method of claim 10, wherein steps (b) and (c) are performed only for tap values {t0,t1, . . . ,tN−1} which are non-zero.
- 12. The method of claim 8, wherein A=2 and the bias applied to the sum of the values {At0,h0,At1h1, . . . ,AtN−1hN−1} is
- 13. The method of claim 8, wherein the step of biasing the sum of the summed values {At0h0,At1h1, . . . ,AtN−1hN−1} to produce a digital filter output comprises the steps of:
determining whether a majority of the unmapped input data stream values are a zero input value or a non-zero input value; computing the digital filter output as 23∑k=0N-1Atkhk-∑k=0N-1hkwhen the majority of input values are the zero input value; and computing the digital filter output as 24∑k=0N-1Atkhk+∑k=0N-1hkwhen the majority of input values are the non-zero input value.
- 14. The method of claim 13, wherein the step of determining whether a majority of the input value are a non-zero input value or a zero input value comprises the steps of:
initializing an accumulator; selectively incrementing the accumulator according to the input value and the last delayed input value.
- 15. A method of computing the response of a digital filter by implementing a sum of a series of delayed, mapped, and weighted input values, comprising the steps of:
modifying the weight of the delayed, mapped, and weighted input values; and biasing the sum of the series of delayed mapped, and weighted input values.
- 16. The method of claim 15, further comprising the step of summing only the delayed, mapped, and weighted input values corresponding to a non-zero input value.
- 17. The method of claim 15, wherein the weight of each of the delayed, mapped, and weighted input values is multiplied by a single weighting factor.
- 18. The method of claim 15, wherein the sum of the series of delayed, mapped and weighted input values is biased to compensate for the modified, delayed, mapped, and weighted input values.
- 19. The method of claim 17, wherein the weighting factor is two, and the step of biasing the sum of the series of delayed, mapped and weighted input values comprises the step of biasing by the sum of the series of delayed, mapped and weighted input values by a value proportional to the sum of the weights applied to each of the series of delayed input values.
- 20. The method of claim 15, wherein the step of biasing the sum of the series of delayed, mapped, and weighted input values to compensate for the modified weight of the delayed, mapped and weighted input values comprises the steps of:
determining whether a majority of the input values are a zero input value or a non-zero input value; when a majority of the input values are the zero input value, subtracting the sum of the weights applied to each of the series of delayed input values from the sum of the series of delayed, mapped, and weighted input values and summing only the delayed, mapped, and weighted input values corresponding to a non-zero input value; and when a majority of the input values are a non-zero input value, adding the sum of the weights applied to each of the series of delayed input values to the sum of the series of delayed, mapped, and weighted input values, and sumning only the delayed, mapped, and weighted input values corresponding to a zero input value.
- 21. The method of claim 20, wherein the step of determining whether a majority of the input values are a non-zero input value or a zero input value comprises the steps of:
initializing an accumulator; selectively incrementing and decrementing the accumulator according to the input value and a last delayed input value.
- 22. The method of claim 21, wherein the step of selectively incrementing and decrementing the accumulator according to the input value and the last delayed input value comprises the step of incrementing the accumulator in an input value direction when the input value and the last delayed input value are different.
- 23. The method of claim 21, wherein the step of selectively incrementing and decrementing a accumulator according to the input value and the last delayed input value comprises the steps of:
incrementing the accumulator when the input value corresponds to a zero input value and the last delayed input value corresponds to a one input value; and decrementing the accumulator when the input value corresponds to a non-zero input value and the last delayed input value corresponds to a zero input value.
- 24. An apparatus for computing the response of a digital filter by implementing a sum of a series of delayed, mapped, and weighted input values, comprising:
means for modifying the weight of the delayed, mapped, and weighted input values; and means for biasing the sum of the series of delayed, mapped, and weighted input values.
- 25. The apparatus of claim 24, further comprising means for summing only the delayed, mapped, and weighted input values corresponding to a non-zero input value.
- 26. The apparatus of claim 24, wherein the weight of each of the delayed, mapped, and weighted input values is multiplied by a single weighting factor.
- 27. The apparatus of claim 24, wherein the sum of the series of delayed, mapped, and weighted input values are biased in an amount required to compensate for The modified, delayed, mapped, and weighted input values.
- 28. The apparatus of claim 26, wherein the weighting factor is two, and the means for biasing the sum of the series of delayed, mapped, and weighted input values comprises means for biasing by the sum of the series of delayed, mapped, and weighted input values by a value proportional to the sum of the weights applied to each of the series of delayed input values.
- 29. The apparatus of claim 28, wherein the means for biasing the sum of the series of delayed, mapped, and weighted input values to compensate for the modified weight of the delayed, mapped, and weighted input values comprises:
means for determining whether a majority of the input values are a zero input value or a non-zero input value; means for subtracting the sum of the weights applied to each of the series of delayed input values from the sum of the series of delayed, mapped, and weighted input values and summing only the delayed, mapped, and weighted input values corresponding to a non-zero input value when a majority of the input values are the zero input value; and means for adding the sum of the weights applied to each of the series of delayed input values to the sum of the series of delayed, mapped, and weighted input values, and summing only the delayed, mapped, and weighted input values corresponding to a zero input value when a majority of the input values are a non-zero input value.
- 30. The apparatus of claim 29, wherein the means for determining whether a majority of the input values are a non-zero input value or a zero input value comprises:
means for initializing an accumulator; and means for selectively incrementing and decrementing the accumulator according to the input value and a last delayed input value.
- 31. The apparatus of claim 30, wherein the means for selectively incrementing and decrementing a counter according to the input value and the last delayed input value comprises means for incrementing the counter in an input value direction when the input value and the last delayed input value are different.
- 32. The apparatus of claim 30, wherein the means for selectively incrementing and decrementing a counter according to the input value and the last delayed input value comprises:
means for incrementing the counter when the input value corresponds to a zero input value and the last delayed input value corresponds to a one input value; and means for decrementing the counter when the input value corresponds to a non-zero input value and the last delayed input value corresponds to a zero input value.
- 33. A program storage device, readable by a computer, tangibly embodying one or more programs of instructions executable by the computer to perform method steps of filtering an input data stream {x0,x1, . . . ,XN−1}, the method steps comprising the steps of:
(a) successively delaying and mapping each of the input values to create tap values {t0t1, . . . ,tN−1}; (b) multiplying each of the tap values {t0,t1, . . . ,tN−1} by A·{h0,h1, . . . ,hN−1}, to produce {At0h0,At1h1, . . . ,AtN−1hN−1} wherein values {h0,h1, . . . ,hN−1} are weight values selected to achieve a desired filter response and A is a factor selected to improve computational efficiency in filtering the input data stream; (c) summing the values {At0h0, At1h1, . . . ,AtN−1hN−1} to produce 25∑k=0N-1Atkhk;and (d) biasing the summed values {At0h0,At1h1, . . . ,AtN−1hN−1} to compensate for the factored weight values to produce a digital filter output.
- 34. A method of filtering a series of input data values {x0,x1, . . . ,xN−1}, comprising the steps of:
(a) successively delaying each of the input values to create tap values {t0,t1,t2 . . . ,tN−3,tN−2, tN−1} associated with tap weights {h0,h1,h2 . . . ,hN−3, hN−2, hN−1}, wherein the tap weights comprise one or more tap weight pairs {hi−1, hN−i} define according to a relationship selected from the group comprising hi−1=hN−i and hi−1=−hN−i for i={1,2,3, . . . ,N/2}when N is even and i={1,2,3, . . . , (N+1)/2} when N is odd, and wherein each tap weight pair {hi−1,hN−i} is associated with a tap value pair {ti−1,tN−i}; (b) determining a state for each tap value pair {ti−1,tN−1}; (c) selectively multiplying each of the tap values by tap weights modified according to the tap weight pair state; (d) summing the selectively multiplied tap values; (e) determining a tap weight pair majority case; (f) biasing the summed values in accordance with the tap weight pair majority case.
- 35. The method of claim 34, wherein:
the state is selected from the group comprising a first state, a second state, and a third state, wherein
the first state is {ti−1,tN−i}, when {ti−1=tN−1=0}; the second state is {ti−1,tN−1}, when {ti−1=tN−i=1}; and the third state is {ti−1,tN−i}, when {ti−1≈tN−i}; the tap weight majority case is selected from the group comprising a first case, a second case, and a third case, wherein the first case is selected when at least one third of the tap-weight pairs belong to the first state; the second case is selected when at least one third of the tap-weight pairs belong to the second state; and the third case is selected when at least one third of the tap-weight pairs belong to the third state; the summed values are not biased, and the tap weights of each tap weight pair {hi−1,hN−i} are modified to be 2hk for tap weight pairs of the second state and −2hk for tap weight pairs of the first state when the tap weight majority case is the third case; the summed values are biased by 262∑k=0N-1hk,and the tap weights of each tap weight pair {hi−1,hN−i} are modified to be −2hk for tap weight pairs of the third state and −4hk for tap weight pairs of the first state when the tap weight majority case is the second case; and the summed values are biased by 27-2∑k=0N-1hk,and the tap weights of each tap weight pair {hi−1,hN−i} are modified to be 2hk for tap weight pairs of the third state and 4hk for tap weight pairs of the second state when the tap weight majority case is the first case.
- 36. A method of filtering a series of mapped input data values {xj} where j={0,1,2, . . .,N−1}, comprising the steps of:
(a) setting j=0; (b) weighting the mapped input value {xj} by a set of weight values {Ah0,Ah1, . . . ,AhN−1} to produce a plurality of weighted input values xj·{Ah0, Ah1, . . . ,AhN−1} wherein the weight values {h0,h1, . . . ,hN−1} are weight values selected to achieve a desired filter response and A is a factor selected to improve computational efficiency in filtering the input data stream; (c) computing a first tap value as s0=Ah0xj+a bias, wherein the bias is a value selected to compensate for the weighted tap values {At0h0,At1h1, . . . ,AtN−1hN−1}; (d) computing a series of summation values as si=ti+Ahixj and tap values ti=si−1 for i={1,2, . . . ,N−1}; (e) using SN−1 as the output data sample; and (f) repeating steps (b) through (e) for j={1,2, . . .N−1}.
- 37. A method of reducing the computations required in a digital filter implementing a sum of a series of weighted and delayed input data values, comprising the steps of:
computing the sum of a series of weighted and delayed input data values, with data value weights definable by Ak·{h0h1, . . . ,hN−1} wherein values {h0, h1, . . . ,hN−1} are weight values selected to achieve a desired filter response, and Ak is selected to improve computational efficiency in filtering the input data stream; and biasing at least one of the weighted and delayed input data values to compensate for the data value weights.
- 38. A method of filtering a series of mapped input data values {x0,x1, . . . , xN−1}, comprising the steps of:
(a) successively delaying each of the mapped input values to create tap values {t0,t1, . . .,tN−1}; (b) multiplying each of the tap values {t0, t1, . . . ,tN−1} by values {h0, h1, . . . ,hN−1} and factors {A0,A1, . . . ,AN−1} to produce {A0t0h0,A1t1h1, . . . ,AN−1tN−1hN−1} wherein values {h0,h1, . . . ,hN−1} are weight values selected to achieve a desired filter response and {A0, A1, . . . ,AN−1} are factors selected to improve computational efficiency in filtering the input data stream; (c) summing the values {A0t0h0,A1t1h1, . . . ,AN−1TN−1hN−1} to produce 28∑k=0N-1Aktkhk;and (d) biasing the summed values 29∑k=0N-1Aktkhkto produce a digital filter output.
- 39. A method of filtering a series of mapped input data values {x0,x1, . . . ,xN−1} comprising the steps of:
(a) successively delaying each of the input values to create a set of tap values {t0,t1, . . .,tN−1}; (b) multiplying each member of the jth subset, for j=1,2, . . . p of the set of tap values {t0,t1, . . . ,tN−1} by corresponding members of corresponding subsets of the set Aj·{h0,h1, . . . ,hN−1} to produce subsets of the sets {Ajt0h0,Ajt1h1, . . . ,AjtN−1hN−1} wherein values {h0,h1, . . . ,hN−1} are weight values selected to achieve a desired filter response, and Aj is a factor selected to improve computational efficiency of the digital filter; (c) summing the values of the members ofthep subsets; and (d) biasing the sum of the values of the members of thep subsets to produce a digital filter output.
- 40. An apparatus for filtering a series of mapped input data values {x0,x1, . . . ,xN−1}, comprising:
(a) means for successively delaying each of the mapped input values {x0,x1, . . . ,xN−1} to create tap values {t0,t1, . . . ,tN−1}; (b) means for multiplying each of the tap values {t0,t1, . . . ,tN−1} by values {h0,h1, . . . ,hN−1} and factors {A0,A1, . . . ,AN−1} to produce {A0t0h0,A1t1h1, . . . ,AN−1tN−1hN−1} wherein values {h0,h1, . . . ,hN−1} are weight values selected to achieve a desired filter response and {A0,A1, . . . ,AN−1} are factors selected to improve computational efficiency in filtering the input data stream; (c) means for summing the values {A0t0h0,A1t1h1, . . . ,AN−1tN−1hN−1} to produce 30∑k=0N-1Aktkhk;and (d) means for biasing the summed values 31∑k=0N-1Aktkhkto produce a digital filter output.
- 41. The apparatus of claim 38, wherein the apparatus is used to implement an approximated π/4 QPSK modulation routine.
- 42. A method of computing the response of a digital filter, comprising the steps of:
computing the sum of a series of delayed, mapped, and weighted input values, wherein the weight of the delayed and mapped input values is selected to improve computational efficiency, and biasing the sum of the series of delayed, mapped, and weighted input values to compensate for the selection of the weight of the mapped and delayed input values.
CROSS REFERENCE TO RELATED APPLICATIONS
[0001] This application claims benefit of U.S. Provisional Application No. 60/069,636, filed Dec. 15, 1997, by Alan N. Willson, Jr. and Larry S. Wasserman and entitled “LOW-POWER PULSE-SHAPING DIGITAL FILTERS,” which application is hereby incorporated by reference herein.
GOVERNMENT LICENSE RIGHTS STATEMENT
[0002] The U.S. Government has a paid-up license in this invention and the right in limited circumstances to require the patent owner to license others on reasonable terms as provided for by the terms of grant No. N00014-95-1-0231 awarded by the Office of Naval Research and grant No. MIP-9632698, awarded by the National Science Foundation.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60069636 |
Dec 1997 |
US |
Continuations (1)
|
Number |
Date |
Country |
Parent |
09211357 |
Dec 1998 |
US |
Child |
09912177 |
Jul 2001 |
US |