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