基于4FSK调制信号的产生及解调设计与实现.docx
《基于4FSK调制信号的产生及解调设计与实现.docx》由会员分享,可在线阅读,更多相关《基于4FSK调制信号的产生及解调设计与实现.docx(14页珍藏版)》请在冰豆网上搜索。
![基于4FSK调制信号的产生及解调设计与实现.docx](https://file1.bdocx.com/fileroot1/2023-7/23/cbde8988-ba1f-49c6-871b-00761f7f3dba/cbde8988-ba1f-49c6-871b-00761f7f3dba1.gif)
基于4FSK调制信号的产生及解调设计与实现
1课程设计目的与要求
(1)理解电子信号通信原理。
(2)熟悉系统建模方法。
(3)配置电子信号,设计相关应用方法。
(4)完成4FSK调制信号的产生,并进行时频域分析。
(5)完成4FSK信号的数据解调,并对结果进行有效性验证。
2课程设计内容
(1)利用Matlab-Simulink建立系统模型。
(2)信号参数:
信息速率100Hz,载波中心频率5MHz,采样频率50MHz。
(3)依据相关参数,产生4FSK调制信号。
(4)设计一种方法完成4FSK信号的数据解调。
3MATLAB/Simulink的简介
美国Mathworks公司于1967年推出了矩阵实验室“MatrixLaboratory”(缩写为Matlab)这就是Matlab最早的雏形。
开发的最早的目的是帮助学校的老师和学生更好的授课和学习。
从Matlab诞生开始,由于其高度的集成性及应用的方便性,在高校中受到了极大的欢迎。
由于它使用方便,能非常快的实现科研人员的设想,极大的节约了科研人员的时间,受到了大多数科研人员的支持,经过一代代人的努力,目前已发展到了7.X版本。
Matlab是一种解释性执行语言,具有强大的计算、仿真、绘图等功能。
由于它使用简单,扩充方便,尤其是世界上有成千上万的不同领域的科研工作者不停的在自己的科研过程中扩充Matlab的功能,使其成为了巨大的知识宝库。
可以毫不夸张的说,哪怕是你真正理解了一个工具箱,那么就是理解了一门非常重要的科学知识。
科研工作者通常可以通过Matlab来学习某个领域的科学知识,这就是Matlab真正在全世界推广开来的原因。
目前的Matlab版本可以方便的设计漂亮的界面,它可以像VB等语言一样设计漂亮的用户接口,因为有最丰富的函数库(工具箱),所以计算的功能实现也很简单,受到了科研工作者的欢迎。
另外,,Matlab和其他高级语言也具有良好的接口,可以方便的实现与其他语言的混合编程,进一步拓宽了Matlab的应用潜力。
可以说,Matlab已经也很有必要成为大学生的必修课之一,掌握这门工具对学习各门学科有非常重要的推进作用。
Simulink是MATLAB中的一种可视化仿真工具,也是目前在动态系统的建模和仿真等方面应用最广泛的工具之一。
确切的说,Simulink是一个用来对动态系统进行建模、仿真和分析的软件包,它支持线性和非线性系统,连续、离散时间模型,或者是两者的混合。
系统还可以使多种采样频率的系统,而且系统可以是多进程的。
Simulink工作环境进过几年的发展,已经成为学术和工业界用来建模和仿真的主流工具包。
在Simulink环境中,它为用户提供了方框图进行建模的图形接口,采用这种结构画模型图就如同用手在纸上画模型一样自如、方便,故用户只需进行简单的点击和拖动就能完成建模,并可直接进行系统的仿真,快速的得到仿真结果。
它的主要特点在于:
1、建模方便、快捷;2、易于进行模型分析;3、优越的仿真性能。
它与传统的仿真软件包微分方程和差分方程建模相比,具有更直观、方便、灵活的优点。
Simulink模块库(或函数库)包含有Sinks(输出方式)、Sources(输入源)、Linear(线性环节)、Nonlinear(非线性环节)、Connection(连接与接口)和Extra(其他环节)等具有不同功能或函数运算的Simulink库模块(或库函数),而且每个子模型库中包含有相应的功能模块,用户还可以根据需要定制和创建自己的模块。
用Simulink创建的模型可以具有递阶结构,因此用户可以采用从上到下或从下到上的结构创建模型。
用户可以从最高级开始观看模型,然后用鼠标双击其中的子系统模块,来查看其下一级的内容,以此类推,从而可以看到整个模型的细节,帮助用户理解模型的结构和各模块之间的相互关系。
在定义完一个模型后,用户可以通过Simulink的菜单或MATLAB的命令窗口键入命令来对它进行仿真。
菜单方式对于交互工作非常方便,而命令行方式对于运行仿真的批处理非常有用。
采用Scope模块和其他的显示模块,可以在仿真进行的同时就可立即观看到仿真结果,若改变模块的参数并再次运行即可观察到相应的结果,这适用于因果关系的问题研究。
仿真的结果还可以存放到MATLAB的工作空间里做事后处理。
模型分析工具包括线性化和整理工具,MATLAB的所有工具应用工具箱都包含这些工具。
由于MATLAB和SIMULINK的集成在一起的,因此用户可以在这两种环境下对自己的模型进行仿真、分析和修改模型。
但是Simulink不能脱离MATLAB而独立工作。
4设计原理
4.14FSK调制原理
随着时代的发展,数字信号在信号传输比模拟信号有许多的优越性,数字信号传输也越来越重要。
虽然近距离传输可以由数字基带信号直接传输,但是要进行远距离传输时必须将基带信号调制到高频处,所以调制解调技术是数字通信中一种关键的技术。
二进制频移键控是数字信号调制的基本方式之一。
而多进制(MFSK)的可降低信道系统信噪比的要求。
4FSK信号的产生方法主要有两种:
采用模拟调频电路实现;采用键控法来实现,即在二进制基带脉冲序列的控制下通过开关电路对两个不同的独立频率源进行选通,使其在每个码元期间输出f1和f2两个载波之一。
频移键控是利用载波的频率变化来传递信息的。
在4FSK中,载波的频率随二进制基带信号在f1和f2两个频率点间变化。
同理4FSK中基带脉冲序列四个码元(00011011)可用f1,f2,f3,f4四个载波之一;本文讨论4FSK是通过并联输入两位基带信号,两位二进制来表示四进制的频移键控。
传“0”信号(或00)时,发送频率为f1的载波;传“1”信号(或10)时,发送频率为f2的载波;传“2”信号(或11)时,发送频率为f3的载波;传“3”信号(或01)时,发送频率为f4的载波。
4FSK调制原理如下:
图4.14FSK键控法信号波形
4FSK键控法调频基本原理图如下:
图4.24FSK键控法调频基本原理图
4FSK可通过基带信号(00,01,10,11)并联传输0或1来分别用f1,f2,f3,f4四个载频表示,两路基带信号作为控制选通选通开关,1路选通开关发送0时选通载频f1,发送0时选通载频f2,1路选通开关发送0时选通载频f3,送1时选通载频f4。
两路不同载频通过相加器得到已调信号发送出去。
4FSK键控法调频原理图如4-3所示:
图4.34FSK键控法调频原理框图
4.24FSK的解调原理
4FSK信号的相干解调法原理框图如图4.4所示。
其原理是:
4FSK信号先经过带通滤波器去除调制信号频带以外的在信道中混入的噪声,此后该信号分为四路,每路信号与相应载波相乘,再经过低通滤波器去除高频成分,得到包含基带信号的低频信号,将其送入抽样判决器中进行抽样判决,抽样判决器的输出分别得到两路原基带信号表示四进制得到原始码元。
图4.44FSK键控法解调原理框图
5系统结构图
图5.1系统结构图
6设计流程
设计流程做出软件方案框图如下图所示:
图6.14FSK调制解调软件实现方案图
7程序代码
functionFSK
Fc=10; %载频
Fs=40; %系统采样频率
Fd=1; %码速率
N=Fs/Fd;
df=10;
numSymb=20;%进行仿真的信息代码个数
M=4; %进制数
SNRpBit=80;%信噪比
SNR=SNRpBit/log2(M);
seed=[1234554321];
numPlot=20;
x=randsrc(numSymb,1,[0:
M-1]);%产生20个二进制随机码
figure
(1)
stem([0:
numPlot-1],x(1:
numPlot),'bx');
title('输入四进制随机序列')
xlabel('Time');
ylabel('Amplitude');
%调制
y=dmod(x,Fc,Fd,Fs,'fsk',M,df);%4FSK调制函数
numModPlot=numPlot*Fs;
t=[0:
numModPlot-1]./Fs;
figure
(2)
plot(t,y(1:
length(t)),'b-');
axis([min(t)max(t)-1.51.5]);
title('调制信号输出')
xlabel('Time');
ylabel('Amplitude');
%在已调信号中加入高斯白噪声
randn('state',seed
(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.51.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');
holdon;
stem([0:
numPlot-1],z1(1:
numPlot),'ro');
holdoff;
axis([0numPlot-0.51.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');
holdon;
stem([0:
numPlot-1],z2(1:
numPlot),'ro');
holdoff;
axis([0numPlot-0.51.5]);
title('非相干解调输出信号与原序列的比较')
legend('原输入二进制随机序列','非相干解调后的信号')
xlabel('Time');
ylabel('Amplitude');
%误码率统计
[errorSymratioSym]=symerr(x,z1);
figure(8)
simbasebandex([0:
1:
5]);
title('相干解调后误码率统计')
[errorSymratioSym]=symerr(x,z2);
figure(9)
simbasebandex([0:
1:
5]);
title('非相干解调后误码率统计')
%滤除高斯白噪声
Delay=3;R=0.5; %滞后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-');
holdon;
plot(to2,yo2,'b-');
holdoff;
axis([020-1.51.5]);
xlabel('Time');
ylabel('Amplitude');
legend('加入高斯白噪声后的已调信号','经过升余弦滤波器后的已调信号')
title('升余弦滤波前后波形比较')
eyediagram(yo2,N);%眼图
title('加入高斯白噪声后的已调信号的眼图')
8实验结果
8.14FSK调制信号的产生
输入调制信号m(n)并产生波形及时域分析如图8.1所示:
图8.1调制信号m(n)
输入调制信号m(n)并产生波形及频域分析如图8.2所示:
图8.2输入调制信号m(n)的频谱
8.24FSK信号的数据解调
将调制输出信号输入到传输信道进行传输。
在信道中由于存在干扰,则到达接收端的在调制输出信号基础上附加了高斯白噪声。
图8.3为解调结果:
图8.3解调后得到的信号
结果验证:
做解调后得到的信号的频谱(为便于观察,取了频谱的绝对值,并将零频转换至了图的正中显示),显示如下图8.4:
图8.4解调后得到信号的频谱
参考文献
[1]张圣勤.MATLAB7.0实用教材.北京:
机械工业出版社,2006
[2]桑林,郝建军,刘丹谱.数字通信.北京邮电大学出版社,2002
[3]樊昌信,曹丽娜.通信原理.北京国防工业出版社,2008
[4]邓华.Matlab通信仿真及应用实例详解.北京:
人民邮电出版社