您的当前位置:首页正文

基于MATLAB的FSK调制解调实现完整版

2024-08-19 来源:易榕旅网


目 录

一. FSK理论知识…………………………………………………

1.1 FSK概念…………………………………………………………………

1.2 2FSK信号的波形及时间表示式…………………………………………

1.3 2FSK信号的产生方法……………………………………………………

1.4 2FSK信号的功率谱密度…………………………………………………

1.5 2FSK信号的解调…………………………………………………………

1.6 FSK的误码性能……………………………………………………………

二. 用MATLAB进行FSK原理及误码性能仿真………

三、结论……………………………………………

四、参考文献…………………………………………、

五、源程序……………………………………………

1、FSK理论知识

频率调制的最简单形式是二进制频率键控(FSK,frequency-shift keying)。FSK是调制解调器通过电话线路发送比特的方法。每个比特被转换为一个频率,0由较低的频率表示,1由较高的频率表示。

1.1、FSK概念

传“0”信号时,发送频率为f1的载波; 传“1”信号时,发送频率为f2的载波。

可见,FSK是用不同频率的载波来传递数字消息的。

实现模型如下图:

1.2、 2FSK信号的波形及时间表示式

根据上图模型的实现可以得到2FSK的信号波形如图:

2FSK信号的时间表达式为 :

由以上表达式可见,2FSK信号由两个2ASK信号相加构成。

注意:2FSK有两种形式:

(1)相位连续的2FSK;

(2)相位不连续的2FSK。

在这里,我们只讨论相位不连续的频移键控信号,这样更具有普遍性。

1.3、2FSK信号的产生方法

2FSK信号的产生方法:2FSK信号可以两类方法来产生。

一是采用模拟调频的方法来产生(图1);另一种方法是采用键控法(图2);

图1.3-1 图1.3-2

1.4、2FSK信号的功率谱密度

这里我们仅介绍一种常用的近似方法,即把二进制频移键控信号看成是两个幅移键控信号相叠加的方法

如果s1(t)的功率谱密度为Ps1(f);s2(t)的功率谱密度为Ps2(f),利用平稳随机过程经过乘法器的结论,上式可以整理为如下形式,

核心问题:Ps1(f)=?

与2ASK信号表达式中的s(t)相同,

根据上面的公式,2FSK信号的功率谱密度如图下图所示。

图1.4-1

根据以上总结:2FSK功率谱密度的特点如下,

1)、2FSK信号的功率谱由连续谱和离散谱两部分构成,•离散谱出现在f1和f2位置;

2)、功率谱密度中的连续谱部分一般出现双峰。若两个载频之差|f1 -f2|≤fs,则出现单峰。

3)、所需传输带宽BFSK=|f1 -f2|+2 fs 。

二 2FSK信号的解调

2FSK信号的解调方法有很多,如鉴频器法、相干法、包络检波法、过零检测法等等。根据要求这里我将用相干解调的方法对其进行解调。

FSK在MATLAB环境下过程与结果

FSK的模拟仿真是采用的MATLAB软件,其在电脑运行环境如图3-1所示。实验过程是在窗口点击MATLAB快捷方式,使其运行,将FSK调制与解调的程序输入框中,点击回车即可运行,运行结果后面进行分析。

图1.5-1

在MATLAB环境下调制与解调的程序如下: (百分号后为程序注释)

function FSK

Fc=10; %载频

Fs=40; %系统采样频率

Fd=1; %码速率

N=Fs/Fd;

df=10;

numSymb=25; M=2; SNRpBit=60; SNR=SNRpBit/log2(M);

seed=[12345 54321];

numPlot=15; x=randsrc(numSymb,1,[0:M-1]); figure(1)

stem([0:numPlot-1],x(1:numPlot),'bx');

title('二进制随机序列')

%进行仿真的信息代码个数

%进制数

%信噪比

%产生25个二进制随机码

%产生25个二进制随机码

xlabel('Time');

ylabel('Amplitude'); %调制

y=dmod(x,Fc,Fd,Fs,'fsk',M,df);

numModPlot=numPlot*Fs;

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'); %相干解调

figure(4)

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));

y=awgn(y,SNR-10*log10(0.5)-10*log10(N),'measured',[],'dB');%在已调信号中加入高斯白噪声

figure(3)

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)

程序的运行过程是:首先产生25个随机序列码(如图1.5-1所示 注:此序列为随机序列,每一次运行程序所产生的序列都不同),然后通过调用函数对该序列进行调制(如图1.5-2所示)。相干解调后的误码率统计(如图1.5-3所示)。在通过调用函数让函数通过相干解调方式进行解调,解调信号与原信号的比较(如图1.5-4所示)。在通过调用函数让调制信号

图1.5-1 图1.5-2

图1.5-3 图1.5-4

(注释: 图1.5-3中右上角的意思为,Theoretical SER 理论软件错误率;Theoretical BER 理论二进制误码率 ;Simulated SER 模拟软件错误率; Simulated BER 模拟二进制误码率。)

下图为用MATLAB进行FSK原理及误码性能仿真图:

图1.5-5

三.心得体会

通过本次专业课程设计,进一步加深了我对FSK方面知识的理解,也更深刻的体会到MATLAB在信号与先行系统等方面的应用的重要性。

由于设计时间较短,在设计过程考虑问题不全面,专业知识水平不足,编程工具MATLAB是英文版,帮助系统也全是英文,对有些函数在功能和使用还不是特别的清楚,也只能是别学习边实践,以至在设计过程中出现了不少问题,这只是一个开始,只要有更多的时间,相信我能见任务完成得更好。以至于仿真出来的图象没有打点,这是这次课程设计出现的不足之处。

四.参考文献

[1]、《通信原理》 樊昌信 主编 国防工业出版社 2001年6月

[2]、《移动通信》 覃团发等编 重庆大学出版社 2005年5月

[3]、《MATLAB图形图象处理应用教程》 郝文化 主编 中国水利水电出版社

2002年4月

[4]、《MATLAB实用教程》 徐金明 主编 清华大学出版社

 MATLAB信息工程工具箱技术手册 魏巍 国防工业出版社

 MATLAB与通信仿真 王立宁 人民邮电出版社 2000年

 MATLAB通信仿真开发手册 李妍 国防工业出版社

因篇幅问题不能全部显示,请点此查看更多更全内容