High efficiency digital filter using sequential multiply and add operations
AssigneeMicrosoft Corporation
InventorJeffrey Eames Taylor
Life of this patent
Estimating the term…
Abstract
A method for optimizing the design of a digital filter for use in a microprocessor that utilizes sequential multiply and add instructions as distinct from single multiply and accumulate cycles. The method involves alternating the steps of multiplying and adding samples of the input signal and the coefficients that are assigned to the corresponding samples of the input signal. This add and multiply sequence is more efficient on most general-purpose computers than the more common load, multiply, add sequence used for this type of filter operation.
Claims20
In a digital filter for filtering an input signal “x” to produce an output signal “y”, wherein filtering occurs by taking n+1 samples of the input signal “x” to extract a number of input signal samples x(0) through x(n), wherein filtering also occurs using digital filter coefficients c(0) through c(n) corresponding to the input signal samples x(0) through x(n), respectively, a method for digitally filtering using sequential multiply and add instructions for increased filtering efficiency for microprocessors that use sequential multiply and add instructions, the method comprising:
- a step for loading a working value equal to a last input signal sample x(n);
- where “m” is an integer initially equaling “n”, a step for multiplying the working value by a constant c(m)/c(m−1) to thereby alter the working value, wherein the constant c(m)/c(m−1) is equal to the quotient of a digital filter coefficient c(m) corresponding to an input signal sample x(m) divided by a digital filter coefficient c(m−1) corresponding to a previous input signal sample x(m−1);
- a step for adding the working value that resulted from the step for multiplying to the value of the previous input signal sample x(m−1) to thereby alter the working value;
- and
- a step for generating the output signal “y” based at least in part on the working value that resulted from the step for adding.
In a digital filter for filtering an input signal “x” to produce an output signal “y”, wherein filtering occurs by taking n+1 samples of the input signal “x” to extract a number of input signal samples x(0) through x(n), wherein filtering also occurs using digital filter coefficients c(0) through c(n) corresponding to the input signal samples x(0) through x(n), respectively, a computer program product for implementing a method for digitally filtering using sequential multiply and add instructions for increased filtering efficiency for microprocessors that use sequential multiply and add instructions, the computer program product comprising:
- a computer-readable medium having computer-executable instructions which, when executed by a microprocessor, implement the following:
- a step for loading a working value equal to a last input signal sample x(n);
- where “m” is an integer initially equaling “n”, a step for multiplying the working value by a constant c(m)/c(m−1) to thereby alter the working value, wherein the constant c(m)/c(m−1) is equal to the quotient of a digital filter coefficient c(m) corresponding to an input signal sample x(m) divided by a digital filter coefficient c(m−1) corresponding to a previous input signal sample x(m−1);
- a step for adding the working value that resulted from the step for multiplying to the value of the previous input signal sample x(m−1) to thereby alter the working value;
- and
- a step for generating the output signal “y” based at least in part on the working value that resulted from the step for adding.
In a digital filter for filtering an input signal “x” to produce an output signal “y”, wherein filtering occurs by taking n+1 samples of the input signal “x” to extract a number of input signal samples x(0) through x(n), wherein filtering also occurs using digital filter coefficients c(0) through c(n) corresponding to the input signal samples x(0) through x(n), respectively, a method for digitally filtering using sequential multiply and add instructions for increased filtering efficiency for microprocessors that use sequential multiply and add instructions, the method comprising:
- a specific act of a microprocessor loading a working value equal to a last input signal sample x(n);
- where “m” is an integer initially equaling “n”, a specific act of the microprocessor multiplying the working value by a constant c(m)/c(m−1) to thereby alter the working value, wherein the constant c(m)/c(m−1) is equal to the quotient of a digital filter coefficient c(m) corresponding to an input signal sample x(m) divided by a digital filter coefficient c(m−1) corresponding to a previous input signal sample x(m−1);
- a specific act of the microprocessor adding the working value that resulted from the specific act of the microprocessor multiplying to the value of the previous input signal sample x(m−1) to thereby alter the working value;
- and
- a specific act of generating the output signal “y” based at least in part on the working value that resulted from the specific act of the microprocessor adding.
In a digital filter for filtering an input signal “x” to produce an output signal “y”, wherein filtering occurs by taking n+1 samples of the input signal “x” to extract a number of input signal samples x(0) through x(n), wherein filtering also occurs using digital filter coefficients c(0) through c(n) corresponding to the input signal samples x(0) through x(n), respectively, a computer program product for implementing a method for digitally filtering using sequential multiply and add instructions for increased filtering efficiency for microprocessors that use sequential multiply and add instructions, the computer program product comprising:
- a computer-readable medium having computer-executable instructions which, when executed by a microprocessor, implement the following:
- a specific act of a microprocessor loading a working value equal to a last input signal sample x(n);
- where “m” is an integer initially equaling “n”, a specific act of the microprocessor multiplying the working value by a constant c(m)/c(m−1) to thereby alter the working value, wherein the constant c(m)/c(m−1) is equal to the quotient of a digital filter coefficient c(m) corresponding to an input signal sample x(m) divided by a digital filter coefficient c(m−1) corresponding to a previous input signal sample x(m−1);
- a specific act of the microprocessor adding the working value that resulted from the specific act of the microprocessor multiplying to the value of the previous input signal sample x(m−1) to thereby alter the working value;
- and
- a specific act of generating the output signal “y” based at least in part on the working value that resulted from the specific act of the microprocessor adding.
Dependencies are inferred from the claim text.