張紅升,易勝宏,孟 金,衛(wèi)中陽,馬小東
(重慶郵電大學(xué) a.光電工程學(xué)院;b.微電子工程重點實驗室,重慶 400065)
數(shù)字預(yù)失真(Digital Pre-distortion,DPD)法由于其可配置性和低成本性,已經(jīng)被廣泛應(yīng)用在通信射頻前端上[1]。數(shù)字預(yù)失真的原理是,基帶信號在經(jīng)過數(shù)模轉(zhuǎn)換器(Digital-to-Analog Converter,DAC)和功率放大器之前,預(yù)先經(jīng)過一個具有和功放擬合度較高的模型電路,該模型具有和功放互逆的輸入-輸出特性,通過補償增益、調(diào)整功放模型參數(shù),達到預(yù)失真系統(tǒng)輸出線性化的目的。經(jīng)過數(shù)字預(yù)失真處理后的基帶信號在通過DAC和上變頻后,通過射頻接口和功率放大器發(fā)射出去,使得其上變頻信號具有較低的鄰信道功率比(Adjacent Channel Power Ratio,ACPR),即鄰頻率信道(或偏移量)的平均功率和發(fā)射頻率信道的平均功率之比。對于寬帶碼分多址(Code Division Mulitiole Access,WCDMA)發(fā)射系統(tǒng),定義主信道的上下保護邊帶寬度均為5 MHz,系統(tǒng)輸出信號的ACPR的值應(yīng)小于-45 dBc[2]。
但是,目前的數(shù)字預(yù)失真系統(tǒng)存在著集成度不高、軟核處理能力較差、預(yù)失真架構(gòu)過于復(fù)雜等缺點。針對這些缺點,本文提出了一種基于Zynq和AD9361的高性能預(yù)失真系統(tǒng)。該系統(tǒng)基于Zynq的Cortex A9雙核,使得系統(tǒng)的性能較目前常用的Microblaze軟核提高了3倍以上。系統(tǒng)的功放數(shù)字模型采用的是記憶多項式模型,并且提出了新的查找表+卷積結(jié)構(gòu),免去了原有查找表模塊的大規(guī)模數(shù)據(jù)交換操作,降低了系統(tǒng)的復(fù)雜度。自適應(yīng)算法采用歸一化最小均方(Normalized Least Mean Square,NLMS)算法,該算法具有比最小均方(Least Mean Square,LMS)算法更快的收斂速度和更小的穩(wěn)態(tài)誤差。實驗證明,新提出的預(yù)失真結(jié)構(gòu)具有更短的運算周期、更低的硬件資源消耗和更簡單的硬件結(jié)構(gòu),且經(jīng)預(yù)失真處理后的鄰信道功率比降低了10 dB,滿足系統(tǒng)的傳輸需求。
工程中常用的功放數(shù)字模型包括Volterra級數(shù)、記憶多項式模型(Memory Polynomial,MP)、廣義記憶多項式模型(General Memory Polynomial,GMP)等,其中,Volterra級數(shù)是對功放擬合度最高的模型,但是由于其模型系數(shù)過多,提取困難,故僅在仿真中采用此模型;GMP模型為Volterra級數(shù)的簡化版,同樣具有較多的模型系數(shù),并且加入了延遲項和超前項,具有較高的復(fù)雜度;而MP模型只提取了Volterra級數(shù)的對角項,模型系數(shù)大大減小,非常適用于工程實現(xiàn)[3]。記憶多項式的數(shù)學(xué)模型如下所示:
(1)
式中:K為非線性階數(shù),Q為記憶深度。目前工程實現(xiàn)中,針對MP模型硬件實現(xiàn)使用得最多的方法包括多項式法和查找表法,其中多項式法是根據(jù)MP模型的數(shù)學(xué)公式直接搭建其硬件邏輯。以非線性階數(shù)K=2、記憶深度Q=2為例,其多項式法的硬件實現(xiàn)框圖如圖1所示。
圖1 多項式法硬件實現(xiàn)
可以看出,在上述條件下,此方法所消耗的硬件乘法器較多,其中,實數(shù)乘法器為7個,復(fù)數(shù)乘法器為3個。由于FPGA內(nèi)部的硬件乘法器邏輯資源較為寶貴,故在工程實現(xiàn)中常常采用查找表(Lookup Table,LUT)法[4],其硬件實現(xiàn)框圖如圖2所示。
圖2 查找表法硬件實現(xiàn)
查找表的項數(shù)由輸入信號幅度的量化位寬而決定,若量化位寬為N,則查找表項數(shù)為2N個。查找表的原理如下:
以MP模型為例,由式(1)的結(jié)構(gòu)可以看出,其前半部分可以單獨看成一個關(guān)于|x(n)|的函數(shù),即
(2)
則記憶多項式的表達式可以重寫為
(3)
故G(|x(n)|)可以看作一個函數(shù),|x(n)|為其索引。由于FPGA內(nèi)部包含了豐富的RAM資源,故查找表法更適用于硬件平臺上[5]。此方法消耗了3個復(fù)數(shù)乘法器和3塊RAM,相對于多項式法減少了7個實數(shù)乘法器。但是,此模塊需要求取信號的幅值|x(n)|,此運算為非線性運算,需要利用Cordic核來求取輸入信號的幅度,故會消耗較多的邏輯資源,并且由于查找表內(nèi)的數(shù)據(jù)需要實時更新,對于包含自適應(yīng)算法的預(yù)失真系統(tǒng),每次預(yù)失真模塊復(fù)增益系數(shù)akq的迭代替換都會產(chǎn)生巨大的數(shù)據(jù)流。在工程實踐中,一般采用乒乓操作的方式[6],將上下行查找表的深度均設(shè)置為2的次方數(shù),在讀取上部分RAM的同時,將更新的復(fù)增益值寫入下部分RAM,以保證數(shù)據(jù)迭代替換不出錯。較深的RAM會使得數(shù)據(jù)的更新速度變慢,導(dǎo)致系統(tǒng)整體工作頻率降低。
針對以上兩種記憶多項式硬件實現(xiàn)方法的弊端,本文提出了一種基于LUT和卷積算法的新型硬件實現(xiàn)方法。
以非線性階數(shù)K=2、記憶深度Q=2為例,將式(2)拆成
y(n)=a10x(n)+a30x(n)|x(n)|2+a50x(n)|x(n)|4+
a11x(n-1)+a31x(n-1)|x(n-1)|2+
a51x(n-1)|x(n-1)|4+a12x(n-2)+
a32x(n-2)|x(n-2)|2+
a52x(n-2)|x(n-2)|4。
(4)
經(jīng)過分析可得,式(4)可以分解成以下兩個式子:
(5)
(6)
可以看出,式(6)是一個標(biāo)準(zhǔn)的卷積和形式,其中Lk(n-q)為查找表輸出L(n)的卷積項,a(2k+1)q為記憶多項式模型的參數(shù),K為非線性階數(shù),Q為記憶深度。式(5)基于一個查找表架構(gòu)實現(xiàn),以輸入的x(n)信號為檢索地址,即I、Q信號檢索輸出L(n),分別為x(n)|x(n)|2,x(n)|x(n)|4,…,x(n)|x(n)|2K一共K個復(fù)信號輸出,所以查找表模塊一共需要K個雙端口ROM,而根據(jù)輸出信號的數(shù)學(xué)特性可知,L(n)的實部和虛部輸出是根據(jù)行列對稱的,故可以通過更簡單的方式檢索查找表的輸出。本文將經(jīng)過歸一化的輸入信號經(jīng)過5 b量化,查找表的行列數(shù)均為32,故ROM深度為1 024。
對查找表內(nèi)容的檢索只需要簡單的移位邏輯和加法邏輯即可實現(xiàn)。例如,對于行數(shù)為5、列數(shù)為7的實部數(shù)據(jù),即I=5/32,Q=7/32,可以將列數(shù)左移5位并加上行數(shù)即可得到本數(shù)據(jù)對應(yīng)的輸出。由于查找表的對稱特性,輸入信號的虛部則是將行數(shù)左移5位并加上列數(shù)。這樣設(shè)計大大簡化了檢索查找表的復(fù)雜度,提高了查找速度。
由于查找表不包含復(fù)增益系數(shù)akq,故在硬件實現(xiàn)時不需要進行實時的數(shù)據(jù)替換。這樣做既省略了時序控制電路的設(shè)計,又節(jié)約了硬件邏輯資源。
基于LUT和卷積算法的新型硬件實現(xiàn)方法的原理圖如圖3所示。其中,本結(jié)構(gòu)所需要迭代更新的模塊僅僅包括卷積模塊的復(fù)增益系數(shù),其總數(shù)為(Q+1)(K+1),故僅需要同數(shù)量的寄存器寄存數(shù)據(jù)即可。通過硬核處理器模塊傳輸過來的系數(shù)更新信號控制寄存器的數(shù)據(jù)流動,在降低系統(tǒng)復(fù)雜度的同時提高了預(yù)失真器的工作效率。卷積模塊可以利用直接型FIR結(jié)構(gòu),僅采用一個復(fù)數(shù)乘法器即可實現(xiàn)卷積功能,大大減少了硬件乘法器的消耗。
圖3 基于LUT和卷積算法的新型硬件實現(xiàn)方法
本文提出的基于LUT和卷積算法的記憶多項式實現(xiàn)模塊與其他記憶多項式實現(xiàn)模塊的資源消耗對比和基于以上三種預(yù)失真器實現(xiàn)方法的預(yù)失真系統(tǒng)的運算周期對比如表1所示,其中假定乘法器和加法器的周期都為P,Cordic核的周期為M,功放的延遲為D。
表1 硬件資源消耗及運算周期對比
根據(jù)表1,新提出的硬件實現(xiàn)方法的實數(shù)乘法器消耗比多項式法減少了2Q+3個,利用直接型FIR實現(xiàn)方法的復(fù)數(shù)乘法器只消耗了一個,均比多項式法和查找表法少,加法器消耗均比多項式法和查找表法少,且ROM消耗為是根據(jù)輸入信號的量化位數(shù)而定的,具有一定的可控性。對于運算周期,由表1可以看出,新提出的結(jié)構(gòu)比多項式法減少了(3K-1)P個周期,并且比查找表法減少了M個周期,提高了預(yù)失真器的工作頻率。
本文采用訓(xùn)練預(yù)失真的結(jié)構(gòu),如圖4所示。圖4中,BBP為基帶處理器,用于產(chǎn)生基帶數(shù)字信號x(n);w1和w2均為自適應(yīng)模塊更新的預(yù)失真器的系數(shù)值,該值是通過自適應(yīng)算法迭代得到的,具體的計算過程根據(jù)自適應(yīng)算法的種類而決定,目前數(shù)字預(yù)失真技術(shù)中常用的自適應(yīng)算法包括歸一化最小均方誤差算法、最小均方誤差算法和最小均方算法(Least Square,LS)等。
圖4 訓(xùn)練預(yù)失真系統(tǒng)結(jié)構(gòu)
由于訓(xùn)練預(yù)失真模塊可以保證系統(tǒng)得到全局最優(yōu)解,該結(jié)構(gòu)的反饋支路首先對功放輸出進行衰減,然后以功放輸入和功放模型求逆模型的輸出的差值為誤差信號,對功放逆模型進行迭代自適應(yīng)學(xué)習(xí),得到功放的逆模型參數(shù),具有穩(wěn)定、收斂速度快的特點,故本文選擇這種結(jié)構(gòu)實現(xiàn)預(yù)失真系統(tǒng)。
設(shè)預(yù)失真模塊的通道函數(shù)為D(n),故y(n)=D(x(n))。通過功放并返回數(shù)字域的信號z1(n)同樣通過預(yù)失真模塊后的輸出為y1(n)=D(z1(n)),則誤差信號可以表示為
e(n)=D(x(n))-D(z1(n))。
(7)
NLMS算法是基于LMS算法的改進版,對算法的原有步長進行歸一化處理,是一種變步長的自適應(yīng)算法,收斂速度得到了一定的提高。其算法如下所示:
(8)
式中:α為一個定值,w為每次迭代更新的預(yù)失真模塊參數(shù),x(n)為自適應(yīng)模塊輸入信號,y(n)為x(n)經(jīng)過橫向濾波后的信號,d(n)為參考信號(期望信號)。為了使算法收斂,α的值一般設(shè)置為如下區(qū)間:
0<α<2 。
(9)
接下來,設(shè)置LMS算法步長μ為1/32,設(shè)置NLMS算法的α為0.2,對兩種算法進行仿真,結(jié)果如圖5所示。從圖5中可以看出,NLMS算法的收斂速度略低于LMS算法,但是收斂后的誤差信號比LMS算法小約2 dB。為了獲得更好的預(yù)失真效果,可采用復(fù)雜度較高的NLMS算法,此算法適合在Zynq的處理系統(tǒng)(Processing System,PS)模塊中實現(xiàn)[7]。而對于圖4所示的預(yù)失真器實現(xiàn),由于其不高的運算復(fù)雜度和并行運算需求,適合在Zynq中的可編程邏輯(Programmable Logic,PL)中實現(xiàn)。
圖5 LMS和NLMS算法收斂對比圖
本節(jié)分別對正交頻分復(fù)用技術(shù)(Orthogonal Frequency Division Multiplexing,OFDM)調(diào)制基帶信號、未經(jīng)預(yù)失真處理的基帶信號和經(jīng)過預(yù)失真處理后的基帶信號的功率譜密度進行仿真?;鶐盘柧哂?3.04 MHz的帶寬、61.44 MHz的采樣率,載波數(shù)量為23 040個。仿真后的功率譜密度圖如圖6所示,其中,功率譜密度的頻率經(jīng)過了歸一化處理,其幅度也經(jīng)過了一系列處理,使其總小于0 dB,以方便觀察預(yù)失真效果。
圖6 功率譜密度對比圖
從圖6的仿真結(jié)果可以得出,經(jīng)過預(yù)失真處理后的基帶信號具有很好的帶外抑制效果,改善了約10 dB的帶外頻譜增生,滿足系統(tǒng)的需求;其ACPR也滿足發(fā)射端系統(tǒng)的要求。
根據(jù)圖4所示的原理圖,利用實驗室現(xiàn)有設(shè)備,搭建起來的硬件結(jié)構(gòu)如圖7所示,包括頻譜儀、二功分器、衰減器、功放和AD9361+Zedboard開發(fā)板??梢钥闯?,此系統(tǒng)具有較高的集成度,且Zynq的雙核處理器具有更強的數(shù)據(jù)處理能力,非常適合應(yīng)用在DSP等高速處理模塊上,同時PS和PL模塊之間通過現(xiàn)成的AXI總線連接,相對于Microblaze軟核降低了系統(tǒng)設(shè)計的復(fù)雜度,提高了系統(tǒng)的可重構(gòu)性[8]。
圖7 測試平臺
射頻器件選用的是AD9361,該器件的可編程性和寬帶能力使其成為多種收發(fā)器應(yīng)用的理想選擇。該器件集RF前端與靈活的混合信號基帶部分為一體,集成頻率合成器,為處理器提供可配置數(shù)字接口,從而簡化設(shè)計導(dǎo)入。在本設(shè)計中,AD9361的與Zynq的接口采用低電壓差分信號(Low-Voltage Differential Signaling,LVDS),在提高傳輸效率的同時降低了誤碼率[9]。
利用圖7所示的測試平臺,接下來對原始基帶信號、未經(jīng)預(yù)失真的功放輸出信號和經(jīng)過預(yù)失真的功放輸出信號的功率譜密度進行測試,設(shè)置頻譜儀的通道帶寬(Channel Bandwidth)為3.84 MHz,分辨率帶寬(Resolution Bandwidth)為100 kHz,顯示帶寬(Video Bandwidth)為1 MHz。圖8為OFDM基帶信號經(jīng)AD9361上變頻后輸出的功率譜,調(diào)節(jié)功放放大16 dB后的輸出信號如圖9所示??梢钥闯?,經(jīng)過功放后的信號產(chǎn)生了較為明顯的帶外增生,會對鄰近信道的信號傳輸產(chǎn)生較大的影響。
圖8 原始信號
圖9 未經(jīng)預(yù)失真處理的功放輸出信號
經(jīng)預(yù)失真處理后的功放輸出信號的功率譜密度圖如圖10所示,可經(jīng)過預(yù)失真處理后,鄰近信道的功率譜增生有了明顯的改善,能夠很好地抑制由功放產(chǎn)生的諧波所造成的頻譜擴張,其ACPR比未經(jīng)預(yù)失真的信號改善了10 dBc左右,達到了-45 dBc,完全滿足系統(tǒng)的傳輸需求。
圖10 經(jīng)預(yù)失真處理后的功放輸出信號
本文所提出的基于Zynq和AD9361的聯(lián)合預(yù)失真架構(gòu)相較于Microblaze+FPGA結(jié)構(gòu)具有更高的集成度和性能。針對記憶多項式預(yù)失真模型,新提出的預(yù)失真器結(jié)構(gòu)的硬件乘法器消耗相較于目前常用的多項式與查找表結(jié)構(gòu)分別減少了Q個和2Q+3個,同時其運算周期相較于目前常用的記憶多項式與查找表實現(xiàn)方式分別降低了(3K-1)P與M個,一定程度上提高了系統(tǒng)的運算速度。自適應(yīng)算法采用NLMS算法,在軟件仿真中,其穩(wěn)態(tài)誤差比LMS算法小了2 dB。在實物測試中,采用以上結(jié)構(gòu)的預(yù)失真系統(tǒng)和自適應(yīng)算法,其ACPR達到了-45 dBc,改善了10 dBc左右,能夠完全滿足系統(tǒng)的需求。由于Zynq系統(tǒng)的板上資源豐富,今后可以研究在Zynq系統(tǒng)中實現(xiàn)擬合度更高、更復(fù)雜的數(shù)字預(yù)失真模塊及其自適應(yīng)算法。