资源描述
振幅调制和解调的原理及MATLAB编程实现
振幅调制和解调的原理
1. 普通调幅信号的表达式、 波形、 频谱和功率谱
普通调幅方式是用低频调制信号去控制高频正弦波(载波)的振幅, 使其随调制信号波形的变化而呈线性变化。
设载波为 uc(t)=Ucmcosωct, 调制信号为单频信号,即uΩ(t)=UΩmcosΩt(Ωωc), 则普通调幅信号为:
uAM(t)= (Ucm+kUΩm cos Ωt)cosωct
=Ucm(1+MacosΩt)cosωct
其中调幅指数Ma, 0<Ma≤1, k为比例系数。
下图给出了uΩ(t), u c(t)和uAM(t)的波形图。从图中并结合上式可以看出, 普通调幅信号的振幅由直流分量Ucm和交流分量kUΩm cosΩt迭加而成, 其中交流分量与调制信号成正比, 或者说, 普通调幅信号的包络(信号振幅各峰值点的连线)完全反映了调制信号的变化。另外, 还可得到调幅指数Ma的表达式:
调幅的波形与频谱
显然, 当Ma>1时, 普通调幅波的包络变化与调制信号不再相同, 产生了失真, 称为过调制。所以, 普通调幅要求Ma必须不大于1。
上式又可以写成
uAM(t)=Ucmcosωct+ ·[cos (ωc+Ω)t+cos (ωc-Ω)t]
可见, uAM(t)的频谱包括了三个频率分量:ωc(载波)、 ωc+Ω(上边频)和ωc-Ω(下边频)。原调制信号的频带宽度是
Ω或(F= ) , 而普通调幅信号的频带宽度是2Ω(或2F), 是原调制信号的两倍。普通调幅将调制信号频谱搬移到了载频的左右两旁,如下图所示
还可以看到, 若此单频调幅信号加在负载R上, 则载频分量产生的平均功率为:
Pc=
两个边频分量产生的平均功率相同, 均为:
PSB=
调幅信号总平均功率为:
Pav=Pc+2PSB=
根据信号分析理论, 一般非周期调制信号uΩ(t)的频谱是一连续频谱, 假设其频率范围是Ωmin~Ωmax, 如载频仍是ωc, 则这时的普通调幅信号可看成是调制信号中所有频率分量分别与载频调制后的迭加, 各对上、下边频的迭加组成了上、 下边带。可见, 这时普通调幅信号的包络仍然反映了调制信号的变化, 上边带与下边带呈对称状分别置于载频的两旁, 且都是调制信号频谱的线性搬移, 上、 下边带的宽度与调制信号频谱宽度分别相同, 总频带宽度仍为调制信号带宽的两倍, 即BW=2Ωmax。
2 普通调幅信号的产生和解调方法
由上式可见, 将调制信号与直流相加后, 再与载波信号相乘, 即可实现普通调幅。图6.2.4给出了相应的原理方框图。由于乘法器输出信号电平不太高, 所以这种方法称为低电平调幅。
普通调幅信号的解调方法有两种, 即包络检波和同步检波。
低电平调幅原理图
(1) 包络检波。
利用普通调幅信号的包络反映了调制信号波形变化这一特点, 如能将包络提取出来, 就可以恢复原来的调制信号。这就是包络检波的原理。 图6.2.5给出了包络检波的原理图。
设输入普通调幅信号uAM(t),非线性器件工作在开关状态, 则非线性器件输出电流为:
io(t)=guAM(t)·K1(ωct)
=gUcm(1+MacosΩt)cosωct·
包络检波原理图
g是非线性器件伏安特性曲线斜率。
可见io中含有直流, Ω, ωc, ωc±Ω以及其它许多组合频率分量, 其中的低频分量是:
用低通滤波器取出io中这一低频分量, 滤除ωc-Ω及其以上的高频分量, 同时用隔直流电容滤除直流分量, 就可以恢复与原调制信号uΩ(t)成正比的单频信号了。
(2) 同步检波。
同步检波必须采用一个与发射端载波同频同相(或固定相位差)的信号, 称为同步信号。
同步检波可由乘法器和低通滤波器实现。
设输入普通调幅信号uAM(t)上式所示, 乘法器另一输入同步信号为:
ur(t)=Urmcosωct
则乘法器输出为:
同步检波原理图
其中k2是乘法器增益。
可见, 输出信号中含有直流, Ω, 2ωc, 2ωc±Ω几个频率分量。用低通滤波器取出直流和Ω分量, 再去掉直流分量, 就可恢复原调制信号。
如果同步信号与发射端载波同频不同相, 有一相位差θ, 即ur=Urmcos(ωct+θ),则乘法器输出中的Ω分量为
k2UcmUrmMacosθcosΩt。 若θ是一常数, 即同步信号与发射端载波的相位差始终保持恒定, 则解调出来的Ω分量仍与原调制信号成正比, 只不过振幅有所减小。当然θ≠90°, 否则cosθ=0, Ω分量也就为零了。若θ是随时间变化的, 即同步信号与发射端载波之间的相位差不稳定, 则解调出来的Ω分量就不能正确反映调制信号了。
MATLAB编程
% MATLAB script for Illustrative Problem 3.5.
% Demonstration script for DSB-AM demodulation. The message signal
% is +1 for 0 < t < t0/3, -2 for t0/3 < t < 2t0/3, and zero otherwise.
echo on
t0=.15; % 信号的持续时间
ts=1/1500; % 采样间隔
fc=250; % 载波频率
fs=1/ts; % 采样频率
t=[0:ts:t0]; % 时间向量
df=0.3; % 所需的频率分辨率
% 信息信号
m=[ones(1,t0/(3*ts)),-2*ones(1,t0/(3*ts)),zeros(1,t0/(3*ts)+1)];
c=cos(2*pi*fc.*t); %
u= ones(1,length(c) )
y= ones(1,length(c) )
[M,m,df1]=fftseq(m,ts,df); %
M=M/fs; % 缩放
[U,u,df1]=fftseq(u,ts,df); %
U=U/fs; % 缩放
[Y,y,df1]=fftseq(y,ts,df); %
Y=Y/fs; % 缩放
f_cutoff=150; % cutoff freq. of the filter
n_cutoff=floor(150/df1); % Design the filter.
f=[0:df1:df1*(length(y)-1)]-fs/2;
H=zeros(size(f));
H(1:n_cutoff)=2*ones(1,n_cutoff);
H(length(f)-n_cutoff+1:length(f))=2*ones(1,n_cutoff);
DEM=H.*Y; % spectrum of the filter output
dem=real(ifft(DEM))*fs; % filter output
pause % Press a key to see the effect of mixing.
clf
subplot(3,1,1)
plot(f,fftshift(abs(M)))
title('信息信号的频谱')
xlabel('频率')
subplot(3,1,2)
plot(f,fftshift(abs(U)))
title('调制信号的频谱')
xlabel('频率')
subplot(3,1,3)
plot(f,fftshift(abs(Y)))
title('混频器的输出频谱')
xlabel('频率')
pause % Press a key to see the effect of filtering on the mixer output.
clf
subplot(3,1,1)
plot(f,fftshift(abs(Y)))
title('混频器的输出频谱')
xlabel('Frequency')
subplot(3,1,2)
plot(f,fftshift(abs(H)))
title('低通滤波特性')
xlabel('Frequency')
subplot(3,1,3)
plot(f,fftshift(abs(DEM)))
title('解调器的输出频谱')
xlabel('Frequency')
pause % Press a key to compare the spectra of the message and the received signal.
clf
subplot(2,1,1)
plot(f,fftshift(abs(M)))
title('信息信号的频谱')
xlabel('Frequency')
subplot(2,1,2)
plot(f,fftshift(abs(DEM)))
title('解调器的输出频谱')
xlabel('Frequency')
pause % Press a key to see the message and the demodulator output signals.
subplot(2,1,1)
plot(t,m(1:length(t)))
title('信息信号')
xlabel('Time')
subplot(2,1,2)
plot(t,dem(1:length(t)))
title('该解调器输出')
xlabel('Time')
function [M,m,df]=fftseq(m,ts,df)
% [M,m,df]=fftseq(m,ts,df)
% [M,m,df]=fftseq(m,ts)
%FFTSEQ generates M, the FFT of the sequence m.
% The sequence is zero padded to meet the required frequency resolution df.
% ts is the sampling interval. The output df is the final frequency resolution.
% Output m is the zero padded version of input m. M is the FFT.
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)];
df=fs/n;
展开阅读全文