AM &DSB信号解调的MATLAB实现
AM &DSB信号解调的MATLAB实现
一、实验目的
- 掌握AM&DSB解调器电路原理;
- 掌握AM&DSB解调仿真原理。
- 了解MATLAB软件,学习应用MATLAB软件的仿真技术。它主要侧重于某些理论知识的灵活运用,以及一些关键命令的掌握,理解,分析等。
二、实验仪器
计算机、MATLAB软件
三、实验原理
(1)在接收端从AM已调信号中恢复出原始信号S(t)的过程称之为解调。对AM常用的解调方式有:非相干解调(检波)与相干解调(同步解调)。
AM的非相干解调是将AM信号通过一检波二极管,再经过一低通滤波器即可获取原始的模拟信号s(t)。AM的非相干解调不需要本地载波,此方法常用于民用通信设备中,可大大降低接收机的成本,提高整机通信的可靠性。
AM的同步解调是将接收的AM信号与本地相干载波(同步载波)相乘,经低通滤波器获得原始的模拟信号S(t)。同步解调需要在接收端产生与发送端频率相同的本地载波,该方法可提高解调器的性能(即提高接收机的灵敏度),但这也将使接收机复杂化。
“AM”调制信号产生模块电路如图1所示,解调模块电路如图2所示。
(2) DSB信号的解调
DSB信号解调电路由相乘器和低通滤波器组成。如图3所示。
图3 振幅解调电路的组成框图
在电路中,将u(t)先与一个等幅余弦电压uo(t)相乘,要求这个电压与输入载波信号同频同相,即uc(t)=UcMcoswct,称为同步信号,相乘结果是u(t)频谱被搬移到ωc的两边,一边搬到2ωc上,构成载波角频率为2ωc的双边带调制信号,它是无用的寄生分量;另一边搬到零频率上,这样,u(t)的一边带就必将被搬到负频率轴上,负频率是不存在的,实际上,这些负频率分量应叠加到相应的正频率分量上,构成实际的频谱,因此它比搬移到2ωc上的任一边带频谱在数值上加倍。而后用低通滤波器滤除无用的寄生分量,取出所需的解调电压。
必须指出,同步信号uc(t)必须与输入信号保持严格同步(同频、同相)是实现上述电路模型的关键,故将这种检波电路称为同步检波电路。否则检波性能就会下降。
四、实验内容
在MATLAB中实现下面例题的调制程序,:
信源:m(t)=sqrt(2)cos(2pit);
载波:s(t)=A.cos(20pit)
求当AM:A=2;DSB:A=1;调制信号的相干解调后的信号波形
1、求出AM/DSB/SSB/VSB调制信号的相干解调后的信号波形。
然后对处理好的实验结果进行分析。
实验目的:运用MATLAB软件编写相应的程序,求出AM/DSB/SSB/VSB调制信号的相干解调后的信号波形。实验程序:
dt=0.01; %时间采样间隔
fmax=1; %信源最高频率
B=2*fmax;
fc=10; %载波中心频率
T=5; %信号时长
N=floor(T/dt);
t=[0:N-1]*dt;
mt=sqrt(2)*cos(2*pi*fmax*t);
%AM modulation
A=2;
am=(A+mt).*cos(2*fc*pi*t);
amd=am.*cos(2*fc*pi*t);
amd=amd-mean(amd);
[f,AMf]=FFT_SHIFT(t,amd);
B=2*fmax;
[t,am_t]=RECT_LPF(f,AMf,B);
%DSB modulation
dsb=mt.*cos(20*pi*t);
dsbd=dsb.*cos(20*pi*t);
dsbd=dsbd-mean(dsbd);
[f,DSBf]=FFT_SHIFT(t,dsbd);
[t,dsb_t]=RECT_LPF(f,DSBf,B);
%SSB modulation
ssb=real(hilbert(mt).*exp(1i*2*pi*fc*t));
ssbd=ssb.*cos(2*fc*pi*t);
ssbd=ssbd-mean(ssbd);
B=2*fmax;
[f,SSBf]=FFT_SHIFT(t,ssbd);
[t,ssb_t]=RECT_LPF(f,SSBf,B);
%VSB modulation
vsb=mt.*cos(2*pi*fc*t);
[f,vsbf]=FFT_SHIFT(t,vsb);
[t,vsb]=vsbmd(f,vsbf,0.2*fmax,1.2*fmax,fc);
vsbd=vsb.*cos(2*pi*fc*t);
vsbd=vsbd-mean(vsbd);
[f,VSBf]=FFT_SHIFT(t,vsbd);
[t,vsb_t]=RECT_LPF(f,VSBf,2*fmax);
信号输出
%plot m(t),am(t),dsb(t),ssb(t),vsb(t)
subplot(5,1,1);
plot(t,mt);
title('相干解调后的信号与输入信号的比较');
ylabel('m(t)');
xlabel('t');
subplot(5,1,2);
plot(t,am_t);
ylabel('am(t)');
xlabel('t');
subplot(5,1,3);
plot(t,dsb_t);
ylabel('dsb(t)');
xlabel('t');
subplot(5,1,4);
plot(t,ssb_t);
ylabel('ssb(t)');
xlabel('t');
subplot(5,1,5);
plot(t,vsb_t);
ylabel('vsb(t)');
xlabel('t');
% RECT_LPF函数
function[t,st]=RECT_LPF(f,Sf,B)
df=f(2)-f(1);
fN=length(f);
RectH=zeros(1,fN);
BN=floor(B/df);
BN_SHIFT=[-BN:BN-1]+floor(fN/2);
RectH(BN_SHIFT)=1;
Yf=RectH.*Sf;
[t,st]=IFFT_SHIFT(f,Yf);
% IFFT_SHIFT函数
function [t,st]=IFFT_SHIFT(f,Sf)
df=f(2)-f(1);
fmax=(f(end)-f(1)+df);
dt=1/fmax;
N=length(f);
t=[0:N-1]*dt;
Sf=fftshift(Sf);
st=fmax*ifft(Sf);
st=real(st);
% vsbmd函数
function [t,st]=vsbmd(f,sf,B1,B2,fc)%低通滤波器
df=f(2)-f(1);
T=1/df;
hf=zeros(1,length(f));
bf1=[floor((fc-B1)/df):floor((fc+B1)/df)];
bf2=[floor((fc+B1)/df):floor((fc+B2)/df)];
f1=bf1+floor(length(f)/2);
f2=bf2+floor(length(f)/2);
stepf=1/length(f1);
hf(f1)=0:stepf:1-stepf;
hf(f2)=1;
f3=-bf1+floor(length(f)/2);
f4=-bf2+floor(length(f)/2);
hf(f3)=0:stepf:(1-stepf);
hf(f4)=1;
yf=hf.*sf;
[t,st]=IFFT_SHIFT(f,yf);
st=real(st);
实验结果分析
为了无失真地恢复原基带信号,接受端必须提供一个与接受的已调载波同步的本地载波,它与接受的调制信号相乘后,经低通滤波器去除低频分量,即可得到原始的基带调制信号。
相干解调的特点是无门限效应,使用AM、DSB、SSB、VSB。而只要求载波同步。
三、 实验设备
1、 计算机
2、 软件MATLAB
四、写写你对本次实验的心得体会及意见(字数不少于400)
解调是在接收端将已调波信号从高频段变换到低频段, 恢复原调制信号。调制与解调是通信原理方向最主要的模块之一,先是通过在课堂上对理论知识的学习,反复研究,了解了调制与解调系统的基本方式以及其原理。再将理论在实验中得到验证和应用,是我们学习当中的一个问题。
从这次实验中,见识到了MATLAB软件处理的强大之处。我们不仅加深理解和巩固了理论课上所学习的有关模拟调制技术和相干解调的基本概念、基本理论和基本方法、而且锻炼了分析和解决问题的能力。同时对MATLAB的一些基本操作和应用有了更深入的了解。如:基本信号波形的输出,RECT_LPF、IFFT_SHIFT、vsbmd函数的使用等。
但对MATLAB软件的一些函数处理还不熟悉,还是会出现函数没有定义的编译错误。后续需要我们自己学习和思考,尽快熟悉对matlab软件的使用。
这次实验较比上星期速度快了很多,但还是会出现因为粗心代码写错等马虎的毛病,过程中会通过微信和同学交流,互相学习。后期我会强对MATLAB软件的学习和研究,认真做好接下来的每一次实验。
上一篇: 距离矢量协议vs链路状态协议
下一篇: 实战Android踩坑记录(四)