1、正文基于MATLAB环境下的GUI的FSK仿真演示系统第一章 绪 论1.1课题研究背景及意义随着社会的不断发展,通信对我们来说越来越显的重要。对于通信技术来讲,信息传输的有效性和可靠性是判定性能的标准。而对于保证远距离传输信息的正确性这一方面,数字通信系统具有先天的优势。在数字载波通信中,我们采用了三种解调方式:幅移键控(ASK)、频移键控(FSK)、相移键控(PSK)。其中频移键控(FSK)是信息传输中使用得较早的一种调制方式,频移键控的最简单形式是二进制频率键控2FSK。它的主要优点是:实现方法简单,抗噪声与抗衰减性能较好。因此在中低速数据传输中得到了广泛的应用。本课题研究FSK,并基于M
2、ATLAB环境下的GUI对FSK系统进行仿真演示系统的制作,从而通过运用模拟的视觉化的手段来实现达到解调调制的目的。随着电子通信科技领域的高速发展,通信系统复杂性随之增加。而传统的手工分析与电路板试验等分析设计方法己经不能适应发展的需要,通信系统计算机模拟仿真技术日益显示出其巨大的优越性。计算机仿真是根据被研究的真实系统的模型,利用计算机进行实验研究的一种方法。MATLAB是矩阵实验室(Matrix Laboratory)的简称,它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面等,主要应用于工程计算、控制设计、信号处理与通讯、
3、图像处理、信号检测等领域。同时,Matlab仿真软件也是分析通信系统常用的工具之一。Matlab的图形界面功能GUI (Graphical User Interface)能为仿真系统生成一个人机交互界面,便于仿真系统的操作。因此,GUI在通信系统的各种仿真中得到了广泛的应用,本文也选用该工具对数字调制系统进行仿真。1.2课题设计要求设计一个“基于MATLAB环境下GUI的FSK仿真演示系统”,具体要求如下:1掌握FSK的原理和仿真方法;2通过脚本编程或者SIMULINK对FSK调制方式进行仿真;3在MATLAB环境下制作一个GUI,可以由用户输入载波频率、两个调制频率f1和f2,动态产生FSK
4、调制波形;4观察调制信号和已调信号波形,分析调制性能。第二章系统组成及工作原理2.1 系统单元功能模块设计此系统必须具备以下单元功能模块: 原序列信号产生模块; 信号加躁模块; 调制模块; 1、带通滤波器模块; 解调模块: 2、乘法器模块; 3、低通滤波器模块; 4、抽样判决模块;2.2 数字调制解调原理数字调制可以分为二进制调制和多进制调制,多进制调制是二进制调制的推广,所以本课题主要研究的是二进制的调制与解调。最常见的二进制数字调制方式有二进制振幅键控(2-ASK)、移频键控(2-FSK)和移相键控(2-PSK和2-DPSK)。在此基础上还可以派生出许多其他的形式。数字调制是用载波信号的某
5、些离散状态来表征所传输的信息,在接收端也对载波信号的离散调制参量进行检测。数字调制采用正弦波调制,即信号被调制为高频正弦波。 数字解调是一种为了传播方便,把信息编码传输的方法。在传输过程中,语音通话等会转变成一连串的数字信号,变为计算机二进制代码0和1,在信息接收处又解码恢复到原来的语音状态。解调是调制的逆过程,其作用是从接受的己调信号中恢复原基带信号(即调制信号)。调制的方法可分为两类:相干解调和非相干解调。由于FSK的解调过程有相干解调法和非相干解调法,我们在这里只介绍相干解调原理。相干解调是指利用乘法器,输入一路与载频相干(同频同相)的参考信号与载频相乘。2.3 频移键控FSK原理二进制
6、数字频率调制方法有模拟调制和键控法两种。其中二进制频率键控2FSK (frequency-shift keying)是采用最为广泛的一种,它原理更为简单、实现起来也更为容易、抗噪声和抗衰减性能好、稳定可靠,是中低速数据传输的最佳选择。故一般采用键控法来实现二进制的频率键控2FSK。2.3.1 2FSK调制原理一、基本原理2FSK是用原二进制”0”/”1”序列信号调制载波的一种数字调制方式。我们将每个比特的信息转换为一个频率,不同的电平对应不同频率的载波。一般来说,“0”由较低的频率f0表示,“1”由较高的频率f1表示。即f0。同理,若某点对应的原信号应为1,则在此点处信号。从而下面可以直接用抽
7、样判决的方法解调出原信号。对比观察图中两个信号,可以确定演示结果正确。七、经两个低通滤波器后的信号Ym0、Ym1输入信息码1 0 0 1 0,载频f0=400,f1=200。观察m0经带通滤波器0滤波后得到的频域函数Ym0(图一)和m1经带通滤波器1滤波后得到的频域函数Ym1(图二)。如图4.7所示。经过低通滤波器以后,我们将经乘法器得到的信号m0、m1的高频成分滤除,得到较为平缓的信号Ym0、Ym1。这样使得抽样判决器的抽样值较为准确,有利于提高抽样判决器的有效性。观察图中两个信号,不难看出在有些时间段m0m1,有些时间段m1m0,且这些时间段较为严格地区分开来了。这恰好符合抽样判决器的判决
8、要求。所以可以确定演示结果正确。图4.6 经乘法器与相应载波相乘后的信号m0、m1图4.7 经两个低通滤波器后的信号Ym0、Ym1八、原信号m(t)&解调输出信号m1(t)输入信息码1 0 0 1 0,载频f0=400,f1=200。观察原信号m(t)(图一)和解调输出信号m1(t)(图二)。如图4.8所示。信号在系统中受调制、传输、解调等过程是会存在一定的延迟的。而比较图中两个信号发现,m1(t)相对于m(t)有一定的延迟。所以可以确定演示结果正确。图4.8 原信号m(t)&解调输出信号m1(t)4.2 调试故障分析系统调试时,多次在调制步骤出现故障,载波的波形出现频率不正确的现象。经过多次
9、试验后,发现振荡器的频率f0、f1需要在200HZ以下,才能够明显观察出一个码元内的载波个数。所以,系统在使用仿真时,输入的载波频率最好是在200HZ以下。第五章总结自从因特网把我们领进信息时代开始,人类的历史翻开了璀璨的一页。随着信息的飞速发展,通信原理也随之崛起。从而,使得培养新世纪的技术人才显得分外重要。在学习通信原理理论基础后,我们了解到FSK是信息传输中使用得较早的一种调制方式,也是数字通信中用得较广的一种方式。它的主要优点是:实现起来较容易,抗噪声与衰减的性能较好,适合中低速数据的传输的应用。通常数据率在低于1200bps时使用FSK方式。在衰落信道中传输数据时,它也被广泛采用。相
10、干解调对接收设备的复杂程度比非相干解调较高。在理论学习的基础上通过利用MATLAB仿真,真正的看到了通信中传输信息的一系列的问题。比如说要使信号不失真地传输到接收端,就要考虑很多的因数。在发送端要注意噪声的加入,尽量地减少噪声浸入信道中,以免在接受端使信号失真度过大而不能恢复成原来的信号。而在接收端,采用哪种解调方式能够更好地恢复出原来的信号,对于不同的解调方式有相干解调和非相干解调。相干解调一般是在接收端使接收的信号通过一个相乘器,同时乘上一个与原调制信号同频同相的载波,再通过低通滤波器滤除不需要的信号。然后再经过采样、量化和编码,最终可以得到原调制信号。通过这次的课程设计,进一步了解了二进
11、制频移键控即2FSK的基本原理及其相干解调方法。当然在学习的过程中,也遇到了许多困难。比如参数设置的不理想时,总是会出现波形失真等问题。但是通过查阅资料和请教老师,我们很好地完成了此次设计。同时这次的设计也让我对MATLAB环境下的GUI有了一定的了解,使我明白了用计算机仿真电子通信系统,具有广泛的适应性和极高的灵活性。心 得本次设计主要涉及到了通信原理和MATLAB的相关知识与运用,主要有基带信号的调制原理及方法、相干解调的原理及实现方法、带通和低通滤波器的特性、抽样判决的实现方法等等,加深了对上述相关知识的了解,使自己更深刻理解了调制与解调的原理和实现方法,已经基本掌握了MATLAB的m文
12、件及其环境下的GUI的基本应用。通过这次课程设计,我们学到了很多书本上没有的知识。锻炼了我们独立思考问题、分析问题、解决问题的能力。而且本次设计是和同组人共同完成的,加强了与他人沟通的能力以及团队合作精神,为今后走向社会提供了很好的准备。参考文献1 樊昌信. 通信原理.北京:国防工业出版社,2008.2 郝文化. MATLAB图形图像处理应用教程.北京:中国水利水电出版社,2002.3 徐金明.MATLAB实用教程.北京:清华大学出版社,2003.4 达新宇. 通信原理实验与课程设计.北京:北京邮电大学出版社,2003.附录一 m文件由于有很多都是系统生成语句,不是函数关键部分,故这里删除了许
13、多不必要的语句,着重强调的还是popupmenu3、popupmenu4的回调函数及调制解调函数bfsk。function popupmenu3_Callback(hObject, eventdata, handles) axes(handles.axes2);ab=1;val=get(handles.popupmenu3,value);switch val case 1 ab=1; case 2 ab=2; case 3 ab=3; case 4 ab=4; case 5 ab=5; case 6 ab=6; case 7 ab=7; case 8 ab=8; case 9 ab=9; ca
14、se 10 ab=10; case 11 ab=11; case 12 ab=12; case 13 ab=13; case 14 ab=14; case 15 ab=15; case 16 ab=16; end bfsk1(ab); function popupmenu4_Callback(hObject, eventdata, handles)axes(handles.axes3);ab=1;val=get(handles.popupmenu4,value);switch val case 1 ab=1; case 2 ab=2; case 3 ab=3; case 4 ab=4; cas
15、e 5 ab=5; case 6 ab=6; case 7 ab=7; case 8 ab=8; case 9 ab=9; case 10 ab=10; case 11 ab=11; case 12 ab=12; case 13 ab=13; case 14 ab=14; case 15 ab=15; case 16 ab=16; end bfsk1(ab); function bfsk1(ba)%-产生原信号(二进制单极性不归零脉冲序列)-w=eval(get(findobj(tag,edit1),string);f0=eval(get(findobj(tag,edit2),string);
16、f1=eval(get(findobj(tag,edit3),string);le=length(w);t=0:0.001:(0.05*le-0.001);c1=sin(2*pi*f1*t);c0=sin(2*pi*f0*t);bit=1:le;fsk=1:le;for i=1:le for j=1:50 n=(i-1)*50+j; if w(i)=1 bit(n)=1;fsk(n)=c1(n); %原信号bir和已调信号fsk else bit(n)=0;fsk(n)=c0(n); end endendfftfsk=abs(fft(fsk); %已调信号的频谱fftfsknos=awgn(f
17、sk,20); %加噪已调信号nosffsk=abs(fft(nos); %加噪已调信号的频谱ffsk%-带通滤波器-fpl=f0-15;fpu=f0+15;fsl=f0-40;fsu=f0+40;Fs=10000;wp0=2*fpl/Fs,2*fpu/Fs;ws0=2*fsl/Fs,2*fsu/Fs;rp=1;rs=50;N0,wp0=ellipord(wp0,ws0,rp,rs);B0,A0=ellip(N0,rp,rs,wp0);y0=filter(B0,A0,nos); %经带通滤波器0后的c0(t)-y0 k0=abs(fft(y0); %经带通滤波器0后的c0(f)-k0 fpl1
18、=f1-8;fpu1=f1+8;fsl1=f1-20;fsu1=f1+20;wp1=2*fpl1/Fs,2*fpu1/Fs;ws1=2*fsl1/Fs,2*fsu1/Fs;N1,wp1=ellipord(wp1,ws1,rp,rs);B1,A1,=ellip(N1,rp,rs,wp1);y1=filter(B1,A1,nos); %经带通滤波器1后的c1(t)-y1k1=abs(fft(y1); %经带通滤波器1后的c1(f)-k1 %-相乘器-length(y0);length(c0);m0=y0.*c0; %与载波相乘后c0(t)-m0m1=y1.*c1; %与载波相乘后c1(t)-m1%
19、-低通滤波器0-Fsm=1000; %采样频率wpm=f0*0.6; wsm=f0*1.2;rpm=1; rsm=20;Nm,wcm=buttord(wpm,wsm,rpm,rsm,s);Bm,Am=butter(Nm,wcm,s);Bzm,Azm=impinvar(Bm,Am,Fsm);Ym0=filter(Bzm,Azm,m0); %经低通滤波器0后c0(t)-Ym0ym0=abs(fft(Ym0); %经低通滤波器0后c0(f)-ym0 %-低通滤波器1-wpm=f1*0.8; wsm=f1*1.2;rpm=1; rsm=20;Nm,wcm=buttord(wpm,wsm,rpm,rsm
20、,s);Bm,Am=butter(Nm,wcm,s);Bzm,Azm=impinvar(Bm,Am,Fsm);Ym1=filter(Bzm,Azm,m1); %经低通滤波器1后c1(t)-Ym1ym1=abs(fft(Ym1); %经低通滤波器1后c1(f)-ym1%-抽样判决模块- g=;for i=1:length(Ym0) if Ym0(i)Ym1(i) g(i)=0; else g(i)=1; endendswitch ba case 1 plot(bit); case 2 plot(fsk); case 3 plot(fftfsk); case 4 plot(nos); case 5
21、 plot(ffsk); case 6 plot(y0); case 7 plot(k0); case 8 plot(y1); case 9 plot(k1); case 10 plot(m0); case 11 plot(m1); case 12 plot(Ym0); case 13 plot(ym0); case 14 plot(Ym1); case 15 plot(ym1); case 16 plot(g);endfunction pushbutton20_Callback(hObject, eventdata, handles)axes(handles.axes3);cla;axes(handles.axes2);cla;function axes4_CreateFcn(hObject, eventdata, handles)axes(hObject);imshow(TTT.jpg);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1