【MATLAB源码-第10期】基于matlab的pi/4DQPSK,π/4DQPSK的误码率BER理论和实际对比仿真。

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°”

【MATLAB源码-第10期】基于matlab的pi/4DQPSK,π/4DQPSK的误码率BER理论和实际对比仿真。_第1张图片

 PI/4 - DQPSK调制和解调系统框图

【MATLAB源码-第10期】基于matlab的pi/4DQPSK,π/4DQPSK的误码率BER理论和实际对比仿真。_第2张图片

 

2.仿真结果演示

【MATLAB源码-第10期】基于matlab的pi/4DQPSK,π/4DQPSK的误码率BER理论和实际对比仿真。_第3张图片

 

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源码获取

V

点击下方名片

 

你可能感兴趣的:(MATLAB,通信原理,调制解调,matlab,开发语言,信息与通信)