块码(block code),是信道编码(channel coding)技术的一种。它在传送端传送的原始讯息中,以比特率不会超过信道容量为前提下,加入额外的比特,使接收端能够以较小的错误率解码。
基本介绍
- 中文名块码
- 外文名block code
定义
如果要编码的信息可以被划分成若干个k位二进制数字的块,每个块可以被编码成n位二进制数字,那幺这种编码方式就是(n,k)- 块码。
更具体地,一个(n,k)-块码包含了一个编码函式:
以及一个解码函式:
码字是E的值域中任意一个元素。 我们也要求E是一个一一映射的函式,这样可以保证不存在两个信息块被映射到同一个码字中。
背景
块码是早期通信系统系统中主要使用的信道编码方式,创立块码的主要目的是希望能帮助用户解决接收数据时任何可能的错误,而不需要联繫数据的来源方。在编码理论中,块码是以块为单位编码数据的一种编码方式。 块码的概念使得编码理论家,数学家和计算机科学家以统一的方式研究所有块码的限制。 这样的限制通常採取将块代码的不同参数相互关联的形式,例如其速率及其检测和纠正错误的能力。
例子
美国数学家理察·汉明(Richard Hamming)在1950年为开创码块的过程中有着巨大的作用,有一种块码被命名为“汉明码”。
还有一些常见的块码Reed–Solomon码,Hadamard 码,Expander 码,Golay 码,Reed–Muller码。这些编码方式也属于线性码,更一般地这些编码也被称为代数块码,因为它们可以用布尔多项式生成。
块码的相关概念
字母Σ
要编码的数据流被建模为一些字母表上的字元串 。尺寸 字母表经常写为 q。如果q=2,则块码被称为二进制块码。
讯息长度k
k称为块代码的讯息长度或维度。
块长度n
n称为块的长度。
汉明距离
两个n比特二进制序列v1h和v2之间的汉明距离 就是v1和v2之间不同比特的个数。例如,假设v1=011011, v2=110001,那幺 =3。
距离d
块码的距离(或最小距离)d是其中任何两个不同的码字的不同位置数的最小值,相对距离 是d/n。形式化地描述,块码C最小距离的定义是 因为任何编码的编码函式都要求是单射的,所以任何编码的最小距离至少是1。,距离还等于线性块码的最小权(码字中1的个数),因为
冗余度
冗余比特与数据比特数的比率(n-k)/k称为编码的冗余度。
编码率
数据比特与总比特数的比率k/n称为编码率(code rate)。
流行的标记
代表着一种块码,它的字母表大小为q,块的长度为n,讯息长度为k以及距离为d。如果分组码是线性分组码,则符号中的括弧就用方括弧表示 。对于q=2的二进制码,下标往往会忽略。对于最大距离可分码,距离永远是 ,但有时精确的距离是未知的、无法证明或表示,或不需要的,在这种情况下d这个成分往往会被忽略。
错误修正
码字 可以被认为是一个n维度空间中的点和代码 C是 子集 。C与(最小)距离 d 具有以下属性1、可以检测 d-1 位错误。因为码字之间的距离为d,所以如果发生1~d-1位的错误的话,接受到的编码会不在C中,即检测到错误。
2、可以纠(d-1)/2位错。将d-1分开,对于落在两个半区中的编码,将其译为最接近的码字。因为码字之间的距离为d所以解码函式是一一映射的,即这种解码方式是合法的。
3、如果要求纠正t个错码,检测e个错码,那幺最小码距应为 。
例如,下图中码组A和B之间距离为5。按照检错能力公式,最多能检测4个错码,即e = d – 1 = 5 – 1 = 4,按照纠错能力公式纠错时,能纠正2个错码。,不能作到两者,因为当错码位数超过纠错能力时,该码组立即进入另一码组的圆内而被错误地“纠正”了。例如,码组A若错了3位,就会被误认为码组B错了2位造成的结果,从而被错“纠”为B。这就是说,检错和纠错公式不能成立或运用。
对于块码我们一般採取最大似然解码方式将出现错误的码字译为距离它最近的码字。
块码的上下界
编码的族
被称为编码的族,其中 是 码, 单调递增。 为编码c的族的速率(rate). 是编码C的族的相对距离。探寻 和 的关係,我们可以得到块码的上下界。
汉明界
Singleton界
singleton界要求块码的相对距离和速率之和不能大于1,换句话说就是块码满足不等式 。Reed–Solomon码就是一个满足singleton不等式的例子。
Plotkin界
对于q=2 的块码, 对于一般情况,有
Elias–Bassalygo界
块码设计
1、对于给定的n和k的值,我们希望 的值儘可能达到最大。
2、编码的设计应当做到编解码过程相对简单,需要使用的记忆体和处理时间儘可能小。
3、我们希望附加比特数(n-k)比较少,以减少频宽。
4、我们希望附加比特数(n-k)比较多,以减少差错率。
显然两个目标是互相冲突的,所以我们在设计的时候需要折中地考虑。
编码机制的效率
在右图中,右边的曲线是无编码的调製系统,曲线左边部分代表能够改进的部分。在这个区域中对于给定的 (每比特信号能量与每赫兹噪声功率密度的比值)也更小。另一条曲线是典型的编码率为1/2(数据比特和检验比特数量相等)的系统。当差错率为 时,编码的套用使 减少了2.77dB。这个减少量称为编码增益(coding gain),它的定义是如果使用相同的调製方法,要达到指定的BER,有纠错码的系统与无纠错码的系统相比较,所要求的 值的减小量(dB为单位)。
第二条编码率为1/2的曲线BER指的是未纠正的差错, 的值是每个数据比特的能量。因为编码率为1/2,所以在信道上每两个比特代表一个数据比特,即每个编码后的比特的能量是每个数据比特能量的一般。
我们也可以看到当 小于某个阀值后,这个编码机制反而降低了系统的性能。因为当 很小后,附加的检查比特会给系统造成额外的负担,它使得每个数据比特的能量减少过多,且引起差错的增加。