通信原理课程设计报告
题目:模拟通信系统频率调制的实现
专业班级: 13电信科技2班
姓名:
学号: 130********
指导教师:彭文娟
【摘要】
本设计主要是用MATLAB软件仿真实现语音信号作为输入信号的FM调制与解调,并绘制出原调制信号、已调信号、解调信号的时域和频域图;再进一步绘制出已调信号通过高斯白噪声信道的时域图,最后绘出FM基带信号通过上述信道后的解调波形和时域图。最后通过理论与波形对比分析不同信噪比对信号解调的分析。
关键词:FM;调制;解调;MATLAB ;高斯白噪声
目录
1引言 (1)
1.1 课程设计题目 (1)
1.2 课程设计要求 (1)
2 FM调制解调系统建立 (1)
2.1调制模型 (1)
2.2 FM解调 (3)
2.2.1相干解调 (3)
2.2.2非相干解调 (5)
3 系统抗噪声性能分析 (7)
3.1高斯白噪声特性 (7)
3.2不同信噪比对信号传输的影响 (8)
4部分程序代码 (9)
5心得体会 (12)
6参考文献 (14)
1 引 言
1.1 课程设计题目
仿真实现语音信号作为输入信号进行模拟通信系统频率调制,通过高斯白噪声信道,已调信号解调还原出原输入信号。 1.2课程设计要求
1)实现调制和相干解调的时域图及频域图 2)实现非相干解调及系统性能分析
2 FM 调制解调系统建立
2.1 调制模型
FM 调制不再是简单的频谱线性搬移,而是非线性调制,它是将调制信号附加到载波的相位上。在数学定义上,载波是具有恒定振幅、恒定频率、恒定相位的正(余)弦波,并且它的在时间上是无线延伸的。因此,在频域上它具有单一频率分量。载波在被调制后,其频谱不在是仅有单一频率分量,而是具有许多连续或离散的频率分量,占据一定的频带宽度。我们说,角度调制使载波的频率和相位随调制信号而变。这里实际上已经引入了“瞬时频率”的概念。因为在严格的数学定义上载波的频率是恒定的。现在就来定义瞬时频率。
设一个载波可以表示为:
)
cos()(cos )(00??+==t w A t A t c (2.1.1)
式中?0为在载波的初相位;
00)(??+=t w t 为载波的瞬时相位;dt t d w /)(0?= 为载波的频率。
载波的角频率0w 原本是一个常量。现在将被角度调制后的dt t d /)(?定义为瞬时频率)(t w i 即:
dt t d t w i )
()(?= (2.1.2)
他是时间的函数。 由上式可以写出:
0)()(??+=?dt t w t i (2.1.3)
若使瞬时频率直接随信号线性的变化,则得到频率调制,简称调频。这时有瞬时角频率:
)()(0t m k w t w f i += (2.1.4)
由式(2.1.3)得到: ??++=+=
000
)()()(??
?dt t m k t w dt t w t f i (2.1.5)
这样得出的已调信号表示式为:
])(cos[)(00?++=dt t m k t w A t s f f ? (2.1.6)
由上式可以看出在频率调制中载波的相位随调制信号的积分线性的变化。如果将调制信号m(t)先积分,在对载波进行相位调制,即得到频率调制信号。
调制模型 其中,()m t 为基带调制信号,设 ()c o s (2m m t A f t
π= 设载波为
()c o s (2c c t f t π=
在调制时,调制信号的频率去控制载波的频率的变化,载波的瞬时频偏随调制信号()m t 成正比例变化,即
()
()f d t K m t dt
?= 式中,f K 是调频灵敏度。 相位偏移为
dt t u k t w t t
f ?+=
0)()(?
m m f w w m /?=
则可得到调频信号为 ()cos ()FM c f s t A t K m d ωττ??=
+??
?
。
信道为高斯白噪声信道,其功率为2
调制信号的时域图
已调的时域图
2.2 FM解调
调制信号的解调有相干解调和非相干解调两种。相干解调即同步解调,仅仅适用于窄带调频信号,且需要同步信号。非相干解调不需要同步信号,应用较为广泛。
2.2.1.相干解调
相干解调模型
带通滤波器输入为通过噪声信道的已调频信号,带通滤波器是为了滤除频带外信道加性噪声。乘法器的作用是将信号与相干载波相乘。低通滤波器可以滤除高频分量。微分器是为了去掉m(t)外的高频分量。
本设计的相干解调是基于matlab中simulink仿真电路实现。
Simulink 仿真电路
调制、已调、解调信号的时域图
2.2.2.非相干解调
非相干解调器由限幅器、鉴频器和低通滤波器等组成,其流程如图所示。限幅器输入为已调频信号和噪声,限幅器是为了消除接收信号在幅度上可能出现的畸变;带通滤波器的作用是用来限制带外噪声,使调频信号顺利通过。鉴频器中的微分器把调频信号变成调幅调频波,然后由包络检波器检出包络,最后通过低通滤波器取出调制信号。(引用百度文库)
输入调频信号
()()
c o s (()t
t F M c f S t S t A t K
m d
ωττ-∞
==+? 微分器输出信号为
[]()()
()()sin(())
i FM d t
c f c f dS t dS t S t dt dt
K m t t K m d ωωττ+-∞==
=-+?
包络检波的作用是从输出信号的幅度变化中检出调制信号。包络检波器输出为
[]()()()o d c
f d c
d f S t K K m t
K K K m
t ω
ω++
== d K 称为鉴频灵敏度,是已调信号单位频偏对应的调制信号的幅度,隔除无用的直流,得
()()o d f m t K K m t
=
本过程基于matlab代码实现:
程序流程图
微分器通过程序实现,代码如下:
for i=1:length(t)-1 %接受信号通过微分器处理diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
end
diff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度
%(包络检波)(引用)通过代码实现解调波形如下:
3 系统的抗噪声性能分析
3.1 高斯白噪声特性
MATLAB自身带有标准高斯分布的内部函数randn。randn函数产生的随机
σ=的高斯分布
序列服从均值为0
m=,方差21
设信号通过高斯白噪声信道后的信号变为
()c o s ()(
c r t A t n t ωθ=++ 其有用信号功率为 22
A S =
噪声功率为 2
N σ
=
信噪比S
N
为
1010log ()S B N
=
可得 22
10
210
B A σ=
?
3.2 不同信噪比对信号对信号传输影响
本报告重点讨论非相干解调时,大小信噪比对信号传输的影响。 调频信号()cos(())t
FM c f S t A t K m d ωττ-∞
=
+?
输入功率为2
2
i A S =,噪声功率为i
o FM N n B =
所以2
2i i FM
S A N B = 在大信噪比条件下,信号和噪声的相互作用可以忽略,这时可以把信号和噪
声分开来算,这里,我们可以得到解调器的输出信噪比222
23
3()8o
f
o
o m
A K m t S N n f π=
上面的式子中,A 是载波的振幅,f K 是调频器灵敏度,m f 是调制信号()m t 的最高频率,o n 是噪声单边功率谱密度。
得到解调器的制度增益为
2
2
232A o
o
FM
f
i o m
i S N G m S n f N ==
考虑在宽带调频时,信号带宽为 2(1)2()
F M f m
m B m f f f ==+?+ 可以得到
2
3(1)F M f f G m m =+
(引用百度文库)
可以看出,大信噪比时宽带调频系统的信噪比增益是很高的,它与调频指数的立方成正比。可见,加大调频指数f m,可使调频系统的抗噪声性能迅速改善。
在仿真过程中采用10db和30db两种不同信噪比以示区别,其时域图如下
4 部分程序代码
%****************FM解调*******************
for i=1: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); %调制信号
fs=1/ts;
if nargin==2
n1=0;
else
n1=fs/df;
end
n2=length(m);
n=2^(max(nextpow2(n1),nextpow2(n2)));
M=fft(m,n);
m=[m,zeros(1,n-n2)];
df1=fs/n; %以上程序是对调制信号m(t)求傅里变换M=M/fs; %缩放,便于在频谱图上观察整体
f=[0:df1:df1*(length(m)-1)]-fs/2; %时间向量对应的频率向量
%************对已调信号u求傅里变换显示频域**********
fs=1/ts;
if nargin==2
n1=0;
else
n1=fs/df;
end
n2=length(sfm);
n=2^(max(nextpow2(n1),nextpow2(n2)));
U=fft(sfm,n);
u=[sfm,zeros(1,n-n2)];
df1=fs/n; %以上是对已调信号u求傅里变换
U=U/fs; %缩放
%******************************************
%*****************************************
nsfm=sfm;
for i=1: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;
subplot(3,1,3); %绘制无噪声条件下解调信号的时域图
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
xlabel('时间t');
title('无噪声条件下解调信号的时域图');
%*****************************************
disp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
pause
%**************scope(4)******************
scope(4)
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
xlabel('时间t');
title('调制信号的时域图');
db1=am^2/(2*(10^(sn1/10))); %计算对应的小信噪比高斯白躁声的方差n1=sqrt(db1)*randn(size(t)); %生成高斯白躁声
nsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通
%过信道传输)
for i=1:length(t)-1 %接受信号通过微分器处理diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
end
diff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
diff_nsfmn1=diff_nsfmn1-zero;
subplot(3,1,2);
plot(1:length(diff_nsfm),diff_nsfm); %绘制含小信噪比高斯白噪声已调信号的时域图xlabel('时间t');
title('含小信噪比高斯白噪声已调信号的时域图');
subplot(3,1,3); %绘制含小信噪比高斯白噪声解调信号的时域图plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
xlabel('时间t');
title('含小信噪比高斯白噪声解调信号的时域图');
%*****************************************
disp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的波形')
pause
%**************scope(5)******************
scope(5)
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
xlabel('时间t');
title('调制信号的时域图');
db1=am^2/(2*(10^(sn2/10))); %计算对应的大信噪比高斯白躁声的方差n1=sqrt(db1)*randn(size(t)); %生成高斯白躁声
nsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通过信道传输)
for i=1:length(t)-1 %接受信号通过微分器处理diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
end
diff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包
%络检波)
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
diff_nsfmn1=diff_nsfmn1-zero;
subplot(3,1,2);
plot(1:length(diff_nsfm1),diff_nsfm1); %绘制含大信噪比高斯白噪声已调信号
%的时域图
xlabel('时间t');
title('含大信噪比高斯白噪声已调信号的时域图');
subplot(3,1,3); %绘制含大信噪比高斯白噪声解调信号
%的时域图
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
xlabel('时间t');
title('含大信噪比高斯白噪声解调信号的时域图');
5 心得体会
本次课程设计中,我主要了解了FM调制和解调的原理,对信号的传输有了更深的认识。此次课程设计也花费了我大量的时间,主要用于学习matlab的simulink和代码的学习。不得不说matlab功能的强大和复杂。设计之初我们小组查花费了大量时间查阅相关资料弄懂了FM调制和解调的过程以及基本的matlab电路搭建,但是当我们搭建好FM调制和解调的电路时,每次运行都会出错,得不到想要的结果,通过对错误的反复排查及分析终于找到错误的原因是simulink中集成模块的内部电路参数未设置正确。还有对matlab代码实现非相干解调部分,代码的编写需要非常细心,一个标点的错误都会导致运行结果的失败,由于对matlab的不熟悉,代码的编写只能参照产考文献和网上资料进行借用和更该。但是经过小组成员的不懈努力,最终实现了课程设计的相关要求。这次课程设计让我深刻的认识到的了科学的严谨性,任何错误都是不允许的。还有学习交流的重要性,设计过程中很多困难都是在大家的讨论和请教中解决的。而且在这次设计也让我发现了自己很多不足之出,多所学知识的理解肤浅,学习能
力较差,这也是我以后要改进的地方,理论和实践必须有机的结合起来才能学的更好。
【参考文献】
【1】樊昌信,通信原理,电子工业出版社,2008
【2】邵玉斌,Matlab/Simulink通信原理建模与仿真实例分析,清华大学出版社,2008
【3】张静,MATLAB在控制系统中的应用,电子工业出版社
【4】田敏、李江全、刘军,案例解说MATLAB典型控制应用,电子工业出版社
【5】吴伟铃,庞沁华,通信原理,北京邮电大学出版社,2005
【6】刘浩、韩晶,matlab2012a一本通
【7】曹志刚,钱亚生,现代通信原理,清华大学出版社,1992
%FM调制解调系统.m
%频率调制与解调的Matlab演示源程序
%可以任意改原调制信号函数m(t)
%信息工程陈丽丹07323202 %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
%*****************初始化******************
echo off
close all
clear all
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;
for i=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解调*******************
for i=1: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); %原调信号
fs=1/ts;
if nargin==2
n1=0;
else
n1=fs/df;
end
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求傅里变换**********
fs=1/ts;
if nargin==2
n1=0;
else
n1=fs/df;
end
n2=length(sfm);
n=2^(max(nextpow2(n1),nextpow2(n2)));
U=fft(sfm,n);
u=[sfm,zeros(1,n-n2)];
df1=fs/n; %以上是对已调信号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); %绘制载波的时域图
xlabel('时间t');
title('载波的时域图');
subplot(3,1,3);
plot(t,sfm); %绘制已调信号的时域图
xlabel('时间t');
title('已调信号的时域图');
%******************************************
disp('按任意键可以看到原调制信号和已调信号在频域内的图形')
pause
%************figure(2)*********************
figure(2)
subplot(2,1,1)
plot(f,abs(fftshift(M))) %fftshift:将FFT中的DC分量移到频谱中心xlabel('频率f')
title('原调制信号的频谱图')
subplot(2,1,2)
plot(f,abs(fftshift(U)))
xlabel('频率f')
title('已调信号的频谱图')
%******************************************
disp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')
pause
%**************figure(3)******************
figure(3)
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
xlabel('时间t');
title('调制信号的时域图');
subplot(3,1,2);plot(t,sfm); %绘制已调信号的时域图
xlabel('时间t');
title('无噪声条件下已调信号的时域图');
nsfm=sfm;
for i=1: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;