3 模拟通信之AM——仿真篇(2)

目录

1  仿真环境

2  AM信号调制

3  同步解调

4  FFT验证


1  仿真环境

        采用MATLAB,版本应该无所谓,创建好.m文件后,复制以下代码。

%% 生成原始信号
fs = 1024; % 采样率
t = 0:1/fs:1; % 时间向量
f = 10; % 原始信号频率
m = sin(2*pi*f*t); % 原始信号

%% 生成载波信号
fc = 100; % 载波频率
c = cos(2*pi*fc*t); % 载波信号
c1= cos(2*pi*fc*t+0.25*pi); % 带相位的载波信号

%% AM调制
beta = 0.5; % 调制指数
s = (1 + beta*m).*c; % 调制信号

%% 解调
y  = s.*c; % 相乘
y1 = s.*c1; % 相乘(含有相位差)
[b,a] = butter(6,2*f/fs,'low'); % 设计低通滤波器
z = filter(b,a,y); % 低通滤波
z1= filter(b,a,y1); % 低通滤波

%% FFT(调制与解调)
nfft = 1024; % FFT点数
f = (0:nfft/2-1)/nfft*fs; % 频率向量
M = abs(fft(m,nfft)); % 原始信号的频谱
S = abs(fft(s,nfft)); % 调制信号的频谱
Y = abs(fft(y,nfft)); % 同步解调信号的频谱
Z = abs(fft(z,nfft)); % 低通后的解调信号的频谱
Y1 = abs(fft(y1,nfft)); % 含相位差解调信号的频谱
Z1 = abs(fft(z1,nfft)); % 含相位差低通后的解调信号的频谱


%% 绘图
subplot(3,1,1);
plot(t,m);
title('原始信号');
subplot(3,1,2);
plot(t,c);
title('载波信号');
subplot(3,1,3);
plot(t,s);
title('调制信号');

figure;
subplot(2,2,1);
plot(t,y);
title('同步载波相乘信号');
subplot(2,2,2);
stairs(z);
title('低通后的解调信号');
subplot(2,2,3);
plot(t,y1);
title('含相位差载波相乘信号');
subplot(2,2,4);
stairs(z1);
title('低通后的解调信号');

figure;
subplot(2,2,1);
plot(f,M(1:nfft/2));
title('原始信号频谱');
subplot(2,2,2);
plot(f,S(1:nfft/2));
title('调制信号频谱');
subplot(2,2,3);
plot(f,Y(1:nfft/2));
title('同步解调信号频谱');
subplot(2,2,4);
plot(f,Z(1:nfft/2));
title('低通后的解调信号频谱');

figure;
subplot(2,2,1);
plot(f,M(1:nfft/2));
title('原始信号频谱');
subplot(2,2,2);
plot(f,S(1:nfft/2));
title('调制信号频谱');
subplot(2,2,3);
plot(f,Y1(1:nfft/2));
title('含相位差解调信号频谱');
subplot(2,2,4);
plot(f,Z1(1:nfft/2));
title('含相位差低通后的解调信号频谱');

2  AM信号调制

        其中采样率为1024,时间向量即进行归一化处理,实现0-1均匀分布,可以看到调制时,beta=0.5,s = (1 + beta*m).*c; 这就是前文提到的AM表达式之一。 

3  同步解调

        同步解调分为无相位差的载波解调与有相位差的载波解调,如图所示,可以看到同步相乘与有相位差的相乘,最后经过低通后仅对解调后信号的幅度、均值有影响,与前文的理论计算保持一致。

4  FFT验证

         如图为AM调制与同步相乘的FFT结果,可以看到原始信号频谱在10位置,这个10并非说原始信号f=10,所以就在10。其实对于fs=1024hz采样率而言,采样点数fft为1024,所以频谱分辨率就是1024fs/1024fft=1hz,而fft为对称频谱,实际显示就是0~512点,即采样率最低为待采信号的一倍,故实际频谱最多显示为0~512Hz。调制后的信号,载波在100,上下边频分别为110、90,可以看到AM频谱就是标准的三条线。(大家可以试一下把fs采样率从1024改到1000再运行,可以看到频谱泄露)。

        同步解调后,频谱为基带信号+高频谐波,实际上相乘就是对频谱的上下搬移,即100的频谱与100相乘,得到0与200,即对应同步解调信号的频谱,经过低通滤波后,可以看到只剩下了基带信号,但是似乎有一点频谱泄露,是因为滤波器性能导致。

        此图和上图基本一致不再进行阐述。值得注意的是,后续大家如果通过单片机对AM信号进行ADC采样与FFT分析,一定要保持一个原则即频谱分辨率小于AM信号的基带信号,即若基带信号为1KHz,频谱分辨率最起码为1KHz、500Hz、250Hz,使得1KHz可以恰好落在分辨率点,不会出现频谱泄露,计算不会出现偏差。

5  总结

        总体而言,本仿真的所有效果和上篇文章的理论基本一致,后续将对AM实战进行分析。