康 超,陈丽婷,陈建斌
(上海航天电子技术研究所,上海 201109)
GMSK信号[1]的调制指数为0.5,相位连续,可以理解为一种特殊的FSK信号。GMSK的基带信号经高斯滤波后提高了频带利用率但同时也引入了码间干扰。本文采用通用数字环+Viterbi算法完成GMSK信号的相干解调。
文献[2-4]指出,存在码间干扰时使用最佳似然准则(MLSE)可以达到最佳译码性能,通常选择用Viterbi算法[5]实现GMSK信号解调来提升接收灵敏度。Viterbi算法对载波环的相位误差要求较高,本文通过Matlab仿真得出相位误差要求控制在6°。文献[6-8]分析了GMSK相干解调载波同步的方法和性能,文献[9]的通用数字环是一种适于数字化处理的低运算量锁相环,性能可以满足Viterbi算法的要求。
Viterbi算法基于最大似然准则选取路径度量最大的匹配路径进行回溯译码,需要大量的匹配滤波器,会导致硬件资源消耗过多甚至不够。此外路径度量值LS随着算法的持续运算是个发散的无穷大数,在工程实现时无法处理。本文针对以上2个问题进行了研究并提出了解决方法。利用GMSK信号特点和三角函数特性减少了3/4的匹配滤波器数量,对Viterbi算法解调过程进行分析提出了LS减操作处理方法,使LS收敛在460附近,使GMSK的Viterbi算法解调可以在FPGA上实现。
GMSK信号可以表示为[10]:
(1)
(2)
式中,αi为+1或-1的发送码元序列;调制指数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的相位状态仅有0、π/2、π和3π/2四种取值,由式(4)可以看出Sn+1状态唯一增加的信息就是输入码源an。本文的关联长度L=5,因此可以列出64个节点状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信号状态转移路径图,例如在初向为0时码源0100110101的状态转移路径为S1>S49>S34>S19>S5>S57>S2>S51>S38>S27>S38。
对于任意码源序列的GMSK信号都会有一条状态转移路径与之匹配,基于Viterbi算法的GMSK信号解调就是一种顺序网格搜索算法实现最大似然解调。GMSK信号任一节点在下一个码源周期只有2个对应的路径终点,因此对于关联长度L=5的GMSK信号共有128条路径。Viterbi算法将接收信号r(t)分别与128条可能路径信号s(t)进行相关运算等到128个路径度量增量A(Si→Sj)。将每个节点对应的2条路径的A(Si→Sj)与前一码源周期的该节点的路径度量LSi相加,取大的作为当前时刻的路径度量LSj。在每个码源周期都按上述方法计算64个节点的LS值,取LS中最大节点的状态转移路径作为匹配路径,对匹配路径进行回溯便可得到码源信息完成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两路数据发送给FPGA。由于输出的是I、Q两路数据,所以实际数据量为100 Mbps。为了保证信号完整性,采用双端数据传输模式(Double Data Rate),因此AD9361与FPGA的实际通信速率为200 Mbps。FPGA对GMSK信号进行载波同步和Viterbi解调,解调后的码源信息在进行基带处理后通过USB口发送给计算机。硬件平台实物如图1所示。
图1 硬件平台
实现Viterbi算法的步骤如下[19-20]:
① 按照式(5)计算128条路径度量增量A(Si→Sj);
② 计算64个节点的路径度量LSi:
LSi=max{(LSx+A(Sx→Si)),(LSy+A(Sy→Si)},
(6)
式中,A(Sx→Si)和A(Sy→Si)为到达i节点的2条路径度量增量;LSx和LSy为前一码源周期节点X和节点Y的路径度量值;
③ 选出当前时刻路径度量值最大的节点LSmax=max{LS1,LS2,LS3……LS64};
④ 根据路径度量值最大节点的匹配路径找出初始节点回溯出码源信息an-14;
⑤ 在下一码源周期重复步骤①~④。
FPGA实现Viterbi算法软件框图如图2所示,主要为“加、比、选和译”4部分。
匹配滤波器:完成“加”功能。本文每个码源周期内为5个采样点,按式(5)计算相当于在每一个码源周期内对I路和Q路分别进行5次乘加操作,可利用FIR滤波器实现此功能。
图2 FPGA实现Viterbi算法软件
LS计算及匹配路径更新:完成“比”功能。缓存上一码源周期64个节点的路径度量值及匹配路径,并按照式(6)更新当前码源周期64个节点的路径度量值及匹配路径。
最大LSi选择:使用流水操作完成64选1,选出最大的LSmax。同时选出4个初始相位节点的最小LSmin(1~16)、LSmin(17~32)、LSmin(33~48)和LSmin(49~64)用于后续LS减操作。
回溯解调:根据LSmax的匹配路径找到起始节点,根据起始节点状态完成Viterbi解调回溯出之前的码源信息an-14。
3.3.1 匹配滤波器数量优化
需计算128条匹配路径A(Si→Sj),所以需要256个5阶FIR滤波器即1 280个乘法器和1 024个加法器,耗费的FPGA硬件资源过多,必须进行优化设计否则无法实现。
本文利用GMSK信号只有(0,π/2,π,3π/2)4种初相的特点和三角函数特性对本地匹配滤波器数量进行优化。对于任一匹配路径信号:
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滤波器,节省了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累加下去,是个发散的无穷大数值,因此必须对LS进行处理减操作处理,否则FPGA无法实现。
将64个节点的LS值按照初始相位状态划分为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个节点LS值应该是相近的,即LS(0)≈LS(π),LS(π/2)≈LS(3π/2)。初始相位相差π/2的2条匹配路径因为正交关系,A(Si→Sj)计算结果的绝对值应该是一个趋于5,另一个趋于0。在Viterbi算法中与接收信号匹配节点的LS始终以趋于5的数累加,而与接收信号正交的节点始终以趋于0的数累加。因此在一段时间后初始相位相差π/2的32个节点的LS值相差很大,即LS(0)和LS(π)会远远大于或者小于LS(π/2)和LS(3π/2)。
节点间LS值的差距是Viterbi算法解调的依据,所以在做减操作时一定要保持好节点间LS距离否则会导致误码。通过分析可知LSmax会远大于LSmin,所以简单地将所有节点LS值减去一个最小值LSmin无法解决发散问题。现假设LS(0)和LS(π)远远大于LS(π/2)和LS(3π/2),则幸存路径会在节点S1~S16和S33~S48间产生,所以仅需对这些节点的LS值减去同一个较大的数值便可解决发散问题,同时又不会导致误码。
本文设定了阈值A和减操作数B,若同时满足LSmax>A&LSmin(1~16)>B&LSmin(33~48)>B,则节点LS1~LS16和LS33~LS48都减去B。LS17~LS32和LS49~LS64同此处理方法。按此方法进行Matlab建模,在码源长度为1×105的情况下,仿真结果表明LSmax会收敛在460附近,Viterbi算法解调正常。
3.3.3 参数确定
对Viterbi算法进行Matlab建模,使用Simulink搭建GMSK信号源,在码源长度为1×105的情况下,确定了载波环相位误差、LS精度和A(Si→Sj)精度参数要求。
① 载波环相位误差要求:在不同相位差和信噪比的情况下,仿真结果如表3所示。可以看出相位差6°解调性能恶化1 dB,相位差9°解调性能恶化2 dB,所以本文要求载波环相位误差控制在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伪随机码本循环发送,测试结果表明当误码率为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,表明本文充分发挥了Viterbi算法的最佳译码性能。
在同一硬件平台测试10 Mbps码速率下(信号带宽为17 MHz)FSK信号解调性能,未采用多符号检测技术(MSD)时Eb/N0为12.6 dB,采用MSD技术时Eb/N0为8 dB。说明在同样使用最佳似然准则的情况下,FSK信号接收灵敏度要优于GMSK信号。
对基于Viterbi算法的GMSK信号解调进行了研究并在FPGA上实现。针对所需匹配滤波器过多问题进行了优化设计,利用GMSK信号特点和三角函数特性将匹配滤波器数量由256个降为64个。针对路径度量LS发散FPGA无法处理问题,对Viterbi算法解调过程进行分析,提出了LS减操作处理方法,使LS收敛在460附近。
工程实测解调信噪比Eb/N0=9.5 dB,在噪声带宽大于理论分析值和AD9361芯片自身热噪声等影响下仅比理论值恶化0.5 dB,充分发挥了Viterbi算法的最佳译码性能。与未使用多符号检测技术的FSK体制相比,通信带宽节省了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].北京:电子工业出版社,2003:151-157.
[11] 陈志堂.全数字GMSK调制器的仿真与实现[D].成都:电子科技大学,2011:6-7.
[12] 漆刚.小BT参数突发GMSK信号解调技术研究[D].绵阳:中国工程物理研究院,2013:15-17.
[13] 张邦宁.GMSK信号相干解调和载波同步方法[J].卫星与微波通信,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] 许华.连续相位调制技术研究及其实现[D].西安:西安电子科技大学,2009:28-32.