The present invention relates to a method and apparatus for performing sample rate conversion. In particular, the present invention is directed toward a technique and apparatus for combining digital sample rate conversion with digital filtering.
Sample-rate conversion (SRC) refers to the process of translating a sequence of discrete data samples with a certain sampling rate into another sequence with a different sampling rate, while preserving the information contained in the original sequence. Sample rate conversion can be a relatively simple technique where the two sample rates are related by a fairly small integer ratio. For example, if the ratio of sample rates is 4:5, the input signal only needs to be upsampled by a factor of four and then, after appropriate filtering, down-sampled by a factor of five.
Low pass filter 120 may be used to eliminate spectral “images” produced when upsampling. Such images are illustrated in
In the example given above for a ratio of sample rates of 4:5, M would equal 4 and N would equal 5. Such a Prior Art sample rate conversion technique may be suitable for relatively simple rate conversions. However, not all scenarios where sample rate conversion is desired have such simple sample rate ratios. For example, when converting by more drastic ratios (e.g., 124:359) the amount of processing required to upsample and then downsample may be prohibitive.
As compared to the simpler scenario where the sampling rates are related by a relatively simple ratio, the term “asynchronous sample-rate conversion” is often used to signify situations where the ratios are rather ill-defined numbers such that their least common multiple is a very large number. Asynchronous sample rate conversion is particularly applicable in cases where data is at the “same” sampling rate, but created with a different clock crystal, and thus at a slightly different sampling frequency. Thus, one set of data might have a sample rate of a “fast” 48 KHz and another might have a sample rate of a “slow” 48 KHz. Such ratios like this that are close to 1:1, but not exact, fall into the category of “asynchronous sample-rate conversion.” Asynchronous sample-rate converters are commonly used when bridging two systems that are on different sampling rates and/or master operating clocks.
Additionally, in the field of audio, there are various standards that utilize different sampling rates such as 32 KHz, 44.1 KHz, 48 KHz, and so on, and sample rate converters are commonly used to interconnect different systems with the different standards.
There are times when a digital data stream needs to be converted to a different sampling frequency and in addition, be filtered in some way. One way to accomplish this task would be to have a sample rate conversion block followed by (or preceded by) a filter block. Such a setup would look like one of the block diagrams illustrated in
Applications for such sample rate conversion and digital filtering are relatively common, particularly in the digital audio arts. The Prior Art solutions of
In the present invention, the digital filtering and sample rate conversion blocks are combined in order to reduce hardware and/or computational complexity. The present invention accomplishes both tasks using a novel filter design to perform sample rate conversion. The filter may also be used to perform other digital filtering functions, thus providing a single hardware/software technique to perform both functions.
In the present invention, the process of sample rate conversion may be combined with another digital filter. Two embodiments may be used to achieve this function. In a first embodiment, the filter may be clocked at the output data rate (i.e., the data rate after rate conversion). In a second embodiment, the filter may be clocked at the input data rate (i.e., the data rate before rate conversion). In both cases, the filter's structure is modified in a novel way to handle the rate conversion. The present application is directed toward a sample-rate conversion filter using the output data rate clock as the filter clock.
The technique of the present invention may be used to modify any low pass Infinite Impulse Response (IIR) filter with SRC modification terms to remove spectral images that are associated with sample rate conversion—without increasing the number of states in the original filter. Thus, an IIR filter used for other filtering purposes (e.g., audio processing or the like) can double as a sample rate converter, based on this invention.
The present invention includes a method of converting input data samples provided at a first sample rate to output data samples at a second sample rate unequal to the first sample rate. An IIR filter, whose internal states are updated at the second sample rate, filters the input data samples to produce output data samples at the second sample rate. If a new input sample arrives at a time differing from the update of the IIR filter's internal states, then at least one internal state of the Infinite Impulse Response filter may be modified to account for the time difference.
In some implementations, at least one internal state of the IIR filter is modified only when the input value changes when the input arrives at a time different from the update of the IIR filter's internal states. In other implementations, at least one internal state of the IIR filter is always modified when the input arrives at a time different from the update of the IIR filter's internal states, regardless of whether the input changes value at that time.
In a preferred embodiment, the input changes value no more than once between updates of the IIR filter's internal states.
The IIR filter's internal states may comprise a vector X representing current states, vector X′ representing what those states will be at the next point in time, vector U representing an input to the filter, and vector Y representing output of the filter, and matrices A, B′, C, and D determine how the internal states are updated and how outputs are made from the internal states, wherein state variable descriptions are represented as
X′=AX+B′U
Y=CX+DU
X=z−1X′
wherein the B′ matrix may comprise a column matrix whose elements are polynomials in z−1. Furthermore, the polynomials in the B′ matrix may be of increasing degree with respect to the coefficients of z−1.
In one embodiment, the sample rate conversion technique of the present invention may be combined with integer interpolation or decimation stages in order to achieve further sample rate conversion. This embodiment may be useful to guarantee that the input changes value no more than once between updates of the IIR filter's internal states. It may also be useful since creating a higher sampling rate into the IIR filter generally reduces the complexity or accuracy required of the SRC modification term(s).
Basic information on the design and operation of IIR filters can be found, for example, in “DESIGN OF IIR FILTERS” (Samir V. Ginde & Joseph A. N. Noronha), Virginia Polytechnic and State University, (www.ee.vt.edu/˜jnoronha/dsp_proj2_report.pdf), incorporated herein by reference. Further basic information on IIR filters can also be found at “Infinite Impulse Response” (http://en.wikipedia.org/wiki/Infinite_impulse_response) from Wikipedia, the free encyclopedia, also incorporated herein by reference.
Referring to
In the diagram of
X′=AX+BU
Y=CX+DU
X=z−1X′
State variable descriptions of filters (also known as “internal descriptors”) keep track of all past history via states. The vector X represents the current states. The vector X′ represents what those states will be at the next point in time. The vector U represents the input to the filter, while the vector Y represents the output of the filter. Matrices A, B, C, and D determine how the states are updated, and how the outputs are made from the internal states.
From the IIR filter in
and U and Y are both 1×1 matrices containing the kth input and output.
This general filter structure can be used in a variety of ways, but in one embodiment of the present invention, the filter may be a delta-sigma modulator, where the input u(k) may be considered a “high-rate” PCM digital audio stream, and the output y(k) feeds a DAC with a low number of input bits. As used in the present application, the term “high-rate” may mean that the PCM audio might originally be sampled at 48 KHz, but for the purposes of illustration may be processed to convert it to a 6.144 MHz (“high -rate”) stream.
Referring to
For example, filter 1730 in
The ratio of the two aforementioned clock signals 6.75/6.144 is equal to 1125/1024, the factor by which the original data rate needs to increase to make it work with a 6.75 MHz clock. Using traditional sample rate conversion techniques, the data can be upsampled by M=1125 and after appropriate filtering, downsampled by N=1024. However, the ratio of 5/4 will be used in the present discussion for the sake of example.
In the initial examples, the high rate PCM stream is 4 MHz and the delta-sigma filter is clocked at 5 MHz. These numbers are not supposed to approximate anything in a real application, but rather to just make the example easier to follow and illustrate.
In
Furthermore, the u(k)j's that are not in boxes are a conceptual tool. In order to accomplish the rate conversion, it is hypothetically assumed that the incoming data has been sampled and held at a rate 5 times faster than the already “high-rate” PCM data. Thus, u(k)j=u(k) for every j. This relationship is required to make the following mathematical derivations.
The original state variable descriptions can be represented as follows:
X′=AX+BU
Y=CX+DU
X=z−1X′
Those equations describe an original system at an original sampling rate which is equivalent to a new system whose sampling frequency is 4 times as fast as the original system, when the last equation is changed to X=z−4X′. By equivalent, it is meant that the frequency response of the original system is the same as the frequency response of the new system for all frequencies.
For example, if the original frequency response looks as depicted in
Operating as if the unit delays in the original filter of
In using the original u(k)'s, at the time of each output y(k), the internal state variables would be updated via the equation X′=AX+BU. Because of the rate differences between the input u(k) and the outputs y(k), what the value of BU should be is unclear, as is illustrated in
However, and noting again that this is a conceptual exercise, if the internal states could be updated at fractional steps in time, then the BU would not be ambiguous, as the u(k)j's could be used as inputs. Updating X′ at fractional points in time is easy by taking fractional powers of the matrix A, as long as there are inputs which correspond to the fractional time spacing. Thus, a motivation is provided for the conceptual u(k)j's.
The four fractional updates between y(k) and y(k+1) may look as follows:
X1=A1/4X0+BU
X2=A1/4X1+BU
X3=A1/4X2+BU
X4=A1/4X3+BU
wherein X0 corresponds to the time X in the original state equations and X4 corresponds in time to the X′ in the original state equations, and U is the relevant input for that time step. Also X0=z−1X1 and X4=z−4X0
For an explicit example between y(0) and y(1), this means that:
X1=A1/4X0+Bu(0)0
X2=A1/4X1+Bu(0)1
X3=A1/4X2+Bu(0)2
X4=A1/4X3+Bu(0)3
From a z-transform point of view (in the conceptually upsampled domain) this may be represented as:
X1=A1/4X0+BUz−3
X2=A1/4X1+BUz−2
X3=A1/4X2+BUz−1
X4=A1/4X3+BU
One can substitute and simplify the above equations as follows:
X4=AX0+(A3/4Bz−3+A1/2Bz−2+A1/4Bz−1+B)U
Or, rewriting everything in the original format, yields:
X′=AX+(A3/4Bz−3+A1/2Bz−2+A1/4Bz−1+B)U
Y=CX+DU
X=z−4X′
For a rate conversion ratio of 1:1 (i.e., no real change of rate), the above equations produce output, which differs from the regular non-modified internal state update equations. However, when properly implemented, the difference is negligible, and in fact, this invention derives a general framework for adding “SRC modification terms” to an IIR filter. There are many changes which can be made to the invention, which are done on the basis of performance requirements, but do not depart from the intent or scope of the original invention.
To simplify matters and avoid complex matrix equations, the following are some examples of the above derivation with explicit matrix values shown.
Referring back to
Next, fractional powers of A need to be considered with the new X′ developed. Fractional powers are required to update some state variables. Here is A3/4:
The first column of A3/4 (or any of the fractional powers of A for that matter) is relevant, as the multiplication with B picks off the first column. If instead of using A with the cj feedback terms, A is used without them. Here is A without the cj's:
And here is the fractional power for this modified A:
Comparing the first column of this matrix with the first column of the other A3/4 matrix above, values are seen as “close.” The meaning of “close” is ultimately determined by the performance of the SRC, namely the attenuation of spectral images. Therefore, the feedback terms when calculating partial powers of the A matrix are not always eliminated. However, a fundamental concept of this invention, namely finding suitable approximations for complex calculations, is illustrated. To help ensure that the transfer function will be optimal, the feedback coefficients must remain. In some cases, the feedback coefficients are not relevant; in other cases, they are.
For the present example, the approximation gives a sufficient amount of attenuation. Thus, the following matrices are fractional powers of the A matrix without the cj's:
With the above information, the equation for X′ can be updated by defining a new B′ as follows:
B′=(A3/4Bz−3+A1/2Bz−2+A1/4Bz−1+B)
And explicitly:
Thus, the internal state variables can be updated with X′=AX+B′U, and the elements of B′ define the SRC modification terms which are applied to the original IIR filter.
The A matrix in the above state update equation does have the cj's in it (they were removed temporarily to help calculate B′). In view of he conceptually upsampled domain (where real u(k)'s only arrive every fifth conceptual time slot), the only remaining item is to figure out how to handle the intermediate time slots for which B′ calls, without explicitly having to upsample. (e.g., maintaining this upsampling at a conceptual level, rather than actually implementing in hardware.)
At times, all of the intermediate samples will have the same value. Referring back to the diagram of
Thus, when the values do not change, then the polynomial coefficients in B′ simply get added together, multiplied by the single relevant sample value. When the values do change, one portion of the polynomials in B′ gets added together, multiplied by one sample value, and the remaining portion of the polynomials gets added together, multiplied by the other sample value.
The B′ matrix is in the form of a column matrix whose elements are polynomials in z−1. The matrix entries are polynomials with coefficients that determine curves of increasing degree. The first element is a polynomial whose coefficients of z−1 are constant (degree 0), the second element is a polynomial whose coefficients of z−1 are linear (degree 1), the third element is a polynomial whose coefficients of z−1 are quadratic (degree 2), and so on. The “degree” referred to here is not a maximum power of z−1, which is 3 for all the above polynomials. Rather, the “degree” of interest is the degree of the curve that passes through the points indicated by the coefficients of the polynomials in z−1.
These polynomials are exact for this example (with the feedback terms removed while calculating B′), but the concept is readily extended to arbitrary curve fitting. A key issue is that a curve fit to the coefficients of z−1 in the B′ matrix. The SRC performance will ultimately be determined by the quality of this curve fit. For most common filters used in audio applications, an array of polynomials of increasing degree works, but the invention should not be construed to be limited to such a case. In fact, when using table lookup, the curves need not be polynomials at all. For example, they could be exponentials. For this derivation, it is convenient to continue using polynomials.
Because of the form of the polynomials, the conceptual upsampling can be extended to an “infinite upsampling”—i.e., the polynomials become continuous curves-and the summation of pieces of those curves turns into continuous integration. When the input changes value at most once between updates of the IIR filter's internal states, a first section of the curves will be integrated and multiplied by the relevant sample value, and the remaining section of the curves will be integrated and multiplied by the other relevant sample value.
For example, for the B′ previously derived, the continuous-time constant curve is 1, and integrating it from −∞ to t gives t (plus a constant). The continuous-time linear curve is −t, and integrating it from −∞ to t gives −t2/2 (plus a constant). The continuous-time quadratic curve is t/2+t2/2, and integrating it from −∞ to t gives t2/4+t3/6 (plus a constant), and so on. (As will be shown shortly, the constants are not relevant because the differences of the integrated values are the ones of interest.)
When the input changes value at most once between updates of the IIR filter's internal states, then integration is performed from 0 to τ and from τ to 1—assuming τ defines the time the input arrives relative to when the IIR filter's internal states are updated—and multiply each result by the relevant input sample value. (Better performance may be obtained by integrating from −0.5 to τ and from τ to 0.5 because this is closer to an “identity” transformation when the rate conversion ratio is 1:1.) The notation Ii(t) is defined to mean the integration from −∞ to t for the ith curve. Then the following equation must be calculated:
u(k)[Ii(t)−Ii(0)]+u(k+1)[Ii(1)−Ii(τ)]=u(k+1)[Ii(1)]−u(k)[Ii(0)]+Ii(τ)[u(k)−u(k+1)]
As previously mentioned, he invention is not limited to handling just one change in input value per update of the filter's internal states. However, imposing such a constraint can make implementation easier. If more than one input change is allowed per filter update time, then more regions of integration are required, along with more delay elements, and more adders and multipliers.
Furthermore, as will be shown later, it may be possible to eliminate or simplify some of the modification terms, and still achieve the desired performance.
The above paragraphs derive the math for doing sample rate conversion inside the original filter. From a state description of a filter one can calculate the transfer function by:
H(z)=C(zI−A)−1B+D
The above equation is very general, and it does not matter what form any of the matrices are in. A very specific set of matrices was previously presented, where B has only one nonzero element, and it is in the first position. Consider the equation for H(z) when B is a general column matrix. In that case, the equation can be rewritten:
H(z)=C(zI−A)−1B0+C(zI−A)−1B1+C(zI−A)−1B2+C(zI−A)−1B3+C(zI−A)−1B4+D
B has now been separated into five pieces (which is valid because of matrix math properties), each with only one nonzero element. For example, B0 has the first element from B in the first location and zeros everywhere else. B1 has the second element of B in the second position and zeros everywhere else, and so on. Thus, to calculate the overall transfer function, the individual transfer functions can be calculated based on which state the input goes into, and then by adding the individual transfer functions together. (D is zero for this case, but if it were not, then it could be added to the end as shown above.)
This way of calculating is useful because the B′ created has nonzero elements in each position. To calculate the overall transfer function of the entire SRC, the following equation needs to be calculated:
H(z)=C(zI−A)−1B′+D
This calculation can be sub-divided. For example, instead of using the B′ derived above (with the polynomials), a B that contains a single “1” in each position can be used. This sub-division of calculations will create individual transfer functions that represent what happens when an input goes into each one of the states. Furthermore, the transfer functions can be calculated for each of the polynomials in the B′ matrix. (In other words, those transfer functions are simply the polynomials themselves.) The product of these two transfer functions (for each state) gives the overall transfer functions for an input going into each state. The sum of those products gives the overall transfer function for the entire SRC filter.
Referring to
Examining the transfer functions at a high level is useful because it gives a baseline for performance if any piece of the system is eliminated. For example, removing the last polynomial input will limit performance to around 140 dB attenuation (for a certain rate conversion ratio whose spectral aliases land on the high points in the transfer function). Removing the last two polynomial inputs will limit the performance to around 115 dB attenuation, and so on. (The reason for this limitation is that these plots show the response before the conceptual downsampling-which of course will provide aliased images of the spikes all across the band). This examination is a good place to start when preparing to implement this structure in hardware. It gives baseline (i.e., best-case) performance before ever considering finite precision effects.
The frequency axis on the above plots is overstated by the amount conceptually upsampled. In other words, the upsampling will not be explicitly performed, as the integration along partial curves (multiplied by relevant sample values) will do the sample rate conversion that is needed. However, presenting the transfer functions in this upsampled space is the easiest because at this upsampled rate, the input and output are at the same rate. Without the conceptual upsampling, the input and output are at different rates, which requires yet another level of conceptualization. (However, aliasing will occur upon downsampling.)
Additionally, with the feedback terms removed from A when calculating B′, an overall transfer function is obtained with three new zeros as illustrated in
Finally, in working on finite precision effects, individual transfer functions can be examined separately to get baseline (i.e., best-case) performance, just as was done when eliminating pieces of the system previously.
To implement the embodiment of the present invention, one must create hardware that performs the equations:
X′=AX+BU
Y=CX+DU
X=z−1X′
In particular, the equation for Y is straightforward because the filter runs at the output clock rate, (and D is 0). The equation for X′, however was not initially straightforward, so a modified B′ is developed, which allows X′ to be updated at the output clock rate, even though the input is at a different rate.
The example here showed a 5:4 rate conversion and a 5th order IIR filter. However, neither the rate conversion ratio, nor the order of the IIR filter is constrained by this invention. Any rate conversion can be done, and different conversion rates are accomplished by different amounts of integration at each output time step. Even for a constant rate conversion ratio, the amount of integration along each curve varies with time. A control module may be used to handle this situation.
As illustrated in the examples herein, the technique of the present invention may be used to modify any low pass IIR filter with SRC modification terms to remove images that are associated with sample rate conversion—without increasing the number of states in the original filter. Any sample rate conversion involves an explicit or implicit upsampling, low pass filtering, and downsampling, and in this regard, the present invention is no different. However, in the present invention, modification terms can be added to an existing filter, which adds SRC functionality to that filter, without increasing that filter's number of states. Thus, a filter used for other filtering purposes (e.g., audio processing or the like) can also be used as a sample rate converter, without increasing the number of states of the filter.
While the preferred embodiment and various alternative embodiments of the invention have been disclosed and described in detail herein, it may be apparent to those skilled in the art that various changes in form and detail may be made therein without departing from the spirit and scope thereof.
It should be noted that the examples illustrated herein should in no way be interpreted as limited the spirit and scope of the present invention in any way. The specific examples and implementations are shown here for purposes of illustration only. And while in the preferred embodiment the number of states in the filter may remain unaltered when modified to perform sample rate conversion, in alternative embodiments, additional states may be added without departing from the spirit and scope of the present invention.