QPSK映射关系与差分编码

目录

一:为何选择差分编码       

二:映射关系

三:对应的matlab代码(0231——1~4象限) 

四:差分解码:

五:给定IQ两路映射关系


一:为何选择差分编码       

       首先差分编码那些众所周知的好处在此就不再啰嗦了,对于QPSK和16QAM等信号来讲,差分编码多了一个好处,那就是避免四相相位模糊所导致的映射关系旋转的问题;通俗来讲就是在没有差分编码的情况下,如果我的映射关系是0132(分别对应于1~4象限);那么我解出来的映射关系有四种情况:0132,2103,3201,3013(均对应于1~4象限),相当于旋转起来了;如果选择了差分编码,那么解调出来的映射关系就只有一种情况,即0132(1~4象限)。所以要选择差分编码

        单比特码元的差分编码方式大家都很熟悉了,相对码转绝对码,绝对码转相对码,不清楚的可以参考下方链接:

http://t.csdn.cn/PsOe4

       QPSK是四进制双比特码元,对其进行差分编码跟单比特码元差分编码是大不相同的,QPSK的差分编码方式是根据相位变化来进行差分编码的,QPSK的相位变化一共有四种:0(360°) ; 90° ; 180° ; 270° 

不同的映射关系编出来的差分码也是大不相同的 

映射关系的选择一共有4*3*2 = 24种,所以.........不简单啊!我们应该如何选择呢?

二:映射关系

不同的映射关系对应与不同的编码结果!

如何选择映射关系呢?

现如今绝大多数映射关系都采用格雷码的方式,即1~4象限分别对应于0132,0231或1023等等,每次相位变化90°只有一位码元发生改变;对于格雷码类映射关系,直接上图:

注意:不同映射关系的格雷码,差分解码时候的公式都是相同的QPSK映射关系与差分编码_第1张图片

 QPSK映射关系与差分编码_第2张图片

QPSK映射关系与差分编码_第3张图片

QPSK映射关系与差分编码_第4张图片

三:对应的matlab代码(0231——1~4象限) 

差分映射关系图:

QPSK映射关系与差分编码_第5张图片

%% qpsk信号
t=0:1/fs:(N*fs/ps-1)/fs;  %产生长度为N,频率为fs的时间序列
s=round(rand(1,N));       %产生随机4进制数据作为原始数据
%将绝对码变换为相对码
ds=zeros(1,N);
for i=2:N
    if s(i)==0
        ds(i)=ds(i-1);  
    elseif s(i)==1
        if ds(i-1)==0
            ds(i)=1;
        elseif ds(i-1)==2
            ds(i)=0;
        elseif ds(i-1)==3
            ds(i)=2;
        elseif ds(i-1)==1
            ds(i)=3;
        end
    elseif s(i)==2
        if ds(i-1)==0
            ds(i)=2;
        elseif ds(i-1)==2
            ds(i)=3;
        elseif ds(i-1)==3
            ds(i)=1;
        elseif ds(i-1)==1
            ds(i)=0;
        end
    elseif s(i)==3
        if ds(i-1)==0
            ds(i)=3;
        elseif ds(i-1)==2
            ds(i)=1;
        elseif ds(i-1)==3
            ds(i)=0;
        elseif ds(i-1)==1
            ds(i)=2;
        end
    end
end

四:给定IQ两路映射关系

得到差分码后,根据0231——1~4象限给IQ两路赋值即可

I=zeros(1,N);Q=zeros(1,N);
for i=1:N
    switch ds(i)
        case 0, I(i)=1; Q(i)=1;
        case 2, I(i)=-1; Q(i)=1;
        case 1, I(i)=1; Q(i)=-1;
        otherwise,I(i)=-1;Q(i)=-1;
    end
end

五:差分解码:

公式为:

1:C(k-1)⊕D(k-1) = 0   则Ak = C(k)⊕C(k-1),B(k) = D(k)⊕D(k-1)

2:C(k-1)⊕D(k-1) = 1   则Ak = D(k)⊕D(k-1),B(k) = C(k)⊕C(k-1)

对应图中从右向左推即可使得相对码转为绝对码

六:QPSK选择PRBS15伪随机码编码

prbs15共有32767个01码元,而信号源是以两个01码元为一组进行映射;故而qpsk应该是以(32768+32768)/2 = 32768个四进制码元为一组进行循环

你可能感兴趣的:(matlab)