数据校验码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
苏州大学计算机工程系 15
2010-9-22
循环冗余校验(CRC)码Ⅱ
例: M(x)= x3 + x2= 1100 M(x)x3= x6 + x5= 1100000 G(x)= x3 + x +1= 1011 M(x)x3 = 1100000 010 =1110+ G(x) 1011 1011 M(x)x3 +R(x)= 1100000 +010 = 1100010 编好的循环校验码称为(7,4)码,即n=7,k=4
2010-9-22 苏州大学计算机工程系 4
海明校验码(校验位数)
– 海明码需要几位校验码?
k—数据位的位数 校验位r 2 3 4 5 6 7 r—校验位的位数 总位数n 3 5~7 9~15 17~31 33~63 65~127
5
数据位k与校验位r的关系:2r ≥ k+r+1
数据位k 1 2~4 5~11 12~26 27~57 58~120
2010-9-22 苏州大学计算机工程系 16
循环冗余校验(CRC)码Ⅲ
CRC的译码与纠错 将收到的CRC码用约定 的生成多项式G(x)去除, 如果码字无误则余数应 位0,如果有某一位出错, 则余数不为0,不同位数出 错余数不同. 如果对余数补个0继续除 下去,我们将发现一个现 象:各次余数将按上表顺 序循环.
2010-9-22
苏州大学计算机工程系
海明校验码(校验位置)
– 校验位和数据位是如何排列的
校验位排列在 2i–1 (i =0,1,2,…)的位置上 例:有一个BCD码 为D4D3D2D1,由此生成一个海明 码 7 6 5 4 3 2 1 D4 D3 D2 P3 D1 P2 P1 22 21 20 有一字节的信息需生成海明码 D8 D7 D6 D5 P4 D4 D3 D2 P3 D1 P2 P1 8 4 2 1
苏州大学计算机工程系
13
1位纠错2位海明码的实现Ⅱ
上述这种码称为单纠错码(SEC)。通常半导 体存储器采用SEC-DED(单纠错-双检错码)。 双检错码与SEC相比需要增加1个附加位。 举例:见书Page39。 在IBM3000系列中,主存64位数据采用8位 SEC-DED码进行校验,占了12%的系统开销; VAX计算机中32位字长机器,采用7位SEDDED码,占了22%的系统开销
2010-9-22
苏州大学计算机工程系
14
循环冗余校验(CRC)码Ⅰ
CRC码的编码方法
– 模2加减: 异或逻辑— 0⊕0=0; 0⊕1=1; 1⊕0=1; 1⊕1=0. – 模2乘: 模2除:
1010 101 1010 0000 1010 100010 × 101 1 0 1/ 1 0 0 0 0 101 010 000 100 101 01
2010-9-22 苏州大学计算机工程系 8
1位纠错海明码的实现(续)
12 11 20 21 22 23 M8 M8 M7 M6 M5 P4 P1=M1 ⊕ M2 ⊕ M4 ⊕ M5 ⊕ M7 P2=M1 ⊕ M3 ⊕ M4 ⊕ M6 ⊕ M7 P3=M2 ⊕ M3 ⊕ M4 ⊕ M8 P4=M5 ⊕ M6 ⊕ M7 ⊕ M8 M7 M7 M6 10 9 M5 8 7 M4 M4 M3 M4 M3 M2 P3 6 5 M2 4 3 M1 M1 P2 2 1 P1
2010-9-22
苏州大学计算机工程系
19
作业
Page 104 30,31; 证明补码两位乘法规则。 解释下列概念:
位权,基数,机器零。
2010-9-22
苏州大学计算机工程系
20
6
5
4
3
2
1
22 D4 D3 D2 P3 21 D4 D3 20 D4 D2 D1 P2 D1 P1
最后 海明码为1010101
苏州大学计算机工程系 7
1位纠错海明码的实现
把M+K=m个数据=>HmHm-1...H2H1(海明码),每个校验 位Pi在海明码中被分配在2i-1位置上。 Hi由多个校验位校验:每个海明码的位号要等于参与 校验它的几个检验位的位号之和。 尽量增大合法码的码距。 举例:M=8,K=4,则海明码为:
18
生成多项式G(x)
生成多项式G(x)应能满足下列要求:
– – – – 任何一位发生错误都应使余数不为0. 不同位发生错误应当使余数不同. 对余树继续作模2除,应使余数循环. 例: x7+1=(x+1)(x3+x+1)(x3+x2+1)
G(x)=x+1=11 G(x)= x3+x+1=1011 G(x)= x3+x2+1=1101 G(x)=(x+1)(x3+x+1)=11101 (7,6)码,判一位错 (7,4)码,判二位错或纠一位错 (7,4)码,判二位错或纠一位错 (7,3)码,判二位错并纠一位错
如出现两位错,必须再增加一位奇偶校验位
1010
A
0 1 1 0
11010010
B A
10010011
A
0 1
B C A
0 1 1 1 0
B
1 1
B C
0 1
1 0 0
B
C
0 10110011
0
10010011
A
1
C
0 1 1 0 0
1
C
0 1 1 0 1
A
1
C
0 1 1 0 1
B
0 1
0 1
0
1
2010-9-22
H12H11H10H9H8H7H6H5H4H3H2H1 P4,P3,P2,P1根据规则,分别对应于:H8,,H4 ,, H2 ,, H1 这样,P1=M1 ⊕ M2 ⊕ M4 ⊕ M5 ⊕ M7 P2=M1 ⊕ M3 ⊕ M4 ⊕ M6 ⊕ M7 P3=M2 ⊕ M3 ⊕ M4 ⊕ M8 P4=M5 ⊕ M6 ⊕ M7 ⊕ M8
A1 正确 A7错 A6错 A5错 A4错 A3错 A2错 A1错 1 1 1 1 1 1 1 0
A2 A3 A4 A5 A6 A7 1 1 1 1 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 1 1 1 1 0 1 0 0 0 0 0 0
2010-9-22
苏州大学计算机工程系
9
海明码的纠错原理
海明码的接收端的公式:
– S3= P3⊕ D4⊕D3 ⊕D2 S2= P2⊕D4 ⊕D3 ⊕D1 S1= P1⊕D4 ⊕D2 ⊕D1 – 假定 海明码1010101在传送中变成了1000101 S3= P3⊕ D4⊕D3 ⊕D2=0⊕1⊕0 ⊕0 =1 S2= P2⊕D4 ⊕D3 ⊕D1=0⊕1⊕ 0 ⊕1=0 S1= P1⊕D4 ⊕D2 ⊕D1=1⊕1⊕ 0 ⊕1=1 因此,由S3S2S1= 101,指出第5位错,应由0变1
4位海明纠错码的纠错原理(文氏图)
A
1 1 1 0
B
A
1
1 0 1 1 0
B
偶校验 结果
C A
1
C
0 1 0 1 0 0
B
0 . .. C .. ... ….
A
1
C
1 0 1 1 0
B
纠正后 的结果
A
1
C
3 2 5 7 6
B
0
4
传送后1 传送后 位错
2010-9-22 苏州大学计算机工程系 12
1位纠错2位海明码的实现Ⅰ
1100110 1001101 0011011 0110110 1101100 0
2010-9-22
100 011 110 111 101
0101100 1011000 0110001 1100010 余数为101 余数为 最高位取反,纠错 最高位取反 纠错
苏州大学计算机工程系
101 继续循环 001 010 100 循环结束
余数 000 001 010 100 011 110 111 101
2010-9-22
苏州大学计算机工程系
17
CRC码的纠错方法
根据不同的余数来纠正不同的出错位 循环除法:
– – – – 余数添0继续除法,同时信息部分进行循环移位. 当最高位变成101时,则最高位取反,纠错. 继续余数除法,直至循环一遍,余数变成第一次的余数. 例A5出错
2010-9-22 苏州大学计算机工程系 10
校验位用文氏图计算举例
A即S1 即 B即S2 即
用文氏图计算举例
1 P1 5 D2
C即S3 即
3 D1
2 P2
7 6 5 4 3 2 1
D4 D3 D2 P3 D1 P2 P1
7 D4 6 D3 4 P3
2010-9-22
苏州大学计算机工程系
11
海明码的纠错原理(文氏图)
Lecture 2-3
数据校验码
2010-9-22
苏州大学计算机工程系
1
数据校验码
检错和纠错如图所示。 检错和纠错如图所示 如图所示。 通过函数f 对数据进行计算,以产生一种代码,代码和 通过函数 对数据进行计算,以产生一种代码, 数据都被存储,因此如果原来数据字长为M位 数据都被存储,因此如果原来数据字长为 位,校验 码长为K位 则实际存储的字长应该是M+K位。 码长为 位,则实际存储的字长应该是 位 当原先存储的字读出时,这个代码用于检错和纠错, 当原先存储的字读出时,这个代码用于检错和纠错, 位数据中产生一组新的K位代码 在M位数据中产生一组新的 位代码,与取出的代码 位数据中产生一组新的 位代码, 进行比较: 进行比较: – 结果一致,无差错,取出的数据位传送出去; 结果一致,无差错, – 检测到差错,并可以纠正,数据位和纠错位一起送 检测到差错,并可以纠正, 入纠正器,然后产生一组正确的M位数据位 位数据位; 入纠正器,然后产生一组正确的 位数据位; – 检测到差错,但无法纠正,报告出错 检测到差错,但无法纠正,
2010-9-22
苏州大学计算机工程系
2
奇偶校验码
编码方法:
– 不管数据位长度多少,校验位只有一位。 不管数据位长度多少,校验位只有一位。 – 数据位和校验位一起所含“1”的个数,只能是奇数,称为奇 数据位和校验位一起所含“ 的个数 只能是奇数, 的个数, 校验。 校验。 – 数据位和校验位一起所含“1”的个数,只能是偶数,称为偶 数据位和校验位一起所含“ 的个数 只能是偶数, 的个数, 校验。 校验。 – 例:数据 奇校验的编码 偶校验的编码 00000000 100000000 000000000 01010100 001010100 101010100 001111111 101111111 01111111 – 校验 对奇校验,如接收端收到是偶码,表示传送有误,因此 校验:对奇校验 如接收端收到是偶码,表示传送有误, 对奇校验, 可发现一位错(奇位错 奇位错) 可发现一位错 奇位错
2010-9-22 苏州大学计算机工程系 3
1位纠错海明码(原理)
海明校验码不仅能发现出错,而且还能 指出哪一位出错。 设有R位校验位,则共有0到2R-1个共2R 个组合。若用0表示无差错,则剩余2R-1 个值表示有差错,并指出错在第几位。 由于差错可能发生在K个数据位中或R个 校验位中,因此有: 2R–1≥R+K
苏州大学计算机工程系
百度文库
2010-9-22
6
校验位取值公式及计算举例
海明码的校验位Pi和数值位Di的关系
– 例:BCD码为1011
7 P3= D4⊕D3 ⊕D2 0= 1 ⊕0 ⊕1 P2= D4 ⊕D3 ⊕D1 0= 1 ⊕0 ⊕1 P1 = D4 ⊕D2 ⊕D1 1= 1 ⊕1 ⊕1
2010-9-22
相关文档
最新文档