资源描述
郑州航空工业管理学院
《电子信息系统仿真》课程设计
2009 级 电子信息工程 专业 0913082 班级
题 目 2FSK调制解调系统设计与仿真
姓 名 金勇军 学号 091308211
指导教师 王丹 王娜
二О一一 年 十二 月 七 日
内 容 摘 要
本文主要是利用MATLAB7.0来实现2FSK 数字调制解调系统的设计。对数字通信系统主要原理和技术进行研究,理解2FSK系统调制解调的基本过程和相关知识,该设计模块包含信源调制、发送滤波器模块、信道、接受滤波器模块、解调以及信宿,并未各个模块进行相应的参数设置。在此基础上熟悉MATLAB的功能及操作,最后通过观察仿真图形进行波形分析及系统的性能评价。
关键词
2FSK MATLAB 调制解调 系统性能
一、 MATLAB软件简介
MATLAB是矩阵实验室(Matrix Laboratory)之意。除具备桌越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学,工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多.
当前流行的MATLAB 5.3/Simulink 3.0包括拥有数百个内部函数的主包和三十几种工具包(Toolbox).工具包又可以分为功能性工具包和学科工具包.功能工具包用来扩充MATLAB的符号计算,可视化建模仿真,文字处理及实时控制等功能.学科工具包是专业性比较强的工具包,控制工具包,信号处理工具包,通信工具包等都属于此类.
开放性使MATLAB广受用户欢迎.除内部函数外,所有MATLAB主包文件和各种工具包都是可读可修改的文件,用户通过对源程序的修改或加入自己编写程序构造新的专用工具包
一种语言之所以能如此迅速地普及,显示出如此旺盛的生命力,是由于它有着不同于其他语言的特点,正如同FORTRAN和C等高级语言使人们摆脱了需要直接对计算机硬件资源进行操作一样,被称作为第四代计算机语言的MATLAB,利用其丰富的函数资源,使编程人员从繁琐的程序代码中解放出来。MATLAB最突出的特点就是简洁。MATLAB用更直观的,符合人们思维习惯的代码,代替了C和FORTRAN语言的冗长代码。MATLAB给用户带来的是最直观,最简洁的程序开发环境。
二、 理论分析
2FSK信号的产生:
2FSK是利用数字基带信号控制在波的频率来传送信息。例如,1码用频率f1来传输,0码用频率f2来传输,而其振幅和初始相位不变。故其表示式为
式中,假设码元的初始相位分别为和;和为两个不同的码元的角频率;幅度为A为一常数,表示码元的包络为矩形脉冲。
2FSK信号的产生方法有两种:
模拟法,即用数字基带信号作为调制信号进行调频。
键控法,用数字基带信号及其反相分别控制两个开关门电路,以此对两个载波发生器进行选通。
这两种方法产生的2FSK信号的波形基本相同,只有一点差异,即由调频器产生的2FSK信号在相邻码元之间的相位是连续的,而键控法产生的2FSK信号,则分别有两个独立的频率源产生两个不同频率的信号,故相邻码元的相位不一定是连续的。
2FSK的解调方式
2FSK 的解调方法有非相干解调和相干解调:
这里的抽样判决器与 2ASK 解调时不同 ,只需判断哪一个输入样值大,不专门设置门
仿真图:
参数设置:
系统时钟:No. of Sample: 1001 ; Sample Rate:10000Hz
No. of System Loop:1
矩形脉冲序列和调制信号波形:
绘制 2FSK 信号的功率谱密度图:
由图可见 2FSK 功率谱密度的特点如下:
1、 2FSK信号的功率谱由连续谱和离散谱两部分构成,离散谱出现在 500Hz 和 1000Hz 两个载频位置。
2、若两个载频之差|f1-f2|>fs功率谱密度中的连续谱部分出现双峰,该实验中,fs为 100Hz, |f1-f2|等于500Hz,连续谱为双峰,若两个载频之差|f1-f2|≤fs,则出现单峰。
3、所需传输带宽 BFSK=|f1-f2|+2 fs .
输出信号和两种方法解调输出的波形:
三、 Matlab实现:
生成2FSK的程序如下
源程序代码:
clear all
close all
i=10;%基带信号码元数
j=5000;
a=round(rand(1,i));%产生随机序列
t=linspace(0,5,j);
f1=10;%载波1频率
f2=5;%载波2频率
fm=i/5;%基带信号频率
B1=2*f1;%载波1带宽
B2=2*f2;%载波2带宽
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%产生基带信号
st1=t;
for n=1:10
if a(n)<1;
for m=j/i*(n-1)+1:j/i*n
st1(m)=0;
end
else
for m=j/i*(n-1)+1:j/i*n
st1(m)=1;
end
end
end
st2=t;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%基带信号求反
for n=1:j;
if st1(n)>=1;
st2(n)=0;
else
st2(n)=1;
end
end;
figure(1);
subplot(411);
plot(t,st1);
title('基带信号');
axis([0,5,-1,2]);
subplot(412);
plot(t,st2);
title('基带信号反码');
axis([0,5,-1,2]);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%载波信号
s1=cos(2*pi*f1*t);
s2=cos(2*pi*f2*t);
subplot(413)
plot(s1);
title('载波信号1');
subplot(414),
plot(s2);
title('载波信号2');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%调制
F1=st1.*s1;%加入载波1
F2=st2.*s2;%加入载波2
figure(2);
subplot(311);
plot(t,F1);
title('s1*st1');
subplot(312);
plot(t,F2);
title('s2*st2');
e_fsk=F1+F2;
subplot(313);
plot(t,e_fsk);
title('2FSK信号')
Matlab程序运行结果:
2FSK调制解调系统进行设计和仿真:
Fc=10; %载频
Fs=40; %系统采样频率
Fd=1; %码速率
N=Fs/Fd;
df=10;
numSymb=25;%进行仿真的信息代码个数
M=2; %进制数
SNRpBit=60;%信噪比
SNR=SNRpBit/log2(M);%60
seed=[12345 54321];
numPlot=15;
x=randsrc(numSymb,1,[0:M-1]);%产生25个二进制随机码
figure(1)
stem([0:numPlot-1],x(1:numPlot),'bx');%显示15个码元,杆图,从x的前十五个随机数中选取
title('二进制随机序列')
xlabel('Time');
ylabel('Amplitude');
%调制
y=dmod(x,Fc,Fd,Fs,'fsk',M,df);%数字带通调制
numModPlot=numPlot*Fs; %15*40
t=[0:numModPlot-1]./Fs;%数组除法(仿真时间)
figure(2)
plot(t,y(1:length(t)),'b-');
axis([min(t) max(t) -1.5 1.5]);
title('调制后的信号')
xlabel('Time');
ylabel('Amplitude');
%在已调信号中加入高斯白噪声
randn('state',seed(2)); %生成-2到+2之间的随机数矩阵
y=awgn(y,SNR-10*log10(0.5)-10*log10(N),'measured',[],'dB');%在已调信号中加入高斯白噪声
figure(3)
plot(t,y(1:length(t)),'b-');%画出经过信道的实际信号
axis([min(t) max(t) -1.5 1.5]);
title('加入高斯白噪声后的已调信号')
xlabel('Time');
ylabel('Amplitude');
%相干解调
figure(4)
z1=ddemod(y,Fc,Fd,Fs,'fsk/eye',M,df);
title('相干解调后的信号的眼图')
%带输出波形的相干M元频移键控解调
figure(5)
stem([0:numPlot-1],x(1:numPlot),'bx');
hold on;
stem([0:numPlot-1],z1(1:numPlot),'ro');
hold off;
axis([0 numPlot -0.5 1.5]);
title('相干解调后的信号原序列比较')
legend('原输入二进制随机序列','相干解调后的信号')
xlabel('Time');
ylabel('Amplitude');
%非相干解调
figure(6)
z2=ddemod(y,Fc,Fd,Fs,'fsk/eye/noncoh',M,df);
title('非相干解调后的信号的眼图')
%带输出波形的非相干M元频移键控解调
figure(7)
stem([0:numPlot-1],x(1:numPlot),'bx');
hold on;
stem([0:numPlot-1],z2(1:numPlot),'ro');
hold off;
axis([0 numPlot -0.5 1.5]);
title('非相干解调后的信号')
legend('原输入二进制随机序列','非相干解调后的信号')
xlabel('Time');
ylabel('Amplitude');
%误码率统计
[errorSym ratioSym]=symerr(x,z1);
figure(8)
simbasebandex([0:1:5]);
title('相干解调后误码率统计')
[errorSym ratioSym]=symerr(x,z2);
figure(9)
simbasebandex([0:1:5]);
title('非相干解调后误码率统计')
%滤除高斯白噪声
Delay=3;R=0.5;PropD=0; %滞后3s
[yf,tf]=rcosine(Fd,Fs,'fir',R,Delay); %升余弦函数
[yo2,to2]=rcosflt(y,Fd,Fs,'filter',yf);
%加入高斯白噪声后的已调信号和经过升余弦滤波器后的已调信号
t=[0:numModPlot-1]./Fs;
figure(10)
plot(t,y(1:length(t)),'r-');
hold on;
plot(to2,yo2,'b-');%滤出带外噪声
hold off;
axis([0 30 -1.5 1.5]);
xlabel('Time');
ylabel('Amplitude');
legend('加入高斯白噪声后的已调信号','经过升余弦滤波器后的已调信号')
title('升余弦滤波前后波形比较')
eyediagram(yo2,N);%眼图
title('加入高斯白噪声后的已调信号的眼图')
Matlab程序运行结果:
略去部分matlab生成的图形文件,重点分析了调制解调系统有关的图像文件,如下5个图:
四、 系统性能分析
对于数字传输系统而言,最重要的性能指标就是误码率。如上图我们结合通信原理课本上的公式可以看出:
相干检测法的误码率为:
而非相干包络检波法的误码率为:
显然,所以相干解调性能优于非相干解调。进一步验证了对于2FSK调制与解调系统,相干解调的误码率小于非相干解调的误码率。
五、 课程设计总结
课程设计是培养我们综合运用所学知识、发现、提出、分析和解决实际问题、锻炼实践能力的重要环节,是对我们实际工作能力的具体训练和考察过程。此次课程设计使我获益匪浅,从选题到定稿,从理论到实践,各方面都提高了许多,同时不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,才能深刻理解理论知识,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中我们遇到了很多问题,比如的simulink使用、仿真波形的调理等等,他们考验着我们MATLAB对软件的运用情况以及FM调制解调理论的掌握情况,并且从中我们发现了很多自身的不足,以及以后改进的方向。
参考文献
(1) 李晓峰 周亮 周宁 等 《通信原理》 清华大学出版社 2008年11月第一版
(2) 《MATLAB编程》 第4版 Stephen J.Chapman 著
(3) 百度文库 《2FSK调制与解调系统设计与仿真》
(4) 刘波、文忠、曾涯 《MATLAB信号处理》电子工业出版社 2006年7月
(5)郑君里 应启衍 杨为理 《信号与系统》 高等教育出版社
指导教师评语:
课程设计成绩: 指导教师签名:
年 月 日
展开阅读全文