提高汉明码对突发干扰的纠错能力

合集下载

汉明码编译码实验

汉明码编译码实验

汉明码编译码实验一、实验目的1.掌握汉明码2的编解码原理。

掌握汉明码的纠错和检测原理二、实验内容1.汉明码编码实验。

2.汉明码译码实验。

3、汉明码纠错检错能力验证实验。

三、实验设备lte-tx-02e通信原理综合实验系统----------------------------------------------模块8四、实验原理在随机信道中,错码的出现是随机的,且错码之间是统计独立的。

例如,由高斯白噪声引起的错码就具有这种性质。

因此,当信道中加性干扰主要是这种噪声时,就称这种信道为随机信道。

由于信息码元序列是一种随机序列,接收端是无法预知的,也无法识别其中有无错码。

为了解决这个问题,可以由发送端的信道编码器在信息码元序列中增加一些监督码元。

这些监督码元和信码之间有一定的关系,使接收端可以利用这种关系由信道译码器来发现或纠正可能存在的错码。

在信息码元序列中加入监督码元就称为差错控制编码,有时也称为纠错编码。

不同的编码方法有不同的检错或纠错能力。

有的编码就只能检错不能纠错。

那么,为了纠正一个错位码,至少应该向块码中添加多少监督位?编码效率可以提高吗?基于这一思想的研究催生了汉明码。

汉明码是一种线性分组码,它能纠正位错码,编码效率高。

接下来,我们介绍了汉明码的构造原理。

一般说来,若码长为n,信息位数为k,则监督位数r=n?k。

如果希望用r个监督位构造出r个监督关系式来指示一位错码的n种可能位置,则要求2r?1.≥ n或2R≥ K+R+1下面我们通过一个例子来说明如何具体构造这些监督关系式。

在分组码(n,k)中设k=4。

为了纠正错位代码,从公式(14-1)中可以看出,监管数字R需要≥ 3.如果r=3,那么n=K+r=7。

我们用α6α5?α0代表这七个符号,S1、S2和S3代表三种监督关系中的校正器。

然后可以指定s1s2s3的值与错误代码位置之间的对应关系,如表14-1所示。

表14-1(14-1)s1s2s3001010100011错码位置αααα0123s1s2s3101110111000错码位置α4α5α6无错由表中规定可见,仅当一错码位置在α2、α4、α5或α6时,校正子s1为1;否则s1为0。

汉明码的编码和译码算法

汉明码的编码和译码算法

汉明码(Hamming)的编码和译码算法本文所讨论的汉明码是一种性能良好的码,它是在纠错编码的实践中较早发现的一类具有纠单个错误能力的纠错码,在通信和计算机工程中都有应用。

例如:在“计算机组成原理”课程中,我们知道当计算机存储或移动数据时,可能会产生数据位错误,这时可以利用汉明码来检测并纠错。

简单的说,汉明码是一个错误校验码码集,由Bell实验室的R.W.Hamming发明,因此定名为汉明码。

如果对汉明码作进一步推广,就得出了能纠正多个错误的纠错码,其中最典型的是BCH码,而且汉明码是只纠1bit错误的BCH码,可将它们都归纳到循环码中。

各种码之间的大致关系显示如下。

一、汉明码的编码算法输入:信源消息u(消息分组u)输出:码字v处理:信源输出为一系列二进制数字0和1。

在分组码中,这些二进制信息序列分成固定长度的消息分组(message blocks)。

每个消息分组记为u,由k个信息位组成。

因此共有2k种不同的消息。

编码器按照一定的规则将输入的消息u转换为二进制n 维向量v ,这里n >k 。

此n 维向量v 就叫做消息u 的码字(codeword )或码向量(code vector )。

因此,对应于2k 种不同的消息,也有2k 种码字。

这2k 个码字的集合就叫一个分组码(block code )。

若一个分组码可用,2k 个码字必须各不相同。

因此,消息u 和码字v 存在一一对应关系。

由于n 符号输出码字只取决于对应的k 比特输入消息,即每个消息是独立编码的,从而编码器是无记忆的,且可用组合逻辑电路来实现。

定义:一个长度为n ,有2k 个码字的分组码,当且仅当其2k 个码字构成域GF(2)上所有n 维向量组成的向量空间的一个K 维子空间时被称为线性(linear )(n, k)码。

汉明码(n ,k ,d )就是线性分组(n, k)码的一种。

其编码算法即为使用生成矩阵G :v = u ·G 。

遥控起爆器的汉明码纠错应用研究

遥控起爆器的汉明码纠错应用研究
的码 字 , C=m0 G=( 8C , 6C , , 3m2 则 C ,7 c , 5m4m , ,
m ) G为生成矩阵, 。, 本文采用的 G如式 ( ) 1 所示 : j
1 0 0 0 0 1 1 1 0 1 0 0 1 0 1 1

3 O・




E poi ae a xls eM tr l v is
第4 l卷第 3期
为 了测 试汉 明码 的有 效 性 , 据遥 控 起 爆 器 的 根 原理搭 建 了一个 简单 的测 试 系 统 , 结构 如 图 2所 其
示。
图 2 测 试 系 统 结 构 图
2 系统 测试
发通信及处理 都以字节为单位进行 , 以采用 ( , 所 8
4 汉 明码 , 以很方便地对高、 4位信息分别编 ) 可 低 译码 。
1 1 编 码 .

设 m=(",/ m ,/ 为信 息位 , / t , 2F ) 7 ' /t , , 4 3 t ' , 1 c为编码后
引言
遥控起爆器对数据传输的准确性有着极高的要 求。然而电磁波在传输过程中能量会损耗 , 传播距 离越 远 , 耗越 大 ; 且 受 多普 勒 频 移 、 损 并 阴影 效 应 和 多径效 应 等影 响 , 产 生码 间干 扰 和 信 号 失 真 。这 会
些 现 象会极 大 地影 响 通 信质 量 , 了保 证 遥 控 起 爆 为 器可靠 工作 , 应使 用 纠错 编码 [ 。 1
21 0 2年 6月
遥控起爆器 的汉 明码 纠错 应用研究
郭天天等
・ 9・ 2
遥 控 起 爆 器 的汉 明码 纠错 应 用研 究
郭天天 杜耀志 尹江健 沈 青

纠错编码的方法(一)

纠错编码的方法(一)

纠错编码的方法(一)纠错编码1. 概述纠错编码是一种通过在数据中添加冗余信息来检测和纠正错误的技术。

它在通信和存储系统中起到了至关重要的作用,能够提高数据的可靠性和完整性。

下面将介绍几种常见的纠错编码方法。

2. 奇偶校验码奇偶校验码是一种简单的纠错编码方法。

其基本原理是通过在数据末尾添加一个奇偶位,使得数据中1的个数为奇数或偶数。

接收端在收到数据后,重新计算奇偶位,并与接收到的奇偶位进行比较,如果不相等,则表示数据出现了错误。

3. 海明码海明码是一种更高级的纠错编码方法,通过在数据中添加多个冗余信息位来检测和纠正错误。

海明码可以检测和纠正单个错误,并且对于多个错误也有一定的纠正能力。

它的主要原理是通过校验位的方式来检测和纠正错误。

海明码的生成方法和校验方法较为复杂,但其纠错能力极高,广泛应用于存储系统和通信系统中。

RS码(Reed-Solomon码)是一种广泛应用于数字通信和存储系统中的纠错编码方法。

RS码能够纠正多个错误,并且对于多个错误的纠正能力非常强大。

RS码的原理是将数据划分为一定长度的块,然后为每个数据块添加一定数量的冗余信息。

接收端在接收到数据后,使用纠错算法来检测和纠正错误。

5. BCH码BCH码(Bose-Chaudhuri-Hocquenghem码)是一种常用的纠错编码方法,其特点是纠错能力强,能够纠正多个错误。

BCH码的原理是将数据划分为一定长度的块,并为每个块添加一定数量的校验位。

接收端对收到的数据进行校验,如果检测到错误,则使用纠错算法进行错误的定位和纠正。

6. LDPC码LDPC码(Low Density Parity Check码)是一种近年来发展起来的一种纠错编码方法,被广泛应用于通信系统中。

LDPC码的特点是纠错能力强,编码和解码的计算复杂度相对较低。

LDPC码的原理是将数据编码为稀疏校验矩阵的形式,通过稀疏矩阵的特性来进行纠错。

纠错编码是一种在通信和存储系统中广泛应用的技术,能够提高数据的可靠性和完整性。

matlab(74)汉明码和(74)循环码的编程设计

matlab(74)汉明码和(74)循环码的编程设计

二、创新实验设计创新实验一:(7,4)汉明码的编码与译码实现1、实验目的实现(7,4)汉明码的编码与译码,通过这次实验不但加深了对汉明码编码和译码原理了解,而且对线性分组码有所了解。

2、实验原理线性分组码的构造方式比较简单、理论较为成熟,应用比较普遍。

汉明码是一种能够纠正一个错码的效率比较高的线性分组码,下面以(7,4)码为例就汉明码的编码与译码别离进行介绍:(1)编码原理一样来讲,假设汉明码长为n ,信息位数为k ,那么监督位数r=n-k 。

假设希望用r 个监督位构造出r 个监督关系式来指示一名错码的n 种可能位置,那么要求21r n -≥或211rk r -≥++ (1)设汉明码(n,k )中k=4,为了纠正一名错码,由式(1)可知,要求监督位数r ≥3。

假设取r=3,那么n=k+r=7。

如此就组成了(7,4)码。

用6543210a a a a a a a 来表示这7个码元,用123s s s 的值表示3个监督关系式中的校正子,那么123s s s 的值与错误码元位置的对应关系能够规定如表1所列。

表2.1 校正子和错码位置的关系那么由表1可得监督关系式:16542s a a a a =⊕⊕⊕ ()226531s a a a a =⊕⊕⊕()336430s a a a a =⊕⊕⊕ ()4在发送端编码时,信息位6543a a a a 的值决定于输入信号,因此它们是随机的。

监督位2a 、1a 、a 应依照信息位的取值按监督关系来确信,为使所编的码中无错码,那么123,,S S S 等于0,即65426531643000(5)0a a a a a a a a a a a a ⊕⊕⊕=⎧⎪⊕⊕⊕=⎨⎪⊕⊕⊕=⎩方程组(5)可等效成如下矩阵形式6543210111010001101010010110010a a a a a a a ⎡⎤⎢⎥⎢⎥⎢⎥⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎢⎥⎢⎥⎢⎥⎣⎦(6)式(6)可简化为0T T HA =,H 为监督矩阵,那么由式(6)可取得监督矩阵11101001101010=[P I ] (7)1011001r H ⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦因为生成矩阵'=[I Q]=[I ]k k G P ,因此由(7)得生成矩阵G 如下:[]k 10001110100110[']00101010001011k G I Q I P ⎡⎤⎢⎥⎢⎥===⎢⎥⎢⎥⎣⎦然后利用信息位和生成矩阵G 相乘产生整个码组,即有[][]65432106543=(8)A a a a a a a a a a a a G=其中A 为整个码组矩阵,6543a a a a 是信息位。

信息论与编码第八章1

信息论与编码第八章1
HG Q
T
H=[ Q I ] G=[ I P]
I I T Q P T 0 P
只有当PT=Q或P=QT时等式才成立。

(6,3)线性分组码,其生成矩阵是
1 1 1 0 1 0 G 1 1 0 0 0 1 0 1 1 1 0 1
定义8.2 对于2k个n长码字全体构成的分组码, 其码字中的k位称为信息位,n-k位称为校验位 或监督位。
线性分组码:监督元与信息元之间的关系可用 一组线性方程组来描述的(n, k)分组码。
编码效率:一个组中信息所占的比重。
k R n
– k:信息码元的数目 – n:编码组码元的总数目 – r:监督码元的数目
n = k+ r
定义8.3若(n,k)分组码中k个信息位同原始k 个信息位相同,且位于n长码字的前(或后)k位, 为校验位位于其后(或前),则称该分组码为系 统码,否则为非系统码。 定义8.4两个序列之间的汉明距离定义为两个序 列之间对应位不同的位数。 例如:α和β为码组X中的两个不同码字,X为一 个长度为N的二元码组,其中:
第8章 纠错编码
8.1纠错编码的基本概念 8.2纠错编码的分类 8.3线性分组码
8.4循环码
8.1 纠错编码的基本概念
• 信源编码提高数字信号有效性 将信源的模拟信号转变为数字信号 降低数码率,压缩传输频带(数据压缩) • 信道编码提高数字通信可靠性 数字信号在信道的传输过程中,由于实际信道的 传输特性不理想以及存在加性噪声,在接收端往 往会产生误码。 目的在于提高通信(或存储)的可靠性,减 低误码率。
令 H=
1 1 1 0 0 1 1 1 1 1 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1

信息论与编码纠错第7章

信息论与编码纠错第7章
消息集: u0,u1, ,uk-1 ui F2 序列个数:2k
设长为n的二元码元序列集为:
c0,c1, ,cn-1 n k
序列个数:2n ≥2k
1.分组编码:
在长为n的二元序列集中 c0,c1, ,cn-1 选出与消息序列数2k相同数
目的码元序列,并使两者一一对应。
几个概念:
r c0
2.汉明距离的性质
① 自反性: a Vn (F2 ),d(a,a) 0
② 对称性: a,b Vn (F2 ),d (a,b ) d (b,a)
③ 三角不等式:a,b,c Vn (F2 ) d (a,b ) d (b,c ) d (a,c )
二.分组码的检、纠错能力与最小汉明距离之间的关系

收到接收字 r 后,通过计算
字 的c j 汉明距离最小,则
r与各码字 c之i 间的汉明距离,如 与r码字 最c像j ,译码器将 译r成
r。r与c某j 一码
② 极大似然译码基础:收到的字是从一个码字经错传尽可能少的位而来的 可能性较从一个码字经错传较多的位而来的可能性要大。故通过判断汉明 距离来译码,符合极大似然译码规则。
0
1 - pe
0
pe
pe
1
1 - pe
1
有记忆信道中,各种干扰所造成的错误往往不是单个地,而是成群、成 串地出现,表现出错误之间有相关性,称为突发错误。下图就是这种信道的 一个模型。
1 - q1
S1
0
1 - p1
p1
p1 1
1 - p1
好好好
q1
q1 << q2
q2
S2
1 - q2
0
0
1 - p2
c1 f1 u0,u1, ,uk-1

hammin(汉明)码编码规则

hammin(汉明)码编码规则

计算机汉明码编码规则若编成的海明码为Hm,Hm-1…H2H1,则海明码的编码规律为:(1)校验位分布:在m位的海明码中,各校验位Pi分布在位号为2^(i-1)的位置,即校验位的位置分别为1,2,4,8,…,其余为数据位;数据位按原来的顺序关系排列。

如有效信息码为…D5D4D3D2D1,则编成的海明码为…D5P4D4D3D2P3D1P2P1。

(2)校验关系:校验关系指海明码的每一位Hi要有多个校验位校验,其关系是被校验位的位号为校验位的位号之和。

如D1(位号为3)要由P2(位号为2) 与P1(位号为1)两个校验位校验,D2(位号为5)要由P3(位号为4)与P1两个校验位校验,D3(位号为6)要由P2与P3两个校验位校验,D4(位号为7)要由P1,P2,P3三个校验位校验,……。

这样安排的目的是希望校验的结果能正确反映出出错位的位号。

(3)在增大合法码的码距时,使所有码的码距尽量均匀增大,以保证对所有码的校验能力平衡提高。

汉明距离在一个码组集合中,任意两个码字之间对应位上码元取值不同的位的数目定义为这两个码字之间的汉明距离。

即d(x,y)=∑x[i]⊕y[i],这里i=0,1,..n-1,x,y都是n位的编码,⊕表示异或例如,(00)与(01)的距离是1,(110)和(101)的距离是2。

在一个码组集合中,任意两个编码之间汉明距离的最小值称为这个码组的最小汉明距离。

最小汉明距离越大,码组越具有抗干扰能力。

下面我们用d表示码组的最小汉明距离。

1。

当码组用于检测错误时,设可检测e个位的错误,则d >=e + 1设有两个距离为d的码字A和B,如果A出现了e个错误,则A变成了以A为圆心,e位半径的球体表面的码字。

为了能够准确地分辨出这些码字既不是A也不是B,那么A误码后变成的球面上的点与B至少应该有一位距离(如果B在球面上或在球面内部则无法分辨出到底B是不是A的错误码),即A与B之间的最小距离d >= e+1。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

引言
汉明码是在原编码的基础上附加一部分代码,使其满足纠错码的条件。

它属于线性分组码,由于线性码的编码和译码容易实现,至今仍是应用最广泛的一类码。

汉明码的抗干扰能力较强,但付出的代介也很大,比如8比特汉明码有效信息只有总编码长度的一半,可以纠正1个差错发现2个差错。

在实际应用中常常存在各种突发干扰,使连续多位数据发生差错。

为了纠正3个以上的差错,就要加大码距,使代码冗余度大大增加,通信效率下降。

本文所介绍的方法,就可以在不加大码距的同时,提高汉明码对突发干扰所产生差错的纠错能力,纠正多位连续的差错。

1 汉明码纠错原理及设计
设原代码的码长为k比特,附加纠错编码部分为r比特,则合成后的纠错码为n=k+r比特。

如果这种纠错码的纠错能力为纠正1个差错,则应满足如下基本条件:
2r≥k+r+1
当上式取等号时则称汉明码(Hamming Code)。

干扰不仅使原代码的每一位(k比特(可能出错,而且附加纠错位(r比特)也可能出错,故“一个差错”的情况共有k+r种,加上“正常”状态共有k+r+1种状态,而r比特的附加纠错位要能分辨这k+r+1种状态。

汉明码是线性分组码,[n,k]线性分组码的编码设计就是在满足给定条件(如码距)下,如何从已知的k个信息元中求同r=n-k个校验元。

要计算出校验元,就要先求出汉明码校验矩阵。

我们可以从线性空间的角度去分析,推出一致校验矩阵。

这里给出构造“纠正1个差错发现2个差错”汉明码校验矩阵的简便方法。

以实际应用中经常使用的16位比特汉明码为例来说明。

15比特汉明码由11位信息位、4位校验位组成,因此,编码长度为 n=k+r=11+4=15。

我们把1,2,3,…,15化为二进制数,然后把它们作为矩阵的纵列,可得到的矩阵为:
将包含单个1的4个纵列移到右边,在最后加1列全0的纵列,在第1行上面加1行全1
的横行。

这样就得到了[16,11,4]可纠正1位错误发现2位错误的增广汉明码校验矩阵。


以根据编程要求组织信息位和校验位的位置,最后得到矩阵如下:
D1、D2、D4、D8是校验位,D16是全字节偶校验位,其余11位是信息位。

校验码分别是
C0=0AB61H,C1=0CDA2H,C2=0F1C4H,C3=0FE08H,C4=0FFFFH。

2 用汉明码对连续多位差错纠正的实现
要想在不加大码距的前提下,纠正连续多位差错,提高抵抗突发干扰的能力,可根据校验矩阵得出的汉明码重新进行组织排列。

以16比特的汉明码为例,把11个字节的数据编码为16个字节的汉明码后再按高低字节分成两组。

我们把每组字节8个汉明码的第1位分别取出,组成第1个字节。

然后,再把这8个字节汉明码的第2位取出,组成第2个字节。

依此类推,将这组8个字节汉明码处理完毕,得到新的8个字节编码,两组一共16字节。

我们可以看到这们排序后,每个字节包括原来8个汉明码的其中1位。

这样,如果一次突发干扰使某一编码字节连续8位都发生改变,实际是分别使原来8个汉明码的其中1位发生了改变。

只要在纠错前把受干扰的编码恢复为原来正常的排列顺序,就可通过计算校验码完成差错的定位及纠错。

如果有163个字节的原始数据,经编码后为240个字节的汉明码,那么如果把240个字节的汉明码的每一位都取出,分别组成15个字节的编码,这样是不是可以连续纠正15个字节的差错了呢?在实际应用中要分情况而定。

通信中,一般可分为异步、同步两种方式。

在异步传输中起始位和停止位是由硬件电路产生的,如果干扰使起始位或停止位发生了改变,那么即使程序有跨字节纠错的能力也是无用的。

对于同步方式则是可行的,因为在发送接收双方取得同步后,数据块的每个字符间取消了起始位和停止位。

常用的串口通信一般采用异步传输方式,能保证纠正连续1个字节的差错就可以了。

我们也要看到,这样处理后提高了汉明码对突发干扰差错的纠错能力,却牺牲了对随机干扰纠错能力。

因为这样对汉明码重新排序后,原来1个汉明码的各个位分布在不同位置的字节里,当有多个随机干扰出现时,可能使原来这个被拆开的1个汉明码多位出现差错。

因此采
用多少位的汉明码,如何对汉明码重新组织排列,要根据信道的特点来决定。

例如,一个数据通信信道经常会受到多个随机干扰的影响,那么我们就不必将汉明码拆开。

如果每次通信数据量不大,还可以缩短编码长度,比如采用[8,4,3]8比特汉明码。

这样虽然有效信息只是总编码长度的50%,但比起出现多个差错后而要求发送方重发数据要好。

3 软件实现
下面给出基于最常用的MCS-51单片机汇编语言的汉明码测试程序。

它的有效信息占到了总编码长度的70%,测试程序中自动生成11个字节的原始数据。

原始数据块的长度、存放地址可根据实际情况由用户自己确定,只要将本测试程序的汉明码编码、解码子程序嵌入用户应用程序中,就可直接使用。

源程序清单请见网络补充版()。

3.1 16位汉明码编码子程序
原始数据是11个字节,经过编码后是16个字节的汉明码。

图1是汉明码编码子程序流程图。

3.2 16位汉明码解码子程序
在解码之前可以人为地加入差错。

差错要控制在1个字节内,否则出错标志将置位,后续处理可根据实际应用情况确定。

图2是汉明码解码子程序流程图。

结语
本文针对汉明码在实际应用中对突发干扰所产生多位差错纠错能力低的缺点,提出了相应的解决方案。

此方法通过笔者的实际使用,证明了这种方案是可行的尤其对于一些无线数传设备,采用这种方案后可以有效纠正突发干扰所产生的差错。

相关文档
最新文档