课程设计报告模板调制解调.docx
《课程设计报告模板调制解调.docx》由会员分享,可在线阅读,更多相关《课程设计报告模板调制解调.docx(25页珍藏版)》请在冰豆网上搜索。
课程设计报告模板调制解调
基于MATLAB的差分码PSK调制解调实现
学生姓名:
易武指导老师:
吴志敏
摘要
PSK调制是通信系统中最为重要的环节之一,PSK调制技术的改进也是通信系统性能提高的重要途径。
分析了数字调制系统的基本调制解调方法,利用MATLAB作为编程工具,设计了相移键控系统的模型,并且对模型的方针流程以及仿真结果都给出具体详实的分析,为实际系统的构建提供了很好的依据。
数字调制是通信系统中最为重要的环节之一,数字调制解调技术的改进也是通信系统性能提高的重要途径。
关键词MATLAB;PSK;调制解调;差分码
1引言
1.1课程设计目的
差分码PSK的调制解调的实现,通过课程设计,我学到了MATLAB的操作,深入了解了PSK调制解调的原理,利用MATLAB集成环境下的M文件,编程实现差分码的PSK调制解调,并绘制了调制前后的时域和频域波形级叠加噪声时解调前后额频域波形,根据运行结果和波形来分析该解调过程的正确性及信道对信号的额传输影响,知道了2PSK信号的产生方法主要有两种。
这两种方法的复杂程度差不多,并且都可以用数字信号处理器实现,加深了对信号的调制解调的认识,培养了实际操作能力。
1.2课程设计要求
1)绘制基带信号,PSK调制信号和解调信号。
2)绘制噪声后的调制信号和解调信号。
3)改变噪声功率进行解调,分析噪声对信号传输造成的影响。
1.3课程设计原理
差分码PSK的调制解调实质上就是DPSK调制解调,利用载波的多种不同的相位状态来表征数字信息的调制方式,调制解调有2DPSK和4DPSK调制解调,本次课程实际采用二进制的DPSK。
2PSK调制解调原理
2.12PSK调制的基本原理
在4PSK信号中,相位变化是以未调载波的相位作为参考基准的。
由于它利用载波相位的绝对数值表示数字信息,所以又称为绝对相移。
4PSK相干解调时,由于载波恢复中相位有0、π模糊性,导致解调过程出现“反向工作”现象,恢复出的数字信号“1”和“0”倒置,从而使2PSK难以实际应用。
为了克服此缺点,提出了二进制差分相移键控(2DPSK)方式。
2DPSK是利用前后相邻码元的载波相对相位变化传递数字信息,所以又称相对相移键控。
假设
为当前码元与前一码元的载波相位差,可定义一种数字信息与
之间的关系为
(2-1)
于是可以将一组二进制数字信息与其对应的2DPSK信号的载波相位关系示例如下:
二进制数字信息:
110100110
2DPSK信号相位:
(0)π00πππ0ππ
或(π)0ππ000π00
数字信息与
之间的关系也可定义为
由此示例可知,对于相同的基带数字信息序列,由于初始相位不同,2DPSK信号的相位并不直接代表基带信号,而前后码元相对相位的差才唯一决定信息符号。
为了更直观地说明信号码元的相位关系,我们可以用矢量图来表述。
按照(2-1)的定义关系,我们可以用如图2-1(a)所示的矢量图来表示,图中,虚线矢量位置称为基准相位。
在绝对相移中,它是未调制载波的相位;在相对相移中,它是前一码元的载波相位,当前码元的相位可能是0或π。
但是按照这种定义,在某个长的码元序列中,信号波形的相位可能仍没有突跳出点,致使在接收端无法辨认信号码元的起止时刻。
这样,24DPSK方式虽然解决了载波相位不确定性问题,但是码元的定时问题仍没有解决。
为了解决定时问题,可以采用图2-1(b)所示的相移方式。
这时,当前的码元的相位相对于前一码元的相位改变±π/2。
因此,在相邻码元之间必定有相位突跳。
在接收端检测此相位突跳就能确定每个码元的起止时刻,即可提供码元定时信息。
根据ITU-T建议,图2-1(a)所示的相移方式称为A方式;图2-1(b)所示的相移方式称为B方式。
由于后者的优点,目前被广泛采用。
2.24PSK解调的基本原理
2DPSK信号的产生方法:
先对二进制数字基带信号进行差分编码,即把表示数字信息的序列的绝对码变换成相对码(差分码),然后再根据相对码绝对调相,从而产生二进制差分相移键控信号。
2DPSK信号调制器原理框图如图2-2所示。
差分码可取传号差分码或空号差分码。
其中,传号差分码的编码规则为
(2.2-2)
式中:
为模2加;
为
的前一码元,最初的
可任意设定。
式(2.3-2)称为差分编码(码变换),即把绝对码变换为相对码;其逆过程称为差分译码(码反变换),即
(2.2-3)
2DPSK信号的解调方法之一是相干解调(极性比较法)加码反变换法。
其解调原理是:
对2DPSK信号进行相干解调,恢复出相对码,再经码反变换器变换为绝对码,从而恢复出发送的二进制数字信息。
在解调过程中,由于载波相位模糊性的影响,使得解调出的相对码也可能是“1”和“0”倒置,但经差分译码(码反变换)得到的绝对码不会发生任何倒置的现象,从而解决了载波相位模糊性带来的问题。
2DPSK的相干解调器原理框图如图2-3所示。
4DPSK信号的另一种解调方法是差分相干解调(相位比较法),其原理框图如图2-6所示。
用这种方法解调进不需要专门的相干载波,只需由收到的4DPSK信号延时一个码元间隔Ts,然后与4DPSK信号本身相乘。
相乘器起着相位比较的作用,相乘结果反映了前后码元的相位差,经低通滤波后再抽样判决,即可直接恢复原始数字信息,故解调器中不需要码反变换器。
4DPSK系统是一种实用的数字调相系统,但其抗加性白噪声性能比2PSK的要差。
3调制解调流程
图3调制解调流程
4四进制差分相移键控(4DPSK)代码实现
4.1基本参数设置
设置基本参数,将载波频率设置40赫兹,基带信号频率设置为20HZ,采样频率1000HZ。
这样使得每个基波码元调制后的已调信号中有两个正弦波输出,设置信噪比,为以后的改变噪声大小提供方便。
M=4;%输入二进制
Fc=40;%载波频率20HZ
Fd=20;%原始信号与已调信号取样频率10HZ
Fs=1000;%采样频率500HZ
SRNperBit=6;%设置信噪比为6
SNR=2;
adjSRN=SRNperBit-10*log10(Fs/Fd)+10*log10(log2(M));%信噪比转换
4.2基带信号的产生
产生一个32二进制序列转换成四进制并作为4DPSK的基带信号,如果所示
sign=randint(32,1,2);%输入长度为32的二进制数字基带信号
an=[];
forn=1:
2:
31
ifsign(n)==0&sign(n+1)==0;
an((n+1)/2)=0;
elseifsign(n)==0&sign(n+1)==1;
an((n+1)/2)=1;
elseifsign(n)==1&sign(n+1)==0;
an((n+1)/2)=2;
elseifsign(n)==1&sign(n+1)==1;
an((n+1)/2)=3;
end
end
利用循环码,将基带信号转化为四进制
图4.2产生基带信号波形
4.3基带信号的差分编码
将二进制基带信号进行差分运算,并将差分后的二进制序列转化为四进制,作为四进制基带信号差分后的差分信号,如图4.3所示
cfm=[];cfm
(1)=1;%设cfm的初值为1
fori=1:
31
cfm(i+1)=xor(sign(i),cfm(i));
end
bn=[];
forn=1:
2:
31
ifcfm(n)==0&cfm(n+1)==0;
bn((n+1)/2)=0;
elseifcfm(n)==0&cfm(n+1)==1;
bn((n+1)/2)=1;
elseifcfm(n)==1&cfm(n+1)==0;
bn((n+1)/2)=2;
elseifcfm(n)==1&cfm(n+1)==1;
bn((n+1)/2)=3;
end
end
再次利用奇数次的循环码表示成四进制
图4.3基带信号差分波形
4.4DPSK调制
利用demod函数对差分序列进行DPSK调制
y=dmod(bn,Fc,Fd,Fs,'psk',M);%进行DPSK调制
图4.4无噪声4DPSK调制信号波形
4.5加入高斯白噪声
利用AWGN信道产生高斯噪声,并将其叠加在已调信号上加噪声后已调信号如图4.5
modz=awgn(y,SNR);
yniose=awgn(y,adjSRN,'measured',[],'dB');%加入高斯白噪声
图4.5加噪声4DPSK已调信号波形
4.6分别对已调信号和加入噪声已调信号解调
利用ddemod函数对已调信号和加入噪声的已调信号解调,解调后的信号是差分的信号,需要进一步解差分,分别作出未加入的噪声的解调波形如图4.61所示和加入噪声后的解调波形,如图4.62所示
w=ddemod(y,Fc,Fd,Fs,'psk/opt',M)%进行PSK解调
z=ddemod(yniose,Fc,Fd,Fs,'psk/opt',M);%加入高斯白噪声PSK解调
图4.6.1无噪声4DPSK解调信号波形
图4.6.2加噪声4DPSK解调信号波形
4.7反差分运算
将解调信号进行反差分运算,还原出基带信号,将四进制序列转化成二进制序列,将0转化为00,将1转化为01,将2转化为10,将3转化为10,进行反差分运算,再将2进制转化为4进制信号。
cn=[];
forn=1:
2:
31
ifz((n+1)/2)==0;
cn(n)=0;cn(n+1)=0;
elseifz((n+1)/2)==1;
cn(n)=0;cn(n+1)=1;
elseifz((n+1)/2)==2;
cn(n)=1;cn(n+1)=0;
elseifz((n+1)/2)==3;
cn(n)=1;cn(n+1)=1;
end
end
解调的四进制序列转化为二进制序列,为下一步差分异或运算做准备
cfm1=[];
fori=1:
31
cfm1(i)=xor(cn(i),cn(i+1));
end
cfm1(32)=0;
利用循环码将反差分的二进制序列转化为4进制序列分别作出加入噪声如图4.7.1所示和没有加入后的解调波形如图4.7.2所示
图4.7.1
图4.7.1无噪声4DPSK解调反差分信号波形
图4.7.2
图4.7.1加噪声4DPSK解调反差分信号波形
5测试结果
利用randint产生定长度的二级制随机序列sign,运行结果显示最终差分相干解调并进行反差分后的信号与基带信号一致,说明此次基于MATLAB的设计DPSK通信系统能够成功实现4DPSK信号的调制解调,如图5.1所示
图5.1时域解调前后波形
由图5.2中可以看出基带信号和无噪声解调反差分信号是一致的数字差分信号和噪声解调信号是一致的,说明成功实现4DPSK调制解调。
图5.2频域解调前后波形
由图5.3中而已看出基带信号频谱和无噪声解调反差分信号频谱是一致的,差分信号频谱和无噪声解调信号频谱一致,说明成功实现4DPSK调制解调。
图5.3基带差分信号,解调差分信号和调制信号对比图
差分信号与解调出的差分信号完全一致,并且两者相对应已调信号,满足4PSK调制关系,相同时相位不发生偏移,不同时相位相应发生偏移。
默认噪声比为5,试验无噪声和加噪声的时域序列相同,改信噪比为2,重新绘图如下
图5.4时域解调前后波形
由图5.4中可以看出下小信噪比的噪声条件下,基带信号和加入噪声的反差分解调信号产生了较大失真,加入噪声解调信号波形也相应产生失真,在小信噪比的实验条件下,加入噪声的解调信号发生了不同程度的失真,说明改变噪声后,加入信噪比越大的噪声解调后波形越不容易失真,所以信噪比越大,解调后更准确地得到了基波。
6结束语
从课设开始的一周,在网上找了好多相关的资料,后面跟同学交流的时候,发现课设的题目理解错了,导致前几天的都白费了,再后来通过与黄老师和吴老师的交流和得到她们的指导,知道了课设的做法和步骤。
在本次设计中,我遇到了很多的问题,也充分体会到了学海无涯。
无论任何时候我们都要不断的学习和吸收新的知识,然后更新自己的知识储备,很感激老师在这次设计中对我的帮助和指导。
老师就曾给我们很多的鼓励和信心。
之后,又不间断的监督,催促我们认真写课设报告,了解大家论文的完成进度。
真的很感谢老师在我退缩的是给我鼓励,在我怠惰的时候给我鞭策,在我遇到困难的时候给我指导,让我更好的完成此次课程设计。
在过去的两个星期里,自己或多或少都有一点的收获,感谢所有教导我的老师和曾给予我帮助的同学。
回顾此次通信原理的课程设计,至今我人感慨颇多,的确从老师定下的题目到考试做,从理论到实践,在整整两个星期的日子里,可以说是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多书本上的没有的东西,通过这次课程设计使我懂得了理论和实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考能力,在设计的过程中遇到问题,可以说的是困难重重,这毕竟第一次做的,难免遇到各种各样的问题同时在设计的过程中发现自己的不足之处,对实验平台很不熟悉,动手能力比较欠缺,这是我必须在以后的学习的过程中需要加以改进的地方,在不断的学习中要加以改进的地方,在不断的学习过程中完善自己。
通过这次课程设计我们能够比较系统的了解理论知识,掌握了2DPSK调制解调的工作原理及4DPSK调制解调系统的工作过程,学会了使用仿真软件Matlab,并学会通过应用软件仿真来实现某些通信系统的设计,对以后的学习和工作都起到了一定的作用,加强了动手能力和学业技能。
通过这次课程设计还让我们知道了,我们平时所学的知识如果不加以实践的话等于纸上谈兵。
课程设计主要是我们理论知识的延伸,它的目的主要是要在设计中发现问题,并且自己要能找到解决问题的方案,形成一种独立的意识。
我们还能从设计中检验我们所学的理论知识到底有多少,巩固我们已经学会的,不断学习我们所遗漏的新知识,把这门课学的扎实。
当然在做课程设计的过程中总会出现各种问题,在这种情况下我们都会努力寻求最佳路径解决问题,无形间提高了我们的动手,动脑能力,并且同学之间还能相互探讨问题,研究解决方案,增进大家的团队意识。
总的来说,这次课程设计让我们收获颇多,不仅让我们更深一步理解书本的知识,提高我们分析问题和解决问题的能力,而且让我们体会到团队的重要性。
参考文献
[1]樊昌信曹丽娜等.通信原理(第6版).北京:
国防工业出版社,2011,08
[2]王福昌熊兆飞黄本雄.通信原理.北京:
清华大学出版社,2006
[3]钟麟王峰.MATLAB仿真技术与应用教程.国防工业出版社.2003
[4]徐明远邵玉斌.《MATLAB仿真在通信与电子工程中的应用》.西安:
西安电子科技大学出版社.2010,05
[5]孙屹吴磊.《Simulink通信仿真开发手册》.国防工业出版社,2004
[6]王兴亮.《数字通信原理与技术》(第二版).西安电子科技大学出版社.2000
附录:
FM解调程序清单
%程序名称:
4dpsk.m
%程序作者:
易武
%最后修改时间:
2015-1-4
M=4;%输入二进制
Fc=40;%载波频率40HZ
Fd=20;%原始信号与已调信号取样频率20HZ
Fs=1000;%采样频率1000HZ
%SRNperBit=6;
SNR=2;%设置信噪比为5
adjSRN=SNR-10*log10(Fs/Fd)+10*log10(log2(M));%信噪比转换
sign=randint(32,1,2);%输入长度为32的二进制数字基带信号
an=[];%预设一个矩阵存放一组数据
forn=1:
2:
31%循环奇数个随机2进制序列
ifsign(n)==0&sign(n+1)==0;
an((n+1)/2)=0;%2进制00表示0
elseifsign(n)==0&sign(n+1)==1;
an((n+1)/2)=1;%2进制00表示1
elseifsign(n)==1&sign(n+1)==0;
an((n+1)/2)=2;%2进制00表示2
elseifsign(n)==1&sign(n+1)==1;
an((n+1)/2)=3;%2进制00表示3
end
end
%差分编码
cfm=[];cfm
(1)=1;%设cfm的初值为1
fori=1:
31%设置循环差分实现
cfm(i+1)=xor(sign(i),cfm(i));%差分异或运算
end
bn=[];%预设一个矩阵存放一组数据
forn=1:
2:
31%循环奇数个随机2进制序列
ifcfm(n)==0&cfm(n+1)==0;
bn((n+1)/2)=0;%2进制00表示表示四进制0
elseifcfm(n)==0&cfm(n+1)==1;
bn((n+1)/2)=1;%2进制01表示表示四进制1
elseifcfm(n)==1&cfm(n+1)==0;
bn((n+1)/2)=2;%2进制10表示表示四进制2
elseifcfm(n)==1&cfm(n+1)==1;
bn((n+1)/2)=3;%2进制11表示表示四进制3
end
end
y=dmod(bn,Fc,Fd,Fs,'psk',M);%进行DPSK调制
modz=awgn(y,SNR);
yniose=awgn(y,adjSRN,'measured',[],'dB');%加入高斯白噪声
w=ddemod(y,Fc,Fd,Fs,'psk/opt',M)%进行PSK解调
z=ddemod(yniose,Fc,Fd,Fs,'psk/opt',M);%加入高斯白噪声PSK解调
cn=[];%预设一个矩阵存放一组数据
forn=1:
2:
31%循环为基数的解调后的四进制序列
ifz((n+1)/2)==0;
cn(n)=0;cn(n+1)=0;%四进制序列0拆分为二进制00
elseifz((n+1)/2)==1;
cn(n)=0;cn(n+1)=1;%四进制序列1拆分为二进制01
elseifz((n+1)/2)==2;
cn(n)=1;cn(n+1)=0;%四进制序列2拆分为二进制10
elseifz((n+1)/2)==3;
cn(n)=1;cn(n+1)=1;%四进制序列3拆分为二进制11
end
end
cfm1=[];
fori=1:
31%设置循环差分码实现
cfm1(i)=xor(cn(i),cn(i+1));%反差分异或运算
end
cfm1(32)=0;
dn=[];%预设一个矩阵存放一组数据
forn=1:
2:
31%循环奇数个随机二进制序列
ifcfm1(n)==0&cfm1(n+1)==0;
dn((n+1)/2)=0;
elseifcfm1(n)==0&cfm1(n+1)==1;
dn((n+1)/2)=1;%二进制序列01表示四进制1
elseifcfm1(n)==1&cfm1(n+1)==0;
dn((n+1)/2)=2;%二进制序列10表示四进制2
elseifcfm1(n)==1&cfm1(n+1)==1;
dn((n+1)/2)=3;%二进制序列11表示四进制3
end
end
fn=[];
forn=1:
2:
31%循环奇数个随机二进制序列
ifw((n+1)/2)==0;
fn(n)=0;fn(n+1)=0;%四进制序列0拆分为二进制00
elseifw((n+1)/2)==1;
fn(n)=0;fn(n+1)=1;%四进制序列1拆分为二进制01
elseifw((n+1)/2)==2;
fn(n)=1;fn(n+1)=0;%四进制序列2拆分为二进制10
elseifw((n+1)/2)==3;
fn(n)=1;fn(n+1)=1;%四进制序列3拆分为二进制11
end
end
cfm2=[];
fori=1:
31
cfm2(i)=xor(fn(i),fn(i+1));
end
cfm2(32)=0;
en=[];%预设一个矩阵存放一组数据
forn=1:
2:
31
ifcfm2(n)==0&cfm2(n+1)==0;
en((n+1)/2)=0;%二进制序列00表示四进制0
elseifcfm2(n)==0&cfm2(n+1)==1;
en((n+1)/2)=1;%二进制序列01表示四进制1
elseifcfm2(n)==1&cfm2(n+1)==0;
en((n+1)/2)=2;%二进制序列10表示四进制2
elseifcfm2(n)==1&cfm2(n+1)==1;
en((n+1)/2)=3;%二进制序列11表示四进制3
end
end
N=length(y);%已调信号的长度
f=(0:
N-1)*Fs/N-Fs/2;%频率矢量
figure
subplot(4,2,1);plot(f,abs(fft(an,N)));%对数字基带信号进行傅立叶变换绘制数字基带信号频谱图
xlabel('频率(HZ)');ylabel('幅值');%设置横纵轴坐标标题
title('基带数字信号频谱');gridon;
axis([-600600040]);%设置图形标题
subplot(4,2,2);plot(f,abs(fft(bn,N)));%绘制数字差分信号频谱图
xlabel('频率(HZ)');ylabel('幅值');%设置横纵轴坐标标题
title('数字差分信号频谱');gridon;%设置图形标题
axis([-600600040]);
subplot(4,2,3);plot(f,abs(fft(y,N)));%绘制无噪声DPSK调制信号频谱图
xlabel('频率(HZ)');ylabel('幅值');%设置横纵轴坐标标题
title('无噪声DPSK调制信号频谱');gridon;%设置图形标题
axis([-600600040]);
subplot(4,2,7);plot(f,abs(fft(w,N)));%绘制无噪声4DPSK解调信号频谱图
xlabel('频率(HZ)');ylabel('幅值');%设置横纵轴坐标标题
title('无噪声4DPSK解调信号频谱');gridon;%设置图形标题
axis([-600600040]);
subplot(4,2,5);plot(f,abs(fft(en,N)));%绘制加噪声4DPSK调制信号频谱图
xlabel('频率(HZ)');ylabel('幅值');%设置横纵轴坐标标题
title('无噪声4DPSK解调反差分信号频谱');