操作环境:
MATLAB 2022a
1、算法描述
蓝牙是一种被广泛应用的无线通信标准,工作在2.4GHz-2.4835GHz频段范围,所用的调制方式有:GFSK,PI/4-DQPSK。北美第二代数字蜂窝移动通信系统D-AMPS和日本的JDC蜂窝系统均采用PI /4-DQPSK,欧洲的GSM系统采用GMSK。PI /4-DQPSK与GMSK等恒包络调制技术相比有更高的频谱利用率和抗衰落性能。
PI /4DQPSK调制器中,已调信号从相互偏移PI /4的两个星座图中选取下图给出了两个相互偏移PI /4的星座图和一个合并之后的星座图,图中的两点信号点之间的连线表示可能的相位跳变,可见PI /4DQPSK最大的相位跳变为±3π/4,每对连续的双比特其信号的最大相位至少有π/4的相位变化。
PI/4 -DQPSK是蓝牙采用的一种调制方式,相比于恒包络调制技术,他有着更高的频谱利用率和抗衰落性能。PI/4 -DQPSK相比于QPSK多了差分相位编译码模块,将QPSK的最大相位跳变180°降为135°。
PI/4 -DQPSK既能采用相干解调,也能采用非相干解调。
PI/4 -DQPSK由2个相差π/4的QPSK星座图交替产生。例如,如果连续输入“11 11 11”,则信号码元的相位为“45° 90° 45° 90°”
PI/4 - DQPSK调制和解调系统框图
2、仿真结果演示
3、关键代码展示
%% 发射端
%随机产生传输信号
data =randi([0 1],1,data_len);
for i=1:data_len
if data(i)==1
data(i)=1;
else
data(i)=0;
end
end
[I,Q]=pi4_dqpskmod(data);
%内插
zero=5; % 采样率为25MHz
for i=1:zero*length(I)
if rem(i,zero)==1
Izero(i)=I(fix((i-1)/zero)+1);
Qzero(i)=Q(fix((i-1)/zero)+1);
else
Izero(i)=0;
Qzero(i)=0;
end
end
%脉冲成形滤波器
NT =50;
N=2*zero*NT;
Fs=25e6;
rf=0.1;
psf=rcosfir(rf,NT,zero,Fs,'sqrt');
Ipulse= conv(Izero,psf);
Qpulse= conv(Qzero,psf);
%调制
for i=1:zero*length(I)+N
t(i)=(i-1)/(Fc*zero);
Imod(i)=Ipulse(i).*sqrt(2)*cos(2*pi*Fc*t(i));
Qmod(i)=Qpulse(i).*(-sqrt(2)*sin(2*pi*Fc*t(i)));
end
sum=Imod+Qmod;
%% 接收端
%加噪声
for SNR=0:20
sum1 = awgn(sum,SNR);
%相乘器
for i=1:zero*length(I)+N
Idem(i)=sum1(i).*sqrt(2)*cos(2*pi*Fc*t(i));
Qdem(i)=sum1(i).*(-sqrt(2)*sin(2*pi*Fc*t(i)));
end
%匹配滤波器
mtf= rcosfir(rf,NT, zero,Fs,'sqrt');
Imat = conv(Idem,mtf);
Qmat = conv(Qdem,mtf);
%抽取
for i=1:zero*length(I)
Isel(i)=Imat(i+N);
Qsel(i)=Qmat(i+N);
end
%采样
for i = 1:length(I)
Isam(i)= Isel((i-1)*zero+1);
Qsam(i)= Qsel((i-1)*zero+1);
end
%解码
[data1]=pi4_dqpskdemod(Isam,Qsam);
[num,ber(SNR+1)] = symerr(data1,data);%计算误码率
end
4、MATLAB 源码获取
点击下方链接获取: