目录
一:为何选择差分编码
二:映射关系
三:对应的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象限)
差分映射关系图:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40%% 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两路赋值即可
1
2
3
4
5
6
7
8
9I=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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18%将绝对码变换为相对码 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映射关系与差分编码一:为何选择差分编码 内容请搜索靠谱客的其他文章。
发表评论 取消回复