1、 吴志敏 《基于MATLAB的psk调制解调实现》 第19页 共19页 长沙理工大学 《通信原理》课程设计报告 李柳 学 院 计算机与通信工程 专 业 通信工程 班 级 通信1203 学 号 201254080308 学生姓名 李柳 指导教师 吴志敏 课程成绩 完成日期 2015年1 月 4日
2、 课程设计成绩评定 学 院 计算机与通信工程 专 业 通信工程 班 级 通信1203 学 号 201254080308 学生姓名 李柳 指导教师 吴志敏 课程成绩 完成日期2015年1 月 4日 指导教师对学生在课程设计中的评价 评分项目 优 良 中 及格 不及格 课程设计中的创造性成果 学生掌握课程内容的程度 课程设计完成情况 课程设计动手
3、能力 文字表达 学习态度 规范要求 课程设计论文的质量 指导教师对课程设计的评定意见 综合成绩 指导教师签字 年 月 日 课程设计任务书 计算机与通信工程学院 通信工程专业 课程名称 通信原理课程设计 时间 2014/2015学年第一学期18~19周 学生姓名 李柳 指导老师 吴志敏 题
4、目 基于MATLAB的PSK调制解调实现 主要内容: 利用MATLAB集成环境下的M文件,编写程序来实现PSK的调制解调,并绘制出解调前后的时域和频域波形及叠加噪声时解调前后的时频波形,根据运行结果和波形来分析该解调过程的正确性及信道对信号传输的影响。 要求: 1)熟悉MATLAB中M文件的使用方法,并在掌握PSK调制解调原理的基础上,编写出PSK调制解调程序。 2)绘制出PSK信号解调前后在时域和频域中的波形,并观察解调前后频谱有何变化以加深对PSK信号解调原理的理解。 3)对信号叠加噪声,并进行解调,绘制出解调前后信号的时频波形,改变噪声功率进行解调,分析噪声对信号传输造成的
5、影响。 4)在老师的指导下,要求独立完成课程设计的全部内容,并按要求编写课程设计学年论文,能正确阐述和分析设计和实验结果。 应当提交的文件: (1)课程设计学年论文。 (2)课程设计附件。 基于MATLAB的PSK调制解调实现 学生姓名:李柳 指导老师:吴志敏 摘 要 利用MATLAB集成环境下的M文件,编写程序来实现PSK的调制解调,并绘制出解调前后的时域和频域波形及叠加噪声时解调前后的时频波形,根据运行结果和波形来分析该解调过程的正确性及信道对信号传输的影响。 关键词 数字调制解调 分析与仿真 Matlab 1 引 言
6、 现代通信的发展趋势为数字化,随着现代通信技术的不断开发,数字调制技术已日趋成熟,在各个领域都得到了广泛的应用和认同。数字通信系统较模拟通信系统而言,具有抗干扰能力强、便于加密、易于实现集成化、便于与计算机连接等优点。因而,数字通信更能适应对通信技术的高要求。MATLAB是一种使用简便的、特别适用于科学研究和工程计算的高级语言,与其他计算机语言相比,它的特点是简洁和智能化,具有极高的编程和调试效率。通过使用MATLAB工具箱函数对数字调制进行仿真,更能直观彻底的掌握数字通信,数字调制的原理。有助于我们的学习和研究,加深对知识的理解和运用。 1.1课程设计目的 要求熟练使用MATLAB集成环
7、境下的M文件,编写程序来实现PSK的调制解调。通过实现PSK调制解调的课程设计,更加熟练的掌握MATLAB的编程语言,熟练使用条件控制,循环等语句以及函数的调用等关于MATLAB的知识。同时加深对PSK调制与解调的理论知识的理解,增强matlab的软件的使用方面和各种编码解码的能力,对以后其他的软件的使用和其他方式的调制解调能更好的理解等。 1.2课程设计要求 能够理解并掌握PSK调制解调的原理,能够熟练的利用MATLAB中的M文件编写PSK的调制解调程序并绘制出PSK信号解调前后在时域和频域的波形,观察其频谱的变化;在此基础上对信号进行叠加噪声,绘制出解调前后的时域波形,改变噪声功率进行
8、解调,分析噪声对信号传输的影响。 1.3课程设计步骤 在M文件中编写程序产生数字基带信号,对信号进行数字调制,再已调信号进行解调,绘制调制解调前后信号在时域的波形和频谱 ,然后在已调信号上叠加噪声并解调,改变噪声功率,观察解调前后时域波形,分析噪声对信号传输的影响。 (1) 利用正弦信号产生方波,作为基带信号。 (2) 基带信号与载波相乘得到PSK信号。 (3) 通过带通滤波器,相乘器,低通滤波器的到解调信号。 (4) 叠加噪声信号再次进行解调,改变噪声功率再进行解调。 (5) 分析对比解调前后的时域波形,解释噪声对信号传输的影响。 2 PSK调制解调原理 调制和
9、解调的基本原理是利用信号与系统的频域分析和傅里叶变换的基本性质,将信号的频谱进行搬移,使之满足一定需要,从而完成信号的传输或处理。调制与解调又分模拟和数字两种,在现代通信中,调制器的载波信号几乎都是正弦信号,数字基带信号通过调制器改变正弦载波信号的幅度、频率或相位,产生幅度键控(ASK)、相位键控(PSK)、频率键控(FSK)信号,或同时改变正弦载波信号的几个参数,产生复合调制信号。相移键控(PSK):一种用载波相位表示输入信号信息的调制技术。移相键控分为绝对移相和相对移相两种。以未调载波的相位作为基准的相位调制叫作绝对移相。以二进制调相为例,取码元为“1”时,调制后载波与未调载波同相;取码元
10、为“0”时,调制后载波与未调载波反相;“1”和“0”时调制后载波相位差180°。 2.1 PSK调制原理 PSK信号用载波相位的变化来表征被传输信息的状态,通常规定0相位载波和π相位载波分别表示传“1”和传“0”。设二进制单极性码为an,其对应的双极性二进制码为bn,则2PSK信号的一般时域信号可以表示为: S2psk(t)= [ bn g(t-nTs)]cosωct 式中 bn=-1(当an=0时,概率为P) bn=1(当an=1时,概率为1-P)’ 则时域信号可以变为: S2psk(t)=
11、[ g(t-nTs)]cos(ωct+π), 当an=0时 S2psk(t)= [ g(t-nTs)]cos(ωct+0) 当an=1时 由此可知2PSK信号是一种双边带信号,功率谱为: P2PSK(ƒ)= ƒs=P(1-P)[|G(ƒ+ ƒs)|2+|G(ƒ- ƒs)|2] + ƒs2(1-P)2|G(0)|2[δ(ƒ+ ƒs)+ δ(ƒ- ƒs)] 2PSK信号的带宽为B2PSK=(ƒc+Rs)-(ƒc-Rs)= 2Rs 式中Rs为码元速率。 码变换 相 乘 S(t) 载波 eo(t) 双
12、极性 不归零 2PSK的调制方框图 图2.1 2.2 PSK解调原理 2PSK信号的解调通常采用相干解调法,其原理框图如下: 定时脉冲 带通 滤波器 低通 滤波器 抽样 判决器 输出 图 2.2 相干解调也叫同步检波,它适用于所有线性调制信号的解调。实现相干解调的关键是接收端要恢复出一个与调制载波严格同步的相干载波。相干解调是指利用乘法器,输入一路与载频相干(同频同相)的参考信号与载频相乘。 3 仿真实现过程 3.1 PSK信号的产生 利用正弦波产生基带数字信号(
13、双极性),再与载波信号直接相乘的方法。 x = cos(wfc_t); x(x>0)=1; x(x<0)=-1; 利用正弦波产生双极性基带数字信号; car=sin(2*pi*fc*t); 载波 ; psk=x.*car; 载波与基带信号相乘进行载波调制; 如图3.1为基带信号与已调制信号。 图3.1 3.2 PSK解调实现 (1)构建带通滤波器,将已调信号通过带通滤波器得到滤波信号。 Hz=0.135*(z+1).*(z-1)./(z.^2-(p
14、)); 利用此系统响应函数构建带通滤波器。 faskn=filter(b,a,ask); 利用filter函数得到滤波信号; (2)将通过带通滤波器的信号与载波信号相乘。可以用一下程序语句进行操作,从而实现乘法器的功能。 cm=faskn.*car; 解调 (3)将经过乘法器的信号通过低通滤波器进行滤波。 p=0.72; gain1=0.14;%gain=(1-p)/2 Hz1=gain1*(z+1)./(z-(p)); 利用此系统响应函数构建低通滤波器。 so=filter(b1,a1,cm); 利用filter函数得到滤波信号;
15、 (4)设置判决电平,设置为最佳判决电平0,将信号通过判决器得到解调输出信号。 下图是未叠加噪声的调制解调图形: 图3.2 对比基带信号,已调信号,解调输出信号,参考《通信原理》教程,已调信号的带宽等于2倍的基带信号带宽(即fbw=2fm),由得出的各个信号的时域波形可知满足要求,对比基带信号和解调输出信号的频谱图可以看出,两者都出现两个边带的频谱。 图3.3 分析:由上图可知基带信号与解调信号基本相同,并未出现失真
16、只是存在一定延时。说明相干解调的方法能实现PSK信号的解调无失真输出。 3.3叠加噪声的PSK解调 在实际的信号传输过程中,系统外部干扰以电磁波或经电源串进系统内部而引起噪声。如电气设备,天体放电现象等引起的噪声。同时由光和电的基本性质所引起的噪声,电器的机械运动产生的噪声,器材材料本身引起的噪声,系统内部设备电路也能引起噪声。这些噪声有些是不可避免的,所以我们在研究信号的传输是一定要叠加上噪声,这样才有实际意义。下面是对叠加上大信噪比和小信噪比之后的信号的调制与解调做分析。 信号叠加上大信噪比的噪声之后,信号在幅度上有微弱变化,在经过带通滤波器之后,与上图为叠加噪声的对比可以
17、发现,几乎已经一样,在通过乘法器和低通滤波器之后仍能恢复出原基带信号。 叠加小噪声之后的图形: 图3.4 叠加上大信噪比的噪声之后,由于叠加的上的噪声信号由randn(size(t))函数产生,是完全随机的信号,叠到已调信号上会把信号的波形完全打乱。 如图3.5噪声信号和加噪声之后的已调信号: 图3.5 下图3.6是叠加大噪声情况下的基带信号经调制解调之后的信号的时域频域波形:
18、 图 3.6 4 遇到的问题及解决办法 在此次课程设计中,我认为我的难点在于带通与低通滤波器的构建上,在构建带通滤波器的过程中因为参数的设置不正确算出的系统函数不正确,导致调制信号通过带通滤波器,乘法器和低通滤波器之后无法得到无失真的解调信号。解决方案:调整滤波器的参数,带通滤波器的中心频率:fc=2×10e-5;所以可以求的通带截至频率为:f1=fc-fm=1.8×10e-5和f2=fc+fm=2.2×10e-5;由这些参数可以求的的低通滤波器的系统函数
19、为:Hz=0.135×(z+1)(z-1)./(z.^2+0.8547) ;调整之后的解调系统能够符合要求。另外,就是各种函数的调用的问题,因为一开始没有仔细的查阅资料,对MATLAB中的已有可直接调用的函数了解不多,致使做了许多繁重的工作,使整个设计显得复杂。 5 结束语 通过这段时间的亲身经历,我感觉自己学到了:收集、整理资料、共同协作、分析及处理问题等许多方面的知识。在作设计的过程中,我有许多不懂得地方,在老师的指导下我一步步的解决问题完成论文,在完成过程中老师指导我去怎么选择资料,如何去利用网络资源,在这个学习的过程中,我了解到MATLAB的实用价值,更深的理解数字调制技术
20、的调制原理。对三种键控方式的调制原理也理解的更加透彻。同时也深感用计算机仿真电子通信系统,具有广泛的适应性和极高的灵活性。在硬件试验中改变硬件的参数设置就意味着重做硬件,而在软件中只需对相应的参数进行重新设置,同时利用MATLAB简单编程的特点,可以实现较为复杂的系统,因此MATLAB在通信系统仿真方面具有强大的功能和优越性!在课程设计的过程中明显觉得自己对MATLAB软件的不熟练,很多函数不会使用,还需要查阅参考书才能正确使用。而且再做到最后的时候才发现matlab中的y=dmod(x,Fc,Fd,Fs,method…)函数可以直接进行PSK的调制,而z=ddemod(y,Fc,Fd,Fs,
21、method…)函数也可直接对已调信号进行解调,不再需要设置低通,带通滤波器,也不需要设置判决器就可直接调制解调,而自己的设计的解调做了很多繁重的工作,由于时间紧迫,所以没有进行优化。在以后的学习或者其他设计中,应该提前做好充足的准备,对要做的东西有足够的了解之后再开始进行,其次以后在工作中要脚踏实地,在学术上要严谨,在思维上要活跃,在学业上要勤奋刻苦,不能懵懂的就以为自己已经会了。 最后我真诚感谢这期间老师给予我的全力帮助,细心指导以及对我的严格要求,是她在我遇到问题时,不辞辛苦帮我解决,感谢她在设计和任务安排上长时间的指导。 参考文献 [1] 黄文
22、梅, 熊桂林, 杨勇.信号分析与处理—MATLAB语言及应用. 长沙: 国防科技大学出版社, 2000. [2] 唐向宏, 岳恒立, 郑雪峰. MATLAB及在电子信息类课程中的应用.北京: 电子工业出版社, 2006, 8. [3] 邓华. MATLAB通信仿真及应用实例详解. 人民邮电出版社, 2003. [4] 樊昌信 徐炳祥等.通信原理(第5版).北京.国防工业出版社.2005 [5] 程佩青 数字信号处理教程(第四版)清华大学出版社 [6]王兴亮.《数字通信原理与技术》(第二版).西安电子科技大学出版社.2000
23、 附录一:未叠加噪声PSK调制解调程序清单 %程序名称:PSK.m %程序功能:实现PSK调制解调 %程序作者:李柳 %======================================== clear all; close all; fs=8e5;%抽样频率 fm=20e3;%基带频率 n=2*(6*fs/fm); final=(1/fs)*(n-1); fc=2e5; % 载波频率 t=0:1/fs:(final); Fn=fs/2;%耐奎斯特频率 %用正弦波产生方波 wfc_t
24、2*pi*fm*t; x = cos(wfc_t ); % 方波 x(x>0)=1 x(x<0)=-1; figure(1) subplot(221); plot(t,x); axis([0 2e-4 -2 2]); title('基带信号'); grid on car=sin(2*pi*fc*t);%载波 ask=x.*car;%载波调制 subplot(222); plot(t,ask); axis([0 200e-6 -2 2]); title('PSK信号'); grid on fBW=40e3;
25、 %编码后的PSK信号频率 f=[0:3e3:4e5]; w=2*pi*f/fs; z=exp(w*j); BW=2*pi*fBW/fs; %通带带宽 a=.8547;%BW=2(1-a)/sqrt(a) p=(j^2*a^2); Hz=0.135*(z+1).*(z-1)./(z.^2-(p)); %带通滤波器的系统函数 subplot(223); plot(f,abs(Hz)); title('带通滤波器');grid on; Hz(Hz==0)=10^(8);%避免 log(0) subplot(224); plot(f,20*
26、log10(abs(Hz))); grid on; title('Receiver -3dB Filter Response'); axis([1e5 3e5 -3 1]); %滤波器系数 a=[1 0 0.7305];%[1 0 p] b=[0.135 0 -0.135];%0.135*[1 0 -1] faskn=filter(b,a,ask); figure(2) subplot(321); plot(t,faskn); axis([0 100e-6 -2 2]); title('通过带通滤波后输出'); grid
27、on; cm=faskn.*car;%解调 subplot(322); plot(t,cm); axis([0 100e-6 -2 2]); grid on; title('通过相乘器后输出'); %低通滤波器 %================================================================== p=0.72; gain1=0.14;%gain1=(1-p)/2 Hz1=gain1*(z+1)./(z-(p)); subplot(323); Hz1(Hz1==0)=10^(
28、8);%避免 log(0) plot(f,20*log10(abs(Hz1))); grid on; title('LPF -3dB response'); axis([0 5e4 -3 1]); %滤波器系数 a1=[1 -0.72];%(z-(p)) b1=[0.14 0.14];%gain*[1 1] so=filter(b1,a1,cm); so=so*10;%add gain so=so-mean(so);%removes DC component subplot(324); plot(t,so); axis([
29、0 8e-4 -3.5 3.5]); title('通过低通滤波器后输出'); grid on; %Comparator %====================================================== High=1; Low=-1; vt=0;%判决电平 len1=length(so); for ii=1:len1 if so(ii) >= vt Vs(ii)=High; else Vs(ii)=Low; end end Vo=Vs; subpl
30、ot(325); plot (t,Vo); title('解调后输出信号'); axis([0 2e-4 -2 2]) ; grid on; xlabel('时间 (s)'), ylabel('幅度(V)'); figure(3) F1=fft(x); subplot(211); plot (t,F1); title('基带信号频谱'); F2=fft(so); subplot(212); plot (t,F2); title('解调后输出信号频谱'); 附录二:叠加大信噪比噪声PSK调制解调程序清单 %程序名称:PSK.m %程序功能:实现PSK调制解
31、调 %程序作者:李柳 %======================================== clear all; close all; fs=8e5;%抽样频率 fm=2e4;%基带频率 n=2*(6*fs/fm); final=(1/fs)*(n-1); fc=2e5; % 载波频率 t=0:1/fs:(final); %用正弦波产生方波 wfc_t=2*pi*fm*t; x = cos(wfc_t ); % 方波 x(x>0)=1; x(x<0)=-1;
32、 figure(1) subplot(321); plot(t,x); axis([0 2e-4 -2 2]); title('基带信号'); grid on car=sin(2*pi*fc*t);%载波 ask=x.*car;%载波调制 subplot(323); plot(t,ask); axis([0 200e-6 -2 2]); title('PSK信号'); grid on vn=0.1; noise=vn*(randn(size(t)));%产生噪音 subplot(322); plot(t,noise); grid on;
33、 title('噪音信号'); axis([0 .2e-3 -1 1]); askn=(ask+noise);%调制后加噪 subplot(324); plot(t,askn); axis([0 200e-6 -2 2]); title('加噪后信号'); grid on; fBW=4e4; %已调信号带宽 f=[0:3e3:4e5]; w=2*pi*f/fs; z=exp(w*j); BW=2*pi*fBW/fs; a=.8547;%BW=2(1-a)/sqrt(a) p=(j^2*a^2); Hz=0.135*(z+1
34、).*(z-1)./(z.^2-(p)); subplot(325); plot(f,abs(Hz)); title('带通滤波器');grid on; Hz(Hz==0)=10^(8);%avoid log(0) subplot(326); plot(f,20*log10(abs(Hz))); grid on; title('Receiver -3dB Filter Response'); axis([1e5 3e5 -3 1]); %滤波器系数 a=[1 0 0.7305];%[1 0 p] b=[0.135 0 -0.135];%g
35、ain*[1 0 -1] faskn=filter(b,a,askn); figure(2) subplot(322); plot(t,faskn); axis([0 100e-6 -2 2]); title('通过带通滤波后输出'); grid on; cm=faskn.*car;%解调 subplot(323); plot(t,cm); axis([0 100e-6 -2 2]); grid on; title('通过相乘器后输出'); %低通滤波器 %===============================
36、 p=0.72; gain1=0.14;%gain=(1-p)/2 Hz1=gain1*(z+1)./(z-(p)); subplot(324); Hz1(Hz1==0)=10^(-8);%avoid log(0) plot(f,20*log10(abs(Hz1))); grid on; title('LPF -3dB response'); axis([0 5e4 -3 1]); %滤波器系数 a1=[1 -0.72];%(z-(p)) b1=[0.14 0.14]
37、gain*[1 1] so=filter(b1,a1,cm); so=so*10;%add gain so=so-mean(so);%removes DC component subplot(325); plot(t,so); axis([0 8e-4 -3.5 3.5]); title('通过低通滤波器后输出'); grid on; %Comparator High=1; Low=-1; vt=0;%判决电平 len1=length(so); for ii=1:len1 if so(ii) >=
38、vt Vs(ii)=High; else Vs(ii)=Low; end end Vo=Vs; subplot(326); plot (t,Vo); title('解调后输出信号'); axis([0 2e-4 -2 2]) ; grid on; xlabel('时间 (s)'), ylabel('幅度(V)'); subplot(321); plot(f,20*log10(abs(Hz))); grid on; title('Receiver -3dB Filter Response'); axis([1e5 3e5 -3 1]); figure(3) F1=fft(x); subplot(211); plot (t,F1); title('基带信号频谱'); F2=fft(so); subplot(212); plot (t,F2); title('解调后输出信号频谱');






