# Patent

## Title
Method and apparatus for performing digital pre-distortion

## Abstract

A pre-distorter that compensates for amplitude and phase distortion created by an amplifier. During a training session, the amplifier is stimulated with input signals of pre-selected amplitude and phase at various temperatures and the amplifier output is captured and converted into data sets. Polynomials are then fitted to the data sets and inverses of the polynomials are determined. The coefficients of the inverse polynomials are then saved for each temperature. During operation, the amplifier temperature is predicted based on the amplifier input signal and the coefficients associated with the predicted temperature are selected to be applied to the input signal to compensate for amplitude and phase distortion caused by the amplifier.

## Background
CROSS REFERENCE TO RELATED APPLICATIONS
This application is a divisional application of Ser. No. 10/919,029, filed on Aug. 16, 2004, now U.S Pat. No. 7,193,461 which is incorporated herein by reference in its entirety.


TECHNICAL FIELD OF THE INVENTION
The present invention generally relates to compensating for non-linearities in amplifiers and, more particularly, to a method and an apparatus for performing digital pre-distortion in an amplifier to compensate for the non-linearities in the amplifier.
BACKGROUND OF THE INVENTION
A typical power amplifier does not behave linearly. There are occasions when the power amplifier gives compression to the output of the amplifier and there are occasions when it gives expansion to the output. Typical signal detectors that receive and decode these amplified signals cannot operate in such a non-linear fashion. Therefore, it is necessary to linearize the amplifier output by applying inverse distortion at the input to the power amplifier to undo the compression or expansion produced by the amplifier. Digital pre-distorters are commonly used with power amplifiers to invert the power amplifier saturation characteristics by expanding the saturation regions and compressing the expansion regions in the power amplifier characteristics curve.
FIG. 1 is a block diagram of a typical digital pre-distorter 1 and power amplifier 2. The input signal received by the pre-distorter 1, VIN, is pre-distorted by the pre-distorter 1 into a pre-distorted signal, VPD. The pre-distorted signal VPD is such that the non-linearities of the power amplifier 2 cause the power amplifier 2 to produce an output signal, VOUT—TARGET, that is closer to what an ideal output signal of the power amplifier 2 should be.
The basic principles of a typical digital pre-distorter can be seen from the graph shown in FIG. 2. In FIG. 2, the vertical axis represents the voltage output of a typical power amplifier and the horizontal axis represents the voltage input to the power amplifier. The linear operation of the power amplifier is represented by the following equation:

y=mx+c,

where m is the linear gain of the power amplifier and c=0 is the output intercept point. This equation corresponds to line 3 in FIG. 2, which has a slope equal to m. The curve 4 in the graph of FIG. 2 corresponds to a non-pre-distorted output characteristic curve for a typical power amplifier. The non-linearities of the power amplifier result in amplitude-to-amplitude (AM/AM) distortion as well as amplitude-to-phase (AM/PM) distortion, which results in curve 4 being non-linear.

A digital pre-distorter actually increases or decreases the amplifier input magnitude to linearize the amplifier output, i.e., to make curve 4 look more like line 3. The digital pre-distorter asserts a negative phase distortion to mitigate the phase distortion introduced by the power amplifier. It can be seen from FIG. 2 that in order to increase the amplifier output magnitude by ΔVOUT so that Vout_target=Vout_nopd+ ΔVout, the amplifier input magnitude needs to be increased by ΔVIN so that Vpd=Vin+Δ Vin. The pre-distorter performs these functions by first fitting an odd ordered polynomial to the power amplifier magnitude characteristic curve (e.g., curve 4 in FIG. 2), calculating the inverse of the polynomial, and then applying the coefficients of the inverse polynomial to the amplifier input in the pre-distorter to linearize the amplifier output. In essence, applying the coefficients to the amplifier input creates inverse distortion that reverses any compression or expansion caused by the amplifier.
Furthermore, the amplifier output characteristics change over short and long periods of time giving rise to what are commonly referred to as slow memory effect and fast memory effect. Therefore, the appropriate polynomial must be selected for the appropriate circumstances. Then, its inverse polynomial obtained, and then the coefficients of the inverse polynomial applied to the amplifier input to cause the amplifier output characteristic curve to be altered. In addition, the selection of the appropriate polynomial and the application of the coefficients of its inverse to the amplifier output characteristic curve should be done very quickly, or as close to real-time as possible.
Slow memory effect is defined as changes to the amplifier output characteristics due to aging, slow changes in ambient temperature, humidity, etc. Fast memory effect is defined as changes to the amplifier output characteristics due to instantaneous changes in the operating temperature of the amplifier. Because of these changes, it is generally not sufficient to use the same inverse polynomial coefficients all of the time. FIGS. 3A and 3B are graphs illustrating the amplifier output characteristic curves for various temperatures for amplitude and phase, respectively. The line 11 in FIG. 3 represents the target gain, which corresponds to the ideal amplifier output characteristic for amplitude. Curves 12-16 in FIG. 3 are the amplifier amplitude output characteristic curves for operating temperatures T1-T5, respectively, where T5<T4<T3<T2<T1. The amplifier curves 12-16 as a function of temperature are commonly referred to as memory characteristic curves.
It is known to use adaptive negative feedback systems that measure the amplifier output and determine which polynomial coefficients to select based on the output of the amplifier. In such systems, based on the measured amplifier output, it is determined which amplifier memory characteristic curve corresponds to the current temperature, and the corresponding coefficients are applied to correct for gain and phase (delta coefficients for gain and distortion coefficients for phase). One disadvantage of these systems is that they typically use large arrays of read-only memory (ROM) or complex lookup tables to store the coefficients and complex computer processing, which increases power consumption and adds delay in the feedback loop. Also, such systems often use expensive temperature sensors to sense the amplifier temperature to determine which coefficients to select. Sensing amplifier temperature not only increases system costs, but also makes the system prone to error. Furthermore, such systems are incapable of performing fast memory compensation using coefficients that correspond to an appropriate memory characteristic curve. Rather, a composite curve is typically used, which blends all temperatures into a resultant curve. Using the resultant curve rather than individual memory curves also makes the system more error prone.
Accordingly, a need exists for an amplifier digital pre-distorter that does not require large memory arrays for storing the delta and distortion coefficients, that does not require temperature sensors, and that is capable of performing fast memory compensation without the need to use a resultant memory characteristic curve.
SUMMARY OF THE INVENTION
The present invention provides a pre-distorter apparatus, method and computer program for compensating for non-linearities in an amplifier. The pre-distorter comprises predictor circuitry and processing circuitry. The predictor circuitry predicts the temperature of the amplifier based on an input signal and generates a predictor output signal that is based on the temperature prediction. The processing circuitry selects inverse polynomial coefficients based on the predictor output signal and applies the coefficients to the input signal to compensate for non-linearities in the amplifier.
The method of pre-distorting an amplifier input signal to compensate for non-linearities of the amplifier comprises predicting a temperature of the amplifier based on the input signal and applying inverse polynomial coefficients to the input signal that are selected based on the prediction. The coefficients applied are those that are associated with an output characteristic curve of the amplifier for the predicted temperature.
The computer program of the present invention corresponds to a training algorithm for calculating inverse polynomial coefficients that are to be applied to an amplifier input signal to pre-distort the amplifier input signal to compensate for non-linearities of the amplifier. A first routine of the program captures a plurality of amplifier output signals produced by the amplifier in response to the amplifier being stimulated by a plurality of respective amplifier input signals. The output signals correspond to respective amplifier temperatures. A second routine fits respective polynomials to respective data sets that represent respective amplifier output signals. A third routine determines respective inverses of the respective polynomials. A fourth routine obtains respective sets of inverse polynomial coefficients from the respective inverses of the polynomials. The respective sets of coefficients correspond to respective temperatures of the amplifier.
These and other features and advantages of the present invention will become apparent from the following description, drawings and claims.



BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a block diagram of a typical digital pre-distorter and power amplifier.
FIG. 2 is a graph demonstrating the basic principles of a typical digital pre-distorter.
FIG. 3 is a graph illustrating the amplifier output amplitude characteristic curve for various temperatures.
FIG. 4 is a block diagram of the pre-distorter of the present invention and predictor circuitry in accordance with an embodiment.
FIG. 5 is a block diagram of the pre-distorter of the present invention and predictor circuitry in accordance with another embodiment.
FIG. 6 is a block diagram of the digital signal processor (DSP), selection circuitry and coefficient injection circuitry of the pre-distorter of the present invention in accordance with an embodiment.
FIG. 7 is a flow chart of the pre-distortion method of the invention in accordance with an embodiment.
FIG. 8 illustrates a flowchart that represents the method of the invention in accordance with an illustrative embodiment being performed by a processor executing a computer program to perform the functions described above with reference to FIG. 7.



DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
In accordance with the present invention, it has been determined that it is possible to predict which of the memory characteristic curves 12-16 shown in FIG. 3 will correspond to the amplifier output characteristic curve based on the energy of the amplifier input. Once the correct memory characteristic curve has been selected, the corresponding coefficients are applied to the amplifier input signal. Because the selection is based on the amplifier input rather than the amplifier output or some other measurement obtained by probing the amplifier, it is possible to select and apply the corresponding coefficients to compensate fast memory effects of amplitude and phase distortion.
During a training session, the amplifier is stimulated with input signals of pre-selected amplitude and phase at various temperatures and the amplifier output is captured and converted into data sets. Polynomials are then fitted to the data sets and inverses of the polynomials are determined. The coefficients of the inverse polynomials are then saved for each temperature. During operation, the amplifier temperature is predicted based on the amplifier input signal and the coefficients associated with the predicted temperature are selected to be applied to the input signal to compensate for amplitude and phase distortion caused by the amplifier. The manner in which these tasks are performed will now be described with reference to FIGS. 4-7.
FIG. 4 is a block diagram of the present invention in accordance with an embodiment. In accordance with the embodiment represented by FIG. 4, predictor circuitry 50 receives the output of the digital pre-distorter 30, VPD, and generates a predictor that is used by the pre-distorter 50 to select the appropriate memory characteristic curve based on the energy of VPD.
Alternatively, as shown in FIG. 5, the predictor circuitry 50 receives VIN prior to the pre-distorter 30 and makes the prediction based on the energy of VIN. In accordance with the preferred embodiment, the predictor circuitry 50 is a filter that filters the amplifier input, either prior to or after the pre-distorter 30, and dynamically predicts the operating temperature of the amplifier 40. A variety of different filters can be used as predictor circuitry for this purpose, such as, for example, a moving average (MA) filter, an infinite impulse response (IIR) filter, a lowpass (LP) filter, a finite impulse response (FIR) filter, etc. Those skilled in the art will understand, in view of the disclosure provided herein, the manner in which these various types of filters can be used to predict the amount of energy dissipated in the amplifier 40.
FIG. 6 is a block diagram of the digital pre-distorter 30 of the present invention in accordance with the preferred embodiment. The pre-distorter 30 preferably comprises a digital signal processor (DSP) 60, selection circuitry 70 and polynomial calculation circuitry 80. The DSP 60 may be any type of processor capable of performing the calculations described herein. The DSP 60 selects the appropriate memory characteristic output curve coefficients based on the predictor generated by the predictor circuitry 50. The polynomial calculation circuitry 80 applies the selected coefficients to the pre-distorter input signal to produce the pre-distorted output signal.
In order to obtain the output characteristic curves for different temperatures, T1 through TN, where N corresponds to the number of temperatures for which curves are obtained, a training procedure is performed during which input signals of varying amplitude and phase are input to the amplifier at different temperatures and measurements are taken to determine what the temperature output characteristic curve is for each given amplifier input. Then, during operation, the DSP 60 uses the predictor output by the predictor circuitry 50 to select the coefficients to be injected into the input signal. These selections are made in real-time on the fly by the DSP 60 such that even fast memory effects are compensated instantaneously.
This memory compensation architecture represented by FIG. 6 is capable of infinite precision by interpolating the polynomial coefficients of the N characteristics curves (e.g., T1-T8) obtained through the training procedure. An efficient recursive computation form of the pre-distorter polynomial is obtained by the DSP 60 during the training session as follows:




  
    AM
    /
    AM
  
  ,
  
    
      AM
      /
      PM
    
    =
    
      
        
          
            
            ⁢
            
              
                k
                ⁢
                
                  
                
                ⁢
                1
                *
                y
              
              +
              
                k
                ⁢
                
                  
                
                ⁢
                2
                *
                
                  y
                  2
                
              
              +
              
                k
                ⁢
                
                  
                
                ⁢
                3
                *
                
                  y
                  3
                
              
              +
              
                k
                ⁢
                
                  
                
                ⁢
                4
                *
                
                  y
                  4
                
              
              +
              
                k
                ⁢
                
                  
                
                ⁢
                5
                *
                
                  y
                  5
                
              
              +
              
                k
                ⁢
                
                  
                
                ⁢
                6
                *
                
                  y
                  6
                
              
              +
              
                k
                ⁢
                
                  
                
                ⁢
                7
                *
                
                  y
                  7
                
              
            
          
        
      
      
        
          
            =
            
            ⁢
            
              y
              ⁡
              
                (
                
                  
                    k
                    ⁢
                    
                      
                    
                    ⁢
                    1
                  
                  +
                  
                    k
                    ⁢
                    
                      
                    
                    ⁢
                    2
                    *
                    
                      y
                      1
                    
                  
                  +
                  
                    k
                    ⁢
                    
                      
                    
                    ⁢
                    3
                    *
                    
                      y
                      2
                    
                  
                  +
                  
                    k
                    ⁢
                    
                      
                    
                    ⁢
                    4
                    *
                    
                      y
                      3
                    
                  
                  +
                  
                    k
                    ⁢
                    
                      
                    
                    ⁢
                    5
                    *
                    
                      y
                      4
                    
                  
                  +
                  
                    k
                    ⁢
                    
                      
                    
                    ⁢
                    6
                    *
                    
                      y
                      5
                    
                  
                  +
                  
                    k
                    ⁢
                    
                      
                    
                    ⁢
                    7
                    *
                    
                      y
                      6
                    
                  
                
                )
              
            
          
        
      
      
        
          
            =
            
            ⁢
            
              y
              ⁡
              
                (
                
                  
                    k
                    ⁢
                    
                      
                    
                    ⁢
                    1
                  
                  +
                  
                    y
                    ⁡
                    
                      (
                      
                        
                          k
                          ⁢
                          
                            
                          
                          ⁢
                          2
                        
                        +
                        
                          k
                          ⁢
                          
                            
                          
                          ⁢
                          3
                          *
                          
                            y
                            1
                          
                        
                        +
                        
                          k
                          ⁢
                          
                            
                          
                          ⁢
                          4
                          *
                          
                            y
                            2
                          
                        
                        +
                        
                          k
                          ⁢
                          
                            
                          
                          ⁢
                          5
                          *
                          
                            y
                            3
                          
                        
                        +
                        
                          k
                          ⁢
                          
                            
                          
                          ⁢
                          6
                          *
                          
                            y
                            4
                          
                        
                        +
                        
                          k
                          ⁢
                          
                            
                          
                          ⁢
                          7
                          *
                          
                            y
                            5
                          
                        
                      
                      )
                    
                  
                
                )
              
            
          
        
      
      
        
          
            =
            
            ⁢
            
              y
              ⁡
              
                (
                
                  
                    k
                    ⁢
                    
                      
                    
                    ⁢
                    1
                  
                  +
                  
                    y
                    ⁡
                    
                      (
                      
                        
                          k
                          ⁢
                          
                            
                          
                          ⁢
                          2
                        
                        +
                        
                          y
                          ⁡
                          
                            (
                            
                              
                                k
                                ⁢
                                
                                  
                                
                                ⁢
                                3
                              
                              +
                              
                                k
                                ⁢
                                
                                  
                                
                                ⁢
                                4
                                *
                                
                                  y
                                  1
                                
                              
                              +
                              
                                k
                                ⁢
                                
                                  
                                
                                ⁢
                                5
                                *
                                
                                  y
                                  2
                                
                              
                              +
                              
                                k
                                ⁢
                                
                                  
                                
                                ⁢
                                6
                                *
                                
                                  y
                                  3
                                
                              
                              +
                              
                                k
                                ⁢
                                
                                  
                                
                                ⁢
                                7
                                *
                                
                                  y
                                  4
                                
                              
                            
                            )
                          
                        
                      
                      )
                    
                  
                
                )
              
            
          
        
      
      
        
          
            =
            
            ⁢
            
              y
              ⁡
              
                (
                
                  
                    k
                    ⁢
                    
                      
                    
                    ⁢
                    1
                  
                  +
                  
                    y
                    ⁡
                    
                      (
                      
                        
                          k
                          ⁢
                          
                            
                          
                          ⁢
                          2
                        
                        +
                        
                          y
                          ⁡
                          
                            (
                            
                              
                                k
                                ⁢
                                
                                  
                                
                                ⁢
                                3
                              
                              +
                              
                                y
                                ⁡
                                
                                  (
                                  
                                    
                                      k
                                      ⁢
                                      
                                        
                                      
                                      ⁢
                                      4
                                    
                                    +
                                    
                                      k
                                      ⁢
                                      
                                        
                                      
                                      ⁢
                                      5
                                      *
                                      
                                        y
                                        1
                                      
                                    
                                    +
                                    
                                      k
                                      ⁢
                                      
                                        
                                      
                                      ⁢
                                      6
                                      *
                                      
                                        y
                                        2
                                      
                                    
                                    +
                                    
                                      k
                                      ⁢
                                      
                                        
                                      
                                      ⁢
                                      7
                                      *
                                      
                                        y
                                        3
                                      
                                    
                                  
                                  )
                                
                              
                            
                            )
                          
                        
                      
                      )
                    
                  
                
                )
              
            
          
        
      
      
        
          
            =
            
            ⁢
            
              y
              ⁡
              
                (
                
                  
                    k
                    ⁢
                    
                      
                    
                    ⁢
                    1
                  
                  +
                  
                    y
                    ⁡
                    
                      (
                      
                        
                          k
                          ⁢
                          
                            
                          
                          ⁢
                          2
                        
                        +
                        
                          y
                          ⁡
                          
                            (
                            
                              
                                k
                                ⁢
                                
                                  
                                
                                ⁢
                                3
                              
                              +
                              
                                y
                                ⁡
                                
                                  (
                                  
                                    
                                      k
                                      ⁢
                                      
                                        
                                      
                                      ⁢
                                      4
                                    
                                    +
                                    
                                      y
                                      ⁡
                                      
                                        (
                                        
                                          
                                            k
                                            ⁢
                                            
                                              
                                            
                                            ⁢
                                            5
                                          
                                          +
                                          
                                            k
                                            ⁢
                                            
                                              
                                            
                                            ⁢
                                            6
                                            *
                                            
                                              y
                                              1
                                            
                                          
                                          +
                                          
                                            k
                                            ⁢
                                            
                                              
                                            
                                            ⁢
                                            7
                                            *
                                            
                                              y
                                              2
                                            
                                          
                                        
                                        )
                                      
                                    
                                  
                                  )
                                
                              
                            
                            )
                          
                        
                      
                      )
                    
                  
                
                )
              
            
          
        
      
      
        
          
            =
            
            ⁢
            
              y
              ⁡
              
                (
                
                  
                    k
                    ⁢
                    
                      
                    
                    ⁢
                    1
                  
                  +
                  
                    y
                    ⁡
                    
                      (
                      
                        
                          k
                          ⁢
                          
                            
                          
                          ⁢
                          2
                        
                        +
                        
                          y
                          ⁡
                          
                            (
                            
                              
                                k
                                ⁢
                                
                                  
                                
                                ⁢
                                3
                              
                              +
                              
                                y
                                ⁡
                                
                                  (
                                  
                                    
                                      k
                                      ⁢
                                      
                                        
                                      
                                      ⁢
                                      4
                                    
                                    +
                                    
                                      y
                                      ⁡
                                      
                                        (
                                        
                                          
                                            k
                                            ⁢
                                            
                                              
                                            
                                            ⁢
                                            5
                                          
                                          +
                                          
                                            y
                                            ⁡
                                            
                                              (
                                              
                                                
                                                  k
                                                  ⁢
                                                  
                                                    
                                                  
                                                  ⁢
                                                  6
                                                
                                                +
                                                
                                                  k
                                                  ⁢
                                                  
                                                    
                                                  
                                                  ⁢
                                                  7
                                                  *
                                                  
                                                    y
                                                    1
                                                  
                                                
                                              
                                              )
                                            
                                          
                                        
                                        )
                                      
                                    
                                  
                                  )
                                
                              
                            
                            )
                          
                        
                      
                      )
                    
                  
                
                )
              
            
          
        
      
    
  




This realization allows the DSP or control logic 60 to perform fewer multiplications than would otherwise have to be performed (e.g., where N=8, 7 multiplications instead of 35).

As can be seen in FIG. 6, the DSP 60 outputs eight K1 coefficients corresponding to temperature characteristic curves for temperatures T1-T8 and multiplexer (MUX) 71 selects the correct K1 coefficient based on the current temperature predictor output from the predictor circuitry 50. Likewise, the DSP 60 outputs eight K2 coefficients corresponding to the memory characteristic curves for temperatures T1-T8 and MUX 72 selects the correct K2 coefficient based on the current temperature predictor output from the predictor circuitry 50. The same procedures are performed with respect to MUXes 73-77 for coefficients K3-K7, respectively.
Once the coefficients have been selected by the MUXes 71-77, they are provided to the polynomial calculation circuitry 80, which applies the coefficients to the input of the pre-distorter 30. The polynomial calculation circuitry 80 has multiplication and addition operators 81 and 82, respectively, that apply the coefficients to the input signal in accordance with the last line of the above interpolation, specifically:

Y(k1+y(k2+y(k3+y(k4+y(k5+y(k6+k7*y)))))),

where Y corresponds to the input signal being operated upon by the polynomial calculation circuitry 80 and k1-k7 correspond to the coefficients.

The present invention provides many benefits. One benefit is that the need to use expensive ROM lookup tables to store coefficients for many characteristic curves is avoided, which reduces the cost, complexity and size of the pre-distorter 30. Another advantage of the present invention is that using the temperature predictor of the invention eliminates the need to use feedback temperature sensors, which typically require an analog-to-digital converter, a frequency down converter and physical access to the power amplifier transistor. Yet another advantage of the present invention is that the fast memory tracking it provides enables infinite precision temperature tracking to be performed using a single MUX selector signal. Yet another advantage of the present invention is that infinite precision temperature tracking can be achieved through the interpolation technique of the present invention.
FIG. 7 illustrates a flow chart of the method of the present invention for performing pre-distortion in accordance with the preferred embodiment. The first step in the method involves the training session, which is represented by block 101. As stated above, during the training session, different input signals having pre-selected amplitude and phase sweep are input to the amplifier. The amplifier output signals are captured and polynomials are fitted to the captured data. This process is repeated for different temperature settings. The DSP or control logic 60 records the temperatures that correspond to the different curves. The DSP or control logic 60 obtains the inverse of each amplifier output characteristic polynomial and stores the coefficients of each inverse polynomial in registers in the DSP 60, or some memory device (not shown).
During operation, the predictor circuitry 50 predicts the temperature of the amplifier based on the energy of the input signal, as indicated by block 102. The appropriate inverse polynomial coefficients for both phase and magnitude are then selected by the DSP 60 based on the results of the prediction, multiplexed by the MUXes 71-77 and applied by the polynomial calculation circuitry 80 to the input signal to compensate for amplitude and phase, as indicated by block 103.
It should be noted that the present invention is not limited to the embodiments described herein. For example although reference has been made above to the use of the invention with a power amplifier, the invention applies equally to other types of amplifiers and to other types of circuits, indeed, any entity that exhibits nonlinear behavior in response to a high level input stimuli. Also, the block diagram of FIG. 6 shows one particular circuit configuration for calculating, selecting and applying the polynomial coefficients. The present invention is not limited to the configuration shown in FIG. 6. For example, the functions performed by the MUXes 71-77 can be performed within the DSP 60. However, using the MUXes 71-77 makes it possible to select all of the coefficients for a given curve using a single selector signal, which is the output of the predictor circuitry 70. The output of the predictor circuitry 70 may be conditioned by some hardware or software (not shown) before being input to the MUXes 71-77. Alternatively, the predictor signal output from the predictor circuitry 70 may be input to the DSP 60 and processed by software and/or hardware of the DSP 60. Also, control logic other than a DSP may be used in place of the DSP. The control logic may be any type of hardware or combination of hardware and software, or even partially or wholly made up of discrete circuit components. Those skilled in the art will understand, in view of the description provided herein, that other configurations may be used to achieve the goals of the invention. In addition, other modifications may be made to the embodiments described herein and all such modifications are within the scope of the invention.
As stated above, the DSP or control logic 60 may be any type of logic and may be implemented in any type of hardware or combination of hardware and software, and may even by made up partially or wholly of discrete circuit components. In the case where the DSP or control logic 60 is implemented as a combination of hardware and software, the hardware will typically be some type of processor that is programmed to execute a computer program comprising instructions that are encoded on a computer-readable medium. When the computer program is executed by the processor, the operations described above with reference to FIGS. 6 and 7 are performed in a manner that will now be described with reference to FIG. 8.
FIG. 8 illustrates a flowchart that represents the method in accordance with an illustrative embodiment performed by a processor executing a computer program to perform the functions described above with reference to FIG. 7. The program comprises at least first, second, third, and fourth routines, each of which comprises a set of computer instructions stored on a computer-readable medium. These routines carry out the tasks performed during the training session described above with reference to block 101 in FIG. 7. This program may also include a fifth routine that carries out the tasks during normal operations of selecting one of the sets of inverse polynomial coefficients to be applied to an amplifier input signal based on a predicted temperature of the amplifier. It is also possible that the first through fourth routines are performed in software executed by a processor and that the fifth routine is performed in hardware external to the processor, or in software in a different processor.
As indicated by block 111, the first routine captures a plurality of amplifier output signals produced by the amplifier in response to the amplifier being stimulated by a plurality of respective amplifier input signals. The amplifier output signals correspond to respective amplifier temperatures. The second routine fits respective polynomials to respective data sets representing respective output signals from the amplifier, as indicated by block 113. The third routine determines respective inverses of the respective polynomials obtained by the second routine, as indicated by block 115. The fourth routine obtains respective sets of inverse polynomial coefficients from the respective inverses of the polynomials obtained by the third routine, as indicated by block 117. The respective sets of coefficients correspond to the respective amplifier temperatures. Subsequent to the training session during normal operations, the fifth routine performs the functions of selecting the set of inverse polynomial coefficients to be applied to an amplifier input signal based on a predicted temperature of the amplifier, as indicated by block 119.

## Claims

1. A computer-readable medium encoded with a computer program for calculating inverse polynomial coefficients that are to be applied to an amplifier input signal to pre-distort the amplifier input signal to compensate for non-linearities of the amplifier, the program comprising:
instructions for capturing a plurality of amplifier output signals produced by the amplifier in response to the amplifier being stimulated by a plurality of respective amplifier input signals, the output signals corresponding to respective amplifier temperatures;
instructions for fitting respective polynomials to respective data sets representing respective output signals;
instructions for determining respective inverses of the respective polynomials; and
instructions for obtaining respective sets of inverse polynomial coefficients from the respective inverses of the polynomials, the respective sets of coefficients corresponding to said respective temperatures.

2. The computer-readable medium of claim 1, wherein the computer program further comprises:
instructions for one the of selecting of sets inverse polynomial coefficients to be applied to an amplifier input signal based on a predicted temperature of the amplifier.