射頻放大器的線性化技術預失真介紹

預失真(Predistortion )是一種可以補償放大器產生的失真影響的技術。眾所周知,放大器是一種可以放大輸入信號並輸出​​較大信號的設備。無論輸入信號電平為低電平還是高電平,理想放大器都應以相同的程度放大信號。但是,實際上,大多數放大器根據輸入電平放大的程度略有不同。取決於信號水平的這種不同的放大水平將導致信號失真,並且該失真將導致各種不想要的結果。最大的問題之一是失真會導致信號帶寬之外的大量功率洩漏。

有什麼辦法可以減小失真的影響?一種可能的想法是,以與信號在進入放大器之前放大器會失真的完全相反的方式使信號預先失真。此技術稱為“預失真”,意為“放大器之前的失真”。

假設您有一個放大器,並且放大器的傳遞函數(工作函數)看起來像下圖中心的圖。乍一看,您會發現傳遞函數不是線性的,這意味著放大程度取決於輸入信號的電平。

現在,讓我們看一下上方的圖形。電平較低的信號(綠色曲線)進入放大器(左上方)。通過放大器後,您將獲得藍色顯示的輸出信號。如果比較輸入信號和輸出信號,您會注意到信號的形狀幾乎相同。這意味著輸入信號不會因放大而失真。 (我特意使用增益為1的傳遞函數,以便輕鬆比較這兩個信號)。

現在看一下下方的圖形。您會看到少量信號(綠色曲線)進入放大器。在這種情況下,您會看到輸入信號(綠色)和輸出信號(藍色)的形狀之間存在一些差異,尤其是信號的上限。這意味著信號會被放大器失真。

射頻放大器的線性化技術預失真介紹

放大器產生的失真信號

如果您想進一步處理此過程,請嘗試使用以下Matlab / Octave代碼。 您可以隨心所欲地使用inputmin和inputmax值來更改輸入信號電平,並查看輸出信號如何變化。

gain = 1.0;x = 0:pi/100.0:pi;y_amp = gain * tanh(x); inputmin = 0.0;inputmax = 1.0;inputsize = 50;input = inputmin + (inputmax-inputmin) * rand(1,inputsize);output = gain * tanh(input); subplot(1,3,1);plot(input,'g-');title('input');xlim([0 length(input)]);ylim([0 1]);subplot(1,3,2);plot(x,y_amp,'r-');title('amplifier');xlim([0 max(x)]);ylim([0 1]);subplot(1,3,3);plot(input,'g-');hold on;plot(output,'b-');hold off; title('input & output');xlim([0 length(input)]);ylim([0 1]);


射頻放大器的線性化技術預失真介紹

上面的Matlab代碼運行的結果

現在的問題是“是否有任何方法可以最小化或消除失真的影響?”。


射頻放大器的線性化技術預失真介紹

如何消除失真的影響?

一個想法是在放大器的前面添加另一個塊,如下所示。 假設預失真塊的傳遞函數如下所示。 讓我們看看信號經過失真塊後的變化。 您會注意到輸出信號(藍色)和輸入信號(綠色)之間的巨大差異,這意味著它是“失真的”。 但是這種失真是“想要的/預期的”失真。

然後,這個失真的信號(不是原始信號)通過放大器。 現在看看從放大器出來的信號的樣子。 您會看到輸出信號的形狀幾乎與輸入信號相同。

這表明由預失真塊產生的故意失真消除了放大器失真的影響。


射頻放大器的線性化技術預失真介紹

預失真效果的示意圖

如果您想進一步處理此過程,請嘗試使用以下Matlab / Octave代碼。 您可以隨心所欲地使用inputmin和inputmax值來更改輸入信號電平,並查看輸出信號如何變化。

gain = 1.0;x = 0:pi/100.0:pi;y_amp = gain * tanh(x);x_pre = 0:1/100.0:0.99;y_pre = gain * atanh(x_pre); inputmin = 0.0;inputmax = 1.0;inputsize = 50;input = inputmin + (inputmax-inputmin) * rand(1,inputsize);predistortedInput = atanh(input);output = gain * tanh(predistortedInput); subplot(1,5,1);plot(input,'g-');title('input');xlim([0 length(input)]);ylim([0 2]);subplot(1,5,2);plot(x_pre,y_pre,'r-');title('predistortion');xlim([0 max(x_pre)]);ylim([0 2]);subplot(1,5,3);plot(input,'g-');hold on;plot(predistortedInput,'b-');hold off; title('predistorted Input');xlim([0 length(input)]);ylim([0 2]);subplot(1,5,4);plot(x,y_amp,'r-');title('amplifier');xlim([0 max(x)]);ylim([0 2]);subplot(1,5,5);plot(input,'g-');hold on;plot(output,'b-');hold off; title('input & output');xlim([0 length(input)]);ylim([0 2]);


射頻放大器的線性化技術預失真介紹

預失真效果的影響示意圖

上面我所解釋的主要是基於時域特性的,但實際上,在處理放大器時,您會在頻域中對其進行更多的表徵。如果比較未線性化(無預失真)和線性化(有預失真)的頻率響應,則如下圖所示。如您所見,由於在非線性區域中沒有預失真而導致的最關鍵問題是高ACLR / ACPR,如下圖所示的灰色軌跡所示。通過適當的預失真,您可以去除那些高ACLR / ACPR使其像下面所示的黑色軌跡一樣。

射頻放大器的線性化技術預失真介紹

圖片來自3G(W-CDMA)基站的線性功率放大器的輸出信號

下面是另一個示例,該示例從AD9375(Analog Device)的數據手冊中顯示(數字)預失真的效果。紅色曲線表示沒有預失真的情況,藍色曲線表示有預失真的情況。


射頻放大器的線性化技術預失真介紹

AD9375的預失真效果圖

現在,最重要的問題是“我如何知道特定放大器的預失真程度?”。從技術上來講,我該如何計算預失真塊的傳遞函數?

理論上的答案很簡單。如果您知道放大器的傳遞函數,則只需採取傳遞函數的反函數即可獲得預失真塊的傳遞函數。

如您所知,實際上沒有什麼比您說的容易。有關預失真(尤其是預失真的實現)的更多詳細信息,請參閱其他材料。您可以在百度上搜索很多文章/帖子。我認為這足以解釋預失真的概念。

定義預失真度的方法基本上有兩種,開環方法和閉環方法。 (這也是一種控制系統,因此可以是開環或閉環)。

在如下所示的開環方法中,我們使用一種預定義的查找表來指定預失真度。此方法易於實現,但問題是什麼是最好的查找表以及如何創建該表。

射頻放大器的線性化技術預失真介紹

開環預失真的LUT

在如下所示的閉環方法中,放大器的輸出反饋到預失真塊,並且該塊基於該反饋自適應地計算出適當的預失真參數。優點是該方法可以動態調整值,但是自適應算法的實現將很困難的。


射頻放大器的線性化技術預失真介紹

閉環預失真系統


分享到:


相關文章: