目录
一:FEC
二:交织
三:反馈重传
信道编码与交织在通信系统模型中的位置如图示。
信道编码的引入主要是为了解决数据在信道中传输时引入的误码问题。解决误码问题有两个办法:
接收端在发现误码后,请求发送端对错误数据进行重传,称为后向纠错。ARQ就是一种后向纠错算法。
发送端在发送数据时加入一定的冗余信息,以便在出现误码时接收端可以直接进行纠错,称为前向纠错。
FEC就是一种前向纠错算法。
FEC
FEC:全称Forward Erro Correction,就是前向纠错码。
一:重复码
在数据中增加冗余信息的最简单方法,就是将同一数据重复多次发送,这就是重复码。
例如:将每一个信息比特重复3次编码:0→000,1→111。
接收端根据少数服从多数的原则进行译码。例如:发送端将0编码为000发送,如果接收到的是001、010、100,就判为0,如图所示。
发送端将1编码为111发送,如果接收到的是110、101、011,就判为1,如图所示。
很明显,按照这种方法进行编译码,如果只错1位没问题,可以正确译码,如果错2位就不行了。例如:发送端将0编码为000发送,到了接收端变成了110,会被译码为1,译码出错,如图所示。
重复码还有一个很大的问题是:传输效率很低。还是以上面的重复码为例,将同一个信息比特发送了3次,传输效率只有1/3。
二:分组码
为了提高传输效率,将k位信息比特分为一组,增加少量多余码元,共计n位,这就是分组码。
包含k位信息比特的n位分组码,一般记为(n,k)分组码,如图所示。
分组码分组码中的(n-k)位多余码元是用于检错和纠错的,一般称为监督码元或校验码元,它只监督本码组中的k个信息比特。
1.奇偶校验码
最简单的分组码就是奇偶校验码,其监督码元只有1位。例如:(3,2)偶校验码,通过添加1位监督码元使整个码字中1的个数为偶数:
00→000
01→011
10→101
11→110
检错:收到1个码字,对所有位做异或,如果为0,正确;如果为1,错误。纠错:奇偶校验码只能检测奇数个错误,不能纠正错误。
接着上面的例子:
000错1位:错成001、010或100都可以通过1的个数为奇数发现错误,如图所示。
但不能纠正错误。以收到001为例,有可能是000错第3位导致的,还有可能是011错第2位导致的,还有可能是101错第1位导致的,无法推断出来发送的数据到底是000、011还是101,因此无法纠错,如图所示。
000错2位:错成011、110或101就发现不了错误了,如图所示。
000错3位:错成111,通过1的个数为奇数可以发现错误,但不能纠正错误,如图所示。
2.汉明码
奇偶校验码只有1位监督码元,只能发现奇数个错误,但不能纠正错误。
有没有码可以纠正错误呢?汉明码就可以检测2位错误,纠正1位错误。
以(7,4)汉明码为例,信息码元为4位,监督码元为3位,如图所示。
监督码元和信息码元的监督关系如图所示。
遍历所有信息码元(4位),可以得到16个码字,如表所示。
如果接收到的码字不在上表中,一定是出现了误码。如何判断是哪位出错了呢?
1.检错原理分别对3组偶校验码的所有位做异或,得到
:
根据计算结果
,可以判断出是否出错,如果出错,具体是哪个码元出错,如图所示。
如果没有错误,则
。
如果信息码元出错:
如果监督码元错误:
例如:收到的码字为0101011,
,说明
出错,也就是0101011中有下划线的那个1是错的。
2.纠错原理
发现错误位后,只要将对应位取反:0改为1,1改为0,就完成了纠错。
接着前面的例子,发现a5出错后,只要将其取反即可得正确的码字0001011,这就实现了纠错。
三、卷积码
从前面的描述来看,分组码编码器每次输入k个信息码元,输出n个码元,每次输出的码元只与本次输入的信息码元有关,而与之前输入的信息码元无关。接下来介绍的卷积码,其编码器输出除了与本次输入的信息码元有关外,还与之前输入的信息码元有关。
一般用(n,k,K)来表示卷积码,其中:
n:编码器每次输出的码元个数;
k:编码器每次输入的信息码元个数,一般k=1;
K:约束长度,在k=1的情况下,表示编码器的输出与本次及之前输入的K个码元相关。
例如(2,1,3)卷积码:编码器每次输入1个码元,输出2个码元,这2个码元与本次及之前输入的3个码元相关。
1.编码原理
1)编码器工作原理
(n,1,K)卷积码编码器一般使用(K-1)级移位寄存器来实现。
例如:(2,1,3)卷积码编码器需要2级移位寄存器,如图所示。
两个移位寄存器的初始状态为:00;
假定输入序列为:11011,左侧数据先输入;
寄存器的状态及编码器输出变化如表所示。
2)编码器网格图
两个寄存器的输出共有4种可能状态:00、10、01、11,沿纵轴排列,以时间为横轴,将寄存器状态和编码器输出随输入的变化画出来,这就是编码器网格图,如图所示。
实线表示输入0,虚线表示输入1。
实线和虚线旁边的数字表示编码器输出。
时刻:寄存器状态为00。
时刻:
如果输入为0,寄存器状态保持00,编码器输出00;
如果输入为1,寄存器状态变为10,编码器输出11。
时刻:
如果前一时刻寄存器状态为00:
如果输入为0,寄存器状态保持00,编码器输出00;
如果输入为1,寄存器状态变为10,编码器输出11。
如果前一时刻寄存器状态为10:
如果输入为0,寄存器状态变为01,编码器输出10;
如果输入为1,寄存器状态变为11,编码器输出01。
时刻: 如果前一时刻寄存器状态为00:
如果输入为0,寄存器状态保持00,编码器输出00;
如果输入为1,寄存器状态变为10,编码器输出11。
如果前一时刻寄存器状态为10:
如果输入为0,寄存器状态变为01,编码器输出10;
如果输入为1,寄存器状态变为11,编码器输出01。
如果前一时刻寄存器状态为01:
如果输入为0,寄存器状态变为00,编码器输出11;
如果输入为1,寄存器状态变为10,编码器输出00。
如果前一时刻寄存器状态为11:
如果输入为0,寄存器状态变为01,编码器输出01;
如果输入为1,寄存器状态保持11,编码器输出00。
时刻:与时刻情况相同。
时刻:与时刻情况相同。
还以输入序列11011为例。
通过编码器网格图,很容易得到输入序列11011编码得到的输出序列:11 01 01 00 01,如图所示。
译码器在接收到码字序列B后,遍历,计算发送码字序列为
、接收码字序列为B的发生概率,将发生概率最大的发送码字序列对应的发送信息序列作为译码结果,这就是最大似然译码。
以L=5为例,假定接收到的码字序列为:11 01 01 00 01编码器输出的码字序列共有32种可能:
如果发送信息序列为11011,则编码器输出的码字序列为:11 01 01 00 01,全部码元传输正确,发生这种情况的概率为:
。
如果发送信息序列为10011,则编码器输出的码字序列为:11 1011 11 01,5个码元传输错误,发生这种情况的概率为:
。
如果发送信息序列为11010,则编码器输出的码字序列为:11 01 01 00 10,2个码元传输错误,发生这种情况的概率为:
。
其他情况略。
很明显,发送信息序列为11011的概率最高,因此采用最大似然译码时译码结果为:11011。
还以L=5为例,假定接收到的码字序列为:11 01 01 10 01
编码器输出的码字序列共有32种可能:
如果发送信息序列为11011,则编码器输出的码字序列为:11 01 01 00 01,1个码元传输错误,发生这种情况的概率为:
。
如果发送信息序列为10011,则编码器输出的码字序列为:11 1011 11 01,4个码元传输错误,发生这种情况的概率为:
。
如果发送信息序列为11010,则编码器输出的码字序列为:11 01 01 00 10,3个码元传输错误,发生这种情况的概率为:
。
其他情况略。
很明显,发送信息序列为11011的概率最高,因此采用最大似然译码的译码输出为:11011。
从上面两个例子可以看出:错误的码元越少,发生概率越高。要找到发生概率最高的发送序列,只要找出误码数最少的发送码字序列就可以了。而两码字间对应位不同的个数总和称为汉明距离,所以只要找出汉明距离之和最小的发送码字序列就行了。例如:01和10的汉明距离为2,00和01的汉明距离为1。
最大似然译码要遍历
种可能码字序列计算概率才能完成译码,译码过程的计算量随L的增大而指数增长,难以实现。维特比发现了一种方法,可以大大减小译码的计算量,将最大似然译码推向实用,这就是著名的维特比译码算法。
2)维特比译码
维特比译码的原理可以结合译码器网格图来理解。译码器网格图与编码器网格图类似,唯一的不同是:实线和虚线旁的数字不再表示编码器的输出,而是表示接收码字序列与编码器输出码字序列的汉明距离。
接着前面的例子,假定接收码字序列为11 01 01 10 01(错误1个码元),画出译码器网格图,如图所示。
译码的过程就是寻找最优路径的过程,也就是找到一条汉明距离之和最小的路径。
:接收到11,存在两条可能路径,汉明距离分别为2和0,如图所示。
:接收到01,
间存在4条可能路径,汉明距离分别为3、3、2、0,如图所示。
:接收到01,
间存在8条可能路径,到每个状态存在2条可能路径,如图所示。
去掉其中汉明距离大的那条路径,剩下4条可能路径,汉明距离分别为3、3、0、2,如图所示。
:接收到10,t1~t5间存在8条可能路径,到每个状态存在两条可能路径,如图所示。
去掉其中汉明距离大的那条路径,剩下4条可能路径,汉明距离分别为1、1、3、2,如图所示。
值得注意的是:
间只剩下1条路径,译码输出为1。
:接收到01,
间存在8条可能路径,到每个状态存在两条可能路径,如图所示。
去掉其中汉明距离大的那条路径,剩下4条可能路径,汉明距离分别为2、2、2、1,如图所示。
值得注意的是:
间只剩下1条路径,译码输出为1。
在剩下的4条路径中,选取汉明距离之和最短的那条,如图所示。
至此完成译码,完整的译码输出为:11011。
3.卷积码的应用
1)CDMA2000
使用了(2,1,9)、(3,1,9)和(4,1,9)卷积码,如图所示。
2)WCDMA
使用了(2,1,9)和(3,1,9)卷积码,如图所示。
3)LTE
LTE的控制信道采用了(3,1,7)卷积码进行信道编码,如图所示。
交织
交织和去交织是通过对寄存器按行写入按列读出实现的。
一、交织
信道编码后的码字逐行写入交织寄存器,再逐列读出并发送出去,如图所示。
二、去交织
接收到的数据逐行写入去交织寄存器,再逐列读出码字用于信道译码,如图所示。
在信道传输过程中如果出现了如上图中所示的连续误码,去交织后,恢复出的第3、第4、第5、第6码字的第3码元出错,对于出错的几个码字来讲,每个码字只是错了1个码元,信道译码时很容易纠错。
反馈重传
FEC结合交织可以在一定程度上解决误码问题,但不能彻底解决,要想彻底解决误码问题,还要借助反馈重传技术。
一、ARQ
自动请求重传:发送端发送具有一定检错能力的码,接收端发现出错后,立即通知发送端重传,如果还是错,再次请求重传,直至接收正确为止,如图所示。
二、HARQ
混合ARQ:是FEC和ARQ的结合,发送端发送具有一定检错和纠错能力的FEC码,接收端发现出错后,尽其所能进行纠错,纠正不了,则立即通知发送端重传,如果还是接收错误,再次请求重传,直至接收正确为止,如图所示。
三、HARQ+ARQ
很明显,HARQ的性能是优于ARQ的,但如果单纯使用HARQ重传,会导致解调门限大大提高。这是因为:重传次数一般都要受到最大重传次数的限制,要满足最恶劣信道条件下在达到最大重传次数之前能将数据传输正确,对解调门限提出了很高的要求。为了降低对解调门限的要求,移动通信系统中一般将二者结合起来使用,如图所示。
利用HARQ重传将误码控制在一定水平,残留一部分误码给ARQ进行重传,这样系统性能可以达到最优。 |