概述
目录
一:为何选择差分编码
二:映射关系
三:对应的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伪随机码编码所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复