Finite impulse response filter for producing outputs having different phases

09940415 ยท 2018-04-10

Assignee

Inventors

Cpc classification

International classification

Abstract

A method and system for designing and implementing a finite impulse response (FIR) filter to create a plurality of output signals, each output signal having the same frequency but at a different phase shift from the other output(s), is described. Values are determined for the resistors, or other elements having impedance values, in a FIR filter having a plurality of outputs, such that each output has the same frequency response but a different phase than the other output(s). This is accomplished by the inclusion of a phase factor in the time domain calculation of the resistor values that does not change the response in the frequency domain. The phase shift is constant and independent of the frequency of the output signal.

Claims

1. A method of designing and building a finite impulse response filter having a delay line containing a plurality of delay elements, comprising: receiving at a processor a selected frequency response for the filter; calculating by the processor an impedance value for each of a first plurality of impedance elements of a single type by approximating a first set of Fourier transform coefficients corresponding to the selected frequency response with a first phase factor and selecting a set of impedance values that are an inverse of the first set of Fourier transform coefficients, each impedance element from the first plurality of impedance elements to be coupled to the delay line after a different delay element than each other impedance element in the first plurality of impedance elements so as to receive a delayed input signal and provide an output weighted by the impedance value of the impedance element, the impedance values of the first plurality of impedance elements calculated such that a sum of the outputs of the first plurality of impedance elements is a first output signal of the selected frequency response; calculating by the processor an impedance value for each of a second plurality of impedance elements of a single type by approximating a second set of Fourier transform coefficients corresponding to the selected frequency response with a second phase factor and selecting a set of impedance values that are an inverse of the second set of Fourier transform coefficients, each impedance element from the second plurality of impedance elements to be coupled to the delay line after a different delay element than each other impedance element in the second plurality of impedance elements so as to receive a delayed input signal and provide an output weighted by the impedance value of the impedance element, the impedance values of the second set of impedance elements calculated such that a sum of the outputs of the second plurality of impedance elements is a second output signal of the selected frequency response, but having a different phase from the first output signal; and building a finite impulse response filter having the first and second pluralities of impedance elements, with the outputs of the first plurality of impedance elements connected to provide the first output signal, and the outputs of the second plurality of impedance elements connected to provide the second output signal.

2. The method of claim 1, wherein calculating by the processor a first set of Fourier coefficients further comprises calculating the first set of Fourier coefficients by an iterative method.

3. The method of claim 2, wherein calculating by the processor the first set of Fourier coefficients by an iterative method further comprises calculating the first set of Fourier coefficients by a Parks-McClellan method.

4. The method of claim 1, wherein approximating a second set of Fourier transform coefficients corresponding to the selected frequency response with a second phase factor is accomplished by multiplying the first set of Fourier coefficients by a sine wave.

5. The method of claim 1, wherein approximating a second set of Fourier transform coefficients corresponding to the selected frequency response with a second phase factor is accomplished by reversing the first set of Fourier coefficients.

6. The method of claim 1, wherein approximating a second set of Fourier transform coefficients corresponding to the selected frequency response with a second phase factor is accomplished by multiplying the first set of Fourier coefficients by a window function.

7. The method of claim 6, wherein the window function is a Kaiser window function.

8. The method of claim 7, wherein the Kaiser window function is parameterized to =3.

9. The method of claim 1 wherein the first and second pluralities of impedance elements of a single type are resistors.

10. The method of claim 1 wherein the first and second pluralities of impedance elements of a single type are capacitors.

11. The method of claim 1 wherein the first and second pluralities of impedance elements of a single type are inductors.

12. The method of claim 1 wherein the first and second pluralities of impedance elements of a single type are MOSFETs.

13. A finite impulse response filter comprising: an input configured to receive an input signal; a delay line comprising a plurality of delay elements in series and connected to the input for propagating and delaying the input signal; a first plurality of buffers, each buffer in the first plurality of buffers receiving the delayed input signal after the input signal has passed through a separate one of the plurality of delay elements; a first plurality of impedance elements of a single type having impedance values, each of the first plurality of impedance elements connected to a different one of the first plurality of buffers than each other impedance element in the first plurality of impedance elements so as to receive a delayed input signal and provide an output weighted by the impedance value of the impedance element, the impedance values of the first plurality of impedance elements being the inverse of a first set of approximated Fourier transform coefficients corresponding to the selected frequency response with a first phase factor, such that the sum of the outputs of the first plurality of impedance elements produces a selected frequency response to the input signal; a first output connected to the first plurality of impedance elements to produce a first output signal having the selected frequency response; a second plurality of buffers, each buffer in the second plurality of buffers receiving the delayed input signal after the input signal has passed through a separate one of the plurality of delay elements; a second plurality of impedance elements of a single type having impedance values, each of the second plurality of impedance elements connected to a different one of the second plurality of buffers than each other impedance element in the second plurality of impedance elements so as to receive a delayed input signal and provide an output weighted by the impedance value of the impedance element, the impedance values of the second plurality of impedance elements being the inverse of a second set of approximated Fourier transform coefficients corresponding to the selected frequency response with a second phase factor, such that the sum of the outputs of the second plurality of impedance elements produces the selected frequency response to the input signal as the first plurality of impedance elements but at a different phase; and a second output connected to the second plurality of impedance elements to produce a second output signal having the selected frequency response, at the different phase from the first output signal.

14. The finite impulse response filter of claim 13 wherein the first and second pluralities of impedance elements of a single type are resistors.

15. The finite impulse response filter of claim 13 wherein the second set of Fourier coefficients is the reverse of the first set of Fourier coefficients.

16. A finite impulse response filter comprising: an input configured to receive an input signal; a delay line comprising a plurality of delay elements in series and connected to the input for propagating and delaying the input signal; a plurality of buffers, each buffer receiving the delayed input signal after the input signal has passed through a separate one of the plurality of delay elements; a first plurality of impedance elements of a single type having impedance values, each of the first plurality of elements connected to a different one of the plurality of buffers than each other impedance element in the first plurality of impedance elements so as to receive a delayed input signal and provide an output weighted by the impedance value of the impedance element, the impedance values of the first plurality of impedance elements being the inverse of a first set of approximated Fourier transform coefficients corresponding to the selected frequency response with a first phase factor, such that the sum of the outputs of the first plurality of impedance elements produces a selected frequency response to the input signal; a first output connected to the first plurality of impedance elements to produce a first output signal having the selected frequency response; a second plurality of impedance elements of a single type having impedance values, each of the second plurality of elements connected to a different one of the plurality of buffers than each other impedance element in the first plurality of impedance elements so as to receive a delayed input signal and provide an output weighted by the impedance value of the impedance element, the impedance values of the second plurality of impedance elements being the inverse of a second set of approximated Fourier transform coefficients corresponding to the selected frequency response with a second phase factor, such that the sum of the outputs of the second plurality of impedance elements produces the same frequency response to the input signal as the first plurality of elements but at a different phase; and a second output connected to the second plurality of impedance elements to produce a second output signal having the selected frequency response, at a different phase from the first output signal.

17. The finite impulse response filter of claim 16 wherein the first and second pluralities of impedance elements of a single type are resistors.

18. The finite impulse response filter of claim 16 wherein the second set of Fourier coefficients is the reverse of the first set of Fourier coefficients.

19. A non-transitory computer readable storage medium having embodied thereon instructions for causing a computing device to execute a method for designing and building a finite impulse response filter having a delay line containing a plurality of delay elements, the method comprising: receiving at a processor a selected frequency response for the filter; calculating by the processor an impedance value for each of a first plurality of impedance elements of a single type by approximating a first set of Fourier transform coefficients corresponding to the selected frequency response with a first phase factor and selecting a set of impedance values that are an inverse of the first set of Fourier transform coefficients, each impedance element from the first plurality of impedance elements to be coupled to the delay line after a different delay element than each other impedance element in the first plurality of impedance elements so as to receive a delayed input signal and provide an output weighted by the impedance value of the impedance element, the impedance values of the first plurality of impedance elements calculated such that a sum of the outputs of the first plurality of impedance elements is a first output signal of the selected frequency response; calculating by the processor an impedance value for each of a second plurality of impedance elements of a single type by approximating a second set of Fourier transform coefficients corresponding to the selected frequency response with a second phase factor and selecting a set of impedance values that are an inverse of the second set of Fourier transform coefficients, each impedance element from the second plurality of impedance elements to be coupled to the delay line after a different delay element than each other impedance element in the second plurality of impedance elements so as to receive a delayed input signal and provide an output weighted by the impedance value of the impedance element, the impedance values of the second set of impedance elements calculated such that a sum of the outputs of the second plurality of impedance elements is a second output signal of the selected frequency response, but having a different phase from the first output signal; and building a finite impulse response filter having the first and second pluralities of impedance elements, with the outputs of the first plurality of impedance elements connected to provide the first output signal, and the outputs of the second plurality of impedance elements connected to provide the second output signal.

Description

BRIEF DESCRIPTION OF THE DRAWINGS

(1) FIG. 1 is a graph of a clock signal, showing the effect of adding a delayed clock signal in one example.

(2) FIG. 2 is a graph of another clock signal, showing the effect of adding a delayed clock signal as in FIG. 1.

(3) FIG. 3 is a block diagram of one example of a clock multiplier circuit of the prior art.

(4) FIG. 4 is a graph of the clock signal of FIG. 2, showing the desired effect of adding a delayed clock signal.

(5) FIG. 5 is a block diagram of a finite impulse response (FIR) filter as known in the art.

(6) FIG. 6 is a block diagram of a FIR filter having two outputs.

(7) FIG. 7 illustrates one example of two sets of Fourier coefficients, one derived from a sine approximation formula, and one derived from a cosine formula approximation.

(8) FIG. 8 illustrates the output signals resulting from the Fourier coefficients of FIG. 7.

(9) FIG. 9 illustrates one possible set of Fourier coefficients for a low pass filter and the resulting filter output.

(10) FIG. 10 illustrates a method of changing a low pass filter to a band pass by altering the Fourier coefficients of FIG. 9 by multiplying them by a sine wave.

(11) FIG. 11 illustrates an example of the difference in phase between signals for which the Fourier coefficients have been multiplied by a sine wave and a cosine wave.

(12) FIG. 12 illustrates two sets of Fourier coefficient sine waves in which the phase has been shifted by one-quarter cycle.

(13) FIG. 13 illustrates two sets of Fourier coefficients created from the sine waves of FIG. 12 to generate two outputs.

(14) FIG. 14 is a flowchart of a method of designing a FIR filter providing multiple outputs of the same frequency response and differing phases according to one embodiment.

(15) FIG. 15 is a block diagram of a FIR filter having two outputs according to an alternative embodiment.

DETAILED DESCRIPTION OF THE INVENTION

(16) The present application describes the design and implementation of a finite impulse response (FIR) filter to create a plurality of output signals, each output signal having the same frequency but at a different phase shift from the other output(s). The phase shift is constant and independent of the frequency of the output signal.

(17) It has been found that a FIR filter with multiple outputs of the same frequency and differing phases may be created by selecting different impedance values for each output as explained herein. The ability to maintain a constant phase difference regardless of frequency can be of significant use in situations in which the known technique of maintaining a fixed delay time described above fails to accomplish a desired result. While it is expected that one use of the described apparatus and method will be to generate a number of outputs of equally spaced phase shifts, such equal spacing is not necessary, and any desired set of phase shifts may be generated as will be described.

(18) Returning to the example of FIGS. 1 and 2, as above a fixed time delay will only result in a regular doubling of a clock frequency if the time delay corresponds to one-quarter of the clock period. In the case of the 150 MHz signal of FIG. 2, the 2.5 ns delay is not one-quarter of the clock period, and the zero crossings are not evenly spaced. However, if the second signal can be delayed by a constant phase shift of 90 degrees, regardless of frequency, then a doubling of any clock can be reliably obtained. In FIG. 4, such a 90 degree phase shift results in the signals 202 and 404 of FIG. 4, in which a 150 MHz clock 202, as seen in FIG. 2, has been effectively doubled, with zero crossings that are now uniform, rather than the non-uniform zero crossings of FIG. 2 created by a fixed delay that does not properly correspond to the frequency.

(19) Further, when such a fixed phase shift delay regardless of output frequency is obtained without the need for a control loop and an adjustable delay line, a circuit responds to a change in input frequency more quickly, since it is not limited by loop bandwidth, and generally has less jitter, since the delay elements are fixed and not compromised by an adjustment mechanism. It is believed that such a circuit or method is thus a significant improvement over the prior art.

(20) A finite impulse response (FIR) filter is a type of electronic filter with a broad range of applications. FIR filters are widely used in both digital signal processing and digital video processing, and their construction is well known in the prior art.

(21) One type of FIR filter is a transversal filter, or tapped delay line filter, as shown in FIG. 5. The output of such a filter is a weighted combination of voltages taken from uniformly spaced taps. The filter contains a plurality (here 7 are shown) of unit delay elements U1 to U7, each of which introduces a delay of time t. The filter is considered to be of the Mth order, where M1 is the number of delay elements, so the filter of FIG. 5 is an 8.sup.th order filter.

(22) The output of each of the delay elements U1 to U7 is connected to an element having an impedance value, typically through some buffering means, such as buffers Z1 to Z7; here, the elements having impedance values are shown as resistors R1 to R7. One of skill in the art will recognize that while this example and the following discussion use resistors to indicate the impedance values for purposes of illustration, other circuit elements also have impedance values, for example, capacitors, inductors, depletion mode MOSFETs, and other devices, and any device having an impedance that does not otherwise interfere with operation of the filter may be used to provide the desired impedance values as described herein.

(23) The resistors all share a common output point. As an input signal progresses through the delay elements, each resistor causes the signal on the respective delay element to which it is attached to contribute to the output signal in inverse proportion to the resistor value. Thus, if the resistor is small, the signal on the attached delay element will have a large contribution to the output voltage, while if the resistor is large the contribution to the output will be smaller.

(24) FIG. 6 shows a FIR filter similar to that of FIG. 5, but with a second set of resistors R8 to R14 sharing the same delay line and buffers. The second set of resistors is thus able to provide a second output simultaneously with the first output produced by resistors R1 to R7 without duplicating all of the circuit elements. It will be apparent that more outputs may be added by adding additional sets of resistors, so that a common delay line and buffers may be used to make a multi-output FIR filter.

(25) By properly selecting the resistor values in a set of resistors, a FIR filter is designed to provide an output with a desired frequency response. The resistor values are typically calculated by a software program which takes the desired frequency response as an input. Since the two sets of resistors R1 to R7 and R8 to R14 in FIG. 6 are independent, it is thus possible to use the circuit of FIG. 6 to generate two outputs having different frequency responses to a single input signal.

(26) It is also possible to use the circuit of FIG. 6 to generate two outputs that have the same frequency response. This would normally be considered redundant, but the present invention utilizes the fact that it is possible to generate two outputs having the same frequency response, but also having a different time domain response, i.e., that differ in phase as the signals in FIGS. 1, 2 and 4 differ in phase. In a filter designed as described herein, the phase difference is constant and independent of the output frequency, and thus independent of the input frequency as well.

(27) It is well known that the mathematical basis of a FIR filter is the mathematics of Fourier transforms, and is characterized by a convolution of the successive values of the input signal with a set of values referred to as the impulse response of the filter. The output of the filter is a weighted sum of the current input value and a finite number of previous values of the input. When a delay element operates on an input S.sub.n, the current output is S.sub.n-1, i.e. the input one delay period before. Thus, S.sub.n-k is the filter input at a time T.sub.0 plus (nk)*t, which is also the output of the kth delay element at time T.sub.0 plus n*t. Each buffer/resistor combination Z1/R1 to Z7/R7 acts as a multiplier and multiplies the tap input to which it is connected by a filter coefficient referred to as the tap weight W.sub.k so that the multiplier connected to the kth tap input S.sub.n-k produces an output S.sub.n-k*W.sub.k.

(28) The outputs of the resistors R1 to R7 are summed to produce the filter output. For an Nth order filter, this overall output Y.sub.n is given by the formula:

(29) Y n = W 0 * S n + W 1 * S n - 1 + W 2 * S n - 2 + .Math. + W N * S n - N or Y n = .Math. k = 0 N S n - k * W k

(30) These values of the impulse response, known as coefficients in the coefficient domain, are provided by the resistors in FIGS. 5 and 6; they approximate the Fourier transform of the desired frequency domain response.

(31) For example, as will be understood by one of skill in the art, if the impulse response is Gaussian, such that the coefficient values C(x) of the impulse response are in the form:
C(x)=e.sup.x.sup.2
then the Fourier transform is a sine wave that is also Gaussian with an inverse standard deviation, and of the form:

(32) F ( ) = * e - 2 2
where e is Euler's number (2.718281828), is frequency and is a parameter that determines the center position of the peak and the width of the bell shape of the frequency response.

(33) It can also be seen by one of skill in the art that the standard deviation of the Gaussian response in the coefficient and frequency domains are inversely related, i.e., the parameter a multiplies x.sup.2 in the coefficient domain but divides .sup.2 in the frequency domain. This leads to the observation that as the desired frequency domain result tends to a single point at zero frequency (a Gaussian function of zero standard deviation, known as the Dirac Delta Function), the coefficients extend to an infinite series of unit values, i.e., all 1's.

(34) It is also a well-known property of the Fourier transform that a frequency shift corresponds to a multiplication of the coefficient values by e.sup.ix, i.e., by a complex sinusoidal term. Consequently, the coefficient values representing a single non-zero value in the frequency domain are of the form e.sup.ix, i.e., they are sinusoidal and extend to infinity. Thus, in order to construct a perfect filter, an infinite sequence of coefficient values, i.e., delay elements and resistors, are required.

(35) Since any practical implementation can of course not be of infinite extent, and generally must be quantized in time and amplitude as well, a window function, or tapering function, is used. As is well known in the art, a window function is a function with a value of zero outside some chosen interval. A common type of window function used in filters is a rectangular window, which lets a signal pass through when it is within the frequency bounds of the window, and results in a value of zero outside the window. The use of an appropriate window function not only limits the series of coefficients to a finite number, but can also suppress the occurrence of Gibbs phenomena, the oscillations that occur due to the behavior of a Fourier series at a discontinuity as a result of the truncation of the series.

(36) One particular window function that is well known is a Kaiser window. The Kaiser window is generally considered to be a near perfect window function, and, when applied to a sine wave, is believed to result in as close to an impulse response as is possible. In one embodiment, the Kaiser window may be parameterized by =3. If the Kaiser window function is represented by K.sub.=3(i), then a reasonably sufficient approximation of the Fourier transform coefficients for the Dirac function, indexed by i, is given by:
C(i)=K.sub.=3(i)*sin(**i)
where is the non-zero radian frequency in the frequency domain plot, and is the unit delay in the delay line.

(37) This expression is one degenerate case of the more general expression:
C(i)=K.sub.=3(i)*e.sup.j(i+P)
where j is the square root of 1 and P is an arbitrary phase factor. For any value of P, this expression is also the Fourier transform of the Dirac function.

(38) One of skill in the art or sufficiently versed in mathematics will appreciate that the frequency domain shape approximating the delta function from this windowed approximation is identical for any value of P, although the resulting phase shift of the signal will be different. Thus, if two filters are implemented with coefficients calculated using the same values for the parameters, except for the value of P, they will have identical frequency responses but different phases.

(39) In fact, if the coefficients for two such filters are calculated using P=0 for one, and P=/2 for the other, the two output signals will differ in phase by 90 degrees. This phase difference will be due only to the value of P, and does not depend on the value of or . It is this fact that allows for the creation of specific phase shifts in the output.

(40) P is a scalar quantity with no dimension or units, and may be of any value. It will be appreciated that P operates on the coefficient equation modulo 2, i.e., only the remainder of P after dividing by 2 has any effect, so that it always appears as if P is between zero and 2. It will be apparent that this is due to the fact that if P is equal to 2, then the phase shift will be one complete cycle and it will appear as if there is no phase shift at all.

(41) It should be noted that while this example uses the Kaiser window, there are many possible window functions; for example, another well known window function is the Blackman window. One of skill in the art will appreciate the differences between window functions, and be able to select a suitable window function for a desired application.

(42) As above, one approximation of the Fourier transform coefficients for the Dirac function is given by:
C(i)=K.sub.=3(i)*sin(**i)
Another approximation of the coefficients, having the same frequency response but a phase that differs by 90 degrees, is given by:
C(i)=K.sub.=3(i)*cos(**i)

(43) In one example, FIG. 7 shows plots representing two coefficient sets calculated in this fashion. A first set of a hundred coefficients is derived from the sine approximation, and a second set of a hundred coefficients is derived from the cosine approximation. While the coefficients are discrete numbers, when they are plotted in sequence against 0-100 on the x-axis, graphing software produces the smooth curves 702 for the sine approximation and 704 for the cosine approximation as shown. It can be confirmed that these two coefficient sets produce outputs having the same frequency response, since they are developed from the same sinusoidal frequency, but have a phase difference of 90 degrees.

(44) Once the coefficients for a particular frequency response and different phase shifts have been calculated, a FIR filter is constructed by using a set of resistors, such as resistors R1 to R7 in FIG. 5, which correspond to the coefficients. As is well known in the art, the resistor values are the inverse of the coefficient values. As is also known, where a coefficient, and thus the corresponding resistor value, is negative, the resistor is driven by an inverse voltage by the use of, for example, differential buffers that give an inverse of the signal on the delay line.

(45) FIG. 8 shows the response of the two filters constructed using resistors corresponding to the coefficients of FIG. 7, i.e., again the resistor values are the inverse of the coefficient values. Output signal 802 results from resistors having values that are the inverse of coefficient values contained in curve 702, and output signal 804 results from resistors having values that are the inverse of coefficient values contained in curve 704. As above, the frequency response is identical, but the time domain response is not; rather, there is a phase shift of 90 degrees between the two outputs, since the value of P differs by 90 degrees (/2) in the mathematical calculation of the coefficients as above.

(46) In the example of a clock multiplier above, the output signals of FIG. 8 may be fed to a comparator to determine the zero crossings. As is known in the art, the subsequent gating of the comparator outputs may be used to generate twice as many equally spaced zero crossings as are in the clock input.

(47) In this example there are two outputs; however, the described technique may be used to generate any arbitrary number N of differing phases by using an appropriate number of values of P. This is done by calculating a set of coefficients Cj for each separate output according to the equation:
C.sub.j(i)=W(i)*sin(**i+P.sub.j)
where W is the selected window function, is the desired center frequency of the filter, is the unit delay, i is the index into the coefficients, and j goes from 0 to N1.

(48) Further, while in this example the phase difference is 90 degrees, any desired phase difference may be obtained by appropriate selection of the value of P. In the case of a clock multiplier, a clock signal may be multiplied by a desired number by selecting the desired number of values of P evenly spaced between 0 and 2, i.e., 0 to 360 degrees. While it may appear to be easiest to multiply a clock signal by a number by which 360 degrees is neatly divided, this is not necessary; using the described technique, it is easily possible to multiply a clock signal by any number even if that number is not a factor of 360, such as, for example, 11 or 17.

(49) In practice, the coefficients for a FIR filter do not have to be calculated from original mathematical principles as described above, but rather can be the result of an iterative method using an approximation algorithm of some type. One such well known algorithm is the Parks-McClellan algorithm, often considered to be a standard method of FIR filter design. Such approximation algorithms are well known and available in computer code and software that is commercially available, such as MATLAB from MathWorks.

(50) Such iterative methods create only a single FIR filter, rather than a set of filters having the desired fixed phase relationships. Further, software such as MATLAB does not allow for the entry of a phase factor P. Thus, in order to obtain the desired multiple outputs of different phase it is necessary to convert the single filter output of an iterative method into multiple filters having identical frequency responses and different phase outputs.

(51) One way of accomplishing this relies on the property of Fourier transforms that a frequency shift in the frequency domain corresponds to multiplication by a sine wave in the coefficient domain. It has been observed that the actual phase of the sine wave used to perform this frequency shift makes no difference to the frequency domain result, but it does affect the time domain result.

(52) As one example, FIG. 9 shows a curve 902 which is again the result of smoothing a set of discrete coefficients, and the resulting frequency response 904 from those coefficients, from an iterative method for a low pass filter operating at 100 MHz and passing a signal up to 4 MHz. This filter may be converted into a band pass filter by multiplying the coefficient values by a sine function. Since the filter operates at 100 MHz, it thus has a delay of 10 ns in each coefficient.

(53) Suppose the coefficients of FIG. 9 are to be multiplied by a sine wave of 20 MHz. Such a sine wave is represented as sin (2*20 MHz*10 ns*i), or simply sin (1.2566*i). Multiplying the coefficients C(i) by this results in
C(i)=C(i)*sin(1.2566*i)
and in the curve 1002 containing the resulting coefficients and the response 1004 from those coefficients shown in FIG. 10. (As shown in FIG. 10, the coefficients are also multiplied by {square root over (2)} to compensate for an amplitude shift and keep the rejection level the same on FIGS. 9 and 10, although this is not strictly necessary.) It will be seen in FIG. 10 that, as expected, the multiplication by a sine wave in the coefficient domain has resulted in a 20 MHz shift in response in the frequency domain as described above.

(54) As will be expected, multiplying the coefficients by the cosine has the same effect in the frequency domain as multiplying by the sine. However, in the time domain, there is a phase difference between the sine and cosine shifted filters. FIG. 11 shows the output of the sine and cosine shifted filters, both the raw or unfiltered output signals 1102 (sine filter) and 1104 (cosine filter), and the filtered or smoothed output signals 1106 (sine filter) and 1108 (cosine filter). The phase difference is clear. Thus, even when the coefficients are generated non-analytically, multiple outputs having a common frequency response with predictable phase shifts can be created by employing a frequency shift.

(55) From this it may be seen that a plurality of FIR filters sharing a delay line and having outputs with the same frequency response and different phases may be constructed by using coefficients derived from the equation:
C.sub.j(i)=C(i)*sin(**i+P.sub.j)
where C(i) is the set of coefficients from the iterative method, and the other values are as stated above.

(56) As shown in the example above, the initial coefficients may be determined for a low pass filter, and the frequency shift equal to the desired center frequency of a band pass filter. However, this is not required, and the coefficients may be first determined for a band pass filter which is then shifted in frequency from its center frequency to a desired center frequency of the phase-shifting FIR filter.

(57) Returning to the example of a computer processor having a primary clock of 66 MHz, it should be noted that due to the vagaries of semiconductor manufacture the clock signal on a particular processor chip may typically vary as much as plus or minus 20 percent or more from the nominal value, so that the expected 16 ns interval between cycles could be closer to 10 or 20 ns in a given instance. Thus, it is desirable to allow for a clock that runs from, for example, 40 MHz to 100 MHz.

(58) In such a case, a suitable filter might be designed by obtaining a set of coefficients from MATLAB, or some other iterative method, for a 30 MHz low pass filter, and then multiplying the coefficients by a sine wave of 66 MHz (the desired center frequency) to obtain a bandpass filter that allows signals between 36 MHz and 96 MHz. Again, multiple outputs of fixed phase differences may be obtained by multiplying the coefficients by sine waves having a different value of P, thus insuring the desired clock multiplier regardless of the actual frequency of the original clock signal as long as it is within the limits of the bandpass filter.

(59) There is yet another way of generating two coefficient sets that will produce the same frequency response but with different phases in certain situations. This method also has some advantages in building a practical implementation, as the coefficients of the two filters involved will have some similarity.

(60) In the example of the mathematical derivation of coefficients described above, there are two sets of coefficients described by:
C.sub.0(i)=W(i)*sin(**i+P.sub.0)
and
C.sub.1(i)=W(i)*sin(**i+P.sub.1)
where P.sub.0 and P.sub.1 differ by /2. (This is a generalized equation; in the above example, more specifically P.sub.0=0 and P.sub.1=/2.)

(61) If the length of the filter is additionally constrained so that the coefficient sinusoidal waves end on a quarter-wave boundary (i.e., that the length contains just some integer M and one-quarter cycles), the coefficient sets will appear as shown in FIG. 12. One coefficient sine wave 1202 starts at the beginning of a cycle, i.e., at a rising zero crossing and ends after one-quarter of a cycle. The other coefficient wave 1204 starts one-quarter of a cycle earlier with the last quarter of a cycle and ends at the end of a cycle, i.e., at a falling zero crossing. Reversing one wave in its entirety results in the other wave.

(62) Thus, one coefficient set is the same as the other set but reflected about the Y-axis, i.e., the values are the same but one set takes the coefficient values in one order and the other set takes the same values in reverse order. When a window function is applied, the resulting coefficient values may in one example be as seen in FIG. 13. Since a window function is also symmetrical about the Y-axis, the similarity of values is preserved.

(63) This reflecting method is limited to making only two filters differing in phase by /2, or 90 degrees, but it allows for simple construction of a circuit, as the construction of two identical sets of components is easier than arbitrary sets of elements. The two identical sets of elements that make up the two FIR filters, generally sets of resistors, in one instance are connected to the delay line in one order, and in the second instance are connected to the delay line in reverse order. Thus, for example, with this method, in FIG. 6 resistors R1 through R7 will have values corresponding to a set of coefficients, while resistors R8 to R14 will have the same values in reverse order, so that the value of R1 is the same as the value of R14, R2 is the same as R13, etc.

(64) FIG. 14 is a flowchart of one embodiment of a method of designing a FIR filter as described herein. First, a desired frequency response is selected at step 1401.

(65) Next, at step 1402 a plurality of sets of Fourier coefficients are determined, one for each desired output, each set of coefficients resulting in the same frequency response as the other sets, but each resulting in a different desired phase of the output signal. As above, any arbitrary number of outputs may be selected.

(66) At step 1403, sets of resistor values are determined, each set of resistor values corresponding to one of the sets of Fourier coefficients, and each resistor value in a set being the inverse of a different coefficient in the corresponding coefficient set.

(67) Each set of resistors is attached to the delay line at step 1404, and a separate output connection created for each set of resistors at step 1405 so that each output of different phase may be separately accessed.

(68) As described above, the sets of Fourier coefficients may be determined in various ways at step 1402. In one embodiment, the sets of coefficients are each calculated mathematically by including a different phase constant in the calculation of each set. In another embodiment, one set of coefficients is determined by an iterative method, and then that set of coefficients is multiplied by one or more sine waves of different phases to obtain the other sets of coefficients. The iterative method may be performed by software such as, in one example, MATLAB. In still another embodiment, the length of the filter is constrained so that the coefficient sinusoidal wave ends on a quarter-wave boundary, a first set of coefficients is determined, and a second set of coefficients is derived by reversing the order of the first set of coefficients.

(69) The disclosed system and method has been explained above with reference to several embodiments. Other embodiments will be apparent to those skilled in the art in light of this disclosure. Certain aspects of the described method and apparatus may readily be implemented using configurations or steps other than those described in the embodiments above, or in conjunction with elements other than or in addition to those described above.

(70) For example, as discussed above, the elements providing the desired impedance values need not be resistors, but may be, for example, capacitors, inductors or FETs connected as pass devices, depletion mode MOSFETs, or other devices, with the values of the elements (such as capacitance, inductance, etc.) selected to provide the desired impedance values. It will further be understood by those skilled in the art that while the above description refers to multiple sets of resistors sharing a single delay line, this is not strictly necessary, and two or more similar delay lines could be used instead if appropriate.

(71) Also, while multiple sets of resistors sharing a single set of buffers has been described, there could alternatively be more than one set of buffers. For example, referring to FIG. 6, there could alternatively be one set of buffers connected from the delay line to resistors R1 to R7 and another set of buffers connected from the delay line to resistors R8 to R14. Such an alternative embodiment with two sets of buffers is shown in FIG. 15. In other embodiments with more than two sets of resistors there could be more than one set of buffers, but with one or more of the sets of buffers sharing multiple sets of resistors.

(72) Still further, while individual resistors providing the desired resistor values are shown herein, this is not required. In some cases a desired resistor value may be easily obtained from a single resistor, while in other cases it may be easier and/or more cost effective to obtain a desired resistor value from some series and/or parallel combination of a plurality of resistors. One method of constructing resistor values and other components from a plurality of repeated identical elements that may be used in connection with the invention herein is described in commonly-owned U.S. patent application Ser. No. 13/414,522, filed on Mar. 7, 2012, now U.S. Pat. No. 8,453,097, entitled System and Method for Series and Parallel Combinations of Electrical Elements, the contents of which are incorporated herein.

(73) In still other embodiments, resistors attached to the delay line at different points may be coupled to an output through an intermediate node rather than directly connected to the output, again possibly for the easier or more cost effective obtaining of the desired impedance values by sharing. How to calculate the effective resistance value from individual resistors connected in series and parallel in these situations is well understood by those of skill in the art.

(74) Additionally, while the description herein refers to multiple sets of resistors having the same frequency response and different phases, it is equally possible to have two (or more) pluralities of sets of resistors (and the associated buffers) sharing a single delay line, each plurality of sets of resistors having a common frequency response different from another plurality of sets of resistors, but the outputs of each set of resistors in a plurality of sets differing in phase from other sets of resistors in that plurality of sets.

(75) One of skill in the art will also appreciate that the above description does not specify precisely what form of data progresses down the delay line. In the use of the described method and apparatus as a clock multiplier, the data may conveniently be a digital signal having only two values, since in such a case the delay elements may be simplified by simply using a series of inverters, which each have a finite delay.

(76) In other cases, however, the data may be an analog signal. The analog signal is then connected to the various sets of resistors or other impedance devices constructed as described herein, and the resulting output signals are a set of filtered analog signals which still maintain a precise phase difference. The outputs thus represent a series of time-delayed versions of the filtered input signal, and the circuit is an analog delay generator, although the delay line is processing a digital signal.

(77) Still further, the input may be analog data that is represented as a pulse width modulation (PWM) or sigma delta (SD) stream of digital data, and thus has a frequency component of the continuous analog signal present in the digital data stream. In these cases, although the delay line only provides digital outputs, the filter may be designed to select the analog signal that is present in the data stream and derive various phase shifted versions of that analog signal. One of skill in the audio field will appreciate that this is how Class-D audio uses PWM to impress the continuous audio signal onto the digital data stream.

(78) Finally, there are in the art digital signal processing software engines which are entirely virtual, i.e., in which no physical filter is designed or built, but rather is simulated on a computer processor. Such software typically operates on a set of data elements that represent an input signal at successive points in time; the set of data elements thus implicitly includes the delay times of the delay elements of a particular delay line in a FIR filter. A frequency response of a FIR filter is selected by a user, for example, by means of an input.

(79) Such software engines may be used to implement the methods described herein. In one embodiment, two or more sets of weights are selected and applied to the set of data elements. Each set of weights is selected so that the sum of the weighted data elements is a signal of the selected frequency response; however, the sum of the weighted data elements using one set of weights has a different phase from the sum of the weighted data elements using another set of weights. One of skill in the art will appreciate that each set of weights is thus equivalent to the impedance values that would be used to obtain a selected output signal in an actual FIR filter, so that weighting the data elements is equivalent to the weighting of the delayed input signal in the actual FIR filter.

(80) The outputs created by summing the weighted data elements are thus the same as those that which would be obtained from an actual filter constructed with the implicit delay times of the set of data elements and impedance values which are equivalent to the selected weights. Such software is contemplated as a possible embodiment of the methods described herein and considered to be within the scope of this disclosure.

(81) Other uses of the described method and apparatus are possible. For example, sampling a signal at 1 GHz requires that a sample be taken every 1 ns, but a 1 GHz clock is difficult to make by prior art methods for the reasons discussed above. Using the technique described herein, a clock multiplier may start with a clock of 10 MHz, which is comparatively simple to make, to effectively obtain a 1 GHz clock without the use of, for example, PLL's. Those of skill in the art will appreciate other applications of the described method and apparatus.

(82) It should also be appreciated that the described method and apparatus can be implemented in numerous ways, including as a process, an apparatus, or a system. The methods described herein may be implemented by program instructions for instructing a processor to perform such methods, and such instructions recorded on a computer readable storage medium such as a hard disk drive, floppy disk, optical disc such as a compact disc (CD) or digital versatile disc (DVD), flash memory, etc. The methods may also be incorporated into hard-wired logic if desired. It should be noted that the order of the steps of the methods described herein may be altered and still be within the scope of the disclosure.

(83) These and other variations upon the embodiments are intended to be covered by the present disclosure, which is limited only by the appended claims.