正文基于MATLAB环境下的GUI的FSK仿真演示系统Word文档格式.docx
- 文档编号:18799474
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:15
- 大小:161.25KB
正文基于MATLAB环境下的GUI的FSK仿真演示系统Word文档格式.docx
《正文基于MATLAB环境下的GUI的FSK仿真演示系统Word文档格式.docx》由会员分享,可在线阅读,更多相关《正文基于MATLAB环境下的GUI的FSK仿真演示系统Word文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
数字调制是用载波信号的某些离散状态来表征所传输的信息,在接收端也对载波信号的离散调制参量进行检测。
数字调制采用正弦波调制,即信号被调制为高频正弦波。
数字解调是一种为了传播方便,把信息编码传输的方法。
在传输过程中,语音通话等会转变成一连串的数字信号,变为计算机二进制代码0和1,在信息接收处又解码恢复到原来的语音状态。
解调是调制的逆过程,其作用是从接受的己调信号中恢复原基带信号(即调制信号)。
调制的方法可分为两类:
相干解调和非相干解调。
由于FSK的解调过程有相干解调法和非相干解调法,我们在这里只介绍相干解调原理。
相干解调是指利用乘法器,输入一路与载频相干(同频同相)的参考信号与载频相乘。
2.3频移键控FSK原理
二进制数字频率调制方法有模拟调制和键控法两种。
其中二进制频率键控2FSK(frequency-shiftkeying)是采用最为广泛的一种,它原理更为简单、实现起来也更为容易、抗噪声和抗衰减性能好、稳定可靠,是中低速数据传输的最佳选择。
故一般采用键控法来实现二进制的频率键控2FSK。
2.3.12FSK调制原理
一、基本原理
2FSK是用原二进制”0”/”1”序列信号调制载波的一种数字调制方式。
我们将每个比特的信息转换为一个频率,不同的电平对应不同频率的载波。
一般来说,“0”由较低的频率f0表示,“1”由较高的频率f1表示。
即f0<
f1。
其表达式为:
(式2-1)
对应典型波形为:
图2.1调制典型波形
频移键控采用的调制方式需要两个不同频率段的载波信号,码元为“1”和码元为“0”时的载波频率不同,其数学表达式为:
(式2-2)
(式2-3)
二、2FSK信号的产生方法
▲采用模拟调频电路来实现:
信号在相邻码元之间的相位是连续变化的。
▲采用键控法来实现:
相邻码元之间的相位不一定连续。
键控法的原理框图如图2.2所示。
图2.2键控法原理框图
基带信号是一个二进制0/1信号。
键控开关受基带信号控制,其中基带信号为“1”时,开关接至振荡器1。
反之,基带信号为“0”时,开关接至振荡器0。
当振荡器产生信号为频率分别为f0、f1的余弦信号时,调制信号
即为
。
其中
,
都是二进制序列信号。
2.3.22FSK解调原理
解调原理框图如图2.4所示,对应的典型波形图如图2.3所示。
图2.3解调典型波形图
图2.4解调原理框图
第三章系统设计思路
3.1调制模块设计
图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的两倍,可以确定演示结果正确。
四、已调信号&
已调加噪信号
观察已调信号(图一)和已调加噪信号(图二)。
如图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
观察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)
观察原信号m(t)(图一)和解调输出信号m1(t)(图二)。
如图4.8所示。
信号在系统中受调制、传输、解调等过程是会存在一定的延迟的。
而比较图中两个信号发现,m1(t)相对于m(t)有一定的延迟。
图4.8原信号m(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);
val=get(handles.popupmenu4,'
functionbfsk1(ba)
%----------------产生原信号(二进制单极性不归零脉冲序列)-----------------------
w=eval(get(findobj('
tag'
'
edit1'
),'
string'
));
f0=eval(get(findobj('
edit2'
f1=eval(get(findobj('
edit3'
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:
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
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,'
[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;
Ym1=filter(Bzm,Azm,m1);
%经低通滤波器1后c1(t)--Ym1
ym1=abs(fft(Ym1));
%经低通滤波器1后c1(f)--ym1
%-------------------------------抽样判决模块-------------------------------
g=[];
length(Ym0)
ifYm0(i)>
Ym1(i)
g(i)=0;
g(i)=1;
switchba
plot(bit);
plot(fsk);
plot(fftfsk);
plot(nos);
plot(ffsk);
plot(y0);
plot(k0);
plot(y1);
plot(k1);
plot(m0);
plot(m1);
plot(Ym0);
plot(ym0);
plot(Ym1);
plot(ym1);
plot(g);
functionpushbutton20_Callback(hObject,eventdata,handles)
cla;
functionaxes4_CreateFcn(hObject,eventdata,handles)
axes(hObject);
imshow('
TTT.jpg'
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 正文 基于 MATLAB 环境 GUI FSK 仿真 演示 系统