This is a short post about PA pre-distortion. It reflects my thoughts on this topic but also raises some questions and hopefully RFIC and Phy system experts can shed some lights. ,
As we know, RF power amplifier (PA) normally suffers nonlinear distortion when tx power is high. In general, if PA is made more linear its efficiency becomes lower. And vice versa, when PA works in non-linearity region its efficiency tends to be high.
Worked on a project before. We had digital baseband implemented inside an FPGA. ADC/DAC was on FPGA too. RF circuitry including PA is external. We had similar issue that to achieve better linearity we reduced PA efficiency. In our case PA linearity was critical to meet spectrum requirement and it also reduced EVM to achieve better rx sensitivity. Now thinking back, we might be able to use a technique called PAPD, PA pre-distortion, to deal with the issue.
Googled this topic and landed a good thesis about PAPD from Dr. Lei Ding.
It is well presented and has good content. But as all the PhD thesis, mathematics is heavy, at least to me an digital and FPGA designer.
Let’s form the problem first. The thesis uses below equ but as you can see not easy to follow.
I’d prefer simplicity if possible. So let’s say the input signal to PA is x(t) as below and A(t) is the amplitude.
PA output signal y(t) can be expressed as
As you can see, if the PA is ideal G(A(t)) should be just G*A(t) so G is a constant gain and H(A(t)) should be some fixed phase shift independent of input signal magnitude A(t). Due to non-linearity of PA, PA’s gain and phase shift becomes a function of A(t). Here G(A(t)) is the so-called AM/AM magnitude distortion and H(A(t)) is the so-called AM/PM phase distortion.
The thesis shows a typical Class AB PA AM/AM and AM/PM distortion.
To combat this issue, we can introduce a pre-distorter block as below to compensate PA’s distortion.
With the input to PAPD as
PAPD’s output z(t) needs to be
The overall (cascaded PAPD and PA) output can be
So we needs to know and two functions.
In chapter 6, real-time implementation, of the thesis, PAPD is constructed as memory polynomial model and memory-less polynomial model. The memory poly model is given in equ. 193 and memory-less poly model is equ 194, which is a special case of equ. 193.
Then an indirect learning architecture is employed as below. With y(n) and z(n) known, least-square is used to solve polynomial coefficients. No known training code is needed but it takes time for PD training block to converge so it still needs some training time. This training time determines the ability of the PD to response to changes in PA characteristics which is supposed to happen slowly due to temperature change and aging. Another drawback is it is computationally expensive to train PA block.
If we look at the issue, as mentioned before, all we needs to know is and two functions. Assuming PA’s characteristics is slow changing, we don’t need real-time tracking as above. We can send training sequence to PA, read PA output, know PA’s char and then build PD. Since PA’s nonlinearity is a function of input signal amplitude, the training sequence can be just an amplitude sweeping signal.
The thesis reviewed other papers on this methodology. To build PD, look-up table (LUT) can be a good solution in real system. One way is to construct a complex table for I and Q. The other way is to first do Cartesian to polar conversion and then have two look up tables for magnitude and angle. Thesis said it is more computationally efficient to avoid conversions between polar and Cartesian forms. But since this conversion can be done easily and efficiently with Cordic, I think it is a good approach to implement PAPD in such a way.
Overall, during training phase, sweep signal magnitude at PA input (which is generated by digital baseband actually), read PA output, fill up PAPD magnitude and angle tables based on observations.
To make it work, we should have a way to read or receive PA output. We can reuse our RX chain. So there should be a connection from PA output to RF mixer input. Since PA output level is high, this connection should introduce some level of attenuation. The thesis introduced their test bed where an RF directional coupler and attenuator were used for this connection. I am not a RFIC expert so my first question is:
1. In real RFIC, what kind of circuit is used to connect PA output back to RF RX chain?
I am aware modern RFIC normally comes with TSSI for TX power tuning. I guess we can use TSSI for PA output detection. But it only works for power/magnitude since TSSI is basically envelop detector. So:
2. If we use TSSI to detect PA output level and build PD magnitude table only, is it good enough without compensation for phase?
There are other questions:
3. How often shall we train PAPD? At each power up, or detect a “big” temp change, etc.?