康 超,陳麗婷,陳建斌
(上海航天電子技術研究所,上海 201109)
GMSK信號[1]的調制指數為0.5,相位連續(xù),可以理解為一種特殊的FSK信號。GMSK的基帶信號經高斯濾波后提高了頻帶利用率但同時也引入了碼間干擾。本文采用通用數字環(huán)+Viterbi算法完成GMSK信號的相干解調。
文獻[2-4]指出,存在碼間干擾時使用最佳似然準則(MLSE)可以達到最佳譯碼性能,通常選擇用Viterbi算法[5]實現GMSK信號解調來提升接收靈敏度。Viterbi算法對載波環(huán)的相位誤差要求較高,本文通過Matlab仿真得出相位誤差要求控制在6°。文獻[6-8]分析了GMSK相干解調載波同步的方法和性能,文獻[9]的通用數字環(huán)是一種適于數字化處理的低運算量鎖相環(huán),性能可以滿足Viterbi算法的要求。
Viterbi算法基于最大似然準則選取路徑度量最大的匹配路徑進行回溯譯碼,需要大量的匹配濾波器,會導致硬件資源消耗過多甚至不夠。此外路徑度量值LS隨著算法的持續(xù)運算是個發(fā)散的無窮大數,在工程實現時無法處理。本文針對以上2個問題進行了研究并提出了解決方法。利用GMSK信號特點和三角函數特性減少了3/4的匹配濾波器數量,對Viterbi算法解調過程進行分析提出了LS減操作處理方法,使LS收斂在460附近,使GMSK的Viterbi算法解調可以在FPGA上實現。
GMSK信號可以表示為[10]:
(1)
(2)
式中,αi為+1或-1的發(fā)送碼元序列;調制指數h=0.5;q(t)是一個相位脈沖相位函數。文獻[11]指出了BT(B為高斯濾波器3 dB帶寬)值越小,GMSK信號帶寬越窄,但碼間干擾也越嚴重。當BT值趨近于無窮大時相當于沒有經過高斯整形,GMSK信號成為MSK信號。文獻[12]指出GMSK信號的波形主要集中在(-2.5T~2.5T)中,因此本文截取5個碼元長度,即關聯長度L=5。
文獻[13]指出了不同BT值下GMSK信號的功率譜能量分布情況,在BT=0.25時GMSK信號的99.8%的能力集中在1.09Rb,即11 MHz帶寬內。本文使用Matlab仿真得到不同BT值下GMSK信號的解調性能如表1所示。綜合考慮頻帶利用率和解調性能,本文選擇BT=0.25。
表1 不同BT值GMSK信號解調性能
BT誤碼率9.4?10-5時Eb/N0值/dB0.209.40.259.00.508.7∞8.7
式(2)可展開為[14-15]:
(3)
(4)
文獻[16-17]指出GMSK的相位狀態(tài)僅有0、π/2、π和3π/2四種取值,由式(4)可以看出Sn+1狀態(tài)唯一增加的信息就是輸入碼源an。本文的關聯長度L=5,因此可以列出64個節(jié)點狀S1=(0,0000),S2=(0,0001),……S17=(π/2,0000),S18=(π/2,0001),……S33=(π,0000),S34=(π,0001),……S49=(3π/2,0000),S50=(3π/2,0001) ……S63=(3π/2,1110),S64=(3π/2,1111)。依次可以畫出任意碼源的GMSK信號狀態(tài)轉移路徑圖,例如在初向為0時碼源0100110101的狀態(tài)轉移路徑為S1>S49>S34>S19>S5>S57>S2>S51>S38>S27>S38。
對于任意碼源序列的GMSK信號都會有一條狀態(tài)轉移路徑與之匹配,基于Viterbi算法的GMSK信號解調就是一種順序網格搜索算法實現最大似然解調。GMSK信號任一節(jié)點在下一個碼源周期只有2個對應的路徑終點,因此對于關聯長度L=5的GMSK信號共有128條路徑。Viterbi算法將接收信號r(t)分別與128條可能路徑信號s(t)進行相關運算等到128個路徑度量增量A(Si→Sj)。將每個節(jié)點對應的2條路徑的A(Si→Sj)與前一碼源周期的該節(jié)點的路徑度量LSi相加,取大的作為當前時刻的路徑度量LSj。在每個碼源周期都按上述方法計算64個節(jié)點的LS值,取LS中最大節(jié)點的狀態(tài)轉移路徑作為匹配路徑,對匹配路徑進行回溯便可得到碼源信息完成GMSK信號的解調。匹配路徑的長度稱為記憶長度Nt,Nt=9。上文中GMSK信號關聯長度L=5,因此Viterbi算法回溯解調后得到的是之前14個碼源時刻的信息an-14。路徑度量增量計算公式為[18]:
(5)
式中,r(t)為接收信號;si→j(t)為本地匹配路徑信號;I(t)和Q(t)為r(t)的正交分量;cosφ(t)和sinφ(t)為si→j(t)的正交分量。
本文采用AD公司的AD9361芯片+Xilinx公司的XC7K160T平臺實現GMSK信號的Viterbi解調算法。信號頻率390 MHz,碼速率10 Mbps,AD采樣率50 Mbps,每個碼源周期內有5個采樣點。AD9361芯片完成GMSK信號的低噪放、下變頻、增益控制和AD轉換,將轉換后的I、Q兩路數據發(fā)送給FPGA。由于輸出的是I、Q兩路數據,所以實際數據量為100 Mbps。為了保證信號完整性,采用雙端數據傳輸模式(Double Data Rate),因此AD9361與FPGA的實際通信速率為200 Mbps。FPGA對GMSK信號進行載波同步和Viterbi解調,解調后的碼源信息在進行基帶處理后通過USB口發(fā)送給計算機。硬件平臺實物如圖1所示。
圖1 硬件平臺
實現Viterbi算法的步驟如下[19-20]:
① 按照式(5)計算128條路徑度量增量A(Si→Sj);
② 計算64個節(jié)點的路徑度量LSi:
LSi=max{(LSx+A(Sx→Si)),(LSy+A(Sy→Si)},
(6)
式中,A(Sx→Si)和A(Sy→Si)為到達i節(jié)點的2條路徑度量增量;LSx和LSy為前一碼源周期節(jié)點X和節(jié)點Y的路徑度量值;
③ 選出當前時刻路徑度量值最大的節(jié)點LSmax=max{LS1,LS2,LS3……LS64};
④ 根據路徑度量值最大節(jié)點的匹配路徑找出初始節(jié)點回溯出碼源信息an-14;
⑤ 在下一碼源周期重復步驟①~④。
FPGA實現Viterbi算法軟件框圖如圖2所示,主要為“加、比、選和譯”4部分。
匹配濾波器:完成“加”功能。本文每個碼源周期內為5個采樣點,按式(5)計算相當于在每一個碼源周期內對I路和Q路分別進行5次乘加操作,可利用FIR濾波器實現此功能。
圖2 FPGA實現Viterbi算法軟件
LS計算及匹配路徑更新:完成“比”功能。緩存上一碼源周期64個節(jié)點的路徑度量值及匹配路徑,并按照式(6)更新當前碼源周期64個節(jié)點的路徑度量值及匹配路徑。
最大LSi選擇:使用流水操作完成64選1,選出最大的LSmax。同時選出4個初始相位節(jié)點的最小LSmin(1~16)、LSmin(17~32)、LSmin(33~48)和LSmin(49~64)用于后續(xù)LS減操作。
回溯解調:根據LSmax的匹配路徑找到起始節(jié)點,根據起始節(jié)點狀態(tài)完成Viterbi解調回溯出之前的碼源信息an-14。
3.3.1 匹配濾波器數量優(yōu)化
需計算128條匹配路徑A(Si→Sj),所以需要256個5階FIR濾波器即1 280個乘法器和1 024個加法器,耗費的FPGA硬件資源過多,必須進行優(yōu)化設計否則無法實現。
本文利用GMSK信號只有(0,π/2,π,3π/2)4種初相的特點和三角函數特性對本地匹配濾波器數量進行優(yōu)化。對于任一匹配路徑信號:
si→j(t)=cos{φ0+Δφ(t)}+jsin{φ0+Δφ(t)},
(7)
式中,φ0為初始相位;Δφ(t)為一個碼源周期內相位的變化。三角函數特性為:
(8)
將式(8)帶入式(7)可以看出,對初始相位相差π/2的2條匹配波形而言I路相反Q路相同,對初始相位相差π的2條匹配波形而言I路、Q路都相反。假設初始相位為0的64條匹配路徑信號為I′和Q′,根據式(5)和式(8)便可以得出如表2所示的4個初始相位下128條匹配路徑A(Si→Sj)的計算結果,所以本文最終僅需64個FIR濾波器,節(jié)省了3/4的FPGA硬件資源。
表2 不同初始相位下計算結果
初始相位A(Si→Sj)0∫(n+1)TnTI(t)?I′(t)dt+∫(n+1)TnTQ(t)?Q′(t)dtπ2-∫(n+1)TnTI(t)?I′(t)dt+∫(n+1)TnTQ(t)?Q′(t)dtπ-∫(n+1)TnTI(t)?I′(t)dt-∫(n+1)TnTQ(t)?Q′(t)dt3π2∫(n+1)TnTI(t)?I′(t)dt-∫(n+1)TnTQ(t)?Q′(t)dt
3.3.2 路徑度量LS減操作設計
由式(5)可知,與接收信號完全匹配的A(Si→Sj)值應該為5,則理論上每個碼源周期匹配路徑的LSmax都以5累加下去,是個發(fā)散的無窮大數值,因此必須對LS進行處理減操作處理,否則FPGA無法實現。
將64個節(jié)點的LS值按照初始相位狀態(tài)劃分為4個范圍:LS(0):LS1~LS16、LS(π/2):LS17~LS32、LS(π):LS33~LS48和LS(3π/2):LS49~LS64。從表2可以看出,初始相位相差π的2條匹配路徑A(Si→Sj)的計算結果為相反數,同時接收信號的碼源信息中0和1是等概率出現的,因此在一段時間后初始相位相差π的32個節(jié)點LS值應該是相近的,即LS(0)≈LS(π),LS(π/2)≈LS(3π/2)。初始相位相差π/2的2條匹配路徑因為正交關系,A(Si→Sj)計算結果的絕對值應該是一個趨于5,另一個趨于0。在Viterbi算法中與接收信號匹配節(jié)點的LS始終以趨于5的數累加,而與接收信號正交的節(jié)點始終以趨于0的數累加。因此在一段時間后初始相位相差π/2的32個節(jié)點的LS值相差很大,即LS(0)和LS(π)會遠遠大于或者小于LS(π/2)和LS(3π/2)。
節(jié)點間LS值的差距是Viterbi算法解調的依據,所以在做減操作時一定要保持好節(jié)點間LS距離否則會導致誤碼。通過分析可知LSmax會遠大于LSmin,所以簡單地將所有節(jié)點LS值減去一個最小值LSmin無法解決發(fā)散問題?,F假設LS(0)和LS(π)遠遠大于LS(π/2)和LS(3π/2),則幸存路徑會在節(jié)點S1~S16和S33~S48間產生,所以僅需對這些節(jié)點的LS值減去同一個較大的數值便可解決發(fā)散問題,同時又不會導致誤碼。
本文設定了閾值A和減操作數B,若同時滿足LSmax>A&LSmin(1~16)>B&LSmin(33~48)>B,則節(jié)點LS1~LS16和LS33~LS48都減去B。LS17~LS32和LS49~LS64同此處理方法。按此方法進行Matlab建模,在碼源長度為1×105的情況下,仿真結果表明LSmax會收斂在460附近,Viterbi算法解調正常。
3.3.3 參數確定
對Viterbi算法進行Matlab建模,使用Simulink搭建GMSK信號源,在碼源長度為1×105的情況下,確定了載波環(huán)相位誤差、LS精度和A(Si→Sj)精度參數要求。
① 載波環(huán)相位誤差要求:在不同相位差和信噪比的情況下,仿真結果如表3所示。可以看出相位差6°解調性能惡化1 dB,相位差9°解調性能惡化2 dB,所以本文要求載波環(huán)相位誤差控制在6°。
表3 不同相位差下解調結果
信噪比/dB相位差/(°)誤碼個數10 02101870110 92410 5611 9811 6212 92
②LS精度要求:仿真結果表明最大的LS為
454.907 029 934 009 190,
次大的LS為
454.905 751 877 149 070,
所以LS的精度要求至少為0.001,即不少于10 bit小數。
③A(Si→Sj)精度要求:仿真結果表明最大的A(Si→Sj)=4.974 687 266 176 164,次大的A(Si→Sj)= 4.973 404 437 429 079,所以A(Si→Sj)的精度要求為0.000 1(多保留一級余量),即不少于13 bit小數。
本文使用RS信號源SMW200A測試工程實現Viterbi算法的解調所需信噪比Eb/N0。信號源頻率390 MHz,信號強度設置為-40 dBm,高斯白噪聲帶寬設置12 MHz,80 Byte偽隨機碼本循環(huán)發(fā)送,測試結果表明當誤碼率為9.4×10-5時Eb/N0=9.5 dB。
從表1中可看出同等量級誤碼率下Eb/N0理論值為9 dB,工程實現結果僅比理論值惡化0.5 dB。上文提到BT=0.25時GMSK信號的99.8%的能力集中在1.09 Rb即11 MHz帶寬內,而本文測試時為匹配工程實現射頻前端模擬濾波器的帶寬將高斯噪聲帶寬設置為12 MHz,所以帶內噪聲要大于表1中理論仿真時信號噪聲等帶寬的情況。AD9361在對GMSK信號進行低噪放和增益控制時芯片自身熱噪聲也會使信號信噪比惡化,同時印制板走線和FPGA定點等造成的解調損耗也會影響解調性能。綜上所述,工程實現結果僅比理論值惡化0.5 dB,表明本文充分發(fā)揮了Viterbi算法的最佳譯碼性能。
在同一硬件平臺測試10 Mbps碼速率下(信號帶寬為17 MHz)FSK信號解調性能,未采用多符號檢測技術(MSD)時Eb/N0為12.6 dB,采用MSD技術時Eb/N0為8 dB。說明在同樣使用最佳似然準則的情況下,FSK信號接收靈敏度要優(yōu)于GMSK信號。
對基于Viterbi算法的GMSK信號解調進行了研究并在FPGA上實現。針對所需匹配濾波器過多問題進行了優(yōu)化設計,利用GMSK信號特點和三角函數特性將匹配濾波器數量由256個降為64個。針對路徑度量LS發(fā)散FPGA無法處理問題,對Viterbi算法解調過程進行分析,提出了LS減操作處理方法,使LS收斂在460附近。
工程實測解調信噪比Eb/N0=9.5 dB,在噪聲帶寬大于理論分析值和AD9361芯片自身熱噪聲等影響下僅比理論值惡化0.5 dB,充分發(fā)揮了Viterbi算法的最佳譯碼性能。與未使用多符號檢測技術的FSK體制相比,通信帶寬節(jié)省了5 MHz同時提升了3 dB接收靈敏度。
[1] MUROTAK,HIRADE K.GMSK Modulation for Digital Mobile Radio Telephone[J].IEEE Trans.on Commun,1981,COM-29(7):1044-1050.
[2] OHNO K,ADACHI F.Application of MLSE to GMSK Signal Reception Using Frequency Demodulator[J].Electronics Letters,1988,24(25):1539-1540.
[3] TUNG C,LIVINGSTON J N.Vierbi Detector for Narrow-band Digital FM with Limiter-discriminator Detection[C].Communications Theory Mini-conference Record,1994:201-205.
[4] PFONSEKA J P.Noncoherent Detection with Viterbi Decoding for GMSK Signals[J].IEEE Proceeding Communications,1996,143(6):373-379.
[5] FOMEY G D.The Viterbi Algorithm[J].Proceedings of the IEEE,1973,461(3):268-278.
[6] 熊于菽.GMSK調制解調技術研究[D].重慶:重慶大學,2007:30-31.
[7] 孫仁琦,陳文萍.一種新的MSK調制解調器的設計及實現[J].南京郵電大學學報,1991(7):1-3.
[8] WUY C,NG T S.New Implementation of a GMSK Demodulator in Linear Software Radio Receiver[J].IEEE Pimrc,2000:1049-1053.
[9] 張宗攀,秦玉峰.一種全數字GMSK解調方法[J].空間電子技術,2011(2):50-53.
[10] 張力軍.數字通信[M].北京:電子工業(yè)出版社,2003:151-157.
[11] 陳志堂.全數字GMSK調制器的仿真與實現[D].成都:電子科技大學,2011:6-7.
[12] 漆剛.小BT參數突發(fā)GMSK信號解調技術研究[D].綿陽:中國工程物理研究院,2013:15-17.
[13] 張邦寧.GMSK信號相干解調和載波同步方法[J].衛(wèi)星與微波通信,1998(2):34-39.
[14] 曾佐琪,李贊,王新梅.基于Viterbi算法的GMSK信號解調性能分析與仿真[J].重慶郵電大學學報,2007(20):132-138.
[15] 王鋒.深空通信GMSK調制體制應用分析與研究[D].長沙:湖南大學,2012:12-18.
[16] AULIN T M.Breadth-first Maximum Likehood Sequence Detection[J].IEEE Transactions on Communicaitons,1999,47(2):208-216.
[17] RIMOLDI B.Exact Formula for the Minimum Square Euclidean Distance of CPFSK[J].IEEE Transactions on Communicaitons,1991,39(9):1280-1282.
[18] MATHIS H.Differential Detection of GMSK Signals with Low BT Using the SOVA[J].IEEE Transactions on Communications,1998,46(4):428-430.
[19] Anderson J,AULIN T.Digital Phase Modulation[M].New York:Plenum,1986:253-271.
[20] 許華.連續(xù)相位調制技術研究及其實現[D].西安:西安電子科技大學,2009:28-32.