基于MATLABSIMULINK的FM调制解调文档格式.docx
《基于MATLABSIMULINK的FM调制解调文档格式.docx》由会员分享,可在线阅读,更多相关《基于MATLABSIMULINK的FM调制解调文档格式.docx(22页珍藏版)》请在冰豆网上搜索。
在本仿真的过程中我们选择用调频调制方法进行调制。
在本仿真的过程中我们选择用同步解调方法进行解调。
1.2FM调制模型的建立
为基带调制信号,设调制信号为
m(t)=cos(2*pi*fm*t)公式(1-1)
设正弦载波为
c(t)=cos(2*pi*fc*t)公式(1-2)
信号传输信道为高斯白噪声信道,其功率为
。
在调制时,调制信号的频率去控制载波的频率的变化,载波的瞬时频偏随调制信号
成正比例变化,即:
公式(1-3)
式中,
为调频灵敏度。
这时相位偏移为
公式(1-4)
公式(1-5)
则可得到调频信号为
公式(1-6)
FM的频谱的计算:
公式(1-7)
公式(1-8)
公式(1-9)
可以看出FM的频谱与
的值有关。
其信号带宽为
公式(1-10)
FM的频谱理论值无穷大,但可根据调频指数分为宽带调频和窄带调频。
1.3FM解调模型的建立
调制信号的解调分为相干解调和非相干解调两种。
相干解调即同步解调,仅仅适用于窄带调频信号,且需同步信号,故应用范围受限;
而非相干解调不需同步信号,且对于NBFM信号和WBFM信号均适用,因此是FM系统的主要解调方式。
但在本仿真的过程中我们对窄带信号进行调制与解调,选择用同步解调方法进行解调。
图2-1FM同步解调解调模型
限幅器输入为已调频信号和噪声,限幅器是为了消除接收信号在幅度上可能出现的畸变;
带通滤波器的作用是用来限制带外噪声,使调频信号顺利通过。
鉴频器中的乘法器把调频信号与相干载波相乘,然后由低通滤波器和微分器取出调制信号。
解调过程分析
由上述公式(2-6)知道输入调频信号为
设相干载波为
c(t)=cos(2*pi*fc*t)公式(1-11)
乘法器的作用是把调频信号变成有多种频率的波的混合,乘法器输出为
公式(1-12)
经低通滤波器后取出器低频分量为
公式(1-13)
在经过微分器,即得出解调出的基带信号:
公式(1-14)
相干解调可以恢复出原来的基带信号,而且要求本地载波与调制载波同步,否则会使解调信号失真。
22FM调制解调系统方案
2.1调制模块设计
根据FM调制的原理,了解MATLAB软件中的仿真工具Smulink中各个模块的功能后,根据调制的原理框图,使用SineWave产生调制信号,用幅度为3,频率为100Hz,直接用FMModulatorPassband进行调制,设置载波频率为300Hz,频率偏移为50Hz。
在Smulink文件中调用相关模块,连线后对信号进行调制产生FM调制信号。
2.2解调模块设计
利用FMDemodulatorPassband对调制的FM信号进行解调。
根据解调的原理框图,经调制后的信号经信道中加高斯白噪声和不加噪声的信号进行解调,并把两个解调出来的波形进行对比。
在Smulink中调用相应的模块,连接各个模块,设置各个模块的参数,并用scope显示仿真波形。
3FM调制解调系统设计
3.1各单元模块功能介绍及电路设计
仿真过程中用SineWave产生调制信号,连接一个零阶保持器然后直接送入FMModulatorPassband进行调制,把调制信号直接送到FMDemodulatorPassband进行解调,再把调制信号加高斯噪声后送入FMDemodulatorPassband解调,观察解调后的频谱。
图3.1和图3.2即为调制与解调电路。
图3.1调制模块
图3.2解制模块
3.2元器件属性介绍
1.正弦波发生器,用于产生调制信号,其参数设置如图3.3所示:
图3.3调制信号参数设置
2.频率调制器,用于FM频率调制,具体参数设置如图3.4所示:
图3.4调制模块参数设置
3.噪声发生器,调制信号在实际的信道中传输的时候会加入噪声,所以在已调信号中加入高斯噪声来模拟实际情况,具体参数设置如图3.5所示:
图3.5高斯噪声发生器参数设置
4.解调器,把已调信号送到FMDemodulatorPassband进行解调,具体设置参数如图3.6所示:
图3.6低通滤波器参数的设置
5.信号频谱仪。
分析调制信号、已调信号、噪声信号、加噪声已调信号和解调信号的频谱,属性设置如图3.7所示。
图3.7比较运算模块参数的设置
6.示波器模块,用来显示仿真过程中信号的波形,可通过修改属性中Numberofaxes的值设置输入信号的个数。
3.3系统整体电路图
图3.8系统整体电路图
4FM调制解调系统仿真和调试
4.1仿真工具介绍
4.1.1MATLAB
MATLAB是矩阵实验室(MatrixLaboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大面对科学计算、可视化以及交互式程序设计的高科技计算环境。
它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
它在数学类科技应用软件中在数值计算方面首屈一指。
MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
4.1.2Simulink
Simulink是MATLAB中的一种可视化仿真工具,是一种基于MATLAB的框图设计环境,是实现动态系统建模、仿真和分析的一个软件包,被广泛应用于线性系统、非线性系统、数字控制及数字信号处理的建模和仿真中。
对各种时变系统,包括通讯、控制、信号处理、视频处理和图像处理系统,Simulink提供了交互式图形化环境和可定制模块库来对其进行设计、仿真、执行和测试。
.
构架在Simulink基础之上的其他产品扩展了Simulink多领域建模功能,也提供了用于设计、执行、验证和确认任务的相应工具。
Simulink与MATLAB紧密集成,可以直接访问MATLAB大量的工具来进行算法研发、仿真的分析和可视化、批处理脚本的创建、建模环境的定制以及信号参数和测试数据的定义。
其特点为:
1、丰富的可扩充的预定义模块库。
2、交互式的图形编辑器来组合和管理直观的模块图。
3、以设计功能的层次性来分割模型,实现对复杂设计的管理。
4、通过ModelExplorer导航、创建、配置、搜索模型中的任意信号、参数、属性,生成模型代码。
5、提供API用于与其他仿真程序的连接或与手写代码集成
6、使用EmbeddedMATLAB™模块在Simulink和嵌入式系统执行中调用MATLAB算法。
7、使用定步长或变步长运行仿真,根据仿真模式(Normal,Accelerator,RapidAccelerator)来决定以解释性的方式运行或以编译C代码的形式来运行模型。
8、图形化的调试器和剖析器来检查仿真结果,诊断设计的性能和异常行为。
9、可访问MATLAB从而对结果进行分析与可视化,定制建模环境,定义信号参数和测试数据模型分析和诊断工具来保证模型的一致性,确定模型中的错误。
4.2系统仿真实现
4.2.1FM调制仿真波形
图4.1信源信号
图4.2已调信号与信源信号
图4.3信源频谱
图4.4已调信号频谱
4.2.2FM解调仿真波形
图4.5高斯噪声频谱
图4.6加噪声已调信号频谱
图4.7解调信号频谱
图4.8加噪声解调信号频谱
4.3解调信号频谱分析
调制前信号频谱与解调后信号频谱比较:
图4.9频谱比
调制后的信号频谱与调制器前的相似
图4.10调制信号与解调后的信号
由上图通过比较解调出来的信号与调制前的信号,可知二者信号大致相同,但是解调出来的有相位的偏移,但是不影响信号的质量。
5MATLAB代码仿真
5.1程序流程图
图5.1程序流程图
5.2程序代码
%FM调制解调系统.m
%频率调制与解调的Matlab演示源程序
%电信1006班石勇
%*****************初始化******************
echooff
closeall
clearall
clc
%****************FM调制*******************
dt=0.001;
%设定时间步长
t=0:
dt:
1.5;
%产生时间向量
am=5;
%设定调制信号幅度
fm=5;
%设定调制信号频率
mt=am*cos(2*pi*fm*t);
%生成调制信号
fc=50;
%设定载波频率
ct=cos(2*pi*fc*t);
%生成载波
kf=10;
%设定调频指数
int_mt
(1)=0;
fori=1:
length(t)-1
int_mt(i+1)=int_mt(i)+mt(i)*dt;
%求信号m(t)的积分
end%调制,产生已调信号
sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt);
%调制信号
%*************添加高斯白噪声**************
sn1=10;
%设定信躁比(小信噪比)
sn2=30;
%设定信躁比(大信噪比)
sn=0;
%设定信躁比(无信噪比)
db=am^2/(2*(10^(sn/10)));
%计算对应的高斯白躁声的方差
n=sqrt(db)*randn(size(t));
%生成高斯白躁声
nsfm=n+sfm;
%生成含高斯白躁声的已调信号(信号通
%过信道传输)
%****************FM解调*******************
length(t)-1%接受信号通过微分器处理
diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
end
diff_nsfmn=abs(hilbert(diff_nsfm));
%hilbert变换,求绝对值得到瞬时幅度(包络检波)
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
diff_nsfmn1=diff_nsfmn-zero;
%**************时域到频域转换**************
ts=0.001;
%抽样间隔
fs=1/ts;
%抽样频率
df=0.25;
%所需的频率分辨率,用在求傅里叶变换
%时,它表示FFT的最小频率间隔
%*****对调制信号m(t)求傅里叶变换*****
m=am*cos(2*pi*fm*t);
%原调信号
ifnargin==2
n1=0;
else
n1=fs/df;
n2=length(m);
n=2^(max(nextpow2(n1),nextpow2(n2)));
M=fft(m,n);
m=[m,zeros(1,n-n2)];
df1=fs/n;
%以上程序是对调制后的信号u求傅里变换
M=M/fs;
%缩放,便于在频铺图上整体观察
f=[0:
df1:
df1*(length(m)-1)]-fs/2;
%时间向量对应的频率向量
%************对已调信号u求傅里变换**********
n2=length(sfm);
U=fft(sfm,n);
u=[sfm,zeros(1,n-n2)];
%以上是对已调信号u求傅里变换
U=U/fs;
%缩放
%***************显示程序******************
disp('
按任意键可以看到原调制信号、载波信号和已调信号的曲线'
)
pause
%**************figure
(1)******************
figure
(1)
subplot(3,1,1);
plot(t,mt);
%绘制调制信号的时域图
xlabel('
时间t'
);
title('
调制信号的时域图'
subplot(3,1,2);
plot(t,ct);
%绘制载波的时域图
载波的时域图'
subplot(3,1,3);
plot(t,sfm);
%绘制已调信号的时域图
已调信号的时域图'
%******************************************
按任意键可以看到原调制信号和已调信号在频域内的图形'
%************figure
(2)*********************
figure
(2)
subplot(2,1,1)
plot(f,abs(fftshift(M)))%fftshift:
将FFT中的DC分量移到频谱中心
频率f'
原调制信号的频谱图'
subplot(2,1,2)
plot(f,abs(fftshift(U)))
已调信号的频谱图'
按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线'
%**************figure(3)******************
figure(3)
%绘制已调信号的时域图
无噪声条件下已调信号的时域图'
nsfm=sfm;
%绘制无噪声条件下解调信号的时域图
plot((1:
length(diff_nsfmn1))./1000,diff_nsfmn1./400,'
r'
无噪声条件下解调信号的时域图'
%*****************************************
按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线'
%**************figure(4)******************
figure(4)
db1=am^2/(2*(10^(sn1/10)));
%计算对应的小信噪比高斯白躁声的方差
n1=sqrt(db1)*randn(size(t));
nsfm1=n1+sfm;
diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
diff_nsfmn1=abs(hilbert(diff_nsfm1));
diff_nsfmn1=diff_nsfmn1-zero;
plot(1:
length(diff_nsfm),diff_nsfm);
%绘制含小信噪比高斯白噪声已调信号的时域图
含小信噪比高斯白噪声已调信号的时域图'
%绘制含小信噪比高斯白噪声解调信号的时域图
含小信噪比高斯白噪声解调信号的时域图'
按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线'
%**************figure(5)******************
figure(5)
db1=am^2/(2*(10^(sn2/10)));
%计算对应的大信噪比高斯白躁声的方差
%生成含高斯白躁声的已调信号(信号通过信道传输)
%hilbert变换,求绝对值得到瞬时幅度(包
%络检波)
length(diff_nsfm1),diff_nsfm1);
%绘制含大信噪比高斯白噪声已调信号
%的时域图
含大信噪比高斯白噪声已调信号的时域图'
%绘制含大信噪比高斯白噪声解调信号
含大信噪比高斯白噪声解调信号的时域图'
%******************结束*******************
5.3程序结果
图5.2调制与解调信号比较
图5.3含不同信噪比高斯白噪声的信号比较
图5.4调制信号与已调信号频谱比较
以上是用Matlab做的FM调制与解调的图与用simulink快做的相同,调制借条的结果都很理想。
6心得体会
参考文献
[1]孙屹,吴磊编著.Simulink通信仿真开发手册.国防工业出版社,2003
[2]徐明远.MATLAB仿真在通信与电子工程中的应用.西安电子科技大学出版社,2005
[3]王兴亮.数字通信原理与技术(第二版).西安电子科技大学出版社,2006
[4]王秉钧,王少勇,王彦杰.通信原理基本教程.北京.北京邮电大学出版社,2005
[5]王兴亮编著.数字通信原理与技术(第二版).西安电子科技大学出版社,2006
[6]樊昌信,曹丽娜.通信原理(第6版).国防工业出版社,2009.5