微信公众号上线,搜索公众号小灰灰的FPGA,关注可获取相关源码,定期更新有关FPGA的项目以及开源项目源码,包括但不限于各类检测芯片驱动、低速接口驱动、高速接口驱动、数据信号处理、图像处理以及AXI总线等
本节目录
一、单边带调制SSB
二、滤波法
1、滤波法生成单边带信号
2、滤波法的matlab仿真验证
三、相移法
1、相移法生成单边带信号
2、相移法的matlab仿真验证
四、Matlab源码
1、滤波法的matlab仿真验证源码
2、相移法的matlab仿真验证源码
3、SSB信号的解调仿真源码
本节内容
一、单边带调制SSB
DSB信号的上、下两个边带是完全对称的,都携带了调制信号的全部信息,因此仅传输其中一个边带即可,这种只传输一个边带的通信方式称为单边带通信。单边带信号的产生方式通常有两种,一是滤波法,二是相移法。
二、滤波法
1、滤波法生成单边带信号
产生SSB信号最直观的方法是让双边带信号通过一个边带滤波器,保留所需要的一个边带,滤除不要的边带。
LSSB调制,即下边带调制,将滤波器的H(ω)设计成理想低通滤波器图b,可以取出下边带信号频谱。
USSB调制,即上边带调制,将滤波器的H(ω)设计成理想高通滤波器图a,可以取出上边带信号频谱。
SSB信号的带宽是DSBSC信号和AM信号带宽的1/2,和消息信号带宽相同,即Bssb=fH,SSB信号的功率为Pssb=Ps/4,Ps为消息信号功率。
2、滤波法的matlab仿真验证
matlab代码示例:
消息信号是[-3 3]均匀分布的随机整数,
产生的时间间隔为1/10s,
用LSSB和USSB方法调制载波cos2πfct。
fc=100,0≤t≤10;求:
①消息信号和已调信号的频谱
②已调信号的功率和消息信号的功率
仿真图形与上述理论图形一致。
功率计算中Pc_low=0.9928;Pc_high=0.9810;Ps=3.93;Ps/4=0.9825
两种方式滤波器存在一定得到差异,SSB信号的功率为P≈Ps/4。
三、相移法
1、相移法生成单边带信号
2、相移法的matlab仿真验证
matlab代码示例:
消息信号是[-3 3]均匀分布的随机整数,
产生的时间间隔为1/10s,
用移相法方法调制载波cos2πfct,
形成LSSB和USSB信号。fc=100,0≤t≤10;求:
①消息信号和已调信号的频谱
②已调信号的功率和消息信号的功率
功率计算中Pc_low=0.9389;Pc_high=0.9389;Ps=3.81;Ps/4=0.9525
移相法得到的LSSB和USSB信号功率一致,SSB信号的功率为P≈Ps/4。
四、SSB信号的解调仿真
SSB信号是抑制载波的已调信号,它的包络不能直接反映调制信号的变化,需要采用相干解调。
上式中,信号通过低通滤波器后,后两项将被滤除,正比于消息信号的低频分量m(t)/4被解调出来。
matlab代码示例:
消息信号是[-3 3]均匀分布的随机整数,
产生的时间间隔为1/2s,
用相移法调制载波cos2πfct,
生成USSB和LSSB信号。fc=300,0≤t≤5;求:
①用同步检波解调该信号,
低通滤波器的截止频率为100Hz,增益为4,
绘制原始信号和解调信号
②调制信号通过awgn信道,信噪比为20dB,
绘制解调后的信号与原始信号
五、Matlab源码
1、滤波法的matlab仿真验证源码
clear all;
clc;
%信号抽样时间间隔
ts=0.0025
%时间矢量
t=0:ts:10-ts;
%抽样频率
fs=1/ts;
%fft的频率分辨率
df=fs/length(t);
%生成随机数种子的消息序列
msg=randi([-3 3],100,1);
%扩展成取样信号形式
msg1=msg*ones(1,fs/10);
msg2=reshape(msg1.',1,length(t));
%求消息信号的频谱
Pm=fft(msg2)/fs;
f=-fs/2:df:fs/2-df;
subplot(6,1,1);
plot(f,fftshift(abs(Pm)));
title('消息信号频谱');
axis([-200 200 0 5]);
%载波频率
fc=100;
%已调信号
Sdsb=msg2.*cos(2*pi*fc*t);
%已调信号的频谱
Pdsb=fft(Sdsb)/fs;
%低通滤波器的截止频率
f_stop=100;
n_stop=floor(f_stop/df);
%设计低通滤波器
Hlow=zeros(size(f));
Hlow(1:n_stop)=1;
Hlow(length(f)-n_stop+1:end)=1;
%双边带信号通过低通滤波器,获得下边带信号
Plssb=Pdsb.*Hlow;
subplot(6,1,2);
plot(f,fftshift(abs(Pdsb)));
title('Pdsb信号频谱');
axis([-200 200 0 5]);
subplot(6,1,3);
plot(f,fftshift(abs(Hlow)));
title('Hlow信号频谱');
axis([-200 200 0 2]);
subplot(6,1,4);
plot(f,fftshift(abs(Plssb)));
title('LSSB信号频谱');
axis([-200 200 0 5]);
%高通滤波器的截止频率
f_stop=100;
n_stop=floor(f_stop/df);
%设计高通滤波器
Hhigh=zeros(size(f));
Hhigh(n_stop:length(f)-n_stop+1)=1;
%双边带信号通过高通滤波器,获得上边带信号
Pussb=Pdsb.*Hhigh;
subplot(6,1,5);
plot(f,fftshift(abs(Hhigh)));
title('H_high信号频谱');
axis([-200 200 0 2]);
subplot(6,1,6);
plot(f,fftshift(abs(Pussb)));
title('USSB信号频谱');
axis([-200 200 0 5]);
Slssb=real(ifft(Plssb))*fs;
Sussb=real(ifft(Pussb))*fs;
%Slssb已调信号功率
Pc_low=sum(abs(Slssb).^2)/length(Slssb);
%Sussb已调信号功率
Pc_hign=sum(abs(Sussb).^2)/length(Sussb);
%消息信号功率
Ps=sum(abs(msg2).^2)/length(msg2);
2、相移法的matlab仿真验证源码
clear all;
clc;
%信号抽样时间间隔
ts=0.0025
%时间矢量
t=0:ts:10-ts;
%抽样频率
fs=1/ts;
%fft的频率分辨率
df=fs/length(t);
%生成随机数种子的消息序列
msg=randi([-3 3],100,1);
%扩展成取样信号形式
msg1=msg*ones(1,fs/10);
msg2=reshape(msg1.',1,length(t));
%求消息信号的频谱
Pm=fft(msg2)/fs;
f=-fs/2:df:fs/2-df;
subplot(3,1,1);
plot(f,fftshift(abs(Pm)));
title('消息信号频谱');
axis([-200 200 0 5]);
%载波频率
fc=100;
%同相分量
s1=0.5*msg2.*cos(2*pi*fc*t);
%消息信号的Hilbert变换,imag虚部
hmsg=imag(hilbert(msg2));
%正交分量
s2=0.5*hmsg.*sin(2*pi*fc*t);
%LSSB
Slssb=s1+s2;
Plssb=fft(Slssb)/fs;
%USSB
Sussb=s1-s2;
Pussb=fft(Sussb)/fs;
subplot(3,1,2);
plot(f,fftshift(abs(Plssb)));
title('LSSB信号频谱');
axis([-200 200 0 3]);
subplot(3,1,3);
plot(f,fftshift(abs(Pussb)));
title('USSB信号频谱');
axis([-200 200 0 3]);
%Slssb已调信号功率
Pc_low=sum(abs(Slssb).^2)/length(Slssb);
%Sussb已调信号功率
Pc_hign=sum(abs(Sussb).^2)/length(Sussb);
%消息信号功率
Ps=sum(abs(msg2).^2)/length(msg2);
3、SSB信号的解调仿真源码
clear all;
clc;
%信号抽样时间间隔
ts=0.0025
%时间矢量
t=0:ts:5-ts;
%抽样频率
fs=1/ts;
%fft的频率分辨率
df=fs/length(t);
f=-fs/2:df:fs/2-df;
%生成随机数种子的消息序列
msg=randi([-3 3],10,1);
%扩展成取样信号形式
msg1=msg*ones(1,fs/2);
msg2=reshape(msg1.',1,length(t));
subplot(5,1,1);
plot(t,msg2);
title('消息信号');
axis([0 5 -5 5]);
%载波频率
fc=300;
%同相分量
s1=0.5*msg2.*cos(2*pi*fc*t);
%消息信号的Hilbert变换,imag虚部
hmsg=imag(hilbert(msg2));
%正交分量
s2=0.5*hmsg.*sin(2*pi*fc*t);
%LSSB
Slssb=s1+s2;
%USSB
Sussb=s1-s2;
%LSSB 相干解调
y=Slssb.*cos(2*pi*fc*t);
%LSSB 解调后的频谱
Y=fft(y)./fs;
%USSB 相干解调
y1=Sussb.*cos(2*pi*fc*t);
%USSB 解调后的频谱
Y1=fft(y1)./fs;
%低通滤波器的截止频率
f_stop=100;
n_stop=floor(f_stop/df);
%设计低通滤波器
Hlow=zeros(size(f));
Hlow(1:n_stop)=4;
Hlow(length(f)-n_stop+1:end)=4;
%LSSB 解调信号通过低通滤波器
DEM=Y.*Hlow;
%USSB 解调信号通过低通滤波器
DEM1=Y1.*Hlow;
%最终得到的解调信号LSSB
dem=real(ifft(DEM))*fs;
%最终得到的解调信号USSB
dem1=real(ifft(DEM1))*fs;
subplot(5,1,2);
plot(t,dem);
title('无噪声的解调信号LSSB');
axis([0 5 -5 5]);
subplot(5,1,3);
plot(t,dem1);
title('无噪声的解调信号USSB');
axis([0 5 -5 5]);
%LSSB调制信号经过awgn信道
y3=awgn(Slssb,20,'measured');
%相干解调
y4=y3.*cos(2*pi*fc*t);
%解调后的频谱
Y2=fft(y4)./fs;
%解调信号通过低通滤波器
DEM3=Y2.*Hlow;
%最终得到的解调信号
dem4=real(ifft(DEM3))*fs;
subplot(5,1,4);
plot(t,dem4);
title('信噪比为20dB的解调信号LSSB');
axis([0 5 -5 5]);
%USSB调制信号经过awgn信道
y5=awgn(Sussb,20,'measured');
%相干解调
y6=y5.*cos(2*pi*fc*t);
%解调后的频谱
Y3=fft(y6)./fs;
%解调信号通过低通滤波器
DEM4=Y3.*Hlow;
%最终得到的解调信号
dem5=real(ifft(DEM4))*fs;
subplot(5,1,5);
plot(t,dem5);
title('信噪比为20dB的解调信号USSB')
axis([0 5 -5 5]);