通信中的差分编码与解差分
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
通信中的差分编码与解差分
通信中在使⽤QPSK调制时,为了避免收发端相⼲频率相位不⼀致,导致相位模糊,会在发送端对发送的bit数据进⾏差分编码,将绝对相位转为相对相位;同时在接收端对接收的符号进⾏解差分,将相对相位转换为绝对相位。
这是QPSK的星座映射图,QPSK+差分编码得到DQPSK。
1.下⾯讨论为什么要使⽤DQPSK
假如发送⽐特{b0,b1,b2,......,bk,.....,bn}(bk为2⽐特数据,每个QPSK星座点映射2bit)经过QPSK映射得到n个符号
{a0,a1,a2,......,ak........,an}(an为复数bk={bk_i,bk_q},复数才有相位)。映射得到的每个符号都有⼀个相位,⽐如11--->(1,1),相位为∏/4。这是映射得到的绝对相位,在将映射的符号发送出去还要进⾏载波调制,即sk=ak*e(j2piw+θ),接收端接收到信号要去掉载波,得到映射符号,去掉的⽅式⼀般采⽤相⼲解调,即rk=sk*e-(j2piw+φ),当θ=φ时rk=ak,即还原了发送端的符号,然⽽实际情况中,接收端进⾏相⼲解调的信号相位不会与发送端的⼀样,这样就导致不能还原发送的符号。然⽽我们会发现每个接收符号都会加⼊j(θ-φ)的相位,如果将前后两个接收符号的相位相减就能消除这个未知的相位,这个特点让我们找到了解决这个问题的出路——差分编码。
2.差分编码
差分编码的公式如下:
c0 = a0;
c k = c k-1*a k ,k>0;(这些都是复数,映射后的符号)
即第⼀映射符号就是第⼀个差分符号,第k个差分编码符号等于k-1个差分编码符号乘第k个映射符号。即c k的相位是在c k-1的基础上加⼊了
a k的相位,所以c k与c k-1的相位差是a k的相位。
3.解差分。
解差分的公式如下:
a0 = s0;
a k =*s k *(s k-1)*,k>0;(这些都是复数,映射后的符号,a*表⽰取共轭)
上⾯已经分析过,由于收发端载波相位不⼀致,即θ≠φ时,rk=sk*e-(j2piw+φ)=ak*e j(θ-φ)=|a|e jβ*e j(θ-φ),(假设ak=|a|e jβ)接收的数据相位错误,(数据信息存在于相位中,即接收数据错误),会在接收的数据上叠加⼀固定的相位。经过差分编码后的数据c k是在前⼀个差分编码的ck-1上叠加了a k的相位,同求c k与ck-1的相位差就可以得到a k的相位,即ak=c k*(c k-1)*。如果θ≠φ,r k*(r k-1)*=e jβ*e j(θ-φ)*e-jξ*e-j(θ-φ)=e j(β-ξ), (假设幅度都为1,rk的相位为β,rk-1的相位为ξ)。这样得到了c k与c k-1的相位差,也就是a k的相位,把a k的相位还原了,解决了相位模糊的问题。
4.差分编码扩展
采⽤(2,3)中的差分编码和解差分⽅式⽆法还原a0的相位,为了解决这个问题,⼯程实现中不是在bit数据映射成符号后再进⾏差分编码,⽽是在bit数据映射前进⾏差分编码,这样可以减少差分编码的复杂度,同时增加1bit冗余的bit解决第⼀个符号⽆法还原的问题(其实第⼀个符号也不能还原,只是第⼀个符号插⼊⽆效的数据,接收端不care):
编码前:0100101
编码后:00111001
⾸先添加⼀个冗余数据(0和1都可以,⽆所谓,上⾯添加的是0),添加的0与未编码的第⼀个bit相⽐较,两个数据相同,得到第⼀个bit数据0(第⼀个绿⾊的0,通过编码前的第⼀个数据0,(红⾊)与冗余数据0(红⾊)得到。)后续的将编码得到的数据与后续未编码的数据相⽐较,相同则得到编码数据0,不相同则得到未编码的数据1。
5.有的差分编码和解差分中会加⼊⼀个固定的旋转。
差分编码的公式如下:
c0 = a0;
c k = c k-1*a k(1/2+1j/2),k>0;(这些都是复数,映射后的符号)
解差分的公式如下:
a0 = s0;
a k =*s k *(s k-1)* *(1/2-1j/2),k>0;(这些都是复数,映射后的符号,a*表⽰取共轭)
⼯作中对7⽐特的随机复数进⾏差分编码,发现死活解差分都不对,后来发现是由于数据中有复数(0,0),且差分编码时,数据相乘后进⾏的截位也会导致复数(0,0)的⼤量出现。在差分编码中要求编码后的数据得有相位,然⽽(0,0)中没有相位,也就违背了相位差的基础,当然没法解差分。解决办法就是避免差分编码前和差分编码后的数据有(0,0),不使⽤随机复数进⾏差分编码,使⽤QPSK映射后的数据进⾏差分编码(BPSK的数据也可以)
这些是⼯作中遇到差分编码和解差分的实际问题才领悟到⼤学⾥学的东西,当时上学的时候压根就不理解为什么要使⽤差分编码,为什么要使⽤bit的差分编码是那样的。现在的理解也有可能不正确,望各个⼤侠指教!