基于Matlab的GMSK调制解调

目录

第一章设计要求 (2)

1.1 设计内容: (2)

1.2 设计要求: (2)

第二章系统的组成及设计原理 (3)

第三章系统功能模块设计 (5)

3.1 信号发生模块 (5)

3.2 调制、解调模块 (6)

3.3 误码率计算器 (7)

3.4 波形观察模块 (8)

3.4.1调制、解调信号观察模块 (8)

3.4.2 调制信号频谱观察模块 (8)

3.4.3眼图观察模块 (9)

第四章系统调试与结果分析 (9)

4.1 实验调试 (9)

4.2结果分析 (10)

4.2.1 GMSK调制与解调波形 (10)

4.2.2 GMSK调制信号眼图 (13)

结论 (14)

参考文献 (16)

附录一:程序 (17)

附录二:GMSK调制解调建模图 (18)

第一章设计要求

1.1 设计内容:

Simulink对BT=0.3的GMSK调制系统进行仿真。1.2 设计要求:

1. 观察基带信号和解调信号波形;

2. 观察已调信号频谱图

3.分析调制性能和BT参数的关系。

第二章系统的组成及设计原理

GMSK系统主要由信号产生模块、信号调制模块、信道、信号解调模块、误码

率计算模块组成。在图形观察方面还包含频谱仪、示波器和眼图绘制模块。该系统由信

号产生模块产生一个二进制序列,再经过调制器进行调制,然后将调制信号送入一信道,

经过解调器解调得到解调信号。为计算系统误码率,则在调制器后加一误码率计算模块,

计算误码率。系统原理框图如下:

图2.1系统原理框图

此设计中,选用贝努力二进制序列产生器(Bernoulli Binary Generator)来产生一个二进制序列,将序列送入GMSK基带调制器模块(GMSK Modulator Baseband)中得到已调信号,再将已调信号送入一个加性高斯白噪声信道。解调阶段则将通过加性高斯白噪声信道的信号输入GMSK基带解调器模块(GMSK Demodulator Baseband)中,其后接一个误码率统计模块(Error Rate Calculation),且误码率统计模块另一输入端接至源信号处。用示波器观察解调波形并与源信号波形进行比较。因为已调信号是一个复合信号,所以要用complex to Magnitude-Angle 模块,再用示波器分别观察其幅度与相角。另外还用频谱仪观察了已调信号的频谱。

GMSK调制

GMSK调制原理如下图,图中滤波器是高斯低通滤波器,它的输出直接对VCO进行调制,

以保持已调包络恒定和相位继续。

图2.2 GMSK 调制原理图

为了使输出频谱密集,图中的高斯低通滤波器应满足下列要求:

(1) 带宽窄,且具有锐截止特性,以抑制高频分量;

(2) 冲击响应过重量要小,以防止产生过大的瞬时频偏;

(3) 冲击响应曲线下的面积保持不变(对应于pi/2相移),以使调频指数为

1/2.

前置滤波器以高斯型最能满足上述条件,这也是高斯滤波器最小移频键控

(GMSK)的由来。

GMSK 解调

GMSK 就是基带信号经过高斯低通滤波器的MSK ,而MSK 又是FSK 的一种,因

此,GMSK 检波也可以采用FSK 检波器,即包络检波及同步检波。而GMSK 还可以采用时延检波,但每种检波器的误码率不同。

GMSK 非相干解调原理图如下图,图中是采用FM 鉴频器(斜率鉴频器或相位

鉴频器)再加判别电路,实现GMSK 数据的解调输出。

图2.3 GMSK 解调原理图

下图为GMSK 调制解调系统的SimuLink 仿真模型,整个系统主要包括五大模

块:随机信号发生模块、GMSK 调制模块、信道、GMSK 解调模块、误码率统计模块。

图2.4 系统SimuLink 仿真模型图

第三章 系统功能模块设计

3.1随机信号发生模块

因为GMSK 信号只需满足非归零数字信号即可,该设计中选用

(Bernoulli Binary Generator )来产生一个二进制序列作为输入信号。

图3.1 GMSK 信号产生器

该模块的参数设计主要包括以下几个。其中probability of a zero 设置

为0.5表示产生的二进制序列中0出现的概率为0.5;Initial seed 为61表示随机数种子为61;sample time 为1/1000表示抽样时间即每个符号的持续时间为0.001s 。当仿真时间固定时,可以通过改变sample time 参数来改变码元个数。

3.2 调制、解调模块

图3.2 GMSK 调制解调模块

GMSK Modulator Baseband 为GMSK 基带调制模块,其input type 参数设为Bit ,表示模块的输入信号是二进制信号(0或1)。BT product 为0.3表示带宽和码

元宽度的乘积。其中B 为高斯低通滤波器的归一化3dB 带宽,T 为码元宽度。 当B ·T=∞时,相当于未加滤波器,这时的曲线为MSK 信号的功率谱密度;当BT>1时,表明高斯低通滤波器的带宽大于数据信号的带宽,BT 值越大,滤波器的作用越弱;当BT<1时,滤波器的作用明显,BT 的值越小,表明滤波器的带宽越窄,

已调波的高频滚将就越快,频谱的主瓣也越小。随着BT 值的减小,GMSK 的频谱变得越来越紧凑,但误码性能也将变差。

BT=0.3是GSM 采用的调制方式。Plush length 则是脉冲长度即GMSK 调制器中高斯低通滤波器的周期,设为4。Symbol prehistory 表示GMSK 调制器在仿真开始前的输入符号,设为1。Phase offset 设为0,表示GMSK 基带调制信号的初始相位为0。Sample per symbol 为1表示每一个输入符号对应的GMSK 调制器产生的输出信号的抽样点数为1。

AWGN Channel 为加性高斯白噪声模块,高斯白噪声信道的Mode 参数(操作模式)设置为Signal to noise(SNR),表示信道模块是根据信噪比SNR 确定高斯白噪声的功率,这时需要确定两个参数:信噪比和周期。计算不同信噪比下的误码率,改变SNR 即改变信道信噪比。

GMSK Demodulator Baseband 是GMSK 基带解调器。其前六项参数与GMSK 调制器相同,并设置的值也相同。最后一项为回溯长度Traceback Length,设为变量Tracebacklength ,在文件中通过改变其值,可以观察回溯长度对调制性能的影响。

3.3 误码率计算模块

图3.3误码率计算模块

Receive dely(接收端时延)设置为回溯长度加一,表示接收端输入的数据滞后发送端数据TracebackLength+1个输入数据;Computation delay(计算时延)设为0,表示错误率统计模块不忽略最初的任何输入数据。Computation mode(计算模式)设置为Entire frame(帧计算模块),表示错误率统计模块对发送端和接收端的所有数据进行统计。Output data(输出数据)设为Workspace ,表示统计数据输出到工作区。Variable name (变量名)则是设置文件中要返回的参数的名称,设为xErrorRate 。

3.4 波形观察模块

3.4.1调制、解调信号观察模块

因为GMSK调制信号是一个复合信号,所以只用示波器(Scope)无法观察到调制波形,所以在调制信号和示波器间加一转换模块Complex to magnitude-angle将调制信号分别在幅度和相角两方面来观察。

图3.4 调制信号观察模块

将Complex to magnitude-angleoutput的output参数设为magnitude and angle,表示同时输出调制信号的幅度和相角。示波器scope1的number of axes 为2表明有纵坐标个数为2;time range表示时间轴的显示范围,设为auto,表示时间轴的显示范围为整个仿真时间段。Tick Tabels 设为bottom axis only 时,只显示各个纵坐标以及最下面的横坐标的标签。

图3.5 解调信号观察模块

3.4.2 调制信号频谱观察模块

图3.6 GMSK调制信号频谱观察模块

设置了坐标Y的范围为0到7,X的范围为[-F

S /2,F

S

/2],Amplitude scaling

表示幅度计算,选择一般模式即以dB为单位进行计算。但Y坐标标即把Y-axis title的 magnitude,dB转换为dB形式。

3.4.3眼图观察模块

图3.7 GMSK调制信号眼图观察模块

Offset(sample)参数表示MATLAB在开始绘制眼图之前应该忽略的抽样点的个数。Symbols per trace表示每径符号数,每条曲线即成为一个“径”。Traces displayed 则是要显示的径数。New traces per display 是每次重新显示的径的数目。

第四章系统调试与结果分析

4.1 实验调试

调试过程中主要通过MATLAB自带的Help功能来进行调试,在Help中查找所需函数的定义及形式和使用方法。通过报错信息找出相应的错误料,在最终解决不了的情况下,请教老师,最终改正所有错误。

设计模块、参数设置及程序代码编写完成后。先将高斯白噪声信道信噪比xSNR和GMSK解调模块的回溯长度参数设为常数,GMSK调制模块参数input type 与GMSK解调模块out put 参数均设置为bit,运行实验模型,观察示波器,示波器显示波形,误码率曲线也能画出。

各调制信号观察时,频谱仪显示的图形都与理论频谱形状相差很大,尤其GMSK的频谱,都没有出现主瓣与旁瓣的明显区分,重新修改频谱仪的参数,将Amplitude scaling 参数由dB改为magnitude,情况就好很多了。但是无论怎样改变,都不能得到理想的状态,估计是其它模块的一些参数对频谱仪的图形观察有影响。

4.2结果分析

4.2.1 GMSK调制与解调波形

图4.1 GMSK调制信号幅度和相角波形

由于调制信号是一个复合信号,不能直接由示波器观察,通过一complex to magnitude-angle模块将调制信号分为幅度和相角两个变量来观察。通过幅度的波形(上)和相角波形(下)验证了GMSK的幅度不变,由相角波形来看,相角连续,与理论符合。所以图形基本正确。

图4.2 GMSK基带信号与解调信号

由图中基带信号(上)与解调信号波形(下)比较可得,由起始码元到最后一个码元,发现调制信号波形从第四个码元开始与基带信号完全符合,说明系统

的调制性能较好,基本实现了解调的目的——将调制信号还原为基带信号。

图4.3 BT=0.3的GMSK调制信号频谱

图4.4 GMSK等理论调制频谱

对比图4.3和图4.4,实验所得频谱图的主瓣与理论频谱近似,只是顶端稍显尖锐,不够圆滑,可能是频谱仪的参数或其他模块参数设置不恰当。

图4.5 BT=0.9的GMSK调制信号频谱

比较图4.3和图4.5中频谱,发现BT=0.3与BT=0.9得GMSK调制频谱,并无明显差异,与GMSK调制信号的频谱随着BT的减小而变得紧凑起来的理论结果不符合,从而验证可能是系统的某些参数设置不太合理,导致得不到正确的结果。

4.2.2 GMSK调制信号眼图

图4.6 BT=0.1

分析:由图中混乱的线条可知,BT=0.1时,眼图“眼睛”睁开很小,失真严重,系统码间串扰较大。

图4.7 BT=0.3

分析:由图中混乱的线条可知,BT=0.3时,眼图“眼睛”睁开比图5.8中

大,但存在过零点失真,仍然存在码间串扰,但比BT=0.1时好得多。

图4.8 BT=0.9

分析:与图4.7,4.8相比较,图4.9中眼图最为清晰,眼睛睁开程度也较大,且眼图端正,说明码间串扰较小。综合上述分析,可知BT值越小,码间串扰越大,这也是GMSK体制的缺点。

结论

在本次专业课程设计中第一次接触到SimuLink ,刚开始是一头雾水毫无头绪。后来经过资料查阅逐渐了解了SimuLink是MATLAB提供的用于对动态系统进行建模、仿真和分析的工具包。设计中要求用SimuLink搭建GMSK调制与解调模块、计算误码率,并且绘制信噪比——误码率曲线。

第一星期内,主要进行了资料查询及建模任务,先将各模块参数均设为常数,对调制解调波形进行观察,分析器实际波形与理论波形间的差距以及产生误差的原因。依次采用分步进行的方式,逐步实现系统所需各个功能。调试过程采用的也是相同的方法,每搭建一个功能模块就先进行仿真,调试待得到满意结果后再进行下一功能模块的搭建和调试。并在不断出现错误的过程中学会了应用MATLAB的系统帮助。

整个专业课程设计中遇到的最大问题就是FFT频谱仪的参数设置及仿真参

数的设置,总是solver options得选择时出问题,把握不好固定步长和可变步长的选择,以及固定步长时连续求解器的选择。经实践证明,GMSK的调制与解调因选择固定步长Fixed-step,由于传输的是数字信号,所以选择离散求解器(discrete solver)。

设计中主要研究GMSK的调制特性,通过不同信噪比时的误码率绘制误码率曲线分析与比较为信号选择合适的调制、解调方式。尽管本设计能完成调制信号频谱、眼图及波形观察以及误码率曲线的绘制,但由于频谱仪参数设置方面的问题,使得频谱图与理想形态有所差别,有待改进。

应用simulink 进行仿真大大的减少了电路仿真的繁琐,其中每个模块都包含几个电路元件,减少了电路连接时的麻烦,电路连线也更清晰,而且只需改变各参数即可观察电路的特性,操作简单而且所得结果也比较理想。外观看起来也更为美观。

三周的专业课程设计让人受益匪浅,在要感谢我的指导老师和搭档,有他们的帮助才顺利完成任务。

参考文献

[1]李永忠 .现代通信原理与技术. 北京:国防工业出版社, 2010.5

[2] 樊昌信曹丽娜 .通信原理. 北京:国防工业出版社,2006

[3]薛定宇陈阳泉.基于MATLAB/Simulink的系统仿真技术与应用.北京:清华大学出版社,2011.2

[6] 刘思峰方志耕朱建军沈洋 .系统建模与仿真.北京:清华大学出版社,2012

附录一:程序

%gmsk误码率

x=0:10;

y=x;

TracebackLength=7;%回溯长度

for i=1:length(x)

xSNR=x(i);

sim('gmsk_error');

y(i)=xErrorRate(1);%获取误码率

end

semilogy(x,y,'r');

grid on;%加网格

hold on;%保留当前图形

%msk误码率

x=0:10;

y=x;

TracebackLength=4;

for i=1:length(x)

xSNR=x(i);

sim('msk_error');

y(i)=xErrorRate(1);

end

semilogy(x,y,'bd');%bd表示蓝色的菱形

grid on;

hold on;

%瑞丽信道误码率

x=0:10;

y=x;

TracebackLength=4;

for i=1:length(x)

xSNR=x(i);

sim('ruili_error');

y(i)=xErrorRate(1);

end

semilogy(x,y,'*');%用*绘制误码率曲线

grid on;

xlabel('高斯信道中的信噪比/dB');

ylabel('误码率');

%曲线标识

legend('gmsk误码率曲线','msk误码率曲线','*瑞丽信道误码率曲线');

附录二:GMSK调制解调建模图

相关文档
最新文档