基于MATLABASK调制解调实现课程设计

大学 《通信原理》课程设计报告 学 院 专 业 班 级 学 号 学生姓名 指导教师 课程成绩 完成日期 2016年X月X日 课程设计成绩评定 学 院 专 业 班 级 学 号 学生姓名 指导教师 课程成绩 完成日期 2016年X月X日 指导教师对学生在课程设计中的评价 评分项目 优 良 中 及格 不及格 课程设计中的创造性成果 学生掌握课程内容的程度 课程设计完成情况 课程设计动手能力 文字表达 学习态度 规范要求 课程设计论文的质量 指导教师对课程设计的评定意见 综合成绩 指导教师签字 2016年1月8日 课程设计任务书 城南学院 通信工程专业 课程名称 通信原理课程设计 时间 2015/2016学年第一学期17~19周 学生姓名 指导老师 题 目 基于MATLAB的ASK调制解调实现 主要内容:
利用MATLAB集成环境下的M文件,编写程序来实现ASK的调制解调,要求采样频率为360HZ,并绘制出解调前后的时域和频域波形及叠加噪声时解调前后的时频波形,根据运行结果和波形来分析该解调过程的正确性及信道对信号传输的影响。

要求:
1)熟悉MATLAB中M文件的使用方法,并在掌握ASK调制解调原理的基础上,编写出ASK调制解调程序。

2)绘制出ASK信号解调前后在时域和频域中的波形,并观察解调前后频谱有何变化以加深对ASK信号解调原理的理解。

3)对信号叠加噪声,并进行解调,绘制出解调前后信号的时频波形,改变噪声功率进行解调,分析噪声对信号传输造成的影响。

4)在老师的指导下,要求独立完成课程设计的全部内容,并按要求编写课程设计学年论文,能正确阐述和分析设计和实验结果。

应当提交的文件:
(1)课程设计学年论文。

(2)课程设计附件。

基于MATLAB的ASK调制解调实现 学生姓名:
指导老师:
摘 要 MATLAB是美国MathWorks公司生产的一个为科学和工程计算专门设计的交互式大型软件,本课程设计主要内容是利用MATLAB集成环境下的M文件,编写程序来实现ASK的调制解调,要求采样频率为360HZ,并绘制出解调前后的时域和频域波形及叠加噪声时解调前后的时频波形,根据运行结果和波形来分析该解调过程的正确性及信道对信号传输的影响。目的是熟悉MATLAB中M文件的使用方法,并在掌握ASK调制解调原理的基础上,编写出2ASK调制解调程序,绘制出ASK信号解调前后在时域和频域中的波形,观察解调前后频谱有何变化以及对信号叠加噪声后的变化。最终得到随着输入信号噪声的增加增大,误码越严重的结论,加深对ASK信号解调原理的理解。

关键词 ASK调制解调;
时域谱;
频域谱;
高斯白噪声;
信噪比 1 引 言 通信原理是通信工程专业的一门重要的专业课,是通信工程专业后续专业课的基础,掌握通信原理课程的知识不仅可以打下一个坚实的专业基础,还能提高处理通信系统问题能力和素质。通过本课程设计的ASK振幅键控调制解调,可以进一步理解数字通信的基础理论,有助于加深对通信原理的理解。

1.1课程设计目的 通过设计基于MATLAB的ASK调制解调实现,让我深入理解和掌握二进制ASK调制解调以及噪声对信号传输的影响[1]。

在通信原理理论知识的基础上加深对ASK调制解调设计原理及实现方法的理解。使我对通信信号波形及频谱有深刻的认识。不仅加强了对课本知识的了解,而且还涉及到了MATLAB编程语言和软件的使用,以及基本的操作常识[2]。

掌握调制解调函数的应用,增强了我动手实践的能力。

1.2课程设计要求 根据所给的题目,查阅有关资料,掌握数字带通调制技术以及通信原理。

学会MATLAB中M文件的编写方法,能应用MATLAB软件中调制解调函数,掌握ASK调制解调原理,根据原理编写出ASK调制解调程序。

绘制出ASK信号解调前后在时域和频域中的波形,观察解调前后频谱的变化理解ASK信号解调原理。

对二进制基带信号叠加噪声后解调,绘制出解调前后信号的时频波形,然后改变噪声功率进行解调,记录并分析分析噪声对信号传输造成的影响。

根据要求独立完成课程设计学年论文,能正确阐述和分析设计结果并得出结论。

1.3课程设计步骤 产生数字基带信号并绘制时域谱和频域谱;

设置载波频率并绘制其时域谱和频域谱;

对信号进行数字调制并绘制时域谱和频域谱;

对已调信号进行解调并绘制时域谱和频域谱;

对已调信号加入高斯小噪声并绘制时域谱和频域谱;

对加小噪声信号进行解调并绘制时域谱和频域谱;

对已调信号加入高斯大噪声并绘制时域谱和频域谱;

对加大噪声信号进行解调并绘制时域谱和频域谱;

比较当信噪比不同时,误码率大小。

2 ASK调制解调原理 2.1 ASK调制原理 ASK指的是振幅键控方式。这种调制方式是根据信号的不同,调节正弦波的幅度。幅度键控可以通过乘法器和开关电路来实现。载波在数字信号1或0的控制下通或断,在信号为1的状态载波接通,此时传输信道上有载波出现;
在信号为0的状态下,载波被关断,此时传输信道上无载波传送。那么在接收端我们就可以根据载波的有无还原出数字信号的1和0。对于二进制幅度键控信号的频带宽度为二进制基带信号宽度的两倍。幅移键控法(ASK)的载波幅度是随着调制信号而变化的,其最简单的形式是,载波在二进制调制信号控制下通断, 此时又可称作开关键控法(OOK)。二进制幅度键控记作2ASK。2ASK是利用代表数字信息“0”或“1”的基带矩形脉冲去键控一个连续的载波,使载波时断时续地输出。有载波输出时表示发送“1”,无载波输出时表示发送“0”。2ASK信号可表示为 式中,为载波角频率,s(t)为单极性NRZ矩形脉冲序列 其中,g(t)是持续时间、高度为1的矩形脉冲,常称为门函数;
为二进制数字 2ASK/OOK信号的产生方法通常有两种:模拟调制(相乘器法)和键控法。本模拟幅度调制的方法用乘法器实现。相应的调制如图2-1和图2-2:
乘法器 图2-1模拟相乘法 图2-2键控/开关法 2.2 ASK解调原理 2ASK/OOK信号有两种基本的解调方法:非相干解调(包络检波法)和相干解调(同步检测法)。本课程设计要求的是相干解调,如图2-3:
带通滤波器 相乘器 低通滤波器 抽样判决器 定时脉冲 输出 图2-3相干解调 3 仿真实现过程 3.1 ASK信号的产生 图3-1二进制基带信号时域谱和频域谱 先将源程序创建M文件,自定义路径;
编写语句x=ceil(rand(1,100000)-0.5) 生成一段随机的二进制基带信号,其中rand产生随机矩阵,ceil为取整函数;
再编写语句FFT1=fft(x,128); FFT1=abs(FFT1)对随机序列进行傅里叶变换并取绝对值。其时域谱和频域谱如图3-1。

3.2载波信号波形 图3-2载波信号时域谱和频域谱 在调制解调系统中,载波信号的频率一般要大于信号源的频率。信号源频率为12 Hz,所以将载波频率设置为36 Hz,编写正弦函数carry=cos(2*pi*Fc*t)并进行频域转换FFT2=fft(carry,256); FFT2=abs(FFT2)。其时域谱和频域谱如图3-2。

3.3 ASK调制解调实现 编写数字带通调制函数y=dmod(x,Fc,Fd,Fs,'ask',2)进行2ASK调制,其中x为输入信号,Fc为载波频率,Fd为码速率,Fs为采样频率,Fs/Fd必须是一个正整数。再进行频域转换FFT3=fft(y,256); FFT3=abs(FFT3),其时域谱和频域谱如图3-3:
图3-3已调信号时域谱和频域谱 图3-4解调信号解调时域谱和频域谱 编写数字带通调制函数z=ddemod(y,Fc,Fd,Fs,'ask',2)进行2ASK解调,其中x为输入信号,Fc为载波频率,Fd为码速率,Fs为采样频率。再进行频域转换FFT4=fft(z,64); FFT4=abs(FFT4),由于调制到解调的信道中没有加入噪声,所以调制前信号(即原始信号)与调制后信号相同,其时域谱和频域谱如图3-4。

3.4叠加噪声的ASK调制解调 图3-5叠加小噪声调制信号时域谱和频域谱 图3-6叠加大噪声调制信号时域谱和频域谱 由于信道中的噪声是叠加在信号上的,噪声始终是存在的,通常称它为加性噪声或加性干扰。对已调信号y分别叠加高斯小噪声(信噪比为6)和大噪声(信噪比为-2)则编写Ynt1=awgn(y,6);Ynt2=awgn(y,-2)并进行频域转换,其时域谱和频域谱分别如图3-5和图3-6。

图3-7叠加小噪声解调信号时域谱和频域谱 图3-8叠加大噪声解调信号时域谱和频域谱 对小噪声Ynt1和大噪声信号Ynt2分别解调,编写数字带通调制函数z1=ddemod(Ynt1,Fc,Fd,Fs,'ask',2);z2=ddemod(Ynt2,Fc,Fd,Fs,'ask',2);并进行频域转换,其时域谱和频域谱如分别如图3-7和图3-8。

3.5误差分析 图3-9叠加叠加小噪声大噪声的误差数和误差率 图3-10误差数和误差率 误码率是衡量一个数字通信系统性能的重要指标。在信道高斯白噪声的干扰下,二进制2ASK数字调制误码率取决于解调器输入信噪比,编写误码率函数[br,Pe1]=symerr(x,z1);[br,Pe2]=symerr(x,z2),其中br为符号误差数,Pe1为符号误差率。绘制如图3-9。

调用函数semilogy(SNR,Pe);绘制信噪比与误码率的关系曲线如图3-10,由此可得出:与无噪声时(误码率为零)相比较,当信噪比较大时,噪声小误码率低;
反之,信噪比较小时噪声大误码率高。

4 遇到的问题及解决办法 在本次课程设计运用了MATLAB集成环境下的M文件实现ASK的调制解调,在编写过程中遇到了各种不同的问题,通过自己的探索和老师同学的帮助才得以解决,总结如下:
产生二进制随机序列时没有只有0和1的情况并且显示的是三角波。解答办法:采用ceil取整函数,可以0和1的序列,并用stairs方波画图函数使方波显示出来。

序列是0时的调制波形反向,而不是振幅为零。解决办法:在调制后的函数基础上编写循环判断语句,把一个序列周期作为一次循环,序列为0时调制函数赋值为零,使反向波形消失。

绘制信噪比与误码率的关系曲线时错误。解决办法:把调用数字调制函数dmod用于加入噪声,即Ynt3=awgn(y,SNR(i)),而调制后的函数基础上编写循环判断语句只用来显示已调波形。

5 结束语 课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。本次课程设计中让我对信号的ASK的调制解调过程有了很深刻的理解,掌握了ASK的设计的设计思路和设计流程,它可以我使我更容易理解通信原理,提高了对通信系统的分析能力和解决能力,能有机会对通信的原理进行模拟仿真,对于我们专业的人来说尤为重要。经过三周时间的基于Matlab的ASK调制解调课程设计,我最大的收获是基本的掌握了的Matlab中函数的使用,在此期间我利用了通信原理和MATLAB的相关书籍,及其网络资源,在老师和同学的帮助下才得以完成任务,让我意识到数字信号处理的重要性。同时,在这次课程设计中,我也遇到了许多的困难,从及时发现到解决问题,不断地改进自己的方法,以实际操作为基础,以理论为准则,不断完善,不断创新,提高效率,可以为我以后从事通信类职业提供宝贵的经验;
我才能设计其他不同的课题,才能达到举一反三的地步,以增强我的实践动手能力,让我受益匪浅。

该设计虽然如期完成,其功能基本上可以满足处理的需要。由于我的能力有限,如果有不尽人意的地方,需要将来再做进一步的改善。

参考文献 [1] 樊昌信,曹丽娜. 通信原理. 北京:国防工业出版社,2012. [2] 黄文梅,熊桂林,杨勇. 信号分析与处理—MATLAB语言及应用. 长沙:国防科技大学出版社,2000. [3] 唐向宏岳恒立,郑雪峰. MATLAB及在电子信息类课程中的应用. 北京:电子工业出版社,2006,8. [4] 邓华. MATLAB通信仿真及应用实例详解. 人民邮电出版社,2003. =附录:ASK调制解调程序清单 %程序名称:ASK.m %程序功能:ASK解调解调 %程序作者:庄维 %最后修改时间:2016-1-8 程序代码 clc; %清除命令工作窗里的内容 clear; %清除内存空间变量 %产生二进制随机序列 x=ceil(rand(1,100000)-0.5) %产生二进制随机序列并取大于x 的最小整数 figure(1) %窗口1,包含时域谱和频域谱 subplot(2,1,1) %分块图函数subplot,图形窗口分成2块子窗口的第1个图像 stairs(x); %第2个图像 xlabel('时间 t'); %x轴标注 ylabel('序列值'); %y轴标注 title('二进制随机序列'); %添加图像标题 axis([1 21 -1 2]) %控制坐标轴的范围 grid on %图像中添加栅格 %对随机序列进行频谱分析 FFT1=fft(x,128); %对随机序列进行傅里叶变换 FFT1=abs(FFT1); %对傅里叶变换取绝对值 figure(1) subplot(2,1,2) %第2个图像 plot(FFT1); xlabel('频率 f'); ylabel('幅度 FFT1'); title('随机序列频谱'); axis([0 128 0 50]) grid on %载波信号 t=1/360:1/360:20; %载波时间范围 Fc=36; %载波频率 carry=cos(2*pi*Fc*t); %正弦载波信号 figure(2) %窗口2,包含时域谱和频域谱 subplot(2,1,1) plot(carry); xlabel('时间 t'); ylabel('幅度 carry'); title('载波信号'); axis([1 600 -2 2]) grid on %对载波信号进行频谱分析 FFT2=fft(carry,256); %对载波信号进行傅里叶变换 FFT2=abs(FFT2); %对傅里叶变换取绝对值 figure(2) subplot(2,1,2) plot(FFT2); xlabel('频率 f'); ylabel('幅度 FFT2'); title('载波信号频谱'); axis([0 256 0 100]) grid on %ASK的调制 Fd=12; %Fd为码速率,Fs为采样频率 Fs=360; y=dmod(x,Fc,Fd,Fs,'ask',2);%调用数字带通调制函数dmod进行2ASK调制 for i=1:20 if x(i)==0 yy(30*(i-1)+1:30*i)=0; else yy(30*(i-1)+1:30*i)=y(30*(i-1)+1:30*i); end end %对20个随机码元进行判别,若码元为0则该码元周期内调制信号为零 figure(3) subplot(2,1,1) plot(yy); xlabel('时间 t'); ylabel('幅度 y'); title('已调信号'); axis([1 600 -2 2]) grid on %对已调信号进行频谱分析 FFT3=fft(y,256); %对已调信号进行傅里叶变换 FFT3=abs(FFT3); %对傅里叶变换取绝对值 figure(3) subplot(2,1,2) plot(FFT3); xlabel('频率 f'); ylabel('幅度 FFT3'); title('已调信号频谱'); axis([0 256 0 50]) grid on %ASK的解调 z=ddemod(y,Fc,Fd,Fs,'ask',2); %调用数字带通调制函数dmod进行2ASK解调 figure(4) %对傅里叶变换取绝对值 subplot(2,1,1) stairs(z); xlabel('时间 t'); ylabel('幅度 z'); title('解调信号'); axis([1 21 -1 2]) grid on %对解调信号进行频谱分析 FFT4=fft(z,64); %对解调信号进行傅里叶变换 FFT4=abs(FFT4); %对傅里叶变换取绝对值 figure(4) subplot(2,1,2) plot(FFT4); xlabel('频率 f'); ylabel('幅度 FFT4'); title('解调信号频谱'); axis([0 64 0 50]) grid on %加入高斯小噪声,SNR为6 Ynt1=awgn(y,6); %加入高斯小噪声,信噪比为6 figure(5) subplot(2,1,1) plot(Ynt1); xlabel('时间 t'); ylabel('幅度 Ynt1'); title('加小噪声信号'); axis([1 600 -2 2]) grid on %对加小噪声信号进行频谱分析 FFT5=fft(Ynt1,256); %对加入小噪声的调制信号进行傅里叶变换 FFT5=abs(FFT5); %对傅里叶变换取绝对值 figure(5) subplot(2,1,2) plot(FFT5); xlabel('频率 f'); ylabel('幅度 FFT5'); title('加小噪声信号频谱') axis([0 256 0 50]) grid on %ASK加小噪声信号的解调及误码率 z1=ddemod(Ynt1,Fc,Fd,Fs,'ask',2); %调用数字带通调制函数dmod对加小噪声信号进行解调 [br,Pe1]=symerr(x,z1) %对解调后加小噪声信号误码分析,br为符号误差数,Pe1为符号误差率 figure(6) subplot(2,1,1) stairs(z1); xlabel('时间 t'); ylabel('幅度 z1'); title('加小噪声解调信号'); axis([1 21 -1 2]) grid on %对加小噪声解调信号进行频谱分析 FFT6=fft(z1,64); %对加入小噪声的解调信号进行傅里叶变换 FFT6=abs(FFT6); %对傅里叶变换取绝对值 figure(6) subplot(2,1,2) plot(FFT6); xlabel('频率 f'); ylabel('幅度 FFT6'); title('加小噪声解调信号频谱'); axis([0 64 0 50]) grid on %加入高斯大噪声,SNR为-2 Ynt2=awgn(y,3); %加入高斯大噪声,信噪比为-2 figure(7) subplot(2,1,1) plot(Ynt2); xlabel('时间 t'); ylabel('幅度 Ynt2'); title('加大噪声信号'); axis([1 600 -2 2]) grid on %对加大噪声信号进行频谱分析 FFT7=fft(Ynt2,256); %对加入大噪声的调制信号进行傅里叶变换 FFT7=abs(FFT7); %对傅里叶变换取绝对值 figure(7) subplot(2,1,2) plot(FFT7); xlabel('频率 f'); ylabel('幅度 FFT5'); title('加大噪声信号频谱') axis([0 256 0 50]) grid on %ASK加大噪声信号的解调及误码率 z2=ddemod(Ynt2,Fc,Fd,Fs,'ask',2); %调用数字带通调制函数dmod对加大噪声信号进行解调 [br,Pe2]=symerr(x,z2) %对解调后加大噪声信号误码分析,br为符号误差数,Pe1为符号误差率 figure(8) subplot(2,1,1) stairs(z2); xlabel('时间 t'); ylabel('幅度 z2'); title('加大噪声解调信号'); axis([1 21 -1 2]) grid on %对加大噪声解调信号进行频谱分析 FFT8=fft(z2,64); %对加入大噪声的解调信号进行傅里叶变换 FFT8=abs(FFT8); %对傅里叶变换取绝对值 figure(8) subplot(2,1,2) plot(FFT8); xlabel('频率 f'); ylabel('幅度 FFT6'); title('加大噪声解调信号频谱'); axis([0 64 0 50]) grid on %误码分析 SNR=-10:10 for i=1:length(SNR); Ynt3=awgn(y,SNR(i)); %加入高斯小噪声,信噪比从-10dB到10dB Z=ddemod(Ynt3,Fc,Fd,Fs,'ask',2); %调用数字带通解调函数ddemod对加噪声信号进行解调 [br, Pe(i)]=symerr(x,Z); %对解调后加大噪声信号误码分析,br为符号误差数,Pe(i)为符号误差率 end figure(9) semilogy(SNR,Pe); % 调用semilogy函数绘制信噪比与误码率的关系曲线 xlabel('信噪比 SNR(r/dB)'); ylabel('误码率 Pe'); title('信噪比与误码率的关系'); axis([-10 10 0 1]) grid on

推荐访问: