王 頂,劉太君,葉 焱
(寧波大學信息科學與工程學院,浙江寧波315211)
在移動通信系統(tǒng)中,射頻功率放大器(PA)作為移動通信系統(tǒng)中的重要組成部分,其效率和線性度影響著整個系統(tǒng)的性能。在4G系統(tǒng)中,提高功放效率的一種有效手段是采用Doherty技術,同時為了提高頻譜利用率,廣泛地采用了線性調制技術和多載波調制技術(如OFDM和CDMA),這樣一來傳輸信號具有高寬帶、高峰均值比(PAPR)和非恒定包絡等特性,這些都需要PA具有高的線性度。數(shù)字預失真技術(DPD)的出現(xiàn)解決了功放的非線性失真問題,目前DPD大多采用基于QR分解的RLS算法的脈動陣列結構來實現(xiàn)。
QR分解有多種實現(xiàn)方式,其中Givens旋轉由于具有并行性的優(yōu)點應用于脈動陣列的設計中。然而傳統(tǒng)的脈動陣列結構存在諸多問題:①Givens旋轉單元存在平方根運算,在硬件實現(xiàn)時,平方根運算需要消耗大量的資源,且時間周期長;②對于通常采用多項式模型的功放來說,由于采用了N抽頭和M階的多項式,如果采用脈動陣列結構,其輸入就有N×(M+1)項,這對于FPGA的資源是一個極大的挑戰(zhàn)[1-4]。解決以上2個問題現(xiàn)有的方法是采用CORDIC算法,但正如文獻[5]指出的,傳統(tǒng)的CORDIC算法存在多余的角度旋轉和角度擴展等問題,對于一般的乘除運算影響不大,對于脈動陣列來說,由于CORDIC計算存在誤差通過脈動陣列逐級的積累而放大,甚至導致錯誤的輸出結果。因此,傳統(tǒng)的CORDIC不適合用于實現(xiàn)數(shù)字預失真的脈動陣列結構。因此,提出一種改進CORDIC算法來實現(xiàn)數(shù)字預失真,該方法易于FPGA實現(xiàn)、資源消耗少且計算速度和精度方面都有所提高。
坐標旋轉數(shù)字計算機(Coordinate Rotation Digital Computer CORDIC),是由Jack Volder[6]于1959年提出的,廣泛應用于基本函數(shù)的計算。為了擴展可解決的基本函數(shù)個數(shù),之后又相繼提出了統(tǒng)一的CORDIC算法和并行的CODIC算法,大大提高了CORDIC算法的迭代速度和精度。隨著可編程邏輯器件(FPGA)規(guī)模的增大,使得利用硬件電路實現(xiàn)該算法成為可能。
下面來描述CORDIC算法的基本原理,如圖1所示,假設平面直角坐標系一矢量(x0,y0),將其順時針旋轉角度θ,得到新的矢量坐標(x1,y1)如式(1)所示:
圖1 CORDIC算法向量旋轉原理圖
進一步推導得:
任意角度都可以表示成一系列的基本角度的線性之和,則旋轉角度θ可表示為[5]:
式中,di表示旋轉的方向是順時針還是逆時針di={+1,-1}。為了便于硬件實現(xiàn),令θi=tan-1(2-i),這里引入一個方程:zi+1=zi+diθi,表示迭代過程旋轉的角度之和。則式(2)可重寫為:
向量經過一系列的基本旋轉后可逐漸逼近目標向量,此時有:
式中,cosθi表示旋轉校正因子,令Kn=cosθi為經過n步迭代后總的旋轉校正因子,則有:
當n足夠大時,Kn近似取值為一常數(shù)0.607 253,可以將這個常數(shù)作為系統(tǒng)的增益來處理。
如旋轉角度θ=arctan(20)時,理論上經過第一次旋轉后已經得到了目標向量,而傳統(tǒng)CORDIC需要經過N次旋轉,這就導致旋轉誤差。在每一級旋轉增加控制信號來判斷是否進入下一級的旋轉,避免一些不必要的旋轉。
由于θi=tan-1(2-i),根據(jù)推導CORDIC算法的旋轉角度范圍為(-99.9°,+99.9°),不能覆蓋整個坐標平面。為了確保算法的收斂,文獻[5]中采用增加2個45°的迭代來達到收斂,這種方法對于單輸入信號較為實用,然而對于預失真來說,由于預失真訓練器采用了多項式模型,增加迭代次數(shù)的同時增加了算法的復雜度,為此對輸入(x0,y0)進行了預處理,具體操作步驟如下:預先判斷向量的象限,將其搬移到第一和第四象限。最后利用一個符號標志位sign判斷旋轉角度和輸出。即當x<0時,sign=1;當x>0時,sign=0。這樣將信號的旋轉角度限制在了第一和第四象限,從而降低了額外的迭代帶來的復雜度。
由式(6)可知,直接在旋轉之后增加一個乘法器來補償旋轉模長,這種方法使得原本由移位器加減實現(xiàn)的流水線結構變得復雜,乘法器的速度限制了整體的流水線吞吐量,同時還增加了硬件資源消耗。為了解決乘法運算所帶來的資源消耗和運算速度的降低得問題,每一級旋轉所對應得伸縮因子Ki的理論值和近似值,可通過簡單地移位和加減來實現(xiàn)長度補償如表1所示。
表1 第i次旋轉對應的校正因子值
以開根號運算為例,采用Verilog HDL語言描述改進CORDIC算法的向量模式,數(shù)據(jù)位寬為14bit,角度位寬為16bit,流水線級數(shù)為13級,Quartus II仿真分析和綜合結果如圖2所示。
圖2 改進CORDIC算法Quartus II仿真圖
表2和表3分別列出了CORDIC算法改進前后的資源和精度對比。
表2 改進前后運算速率及資源對比
表3 改進前后計算精度對比
從表2和表3中可以看出,由于加入了控制信號和符號標志位,邏輯資源消耗有所增加,但改進后的CORDIC算法的運算速率和計算精度都有提高,且沒有乘法器和ROM存儲單元。同時對于特殊的角度值,運算結果與理論之間沒有誤差,極大地減少了迭代的次數(shù)。這對于預失真這種數(shù)據(jù)處理量大的應用,可以節(jié)約許多時間。
基于改進CORDIC算法的四通道QR-RLS脈動陣列實現(xiàn)結構如圖3所示,圖中三角陣列有2種運算單元,圓形表示邊界單元,工作在向量模式;方形表示內部單元,工作在旋轉模式[7-10]。陣列邊界單元工作在向量旋轉模式,此時φ-CPE單元將輸入數(shù)據(jù)xin旋轉到x軸,輸出向量為,同時給出旋轉角度φ,此時的2個θ-CPE單元僅有左邊的工作,它輸出將消去的旋轉角度θ,同時儲存相關矩陣R值。內部單元工作在旋轉模式,如圖4所示。根據(jù)邊界單元的φ和θ實施旋轉,并將旋轉角度值傳遞給下一個單元。CPE單元設計采用高速流水線結構,采用這種結構能夠獲得較高的數(shù)據(jù)速率,在單元執(zhí)行第i次旋轉時,數(shù)據(jù)能夠同時從頂部輸入,采用N級相似的算法單元在同一個時鐘周期內并行工作,平均完成一次計算只需一個時鐘周期,這極大地節(jié)約了運算時間。
圖3 四通道QR-RLS算法的脈動陣列結構
圖4 基于改進CODRDIC算法的CPE單元
將2種算法實現(xiàn)的脈動陣列在FPGA上實現(xiàn),對比結果如表4所示。
表4 兩算法實現(xiàn)脈動整列的對比
由表4可以看出,在資源消耗方面,脈動陣列采用了3階5抽頭的多項式,由于傳統(tǒng)的CORDIC算法使用了ROM表和乘法器單元,總的資源消耗就相當?shù)拇蟆T谶\算速度上,傳統(tǒng)的CORDIC算法使用了乘法器,限制了脈動陣列的整體速度,改進算法的IP CLK相對傳統(tǒng)的提高了100MHz,因此參數(shù)提取的時間將近節(jié)約一半的時間。
預失真實驗測試平臺如圖5所示,頻譜分析儀觀測功放輸出頻譜如圖6所示。從圖中可以看出,傳統(tǒng)的CORDIC算法實現(xiàn)的參數(shù)提取算法預失真效果不明顯,甚至有些地方失真更為嚴重,這是由于傳統(tǒng)CORDIC本身存旋轉誤差以及多余的角度旋轉造成的誤差,這些誤差經過脈動陣列逐級傳遞,誤差積累導致最終的參數(shù)提取不正確。然而改進CORDIC算法有效地避免了多余迭代帶來的誤差,獲得了較好的預失真效果。
圖5 硬件測試平臺
圖6 2種算法實現(xiàn)DPD輸出頻譜比較圖
對傳統(tǒng)CORDIC算法的原理及其存在的問題進行了深入的分析,從多余角度旋轉、旋轉角度擴展和模校正因子分解3個方面對算法進行改進,采用跳躍旋轉、象限搬移以及移位加減來實現(xiàn)CORDIC算法。與傳統(tǒng)的CORDIC算法相比較,節(jié)省了大量的硬件資源,提高了運算速度和精度,易于FPGA實現(xiàn)。最后,采用改進的CORDIC算法實現(xiàn)了預失真參數(shù)提取算法,實驗結果顯示預失真效果改善了18dB左右,滿足功率放大器的實時性和高線性度要求。
[1]LIU Tai-jun,SLIM B,F(xiàn)ADHE M,et al.Augmented Hammerstein Predistorter for Linearization of Broad-Band Wireless Transmitters[J].IEEE transactions on Microwave Theory and Techniques,2006,54(6):1340-1349.
[2]MORGAN D R,MA Z KIM J,ZIERDT M G,et al.A Generalized Memory Polynomial Model for Digital Predistortion of RF Power Amplifiers[J].IEEE Transactions on Signal Processing,2006,54(10):3852-3860.
[3]CAVERS J.Amplifier Linearization Using A Digital Predistorter with Fast Adaptation and Low Memory Requirements[J].IEEE Trans.Veh.Technol,1990,39(4):374-382.
[4]艾渤.高功率放大器線性化技術研究[J].微波學報,2007,23(1):62-69.
[5]WU Cheng-shing,AN Y W.Modified Vector Rotational CORDIC(MVR-CORDIC)Algorithm and Architecture[J].IEEE Transactions On Circuits and Systems-II:Analog and Digital Processing,2001,48(6):548-561.
[6]VOLDER J E.The CORDIC Trigonometric Computing Technique[J].IRE Trans.Electron.Computers,1959,(C-8):330-334.
[7]HAYKIN S.Adaptive Filter Theory[M].2nd ed.Englewood Cliffs,NJ Prentice-Hall,1991:210-254.
[8]WARD C R,ROBSON A J,HARGRAVE P J.Application of A Systolic Array to Adaptive Beam Forming[J].IEEE Proceedings of Communications,Radar and Signal Processing,1984,131(6):638-645.
[9]MA J,DEORETTERE E F,PARHI K K.Pipelined CORDIC based QRD-RLS Adaptive Filtering Using Matrix Look-Ahead[J]IEEE Workshop on Signal Processing Systems,1997,35(2):131-140.
[10]CHANG L W,LEE S W.Systolic Arrays for the Discrete Hartley Transform [J].IEEE Trans.Signal Processing,1991(29):2411–2418.