GMSK调制与基于Laurent分解的GMSK解调FPGA实现,第一篇(GMSK调制篇)

发布时间:2026/11/5 10:02:31
GMSK调制与基于Laurent分解的GMSK解调FPGA实现,第一篇(GMSK调制篇)

目录

一、GMSK简介

二、GMSK调制原理与步骤

1、GMSK调制原理

2、GMSK调制步骤

三、GMSK调制MATLAB仿真验证

1、GMSK调制MATLAB代码

2、GMSK调制MATLAB仿真

四、GMSK调制FPGA实现

1、GMSK调制FPGA Verilog代码

2、GMSK调制FPGA 仿真

五、FPGA和MATLAB联合仿真

1、共用数据源

2、仿真结果对比

一、GMSK简介

GMSK(高斯最小频移键控),是基于MSK信号发展而来的,是一种连续相位调制信号,具有相位轨迹平滑、频带效率高、带外辐射小等特点。

二、GMSK调制原理与步骤

1、GMSK调制原理

图1 GMSK调制原理框图

非归零预编码的数据,经过高斯滤波器,进行积分运算(核心步骤,完成频率到相位的转换的同时保证信号的相位是连续的),积分后的数据转换成基带的同相(I路)和正交(Q路)两路信号(完成相位的cos和sin表达形式,欧拉公式),转换后的I和Q即为基带的GMSK调制信号。

2、GMSK调制步骤

预编码:输入的不归零数据,进行差分预编码,具体编码方式为,如图2所示。

,其中ak是编码完数据、dk是当前输入待编码数据、dk-1是前一个输入数据、k是序号1、2、3、...、n。dk和dk-1值为-1或者1。经过预编码的数据,在解调时可以有效解决相位模糊问题。

图2 GMSK预编码框图

高斯低通滤波:使用高斯滤波器gaussdesign(BT,SPAN,SPS),其中BT值决定了GMSK的带外衰减,BT值越大带外衰减越大,当BT=0.3时,即可满足GSM系统带外衰减60dB的要求,SPAN一般固定为8,SPS代表采样率,例如4采样点或32采样点时,SPS=4或32。高斯滤波器的主要作用是限制信号带宽、降低带外辐射、避免相邻信道干扰。

积分:积分过程本质上是累加的过程,积分的意义是完成信号从频率到相位的转换,并且保证GMSK信号的相位是连续的。

相位的cos和sin转换:积分后的数据即为GMSK信号的相位信息,根据欧拉公式

,相位可以由cos和sin组合方式表达,这样的表达便于数字信号处理器如DSP或FPGA实现(使用查找表即可实现)。

三、GMSK调制MATLAB仿真验证

1、GMSK调制MATLAB代码

图3 GMSK调制MATLAB代码

2、GMSK调制MATLAB仿真

图4 GMSK调制时域图-实部I

图5 GMSK调制时域图-虚部Q

图6 GMSK调制后星座图(4采样点)

图7 GMSK调制后星座图(32采样点)

从调制后的星座图得出,GMSK信号的相位是分散在一个圆圈上固定位置。采样点数越多,固定位置越密集。

四、GMSK调制FPGA实现

1、GMSK调制FPGA Verilog代码

限于篇幅有限,只能展示部分代码。

图8 FPGA实现GMSK调制-预编码

图9 FPGA实现GMSK调制-极化

图10 FPGA实现GMSK调制-扩采样

图11 FPGA实现GMSK调制-高斯滤波

图12 FPGA实现GMSK调制-积分

图13 FPGA实现GMSK调制-相位调制

2、GMSK调制FPGA 仿真

图14 GMSK调制FPGA仿真结果整体图

图15 GMSK调制FPGA仿真结果局部放大图

五、FPGA和MATLAB联合仿真

1、共用数据源

FPGA仿真时用MATLAB的测试数据源,保证两者仿真的输入一致性。

图16 FPGA导入MATLAB的测试数据源

2、仿真结果对比

将FPGA调制后的数据导入到MATLAB中,分别画出MATLAB和FPGA调制后的星座图。

图17 FPGA调制后数据导入到MATLAB中

图18 GMSK调制时域图实部MATLAB和FPGA对比结果

图19 GMSK调制时域图虚部MATLAB和FPGA对比结果

图20 GMSK调制星座图MATLAB和FPGA对比结果

对比可以看出,FPGA调制后时域实部和虚部以及星座图均和MATLAB仿真的结果一致。