【摘 要】数字调制是通信系统中最为重要的环节之一,数字调制技术的改进也是通信系统性能提高的重要途径。本文首先分析了数字调制系统的几种基本调制解调方法,然后,运用Matlab及附带的图形仿真工具 ——Simulink设计了这几种数字调制方法的仿真模型。通过仿真,观察了调制解调过程中各环节时域和频域的波形,并结合这几种调制方法的调制原理,跟踪分析了各个环节对调制性能的影响及仿真模型的可靠性。最后,在仿真的基础上分析比较了各种调制系统的误码率、信号传输速率、信噪比、占用频带宽度等因素,综合衡量各系统的性能指标,并通过比较仿真模型与理论计算的性能,证明了仿真模型的可行性。
【关键词】数字调制,分析与仿真,Matlab,Simulink
1.引言
1. 1 数字调制的意义
数字调制是指用数字基带信号对载波的某些参量进行控制,使载波的这些参量随基带信号的变化而变化。根据控制的载波参量的不同,数字调制有调幅、调相和调频三种基本形式,并可以派生出多种其他形式。由于传输失真、传输损耗以及保证带内特性的原因,基带信号不适合在各种信道上进行长距离传输。为了进行长途传输,必须对数字信号进行载波调制,将信号频谱搬移到高频处才能在信道中传输。因此,大部分现代通信系统都使用数字调制技术。因此,对数字通信系统的分析与研究越来越重要,数字调制作为数字通信系统的重要部分之一,对它的研究也是有必要的。
1. 2 Matlab在通信系统仿真中的应用
Matlab是一种交互式的、以矩阵为基础的软件开发环境,它用于科学和工程的计算与可视化。Matlab的编程功能简单,并且很容易扩展和创造新的命令与函数。应用Matlab可方便地解决复杂数值计算问题。Matlab具有强大的Simulink动态仿真环境,可以实现可视化建模和多工作环境间文件互用和数据交换。用户可以在Matlab和Simulink两种环境下对自己的模型进行仿真、分析和修改。用于实现通信仿真的通信工具包(Communication toolbox,也叫Commlib,通信工具箱)是Matlab语言中的一个科学性工具包,提供通信领域中计算、研究模拟发展、系统设计和分析的功能,可以在Matlab环境下使用,也可以配合Simulink使用。另外,Matlab的图形界面功能GUI(Graphical User Interface)能为仿真系统生成一个人机交互界面,便于仿真系统的操作。因此,Matlab在通信系统仿真中得到了广泛应用。
2. 数字调制系统的相关原理
数字调制可以分为二进制调制和多进制调制,多进制调制是二进制调制的推广,所以本文主要讨论二进制的调制与解调,最后简单讨论一下多进制调制中的MFSK(M元移频键控)和MPSK(M元移相键控)。最常见的二进制数字调制方式有二进制振幅键控(2-ASK)、移频键控(2-FSK)和移相键控(2-PSK和2-DPSK)。下面是这几种调制方式以及其改进调制方式的相关原理。
2.1 二进制幅度键控(2-ASK)
幅度键控可以通过乘法器和开关电路来实现。载波在数字信号1或0的控制下通或断,在信号为1的状态载波接通,此时传输信道上有载波出现;在信号为0的状态下,载波被关断,此时传输信道上无载波传送。那么在接收端我们就可以根据载波的有无还原出数字信号的1和0。
2.2 二进制频移键控(2-FSK)
频移键控是利用两个不同频率f1和f2的振荡源来代表信号1和0,用数字信号的1和0去控制两个的振荡源交替输出。对二进制的频移键控调制方式,其有效带宽为B=2xF+2Fb,xF是二进制基带信号的带宽也是FSK信号的最大频偏,由于数字信号的带宽即Fb值大,所以二进制频移键控的信号带宽较大,频带利用率小。
2.3二进制相移键控(2-PSK)
在相移键控中,载波相位受数字基带信号的控制,如在二进制基带信号中为0时,载波相位为0或π,为1时载波相位为π或0。载波相位和基带信号有一一对应的关系,从而达到调制的目的。
2.4 多进制数字调制
上面所讨论的都是在二进制数字基带信号的情况,在实际应用中,我们常常用一种称为多进制(如4进制,8进制,16进制等)的基带信号。多进制数字调制载波参数有M种不同的取值,多进制数字调制比二进制数字调制有两个突出的优点:一是有于多进制数字信号含有更多的信息使频带利用率更高;二是在相同的信息速率下持续时间长,可以提高码元的能量,从而减小由于信道特性引起的码间干扰。现实中用得最多的一种调制方式是多进制相移键控(MPSK)。
3. 数字调制系统的仿真设计
3.1 数字调制系统原理框图及仿真框图
典型的数字通信系统由信源、编码解码、调制解调、信道及信宿等环节构成,其框图如图3.1所示:
根据Simulink提供的仿真模块,数字调制系统的仿真可以简化成如图3.2所示的模型:
3.2 仿真模型的设计原理及结果分析
3.2.1 2-ASK
通常,二进制振幅键控信号(2-ASK)的产生方法(调制方法)有两种,如图3.3所示:
2-ASK解调的方法也有两种相应的接收系统组成方框如图3.4所示:
根据3.3(a)所示方框图产生2-ASK信号,并用图3.4(b)所示的相干解调法来解调,设计2-ASK仿真模型如图3.5所示:
图3.5 2-ASK模型
在该模型中,调制和解调使用了同一个载波,目的是为了保证相干解调的同频同相,虽然这在实际运用中是不可能实现的,但是作为仿真,这样能获得更理想的结果。
下面对仿真结果进行分析
将图3.5中各示波器的值输出到Work space中做统一处理(处理程序见附录[2]),各环节波形如图3.6所示;
图3.6 2-ASK各环节波形示意图
从图3.6中可以看出,经过调制后的信号波形在符号1持续时间内是载波的波形,在符号0持续时间内无波形,这与式(3.2)是完全吻合的。最后经过解调和抽样判决出来的信号与源信号波形大体一致,只是有两个码元的延迟,这说明如果将Error Rate Calculation的Receive delay参数设置为2,则此模型最后的误码率为0。这个值与理论值有些出入,原因是我们在仿真时为了便于观察信号的波形,将信号源发送的码元数设定为20个(码元速率为1,仿真时间20秒),这大大低于现实中的传码率,所以在只传送20个码元的情况下,误码率为0是可能的。
对图3.6中各环节数据做1024点快速傅立叶可得频域波形,如图3.7所示:
图3.7 2-ASK各环节频谱图
从图3.7中可以看到,源信号中心频率经调制后搬移到了载波频率上。最后经过抽样判决后的频谱与源信号频谱也大体一致,说明该2-ASK仿真模型是成功的、符合理论的。
3.2.2 2-FSK 、MSK、GMSK
首先说明FSK,MSK和GMSK调制系统的原理。
2FSK信号可以用一个矩形脉冲序列对一个载波进行调频而获得。这正是频率键控通信方式的早期采用的实现方法,2FSK另一个实现方法便是采用键控法,即利用受矩形脉冲序列控制的开关电路对两个不同的频率源进行选通。以上两种方法如下,s(t)代表信息的二进制矩形脉冲序列,即是2FSK信号:
图3.8 FSK系统调制原理
2-FSK信号最常用的解调方法是采用的相干检测法,数学表示式也不难写出,即:
式中g(t)为单个矩形脉冲,脉宽为,
是的反码,于是
,分别是第n个信号码元的出相位。一般来说,键控法得到的,是与序列n无关的,反映在上,仅表现出与改变时其相位是不连续的;而用模拟调频法时,由于当与改变时相位是连续的,故,不仅与第n个信号码元有关,而且,之间也应保持一定的关系。
最小移频键控方式MSK是2FSK信号的改进型,二进制MSK信号的表示式可写为
(1)
或者
其中
由(1)式知,当=+1时,信号的频率为
当=-1时,信号的频率为
由此可得
MSK信号在码元转化时信号的相位是连续的,根据这个要求,相位应该满足下面的条件:
上式表明,MSK信号在第k个码元的相位常数不仅与当前的有关,而且与前面的及相位常数有关。假定的起始参考值假定为0,可以得到=0或π。
3.2.3 2-PSK
二进制移相键控(2PSK)方式是受键控的载波相位按基带脉冲而改变的一种数字调制方式。设二进制符号及其基带波形与以前假设的一样,那么,2PSK的信号形式一般表示为
这里的g(t)是脉宽为的单个矩形脉冲,而得统计特性为
这就是说,在其一码元持续时间内观察时,为
这种以载波的不同相位直接去表示相应数字信息的相位键控,通常被称为绝对移相方式。
下面再来讨论2PSK信号的调制与解调。PSK信号的产生有两种方法,如下:
图3.9 2PSK信号的的键控法框图
图3.10 2PSK信号的相乘电路法
因2PSK已调信号的包络幅度不变,所以不能采用包络检波法, 通常采用相干解调法解出2PSK的已调信号。
图3.11 2PSK信号的相干解调框图
2DPSK信号的产生框图:
图3.12 2DPSK信号的调制方框图
图中,波形变换器用来完成单极性不归零波形到双极性波形的变换,其变换关系为=2-1,因为,所以有。相对移相信号可以看成是把信息码(绝对码)变换成相对码,然后再对相对码进行绝对移相形成的。
下面对2-PSK 、QPSK、OQPSK进行仿真。
设计2-PSK仿真模型如图3.13所示,由随机整数产生器,频谱仪,基带BPSK调制与解调器,加性高斯白噪声信道,误码率计算器,离散时间星座图仪及显示器构成。QPSK,OQPSK仿真框图与PSK只有调制合解调器不同,其余模块一样,故不再列出。
图 3.13 2-PSK调制系统仿真框图
通过对BPSK基带调整系统的仿真,得到频谱图。
图3.14 BPSK调制系统的频谱图
3.3 数字调制的性能比较
3.3.1 各种仿真模型的性能比较
数字调制的方式有很多种,各种调制方法式的调制性能也存在差异,因此,我们研究以上仿真模型的性能,并进行比较。
调制系统的调制性能是指误码率与信道信噪比之间的关系,因此,我们需要连续改变信道的信噪比,然后获得相应的误码率,在做出两者的关系曲线。
这里我们比较2-FSK、 2-DPSK和 MSK三种模型的调制性能。由前面的分析已知,要研究系统的性能,必须传送足够多的码元,因此,我们对各仿真模型的参数做如下修改:
信号源:
Sample time :1/1200;
调制和解调模块
Symbol period:1/1200
Frequency separation (Hz):1000(可调)
Carrier frequency (Hz):10000(可调)
Carrier initial phase (rad):0
Input sample time(s):1/48000
Output sample time(s):1/48000
然后在M文件中编写程序,对各模型的调制性能进行比较。运行程序(具体程序见附录[2]),得到性能比较的结果如图 所示:
图3.15各模型的调制性能比较图
上图是2-FSK、 2-DPSK和 MSK三种模型在传送1200个码元的情况下,误码率与信噪比的关系曲线,从图中可以看出,误码率随着信道信噪比的增大而减小,而且,信噪比越大,误码率减小得越快。三种模型比较,2-FSK性能最好,MSK次之,2-DPSK最差。
4. 结束语
数字调制技术的发展日新月异,如今在现实中应用的数字调制系统大部分是经过改进的,性能较好的系统,但是,作为理论发展最成熟的调制方式,ASK,FSK,PSK等的研究仍然具有很重大的意义,因此,我们选择了这几种调制方式利用Matlab做仿真研究。仿真这几种理论已经很成熟的数字调制方式,一方面,可以更容易将仿真结果与成熟的理论进行比较,从而验证仿真的合理性;另一方面,也可以以此为基础将仿真系统进行改进扩展,使其成为仿真更多的数字调制方式的模板。
参考文献
[1] 樊昌信,徐炳祥等.通信原理(第五版)[M].北京:国防工业出版社.2001.
[2] 罗新民,张传生,薛少丽.现代通信原理[M].北京:高等教育出版社.2003.
[3] 徐明远,邵玉斌.仿真在通信原理与电子工程中的应用[M].西安:西安电子科技大学出版社.2005.
[4] 张敬堂.现代通信技术[M].国防工业出版社.2008.
[5] 罗建军,杨琦.精讲多练MATLAB[J].西安:西安交通大学出版社.2006
[6] 张传生.数字通信原理[M].西安:西安交通大学出版社.1990.
[7] 张志德,林霖.基于Smiulink仿真的数字调制系统性能分析[M].北京:现代电子技术.2009.
[8] 普罗克斯,马苏德.萨勒赫. 现代通信系统——使用MATLAB[J]. 西安:西安交通大学出版社,2001.
附录:
源代码
[1] 判决模块S函数的m文件:
function [sys,x0,str,ts] = sfuntmpl(t,x,u,flag)
switch flag,
case 0,
[sys,x0,str,ts]=mdlInitializeSizes;
case 3,
sys=mdlOutputs(t,x,u);
case{1,2,4, 9},
sys=[];
otherwise
error(['Unhandled flag = ',num2str(flag)]);
end
function [sys,x0,str,ts]=mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates = 0;
sizes.NumDiscStates = 1;
sizes.NumOutputs =1;
sizes.NumInputs = 1;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1;
sys = simsizes(sizes);
x0 = [0];
str = [];
ts = [0 0];
function sys=mdlOutputs(t,x,u)
if u>=0.5;
sys=1;
elseif u<=0.5;
sys=0;
end
[2]各仿真模型性能比较程序
x=1:11;
dpkk % 打开模型
for i=1:11
A=x(i)+26;
set_param('DPKK/AWGN Channel','EsNodB',num2str(A));%给信道置数
sim('DPKK'); %运行模型
y4(i)=ErrorVec(1);
end
save_system('DPKK');
close_system('DPKK'); %关闭模型
FKK
for i=1:11
A=x(i);
set_param('FKK/AWGN Channel','SNRdB',num2str(A));
sim('FKK');
y5(i)=ErrorVec(1);
end
save_system('FKK');
close_system('FKK');
mkk
for i=1:11
A=x(i)+26;
set_param('MKK/AWGN Channel','EsNodB',num2str(A));
sim('MKK');
y6(i)=ErrorVec(1);
end
save_system('MKK');
close_system('MKK');
semilogy(x,y5,'g',x,y4,'b',x,y6,'r') %画图
title('各调制模型性能比较')
xlabel('SNR(dB)')
ylabel('ErrorVec')
legend('2-FSK','2-DPSK','MSK'); %图示下载本文