正文基于MATLAB环境下的GUI的FSK仿真演示系统.docx
- 文档编号:26002734
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:24
- 大小:790.78KB
正文基于MATLAB环境下的GUI的FSK仿真演示系统.docx
《正文基于MATLAB环境下的GUI的FSK仿真演示系统.docx》由会员分享,可在线阅读,更多相关《正文基于MATLAB环境下的GUI的FSK仿真演示系统.docx(24页珍藏版)》请在冰豆网上搜索。
正文基于MATLAB环境下的GUI的FSK仿真演示系统
第一章绪论
1.1课题研究背景及意义
随着社会的不断发展,通信对我们来说越来越显的重要。
对于通信技术来讲,信息传输的有效性和可靠性是判定性能的标准。
而对于保证远距离传输信息的正确性这一方面,数字通信系统具有先天的优势。
在数字载波通信中,我们采用了三种解调方式:
幅移键控(ASK)、频移键控(FSK)、相移键控(PSK)。
其中频移键控(FSK)是信息传输中使用得较早的一种调制方式,频移键控的最简单形式是二进制频率键控2FSK。
它的主要优点是:
实现方法简单,抗噪声与抗衰减性能较好。
因此在中低速数据传输中得到了广泛的应用。
本课题研究FSK,并基于MATLAB环境下的GUI对FSK系统进行仿真演示系统的制作,从而通过运用模拟的视觉化的手段来实现达到解调调制的目的。
随着电子通信科技领域的高速发展,通信系统复杂性随之增加。
而传统的手工分析与电路板试验等分析设计方法己经不能适应发展的需要,通信系统计算机模拟仿真技术日益显示出其巨大的优越性。
计算机仿真是根据被研究的真实系统的模型,利用计算机进行实验研究的一种方法。
MATLAB是矩阵实验室(MatrixLaboratory)的简称,它在数学类科技应用软件中在数值计算方面首屈一指。
MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测等领域。
同时,Matlab仿真软件也是分析通信系统常用的工具之一。
Matlab的图形界面功能GUI(GraphicalUserInterface)能为仿真系统生成一个人机交互界面,便于仿真系统的操作。
因此,GUI在通信系统的各种仿真中得到了广泛的应用,本文也选用该工具对数字调制系统进行仿真。
1.2课题设计要求
设计一个“基于MATLAB环境下GUI的FSK仿真演示系统”,具体要求如下:
1.掌握FSK的原理和仿真方法;
2.通过脚本编程或者SIMULINK对FSK调制方式进行仿真;
3.在MATLAB环境下制作一个GUI,可以由用户输入载波频率、两个调制频率f1和f2,动态产生FSK调制波形;
4.观察调制信号和已调信号波形,分析调制性能。
第二章系统组成及工作原理
2.1系统单元功能模块
设计此系统必须具备以下单元功能模块:
▲原序列信号产生模块;
▲信号加躁模块;
▲调制模块;
1、带通滤波器模块;
▲解调模块:
2、乘法器模块;
3、低通滤波器模块;
4、抽样判决模块;
2.2数字调制解调原理
数字调制可以分为二进制调制和多进制调制,多进制调制是二进制调制的推广,所以本课题主要研究的是二进制的调制与解调。
最常见的二进制数字调制方式有二进制振幅键控(2-ASK)、移频键控(2-FSK)和移相键控(2-PSK和2-DPSK)。
在此基础上还可以派生出许多其他的形式。
数字调制是用载波信号的某些离散状态来表征所传输的信息,在接收端也对载波信号的离散调制参量进行检测。
数字调制采用正弦波调制,即信号被调制为高频正弦波。
数字解调是一种为了传播方便,把信息编码传输的方法。
在传输过程中,语音通话等会转变成一连串的数字信号,变为计算机二进制代码0和1,在信息接收处又解码恢复到原来的语音状态。
解调是调制的逆过程,其作用是从接受的己调信号中恢复原基带信号(即调制信号)。
调制的方法可分为两类:
相干解调和非相干解调。
由于FSK的解调过程有相干解调法和非相干解调法,我们在这里只介绍相干解调原理。
相干解调是指利用乘法器,输入一路与载频相干(同频同相)的参考信号与载频相乘。
2.3频移键控FSK原理
二进制数字频率调制方法有模拟调制和键控法两种。
其中二进制频率键控2FSK(frequency-shiftkeying)是采用最为广泛的一种,它原理更为简单、实现起来也更为容易、抗噪声和抗衰减性能好、稳定可靠,是中低速数据传输的最佳选择。
故一般采用键控法来实现二进制的频率键控2FSK。
2.3.12FSK调制原理
一、基本原理
2FSK是用原二进制”0”/”1”序列信号调制载波的一种数字调制方式。
我们将每个比特的信息转换为一个频率,不同的电平对应不同频率的载波。
一般来说,“0”由较低的频率f0表示,“1”由较高的频率f1表示。
即f0 其表达式为: (式2-1) 对应典型波形为: 图2.1调制典型波形 频移键控采用的调制方式需要两个不同频率段的载波信号,码元为“1”和码元为“0”时的载波频率不同,其数学表达式为: (式2-2) (式2-3) (式2-3) 二、2FSK信号的产生方法 ▲采用模拟调频电路来实现: 信号在相邻码元之间的相位是连续变化的。 ▲采用键控法来实现: 相邻码元之间的相位不一定连续。 键控法的原理框图如图2.2所示。 基带信号 振荡器0(f0) 振荡器1(f1) 0键控开关 1 e2FSK(t) 图2.2键控法原理框图 基带信号是一个二进制0/1信号。 键控开关受基带信号控制,其中基带信号为“1”时,开关接至振荡器1。 反之,基带信号为“0”时,开关接至振荡器0。 当振荡器产生信号为频率分别为f0、f1的余弦信号时,调制信号 即为 。 其中 , 都是二进制序列信号。 2.3.22FSK解调原理 解调原理框图如图2.4所示,对应的典型波形图如图2.3所示。 图2.3解调典型波形图 图2.4解调原理框图 第三章系统设计思路 3.1调制模块设计 开始 输入信息码w、载频f0、f1 码长le=length(w);设步长为0.001,每个码元有 50个步长;C1=sin(2πf1t);C0=sin(2πf0t); i=1,j=1 基带采样信号是否为0? n=(i-1)*50+j bit(n)=1, fsk(n)=C1(n) bit(n)=0, fsk(n)=C0(n) j=j+1 j=50? i=i+1 i=le? fftfsk=FT[fsk],nos=awgn(fsk,20),ffsk=FT[nos] 将bit、fsk、fftfsk、nos、ffsk画出 结束 否 是 否 是 否 是 图3.1调制模块设计流程图 注释: w为二进制信息码;bit信号是承载码信息的二进制单极性不归零脉冲序列;fsk是已调制的二进制频移键控信号;nos是加噪后的fsk信号;fftfsk、ffsk分别是fsk、nos信号的傅立叶变换,即频域函数。 3.2解调模块设计 图3.2解调模块设计流程图 3.3GUI界面设计 如图3.3所示,界面一共有三个编辑框edit1~edit3,两个下拉菜单popupmenu3~popupmenu4。 一个pushbutton20。 三个axes1~axes2。 他们的功能描述如表3-1所示: 图3.3GUI界面设计 表3-1GUI界面功能描述 控件名 功能描述 edit1 输入二进制信息码w edit2 输入载频f0 edit3 输入载频f1 popupmenu3 选择axes2坐标轴要显示的图形 popupmenu4 选择axes3坐标轴要显示的图形 pushbutton20 清除axes2、axes3坐标轴上的图形 axes1 显示背景图片 axes2 显示popupmenu3中被选择的函数的图形 axes3 显示popupmenu4中被选择的函数的图形 第四章系统调试结果分析 4.1调试步骤及现象分析 4.1.1调试步骤 第一步: 运行m文件或者fig文件后,系统会打开“基于MATLAB环境下的GUI的FSK调制解调仿真演示系统”。 第二步: 输入任意长度的二进制信息码w,载频f0及f1。 (缺省值为f0=400,f1=200,w=[10000]) 第三步: 选中任一下拉菜单中的任意选项,即可调用FSK调制解调函数bfsk,并且根据选中项的项号,查找到相应已生成的函数信号,最后在相应的坐标轴中显示出来。 第四步: 选择另一下拉菜单中的任意项,并在其相应坐标轴中显示所选函数信号。 第五步: 根据需要,使用清除图像功能。 4.1.2现象分析 整个调制解调过程,生成了很多函数信号。 仿真演示系统可以通过popupmenu选择任意函数信号进行对比观察。 下面按照整个调制解调过程,顺序地选择一些具有重要对比意义的现象分析系统性能及调试结果。 一、打开系统界面 图4.1系统界面图 运行m文件或fig文件后,显示如图4.1所示系统界面。 二、输入参数、选择菜单项 打开界面后,用户需要输入任意长度的信息码w、载频f0和f1三个参数。 接着,如图4.2所示,点击下拉菜单后,共有原信号m(t)、已调信号、抽样判决输出信号m1(t)等16项函数信号可供选择。 用户可以选择不同的函数信号分别显示在图形一和图形二坐标轴上,这样可以方便对比观察。 (其中,编辑框的缺省值为f0=400,f1=200,w=[10000]) 图4.2用户输入参数 三、原信号&已调信号 输入信息码10010,载频f0=50,f1=100。 观察原信号(图一)和已调信号(图二)。 如图4.3所示。 显然,对比观察图中两个信号,原信号为1时的已调信号频率f1是原信号为0时的已调信号频率f0的两倍,可以确定演示结果正确。 四、已调信号&已调加噪信号 输入信息码10010,载频f0=50,f1=100。 观察已调信号(图一)和已调加噪信号(图二)。 如图4.4所示。 当已调信号经过信道传输后,不免会有噪声干扰。 这里我们调用了MATLAB中的awgn(f,N)函数的功能产生噪声(其中f指的是无噪声信号,N指的是信噪比),令N=20。 将图4.4中的两个图形对比观察,发现图形二所示信号显然已被噪声干扰,发生了一定的变形,可以确定演示结果正确。 图4.3原信号&已调信号 图4.4已调信号&已调加噪信号 五、已调加噪信号&已调加噪信号频谱 输入信息码10010,载频f0=400,f1=200。 观察已调加噪信号(图一)和已调加噪信号频谱(图二)。 如图4.5所示。 图4.5已调加噪信号&已调加噪信号频谱 六、经乘法器与相应载波相乘后的信号m0、m1 输入信息码10010,载频f0=400,f1=200。 观察k0与载波C0=sin(2πf0t)相乘得到的信号m0(图一)和k1与载波C1=sin(2πf1t)相乘得到的信号m1(图二)。 如图4.6所示。 相乘后,若某点对应的原信号应为0,在此点处信号平均值 > 。 同理,若某点对应的原信号应为1,则在此点处信号 > 。 从而下面可以直接用抽样判决的方法解调出原信号。 对比观察图中两个信号,可以确定演示结果正确。 七、经两个低通滤波器后的信号Ym0、Ym1 输入信息码10010,载频f0=400,f1=200。 观察m0经带通滤波器0滤波后得到的频域函数Ym0(图一)和m1经带通滤波器1滤波后得到的频域函数Ym1(图二)。 如图4.7所示。 经过低通滤波器以后,我们将经乘法器得到的信号m0、m1的高频成分滤除,得到较为平缓的信号Ym0、Ym1。 这样使得抽样判决器的抽样值较为准确,有利于提高抽样判决器的有效性。 观察图中两个信号,不难看出在有些时间段m0>m1,有些时间段m1>m0,且这些时间段较为严格地区分开来了。 这恰好符合抽样判决器的判决要求。 所以可以确定演示结果正确。 图4.6经乘法器与相应载波相乘后的信号m0、m1 图4.7经两个低通滤波器后的信号Ym0、Ym1 八、原信号m(t)&解调输出信号m1(t) 输入信息码10010,载频f0=400,f1=200。 观察原信号m(t)(图一)和解调输出信号m1(t)(图二)。 如图4.8所示。 信号在系统中受调制、传输、解调等过程是会存在一定的延迟的。 而比较图中两个信号发现,m1(t)相对于m(t)有一定的延迟。 所以可以确定演示结果正确。 图4.8原信号m(t)&解调输出信号m1(t) 4.2调试故障分析 系统调试时,多次在调制步骤出现故障,载波的波形出现频率不正确的现象。 经过多次试验后,发现振荡器的频率f0、f1需要在200HZ以下,才能够明显观察出一个码元内的载波个数。 所以,系统在使用仿真时,输入的载波频率最好是在200HZ以下。 第五章 总结 自从因特网把我们领进信息时代开始,人类的历史翻开了璀璨的一页。 随着信息的飞速发展,通信原理也随之崛起。 从而,使得培养新世纪的技术人才显得分外重要。 在学习通信原理理论基础后,我们了解到FSK是信息传输中使用得较早的一种调制方式,也是数字通信中用得较广的一种方式。 它的主要优点是: 实现起来较容易,抗噪声与衰减的性能较好,适合中低速数据的传输的应用。 通常数据率在低于1200bps时使用FSK方式。 在衰落信道中传输数据时,它也被广泛采用。 相干解调对接收设备的复杂程度比非相干解调较高。 在理论学习的基础上通过利用MATLAB仿真,真正的看到了通信中传输信息的一系列的问题。 比如说要使信号不失真地传输到接收端,就要考虑很多的因数。 在发送端要注意噪声的加入,尽量地减少噪声浸入信道中,以免在接受端使信号失真度过大而不能恢复成原来的信号。 而在接收端,采用哪种解调方式能够更好地恢复出原来的信号,对于不同的解调方式有相干解调和非相干解调。 相干解调一般是在接收端使接收的信号通过一个相乘器,同时乘上一个与原调制信号同频同相的载波,再通过低通滤波器滤除不需要的信号。 然后再经过采样、量化和编码,最终可以得到原调制信号。 通过这次的课程设计,进一步了解了二进制频移键控即2FSK的基本原理及其相干解调方法。 当然在学习的过程中,也遇到了许多困难。 比如参数设置的不理想时,总是会出现波形失真等问题。 但是通过查阅资料和请教老师,我们很好地完成了此次设计。 同时这次的设计也让我对MATLAB环境下的GUI有了一定的了解,使我明白了用计算机仿真电子通信系统,具有广泛的适应性和极高的灵活性。 心得 本次设计主要涉及到了通信原理和MATLAB的相关知识与运用,主要有基带信号的调制原理及方法、相干解调的原理及实现方法、带通和低通滤波器的特性、抽样判决的实现方法等等,加深了对上述相关知识的了解,使自己更深刻理解了调制与解调的原理和实现方法,已经基本掌握了MATLAB的m文件及其环境下的GUI的基本应用。 通过这次课程设计,我们学到了很多书本上没有的知识。 锻炼了我们独立思考问题、分析问题、解决问题的能力。 而且本次设计是和同组人共同完成的,加强了与他人沟通的能力以及团队合作精神,为今后走向社会提供了很好的准备。 参考文献 [1]樊昌信.通信原理.北京: 国防工业出版社,2008. [2]郝文化.MATLAB图形图像处理应用教程.北京: 中国水利水电出版社,2002. [3]徐金明.MATLAB实用教程.北京: 清华大学出版社,2003. [4]达新宇.通信原理实验与课程设计.北京: 北京邮电大学出版社,2003. 附录一m文件 由于有很多都是系统生成语句,不是函数关键部分,故这里删除了许多不必要的语句,着重强调的还是popupmenu3、popupmenu4的回调函数及调制解调函数bfsk。 functionpopupmenu3_Callback (hObject,eventdata,handles) axes(handles.axes2);ab=1; val=get(handles.popupmenu3,'value'); switchval case1 ab=1; case2 ab=2; case3 ab=3; case4 ab=4; case5 ab=5; case6 ab=6; case7 ab=7; case8 ab=8; case9 ab=9; case10 ab=10; case11 ab=11; case12 ab=12; case13 ab=13; case14 ab=14; case15 ab=15; case16 ab=16; end bfsk1(ab); functionpopupmenu4_Callback (hObject,eventdata,handles) axes(handles.axes3);ab=1; val=get(handles.popupmenu4,'value'); switchval case1 ab=1; case2 ab=2; case3 ab=3; case4 ab=4; case5 ab=5; case6 ab=6; case7 ab=7; case8 ab=8; case9 ab=9; case10 ab=10; case11 ab=11; case12 ab=12; case13 ab=13; case14 ab=14; case15 ab=15; case16 ab=16; end bfsk1(ab); functionbfsk1(ba) %----------------产生原信号(二进制单极性不归零脉冲序列)----------------------- w=eval(get(findobj('tag','edit1'),'string')); f0=eval(get(findobj('tag','edit2'),'string')); 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; fori=1: le forj=1: 50 n=(i-1)*50+j; ifw(i)==1 bit(n)=1;fsk(n)=c1(n);%原信号bir和已调信号fsk else bit(n)=0;fsk(n)=c0(n); end end end fftfsk=abs(fft(fsk));%已调信号的频谱fftfsk nos=awgn(fsk,20);%加噪已调信号nos ffsk=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=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)--y1 k1=abs(fft(y1));%经带通滤波器1后的c1(f)--k1 %----------------------------------相乘器--------------------------------- length(y0);length(c0); m0=y0.*c0;%与载波相乘后c0(t)--m0 m1=y1.*c1;%与载波相乘后c1(t)--m1 %--------------------------------低通滤波器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)--Ym0 ym0=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,'s'); [Bm,Am]=butter(Nm,wcm,'s'); [Bzm,Azm]=impinvar(Bm,Am,Fsm); Ym1=filter(Bzm,Azm,m1);%经低通滤波器1后c1(t)--Ym1 ym1=abs(fft(Ym1));%经低通滤波器1后c1(f)--ym1 %-------------------------------抽样判决模块------------------------------- g=[]; fori=1: length(Ym0) ifYm0(i)>Ym1(i) g(i)=0; else g(i)=1; end end switchba case1 plot(bit); case2 plot(fsk); case3 plot(fftfsk); case4 plot(nos); case5 plot(ffsk); case6 plot(y0); case7 plot(k0); case8 plot(y1); case9 plot(k1); case10 plot(m0); case11 plot(m1); case12 plot(Ym0); case13 plot(ym0); case14 plot(Ym1); case15 plot(ym1); case16 plot(g); end functionpushbutton20_Callback(hObject,even
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 正文 基于 MATLAB 环境 GUI FSK 仿真 演示 系统