【纠错编码原理】1-纠错编码的基本概念:简单入门
纠错编码的基本概念
纠错编码就是在信息序列中加入一些冗余码元,组成一个相关的码元序列——码字,译码时利用码元之间的相关性质类检测错误和纠正错误。不同的纠错编码方法有不同的检错或纠错能力。一般说来,付出的代价越大,检错或纠错的能力就越强,提高传输的可靠性是以降低传输效率为代价的。
😗 1. 理论基础
😙 1.1 纠错编码基本原理
数字通信的一组矛盾是可靠性与快速性。当要求快速时,每个数码单元占据的时间就更短,波形变窄,能量变小,同时会导致干扰后产生错误的可能性增加,传送消息的可靠性降低。如果要追求可靠性,则使得传送信息的速率变慢。
香农第二定理是有噪信道编码定理,作为一个存在性定理,其指出了可以用任意接近信道容量的信息传输速率传递信息,且出错的概率可以任意小。
纠错编码,顾名思义,是当信息经过噪声信道传输或要恢复存储的数据时用来纠错的。用来传输信息的物理介质叫做信道(电话线、卫星连接等),不同的信道产生不同种类的噪声,对传输的数据造成不同的损害。纠错编码就是试图去克服信道中的噪声带来的损害。
纠错编码的基本思想是在消息通过一个有噪信道传输之前以多余符号的形式在消息中增添冗余度,这种冗余度是在一定的规则控制下添加的。编码后的信息在传输室还可能会遭到噪声的损害。在接收端,如果错误码数在该码的设计限度内,则原始消息可以用受损的消息中恢复。
一个数字通信系统可以由下图表示。
纠错编码的意义就是克服噪声源对通信可靠性带来的干扰,在这种情况下,可以将纠错编码看成是为提高通信系统性能而设计的信号变换。
😊1.2 纠错编码的分类
差错控制编码从功能的角度可以为以下三类:
- 检错码(Error Detection Code):只能发现错误不能纠正错误,在一些仅需要给出错误提示和ARQ(Automatic Repeat reQuest,自带请求重发)系统中使用该类码。
- 纠错码(Error Correcting Code):能发现错误也能纠正错误,FEC(Forward Error Correction,前向纠错)和HEC(Hybrid Error Correction,混合纠错)系统中都使用这类码。
- 纠删码:能发现错误并纠正或删除错误。
差错控制系统大致可以分为前向纠错、重传反馈和混合纠错三种方式。
- 前向纠错FEC方式:指发送端发送有纠错能力的码,接收端收到码后能通过纠错译码器自动纠正传输中的错误。优点:不需要反馈通道,能一对多的同时通信,适合移动通信,译码实时性好,控制电路简单。缺点是译码设备浮子,编码效率较低。
- 重传反馈ARQ方式:发送端发出能检错码,接收端译码器收到后,判断在传输中有无错误产生,并通过反馈通道把检测结果告诉发送端。发送端将认为有错的消息再次传送,直到接收端认为正确接受为止。该方式的缺点是控制电路较为复杂,传输信息的连贯性和实时性较差,需要一根从接收端到发送端的反馈通道。优点是:译码设备简单,在冗余度一定的情况下,码的检错能力要比纠错能力高得多,所以系统能获得极低的误码率。
- 混合纠错HEC方式:是上述两种方式的结合,既能检错也能纠错,若错误个数在码的纠错能力以内则自动进行纠错,若错误个数超过了纠错能力但能检测出来,则通过反馈通道告知重发,这种方式在一定程度上避免了FEC方式译码设备复杂和ARQ方式信息连贯性差的缺点。
设计差错控制系统时需要考虑的因素有:
- 满足用户对误码率的要求
- 有尽可能高的信息传输速率
- 有尽可能简单的编译码算法且易于实现
- 可接受的成本
纠错编码的分类方法有很多,其关系由下图所示:
- 按照对信息元处理方法来分类:
- 分组码是把信源输出的信息序列以\(k\)个码元划分为一段,通过编码器把这段k个信息元按照一定的规则产生\(r\)个校验单元,输出码长为\(n=k+r\)的一个码组。这种编码中每一个码组的校验元仅与本组的信息元有关,而与别的信息元无关。分组码用\((n,k)\)表示,\(n\)代表码长,\(k\)表示信息位数。分组码的构成可以表示为:
- 卷积码是把信源输出的信息序列以\(k\)个码元分为一段,通过编码器输出长为\(n(n>k)\)的码段,但是该码段的\(n-k\)的校验元不仅与本组的信息元有关,而且也与其前\(m\)段的信息元有关,一般称\(m\)为编码存储,因此卷积码用\((n,k,m)\)表示。
- 根据校验元与信息元之间的关系来分类:
- 线性码:校验元与信息元之间的关系为线性关系,满足线性叠加原理。
- 非线性码:不满足线性叠加原理。
- 根据纠正错误的类型来分类:
- 纠随机错误码。
- 纠突发错误码。
- 纠同步错误码。
- 既能纠随机错误也能纠突发错误码。
- 根据每个码元的取值来分类:
- 二进制码。
- q进制码,\(q=p^m\),\(p\)为素数,\(m\)为正整数。
- 根据码的结构来分类:
- 循环码。
- 非循环码。
- 系统码。
- 完备码。
- 根据每个信息元保护能力是否相等来分类:
- 等保护纠错码。
- 不等保护纠错码。
😯 2. 基本定义
定义1-1 码字(Codeword)是一些符号的序列。
定义1-2 码是称为码字的向量集合。
定义1-3 一个码字(或任何向量)的汉明重量(Hamming Weight)等于该码字中的非零元素个数。码字\(c\)的汉明重量记为\(w(c)\)。
定义1-4 两个码字之间的汉明距离是码字不相同的未知数目,两个码字\(c_1\)和\(c_2\)之间的汉明距离记为\(d(c_1,c_2)\),容易看出\(d(c_1,c_2)=w(c_1,c_2)\)。
两个码字,例如一个包含\(\{0100,1111\}\)的码\(C\),码字的汉明重量分别为:
两个码字之间的汉明距离为3,因为:(本文关于0,1码字的加减法均为模2加减法)
定义1-5 一个分组码具有固定长度的码字集合构成,这些码字的固定长度称为分组长度,记为\(n\)。一个分组长度为\(n\)的分组码由一组有\(n\)个分量的码字集合构成。
定义在\(q\)个符号的字母集上的数目为\(M\)的分组码是\(M\)个\(q\)元序列的集合,每个序列的长度为\(n\)。对\(q=2\)的特殊情况,这些符号称为比特,而此码就成为二元码。通过对某个整数\(k\)有\(M=q^k\),我们称这样的码为\((n,k)\)码。
例如,定义一个可以表示两个比特的二元数字的编码规则:\(N=5\to k=2\)
上面规则决定了,码\(C=\{00000,10100,11110,11001\}\)是分组长度等于5的一个分组码。这里\(M=4\),\(k=2\),\(n=5\)。如果我们需要将一串序列做编码则过程为:
- 原始序列:1001010011……
- 两个比特一组分割:10 01 01 00 11 ……
- 对应码字替换:11110 10100 10100 00000 11001 ……
这样就实现了一个3冗余度的二比特信息编码过程。
定义1-6: 一个\((n,k)\)码的码率(Coding Efficiency,编码效率)的定义为比率\((k/n)\),它表示码字所含信息符号的分数(比例),是衡量编码有效性的基本参数。
因为有冗余度,所以码率总是小于1。
定义1-7: 一个码的最小距离(Minimum Distance)为任何两个码字之间的最小汉明距离。如果码\(C\)由码字集合\(\{c_i,i=0,1,\cdots,M-1\}\)中的码字组成,则最小距离为:
最小距离为\(d^*\)的码也可以记为\((n,k,d^*)\)码。
定义1-8: 一个码字的最小重量(Minimum Weight)是所有非零码字的最小重量,记为\(w^*\)。
定义1-9: 设发送码\(C:(c_{n-1},\cdots ,c_1,c_0)\),接收码\(R:(r_{n-1},\cdots,r_1,r_0)\),则定义信道的错误图样为\(E:(e_{n-1},\cdots ,e_1,e_0)\),其中:
由该定义可知\(R=C+E\),或者\(E=C-R\)。这里也是模2加减法。
定义1-10: 在错误图样中,若“1”集中与某个长度\(b\)内,则这种错误为长度为\(b\)的突发错误,其中\(b\)为突发错误长度,该图样为突发错误图样。
😰 3. 译码和编码规则
😩 3.1 有噪信道编码定理
对于有噪信道,只要通过足够复杂的编码方法,就能使信息率达到信道的极限通过能力——信道容量,同时使平均差错率逼近零。这一结论称为香农第二编码定理或有噪信道编码定理,是有关信息传输的最基本结论。
香农第二编码定理:若信道是离散、无记忆、平稳的,且信道容量为\(C\),只要待传送的信息率\(R<C\),就一定能找到一种信道编码方法,使得码长\(N\)足够大时,平均差错率\(P_e\)任意小。
香农第二编码定理实际上是一个存在性定理,它指出:在\(R<C\)时,肯定存在一种好的信道编码方法,能够编出一种好码,用这种好码来传送消息可使\(P_e\)逼近于零。
😭 3.2 译码规则
在一个二元对称信道中,单个符号错误传递概率为\(p\),单个符号的正确传递概率为\(1-p\)。错误概率和译码过程和译码规则的关系也很大。
假设有一个二元对称信道,符号输入等概分布,信道输出端的译码规则为:接收到0译为0,接收到1译为1。如果错误传递概率为\(p=0.9\),这样译码器的错误概率就是\(P_e=0.9\)。反之,如果译码规则为:接收到0译为1,接收到1译为0。则这样译码器的错误概率就是\(P_e=0.1\)。
得出一个结论:错误概率不仅与信道的统计特征有关,也与译码规则有关,不同的译码规则会引起不同的可靠程度。
设通过输入符号集为\(X=(a_i,i=1,2,\cdots ,r)\),输出符号集\(Y=(b_j,j=1,2,\cdots,s)\),信道的传递概率为:
若对每一个输出符号\(b_j\)都有一个确定的函数\(F(b_j)\),使\(b_j\)对应于唯一的一个输入符号\(a_i\)则称这样的函数为译码规则,即:
对与一个有\(r\)输入,\(s\)输出的信道而言,可以得到的译码规则有\(r^s\)种。
😪 3.2.1 错误概率
当确定了译码规则后,当信道输出符号为\(b_j\)则一定会译成\(a_i\)。如果发送端发的就是\(a_i\)则为正确译码,反之是其他的符号则为错误译码。用\(e\)表示除了\(F(b_j)=a_i\)以外的所有其他可能的输入符号的集合。下面的概率\(p\)代表传递概率,\(P\)代表译码概率。
经过译码后的条件正确概率为:
条件错误概率为:
平均错误概率为:
平均错误概率的含义是平均接受到一个符号经过译码后所参数错误概率的大小。我们把平均错误代码译码概率看做是衡量通信可靠性的标准。平均错误译码概率进一步可以表示为:
平均错误概率和信道输出随机变量\(Y\)的概率空间\(P(Y):\{p(b_1),p(b_2),\cdots,p(b_s)\}\)、信道的后验概率分布为\(P(X|Y):\{p(a_i|b_j)(j=1,2,\cdots,s;i=1,2,\cdots,s)\}\)以及人们规定好的译码规则\(F(b_j)=a_j\)有关。对于传递概率\(P(Y|X):\{p(b_i|a_j)(i=1,2,\cdots,s;j=1,2,\cdots,s)\}\)固定的给定信道来说,当信道的输入符号,即信源输出符号概率分布\(P(X):\{p(a_1),p(a_2),\cdots,p(a_r)\}\)确定后,随机变量\(Y\)的概率分布和后验概率分布也就确定了,这时平均错误概率就是唯一地由选择的译码规则所决定。
😵 3.2.2 译码规则
使平均错误概率\(P_e\)最小是选择译码规则的准则。
-
最大后延概率译码规则——理想观察者规则
选择译码函数\(F(b_j)=a^*\),使之满足条件
\[p(a^*|b_j)\ge p(a_i | b_j),\quad \forall i \]它是选择这样一种译码函数,对于每一个输出符号\(b_j~(j=1,2,…, s)\)均译成具有最大后验概率的那个输入符号\(a^*\),则信道译码错误概率会最小。但一般来说,后验概率应用起来并不方便,这时我们引入了极大似然译码规则。
-
极大似然译码规则
选择译码函数\(F(b_j)=a^*\),使之满足条件:
\[p(b_j| a^* )p(a^*)≥p(b_j| a_i)p(a_i),\quad \forall i \]当信道输入符号为等概分布时,可以写成:
\[p(b_j|a^*)≥p(b_j|a_i),\quad \forall i \]当信道输入符号为等概分布时,应用极大似然译码规则是最方便的。所用的条件概率为信道矩阵中的元素。
-
最大后延概率译码规则和极大似然译码规则是等价的
由最大后验概率译码规则可以很容易地推出极大似然译码规则。根据贝叶斯公式,最大后验概率公式可写为:
\[\frac{p(b_j|a^*)p(a^*)}{p(b_j)}\ge \frac{p(b_j|a_i)p(a_i)}{p(b_j)},\quad \forall i \]当输入为等概分布时,\(p(a^*)=p(a_i)\) 则有:
\[p(b_j|a^*)≥p(b_j|a_i),\quad \forall i \]
😫 3.2.3 平均错误概率
平均错误概率取决于给定信源和给定信道的统计特性,式(10)可进一步表示为:
若输入是等概分布,则:
在输入为等概分布的情况下,译码错误概率\(P_e\)取决于等概信源所含符号数\(r\)和信道的传递特性\(p(b_j|a_i)\),当\(r\)一定时,可以通过改变信道的传递特性,进一步降低平均错误概率。
😇 3.3 编码规则
选择最佳译码规则只能使错误概率\(P_e\)有限地减小,无法使\(P_e\)任意小,必须通过信道编码的方式进一步减小错误概率。设\(p\)是单个符号错误传递的概率,\(\bar p\)是单个符号正确传递的概率。
最佳译码规则为:
当输入为等概分布时,平均错误概率为:
若采用简单的重复编码,当信源符号为0/1时,重复发送三个0/1,则这种信道称为二元对称信道的三次扩展信道。如果在输入为等概情况下,采用“择多译码”的译码规则,则相应的错误概率为:
这样平均错误概率比不进行信道编码时要降低两个数量级。如果进一步增大重复次数\(n\),则会继续降低平均错误概率\(P_e\),当\(n=5\),\(P_e\approx 10^{-4}\);\(n=9\),\(P_e\approx 10^{-8}\);\(n=11\),\(P_e\approx 5\times 10^{-10}\)。当然这样编码的效率就降低了。
定义1-11: 设信道的输入消息数维\(M\),信道随机编码的码字长度为\(N\),当信道的\(M\)个输入消息先验等概时,随机编码的每一符号所携带的平均信息量,即码率为:
随机编码的有效性取决于信道的输入消息数\(M\)和码字长度\(N\)。即有效性可通过选择适当的\(M\)和\(N\)来得以保证。离散无记忆信道的\(N\)次扩展信道有\(M\cdot 2^N\)个传递概率,为:
当\(M\)个信息先验等概的条件下,采用最大似然准则:
当有\(p<1/2\)且\(p\ll\bar p\)时,若\(D(\alpha^*,\beta_j)\ll D(\alpha_i,\beta_j)\),选择译码函数\(F(\beta_j)=\alpha^*\in\{\alpha_1,\alpha_2,\cdots ,\alpha_M\}\)。将于\(\beta_j\)汉明距离最近的\(\alpha_i\)译作\(\beta_j\)原码,即选择译码函数:
等概输入当误码率较低时,基于汉明距离的最小近邻译码规则等价于极大似然译码规则。最大似然准则即将输出序列翻译成与之汉明距离最小的信息,也就是翻译成与之最相似的输入信息:
对于上式,\(D(\alpha_i,\beta_j)\)为不同码之间的码距,其越大\(P_{e,\min}\)越小;\(D(\alpha^*,\beta_j)\)为收到的码与译码之间的码距,其越小\(P_{e,\min}\)越小。信道编码的任务是保持码率在一定水平(\(M\)和\(N\)不变)前提下,采用正确的方法选择\(M\)个码字,使最小平均错误译码概率尽可能小。挑选编码时要保证\(M\)个不同码字之间越不相似越好。
🌟 3.4 纠错编码的本质
纠错编码的本质是通过在发送端的码字中引入可控的冗余度换取传输可靠性的提高。以分组码为例,它获得纠、检错能力的本质,是由于加入了\(n-k\)个监督码元。\(k\)个码元的消息集合最多具有\(2^k\)个消息组合,同样,\(n\)个码元的码字集合最多具有\(2^n\)个消息组合,许用码组的个数为\(2^k\),而禁用码组的个数为\(2^n-2^k\)。若由于错误使接收到的码字落到了禁用码组里,就必然可以检测出来,同时也给纠正提供了可能,这取决于编码的结构。当然,如果由于错误而使接收到的码字落到了许用码组里,则无法判别是无错还是有错,从而造成不可检测的错误。
这种以注人冗余度来获取可靠性的方法,必然带来信息传输速率的降低。但根据香农第二定理,信息传输速率接近于信道容量且具有任意小错误概率的通信是存在的,即编码效率接近于1且又能使错误概率任意小的信道编码是存在的,这就给编码工作者提出了严峻的课题。人们发现的所谓“好码”,主要是在同样的编码效率下具有更高的纠错或检错能力。
💁 4. 性能评价
:person_frowning: 4.1 纠错编码方法的性能评价
码距与检纠错能力密切相关。用几何关系证明检纠错能力和最小码距之间的关系。
-
检测e个错码
为了检测\(e\)个错码,要求最小码距:
\[d_0\ge e+1 \]当最小码距为3,且不发生超过两个错码时,就可以检测两个一下的错码。同时若一种编码的最小码距为\(d_0\)。则其可以检测出\(d_0-1\)个错码;要求检出\(e\)个错码,就需要最小码距\(d_0\)不小于\(e+1\)。
-
纠正t个错码
为了纠正\(t\)个错码,要求最小码距:
\[d_0\ge 2t+1 \]只有这样才能使得两个相邻码组的判决圆不重合,能够实现码的纠正。若此编码中任何两个码组之间的码组之间的码距都不小于5,则只要错码不超过两个,就能够纠正。若错误数目达到3个(或以上),则将错到另一个码组的范围,故无法纠正。一般而言,为纠正\(t\)个错误,最小码距不应小于\(2t+1\)。
-
纠正t个错码同时检测e个错码
为了能纠正\(t\)个错码,同时检测\(e\)个错码,要求最小码距:
\[d_0\ge e+t+1,\quad(t<e) \]在某些情况下,要求对于出现较频繁但错码数很少的码字,按前向纠错方式工作,以节省时间,提高传输效率;同时又希望对一些错码数较多的码组,在超过该码的纠错能力后能自动按反馈重发的纠错方式工作,以降低系统的总误码率。这种纠错工作方式就是“纠检结合”。
🙉 4.2 纠错编码系统的性能
对于一个编码系统而言,为了减少错码,需要在信息中加入监督码元,序列增长冗余度增加。而要保持信息码元的速率不变,就需要提高系统传输速率,系统带宽增加,但是也会引起噪声功率增大,信噪比下降,接受码元中错码增加。所以综合算来采用纠错编码后得失如何需要进一步分析。
-
误码率性能与带宽的关系
在采用纠错编码后,虽然系统的带宽增大了,但是误码性能还是能得到很大的改善。改善程度自然和所用的编码体制有关。上图给出了某通信系统采用BPSK调制时的误码率曲线,以及采用某种纠错编码后的误码率曲线。由图可以看到,在未采用纠错编码时,若接收信噪比等于7dB,则误码率将约等于\(8×10^{-4}\)(图中A点);在采用这种纠错编码后,误码率降至约等于\(5×10^{-5}\)(图中B点)。这样,不要增大发送功率就能降低误码率约一个半数量级。在发射功率受到限制无法增大的场合,采用纠错编码的方法将是降低误码率的首选方案,这样做所付出的代价当然是带宽的增大。
-
功率与带宽的关系
由图还可以看出,若保持误码率在\(10^{-5}\)(图中C点)不变,未采用编码时,约需要\(E_b/N=9.5dB\);在采用这种编码时约需要\(7.5dB\)(图中D点),可以节省功率2dB,付出的代价仍然是带宽的增大。与纠错方法相比,采用检错方法,可以少增加监督位,从而少增大带宽。但是,延迟时间却增大了,即用时延来换取带宽或功率。对于一些非实时通信系统,这种方法不失为可选方案之一。
-
传输速率与带宽的关系
对于给定的传输系统,其传输速率和\(E_b/N\)的关系为:
\[\frac{E_b}{N_0}=\frac{P_sT}{N_0}=\frac{P_s}{N_0(1/t)}=\frac{P_s}{N_0R_B} \]式中,\(N_0\)为单边功率谱密度;\(E_b\)为信号码元能量;\(P_s\)为信号功率;\(T\)为码元持续时间;\(R_B\)为码元速率。
若希望提高传输速率Rs,由上式可以看出势必使信噪比下降,误码率增大。假设系统原来工作在图中C点,提高速率后由C点升到E点。但是,采用纠错编码后,仍可以将误码率降到原来的水平(D点),这时付出的代价仍是使带宽增大。 -
编码增益
在保持误码率恒定的条件下,采用纠错编码所节省的信噪比\(E_b/N_0\)。称为编码增益;通常用分贝表示,如下:
\[G_{dB}=(E_b/N_0)_u-(E_b/N_0)_c \]式中\((E_b/N_0)_u\)。为未编码时的信噪比(dB);\((E_b/N_0)_c\)为编码后所需的信噪比(dB)。上图的例子中,编码增益等于2dB。
对纠错编码的基本要求是:检错和纠错能力尽量强;编码效率尽量高;编码规律尽量简单。实际中要根据具体指标要求,保证有一定的纠、检错能力和编码效率,并且易于实现。