我是靠谱客的博主 拼搏手机,最近开发中收集的这篇文章主要介绍QPSK映射关系与差分编码一:为何选择差分编码       二:映射关系三:对应的matlab代码(0231——1~4象限) 四:给定IQ两路映射关系五:差分解码:六:QPSK选择PRBS15伪随机码编码,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

一:为何选择差分编码       

二:映射关系

三:对应的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种,所以.........不简单啊!我们应该如何选择呢?

二:映射关系

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

如何选择映射关系呢?

注意:0132中,3代表相位变化180°,而不是270°!!!这点不要混淆

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

注意:不同映射关系的格雷码,差分解码时候的公式都是相同的

 

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

差分映射关系图:

%% 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个四进制码元为一组进行循环

七:8PSK映射关系与差分编码(02315764)

%将绝对码变换为相对码
function [psk8_coded] = psk8_deff(init,psk8_uncoded)
global psk8_coded_old;
global psk8_deff_table;
if(init)%02315764
    psk8_deff_table=                [0 1 2 3 4 5 6 7];
    psk8_deff_table=[psk8_deff_table,2 5 3 1 0 7 4 6];
    psk8_deff_table=[psk8_deff_table,3 7 1 5 2 6 0 4];
    psk8_deff_table=[psk8_deff_table,1 6 5 7 3 4 2 0];
    psk8_deff_table=[psk8_deff_table,5 4 7 6 1 0 3 2];
    psk8_deff_table=[psk8_deff_table,7 0 6 4 5 2 1 3];
    psk8_deff_table=[psk8_deff_table,6 2 4 0 7 3 5 1];
    psk8_deff_table=[psk8_deff_table,4 3 0 2 6 1 7 5];
    psk8_coded_old=psk8_uncoded;
else
    psk8_coded=psk8_deff_table(psk8_uncoded*8+psk8_coded_old+1)
    psk8_coded_old=psk8_coded;
end

psk8_uncoded表示变了几个相位

psk8_coded_old+1表示从几开始变

 

最后

以上就是拼搏手机为你收集整理的QPSK映射关系与差分编码一:为何选择差分编码       二:映射关系三:对应的matlab代码(0231——1~4象限) 四:给定IQ两路映射关系五:差分解码:六:QPSK选择PRBS15伪随机码编码的全部内容,希望文章能够帮你解决QPSK映射关系与差分编码一:为何选择差分编码       二:映射关系三:对应的matlab代码(0231——1~4象限) 四:给定IQ两路映射关系五:差分解码:六:QPSK选择PRBS15伪随机码编码所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部