殷志勇
(中國(guó)船舶重工集團(tuán)公司第七二三研究所,江蘇 揚(yáng)州 225101)
正交振幅調(diào)制(QAM)是一種高效的利用載波幅度和相位聯(lián)合調(diào)制的技術(shù),因其極高的頻譜利用率而被廣泛應(yīng)用于現(xiàn)代數(shù)字通信系統(tǒng)中。在高階QAM數(shù)字通信系統(tǒng)中,因發(fā)送端和接收端的本地振蕩器時(shí)鐘不一致、信道的時(shí)變特性等原因,會(huì)導(dǎo)致接收端出現(xiàn)明顯的相偏和頻偏。這也是影響解調(diào)性能的最主要原因之一。解調(diào)恢復(fù)算法最主要的目的就是解決相偏和頻偏問(wèn)題。
本文主要研究了64QAM解調(diào)系統(tǒng)關(guān)鍵技術(shù),包括載波恢復(fù)和位同步,提出適合高階QAM數(shù)字解調(diào)系統(tǒng)的載波恢復(fù)算法,介紹了各個(gè)模塊的設(shè)計(jì)方法和工作原理,完成各個(gè)算法模塊的設(shè)計(jì),實(shí)現(xiàn)解調(diào)系統(tǒng)的電路編程。
正交振幅調(diào)制是利用已調(diào)信號(hào)在相同帶寬內(nèi)的頻譜正交來(lái)實(shí)現(xiàn)2路并行的數(shù)據(jù)信息傳輸,其信道頻帶利用率與單邊帶調(diào)制一樣,主要用于高速數(shù)據(jù)傳輸系統(tǒng)中。QAM系統(tǒng)組成框圖如圖1所示。
圖1 調(diào)制解調(diào)系統(tǒng)組成框圖
x1(t)和x2(t)是經(jīng)過(guò)處理的獨(dú)立帶寬受限的基帶波形,cosωct和sinωct是2個(gè)相互正交的載波。y1(t)和y2(t)是理想相干解調(diào)的結(jié)果。
在實(shí)際工程應(yīng)用中,為了獲得較高的頻帶利用率,通常采用高階的QAM調(diào)制,本文具體討論64QAM的調(diào)制解調(diào),64QAM信號(hào)的基帶波形取8種電平(±1、±3、±5、±7)。64QAM調(diào)制信號(hào)的信息傳輸方式為6 bit二進(jìn)制。
多電平正交調(diào)幅信號(hào)是一組在幅度與相位上都攜帶信息的載波鍵控信號(hào),它可以用其復(fù)包絡(luò)表示。多電平正交調(diào)幅信號(hào)的傳輸波形集相應(yīng)于復(fù)平面上的矢量端點(diǎn)集,又叫做多電平正交調(diào)幅的星座圖(Consetllation)。
根據(jù)相關(guān)文獻(xiàn)[1],在4種映射邏輯(全平移對(duì)稱型、全鏡像對(duì)稱型、平移/旋轉(zhuǎn)對(duì)稱型和鏡像/旋轉(zhuǎn)對(duì)稱型)中,鏡像/旋轉(zhuǎn)對(duì)稱型誤碼增值(由于邏輯變換和差分譯碼引起的誤差擴(kuò)散)最小,故采用鏡像/旋轉(zhuǎn)對(duì)稱型作為64QAM調(diào)制信號(hào)星座圖的邏輯映射方式,如圖2所示。
圖2 鏡像/旋轉(zhuǎn)對(duì)稱型邏輯映射
將復(fù)平面按格雷碼編碼進(jìn)行3次切割,第2次以原點(diǎn)為軸進(jìn)行每次π/2的旋轉(zhuǎn)對(duì)稱變換,第3次進(jìn)行鏡像對(duì)稱變換,得到最后的64個(gè)符號(hào)點(diǎn)。圖中,橫坐標(biāo)及縱坐標(biāo)的取值均只有8種,且分別為±1、±3、±5、±7。每個(gè)符號(hào)點(diǎn)分別對(duì)應(yīng)1組I、Q值,輸出的同相、正交支路信號(hào)經(jīng)過(guò)成型濾波,與正余弦信號(hào)相乘,完成調(diào)制。
QAM解調(diào)的核心是載波恢復(fù)算法,載波恢復(fù)算法一般都是基于鎖相環(huán)技術(shù),不同的是鑒相器的設(shè)計(jì)。實(shí)現(xiàn)載波同步有2種方法:傳統(tǒng)的插入導(dǎo)頻法因?yàn)榘l(fā)射功率的利用率下降已經(jīng)被摒棄不用,應(yīng)用較多的是基于鎖相環(huán)的相干解調(diào)法。
載波恢復(fù)環(huán)路主要由以下4個(gè)模塊構(gòu)成:數(shù)控振蕩器、成型濾波器(實(shí)現(xiàn)低通濾波功能)、鑒相器及環(huán)路濾波器。其中,鑒相器模塊在程序運(yùn)行一定時(shí)間會(huì)自動(dòng)從極性判決算法轉(zhuǎn)化為DD算法。在Vivado軟件開(kāi)發(fā)平臺(tái)上利用Verilog HDL編寫(xiě)程序?qū)崿F(xiàn)各模塊算法。圖3為FPGA實(shí)現(xiàn)時(shí),載波恢復(fù)模塊實(shí)現(xiàn)框圖。
圖3 載波恢復(fù)模塊實(shí)現(xiàn)結(jié)構(gòu)圖
DD算法利用星座圖上的所有點(diǎn)進(jìn)行判決,簡(jiǎn)單有效。缺點(diǎn)是:如果接收到的信號(hào)存在比較大的初始相位偏差,很容易出現(xiàn)參數(shù)判決錯(cuò)誤點(diǎn)。一般只用在低階QAM調(diào)制的載波恢復(fù)階段。本文用在高階64QAM載波恢復(fù)的跟蹤模式。信號(hào)直接進(jìn)行判決,與最近的星座點(diǎn)比較得到相位誤差[2]。
輸入信號(hào)為r(n),忽略噪聲和一些其他情況,產(chǎn)生的相干解調(diào)信號(hào)為q(n),q(n)用復(fù)數(shù)形式表示為:
q(n)=rej(2πf1Ts+θ)=
r{cos(2πf1Ts+θ)+jsin(2πf1Ts+θ)}
(1)
q(n)經(jīng)過(guò)逐電平判決,輸出為:
(2)
(3)
這里符號(hào)的意思是判決后的輸出結(jié)果,經(jīng)過(guò)已經(jīng)求出的門限值,判決到理想星座圖上附近點(diǎn),所以sgn[I(n)]和sgn[Q(n)]的值分別有±1、±3、±5、±7共8種情況。工程實(shí)際中,在FPGA中實(shí)現(xiàn)乘除法,一般通過(guò)移位實(shí)現(xiàn)。比如乘以7,相當(dāng)于左移2位加左移1位加左移0位。左移相當(dāng)于擴(kuò)展,左移2位就擴(kuò)展3位,最高位為符號(hào)位,中間為原數(shù),低位補(bǔ)2個(gè)0 bit位。分母有2、10、18、26、34、50、58、74、98等情況,分別進(jìn)行右移位計(jì)算。
極性判決算法是多模式轉(zhuǎn)換的算法,它的功率檢測(cè)門限值有多個(gè),在不同的模式下使用不同的門限值。系統(tǒng)運(yùn)行開(kāi)始,門限設(shè)置比較低,允許較多的符號(hào)通過(guò),這樣可以得到粗略的頻偏[3]。根據(jù)實(shí)際情況,在系統(tǒng)運(yùn)行一段時(shí)間后,再將門限值增高,這樣可得到更精確的頻偏。極性判決算法將信號(hào)判決到相應(yīng)對(duì)角線上的點(diǎn),利用初始門限值0,增大系統(tǒng)收斂速度,提高門限值,從而提高判決精確度。
星座圖點(diǎn)用極坐標(biāo)形式來(lái)表示可寫(xiě)成:
(4)
在第一象限中,假設(shè)極性判決檢測(cè)器的輸出對(duì)角線上的點(diǎn)為p(n),它的極坐標(biāo)形式為:
(5)
其中:
(6)
θ(n)=arg[a(n)]+Θ(n)
(7)
A是大于零的常值,則若用鑒相器,可得到相差為:
(8)
若a(n)屬于對(duì)角線上的符號(hào)點(diǎn)之一,那么:
(9)
根據(jù)時(shí)間轉(zhuǎn)換模式設(shè)計(jì)自動(dòng)轉(zhuǎn)換模塊。具體過(guò)程如下:在鎖相環(huán)開(kāi)始工作的時(shí)候,采用極性判決法,使用小的τ值進(jìn)行相位誤差檢測(cè),同時(shí)使用大的環(huán)路增益,這樣可以有更多的星座點(diǎn)被用來(lái)提取相位信息,擴(kuò)展環(huán)路捕捉范圍;當(dāng)環(huán)路粗鎖后,將τ值調(diào)大,環(huán)路增益變小,此時(shí)相位檢測(cè)的噪聲小,環(huán)路的相位抖動(dòng)下降,實(shí)現(xiàn)相位誤差的精調(diào)。最后相位檢測(cè)器切換到面向判決(DD)模式,利用所有的星座點(diǎn)進(jìn)行穩(wěn)定的相位誤差糾正。這種模式的變換由自動(dòng)模式機(jī)制來(lái)實(shí)現(xiàn)。自動(dòng)轉(zhuǎn)換機(jī)制在現(xiàn)場(chǎng)可編程門陣列(FPGA)中實(shí)際上就是一個(gè)以周期為單位的時(shí)間計(jì)數(shù)器,當(dāng)計(jì)數(shù)器達(dá)到一定數(shù)值的時(shí)候,將DD算法的輸出賦值給電路最終輸出,得到結(jié)果。
輸入數(shù)字信號(hào)首先通過(guò)寄存器緩存,然后與數(shù)控振蕩器輸出的正余弦波相乘。數(shù)控振蕩器在這里是調(diào)用Vivado中的直接數(shù)字頻率合成器(DDS)知識(shí)產(chǎn)權(quán)(IP)核(見(jiàn)圖4)。
設(shè)置滾降系數(shù)為0.35,利用Matlab中的函數(shù)生成與調(diào)制信號(hào)端結(jié)構(gòu)完全相同的開(kāi)平方升余弦濾波器的系數(shù),將系數(shù)寫(xiě)進(jìn)coe文件。調(diào)用Vivado中的有限沖激響應(yīng)(FIR)IP核,將生成的coe系數(shù)文件導(dǎo)入。圖5為生成的濾波器IP核。
圖4 DDS輸出結(jié)果
圖5 開(kāi)平方升余弦濾波器
載波恢復(fù)中,實(shí)際情況要在符號(hào)的最佳判決時(shí)刻進(jìn)行判決。這就需要先完成定時(shí)恢復(fù),提取位同步信號(hào)。位同步模塊用于生成位定時(shí)信號(hào),以便于DD算法符號(hào)判決時(shí)能在最佳采樣點(diǎn)進(jìn)行,圖6為各個(gè)模塊信號(hào)流程圖。同步環(huán)路由數(shù)控振蕩器模塊、插值濾波器模塊、定時(shí)誤差檢測(cè)等模塊組成。
內(nèi)插器可以實(shí)現(xiàn)數(shù)據(jù)數(shù)率轉(zhuǎn)換,工程中常采用具有Farrow結(jié)構(gòu)的立方插值器[4]。
由圖7規(guī)定3條縱向支路分別為x1、x2、x3,橫向支路為結(jié)果y(k)。則計(jì)算公式分別為:
x1= 0.5x(n)-0.5x(n-1)-
0.5x(n-2)+0.5x(n-3)
(10)
x2= -0.5x(n)+1.5x(n-1)+
0.5x(n-2)-0.5x(n-3)
(11)
x3=x(n-2)
(12)
(13)
這種插值器1個(gè)周期內(nèi)需要4個(gè)采樣點(diǎn)。在FPGA中,用信號(hào)傳輸速率4倍的時(shí)鐘作為采樣信號(hào),即可實(shí)現(xiàn)。
圖8 誤差檢測(cè)器原理圖
64QAM調(diào)制信號(hào)如果要用Gardner的算法,要對(duì)其進(jìn)行稍微的改進(jìn)。還是上面的例子,符號(hào)1變?yōu)?,平均值是2,相當(dāng)于橫坐標(biāo)上移2,即上移了a=[yI(k)+yI(k-1)]/2。所以,對(duì)于64QAM信號(hào)而言,Gardner誤差檢測(cè)算法的公式為:
(14)
NCO在適當(dāng)?shù)臅r(shí)候產(chǎn)生需要的內(nèi)插點(diǎn)。這里的NCO是一個(gè)相位遞減器,利用算法實(shí)現(xiàn)。差分方程為:
η(m+1)=[η(m)-ω(m)]
(15)
式中:η(m+1)為第m+1個(gè)時(shí)鐘的NCO寄存器值;ω(m)為NCO的控制字。
若η(m)-ω(m)≥0時(shí),值不變;當(dāng)η(m)-ω(m)<0時(shí),η(m+1)=[η(m)-ω(m)]+1。保證NCO寄存器值一直都是正小數(shù)。ω(m)為環(huán)路濾波器的輸出值。NCO寄存器隨時(shí)間的變化關(guān)系如圖9所示[4]。
圖9 NCO寄存器時(shí)間關(guān)系
圖9中,mkTs是采樣時(shí)鐘脈沖點(diǎn),第k個(gè)插值時(shí)刻kTi=(mk+μk)Ts,為NCO寄存器溢出時(shí)刻。由相似三角形原理可得:
(16)
本文所討論的算法中,ω(mk)=0.5時(shí),環(huán)路正好達(dá)到平衡。
在Matlab中進(jìn)行仿真,設(shè)置符號(hào)速率為Rb=30 Mbps,成型濾波器滾降因子α=0.35,采樣頻率fs=4Rb=120 MHz。符號(hào)數(shù)50 000個(gè),環(huán)路濾波器輸出初始寄存器值ω(mk)=0.5,NCO寄存器初始值η(mk)=0.7,NCO初始輸出定時(shí)分?jǐn)?shù)間隔器μk=0.6。得到如圖10所示的結(jié)果。
圖10 位同步算法仿真結(jié)果
在Matlab中生成50 000個(gè)64進(jìn)制的隨機(jī)數(shù),轉(zhuǎn)化成6 bit的二進(jìn)制數(shù),將每組數(shù)的最高位和第2位進(jìn)行差分編碼。編碼后的數(shù)按誤碼增值最小的“鏡像/旋轉(zhuǎn)對(duì)稱型邏輯映射”映射為同相正交數(shù)據(jù),繪制星座圖。圖11為初始星座圖。設(shè)置采樣頻率Fs=210 MHz,碼速率ps=30 Mbps,F(xiàn)s/ps為內(nèi)插因子,分別對(duì)同相正交支路升采樣,開(kāi)平方根升余弦濾波器滾降系數(shù)為0.35,載波頻率70 MHz。將同相正交支路信號(hào)相加,生成64QAM已調(diào)信號(hào)。波形如圖12所示。
圖11 初始星座圖
DD算法載波環(huán)路需要獲取到位定時(shí)信號(hào),且只有獲取到正確的位定時(shí)信號(hào)的前提下,環(huán)路才能正常鎖定[5]。Gardner位同步環(huán)路可以在載波相位未同步的情況下完成鎖定,位同步信號(hào)sync作為DD算法鑒相模塊的輸入信號(hào)。完成模塊關(guān)聯(lián),讀取64QAM已調(diào)信號(hào)的txt文件,實(shí)現(xiàn)載波恢復(fù)。時(shí)鐘周期為4.7 ns(210 MHz),仿真時(shí)間單位為ns級(jí),在400個(gè)時(shí)鐘周期后復(fù)位信號(hào)從高電平1變?yōu)榈碗娖?,系統(tǒng)開(kāi)始工作。圖13為系統(tǒng)解調(diào)結(jié)果。
圖12 原始64QAM已調(diào)信號(hào)波形
圖13 系統(tǒng)解調(diào)結(jié)果
載波恢復(fù)的結(jié)果比較理想,在仿真時(shí)間14 000 ns時(shí),環(huán)路完成鎖定,穩(wěn)態(tài)相差基本不變,沒(méi)有比較明顯的波動(dòng)。位同步模塊中分?jǐn)?shù)間隔很快能保持穩(wěn)定,定時(shí)誤差信號(hào)在零值附近很小波動(dòng)。將最后的I、Q路信號(hào)寫(xiě)入txt文件中,在Matlab中調(diào)用,繪制星座圖,得到圖14。
圖14 載波恢復(fù)星座圖
本文對(duì)64QAM載波恢復(fù)算法進(jìn)行分析,并且對(duì)位同步算法實(shí)施仿真,在Vivado中設(shè)計(jì)各個(gè)模塊的FPGA可實(shí)現(xiàn)電路。經(jīng)過(guò)系統(tǒng)測(cè)試,結(jié)果說(shuō)明基本能實(shí)現(xiàn)載波恢復(fù),具有很小的穩(wěn)態(tài)相差。波形結(jié)果和星座圖的恢復(fù),表明64QAM已調(diào)信號(hào)順利實(shí)現(xiàn)解調(diào),進(jìn)一步證明了論文所設(shè)計(jì)的系統(tǒng)的正確性。
[1] 姚彥.多電平正交調(diào)幅的集映射與差分編碼[J].電信科學(xué),1987(7):28-30.
[2] 胡楠.高階QAM數(shù)字快速解調(diào)及電路設(shè)計(jì)[D].成都:電子科技大學(xué),2008.
[3] 夏文娟.基于高階QAM的載波恢復(fù)方法的研究與實(shí)現(xiàn)[D].合肥:合肥工業(yè)大學(xué),2013.
[4] 杜勇.數(shù)字調(diào)制解調(diào)技術(shù)的MATLAB與FGPA實(shí)現(xiàn)[M].北京:電子工業(yè)出版社,2015.
[5] WANG P,FAN P Z.New carrier recovery method for 16-QAM system based on full constellation points[J].Journal of Southwest Jiaotong University(English Edition),2007(3):187-191.