ECC, Hamming Distance, Odd-weight-column SEC-DED Code

本文详细介绍了错误检测/纠正码的基本概念,重点探讨了汉明距离、SEC-DEC码(单比特纠错-两比特检错码)的原理,以及如何通过汉明距离构建SEC-DEC码。同时,文章还讨论了如何使用奇偶校验码进行错误检测,以及如何通过构造odd-weight-column码来优化SEC-DEC码的计算速度。
摘要由CSDN通过智能技术生成

本文目的

理解什么是汉明距离,SEC-DEC 码和汉明距离的关系,如何从直觉构造 SEC-DEC 码,如何构造 odd-weight-column 码来降低关键路径延时。

错误检测/纠正码

如果在传输数据过程中,额外添加一些比特,在数据传输或者存储过程中出现错误,能够进行检测和纠正,对应的编码就是错误检测码或者错误纠正码。

奇偶校验码

最简单的错误检测机制就是奇偶校验码,通过计算数据比特中 1 的总数是奇数还是偶数实现错误检测。例如,对于 4 比特数据 4'b1001,“1” 的个数为2,那么对应校验码为 1 ^ 0 ^ 0 ^ 1 = 0。这个校验码会跟随数据存储或者传输。在接受到或者读出数据时,重新对数据做一次校验,和接受到或者读出的校验码比较,如果不同,那么数据有错误。例如读出数据为4'b1101,对应校验码应为 1 ^ 1 ^ 0 ^ 1 = 1,但是存储的校验码为 0,所以数据有错误。

奇偶校验码只能检测奇数个比特出现错误,并且无法指出错误发生的位置,也就无法纠错。但是由于实现电路简单,时序不长,所以当数据位宽比较少,或者需要快速检错的时候常使用奇偶校验,例如缓存中的 tag 常用奇偶校验机制保护。

单比特纠错 - 两比特检错码(SEC-DEC,Single Error Correction and Double Error Detection) 和汉明距离(Hamming Distance)

汉明距离

汉明距离标记两个编码之间的差异。

  • 例如 8'b0100_1011 和 8'b0101_1001 有两个比特不同,那么汉明距离就是2。

SEC-DED 与汉明距离的关系

如果希望实现SEC(Single Error Correction),那么两个没有错误的编码之间最小汉明距离为3. 如果希望实现SEC-DED(Single Error Correction, Double Error Detection),那么两个没有错误的编码之间最小汉明距离为4。

code_wo_error_A <--> code_w_error_A <--> code_w_error_B <--> code_wo_error_B

对于 SEC 编码,code_wo_error_A code_wo_error_B 之间有两个编码,那么的汉明距离就是 3 (从code_wo_error_A code_wo_error_B 需要反转 3 个比特)。假如 code_wo_error_A 发生了 1 比特错误,变成了code_w_error_A,就可以推断出正确值应该是 code_wo_error_A

code_wo_error_A <--> code_w_error_A <--> code_w_error_A_B <--> code_w_error_B <--> code_wo_error_B

对于 SEC-DED 编码,code_wo_error_A code_wo_error_B 之间有三个编码,那么的汉明距离就是 4 (从code_wo_error_A code_wo_error_B 需要反转 3 个比特)。假如 code_wo_error_A 发生了 1 比特错误,变成了code_w_error_A,就可以推断出正确值应该是 code_wo_error_A

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值