痞子衡嵌入式:常用的数据差错控制技术(0)- 索引

时间:2021-11-17 19:19:55

  大家好,我是痞子衡,是正经搞技术的痞子。本系列痞子衡给大家讲的是嵌入式常用的数据差错控制技术,共6篇文章,循序渐进地介绍6种常用的差错控制技术。

  通信发展史与数据编码技术发展息息相关,为了检测与纠正在通信中发生未知的数据错误,常常需要在原始数据编码时要引入一些技巧,这些技巧就是所谓的编码技术。仔细看下面这张图,想象自己就是其中的一个bit,是不是有身临其境地感受数据通信编码的感觉?是的话,欢迎阅读本系列文章。

痞子衡嵌入式:常用的数据差错控制技术(0)- 索引

  本系列文章选取了用于差错控制的六大经典的编码校验方式,在进入正文之前,我们先用一张表对比这六大校验技术差异:

校验法对比

校验方法 数据块大小 校验码长度 检错能力 纠错能力 适用场合 失效分析 行业应用
重复校验 n bits (q-1)*n bits
q为重复数
不限bit错误 x bits
但并不可靠
数据块小且对传输效率无要求 检错:重复码与原码出错bit位一致
纠错:错误码概率大于原码
增强实现版本用于FlexRay通信协议
奇偶校验 n bits 1 bit 奇数个bit错误 数据块小且一般只发生1bit错误 偶数个bit错误 串口UART通信协议
和校验 n bytes 1 byte 不限bit错误 数据块中等且错误bit较少 多个bit错误导致的增量和能整除0x100 hex, s-record文件
循环冗余校验 n bytes 1/2/4/8 byte 不限bit错误 设计初衷仅检错,原理上也可纠错(算法复杂) 数据块大且错误bit无规律 多个bit错误导致碰撞现象(即错误数据CRC与原数据CRC恰好相等) Modbus RTU模式,USB通信协议
汉明码校验 256/512 bytes 22/24 bits 2 bit错误 1 bit错误(仅发生1 bit错误时) 数据块较大但常只发生1/2 bit错误 多于2 bit错误 SLC NAND Flash ECC
BCH码校验 (m*k) bits
m组k位
(m*n) bits
n>k
(x+1) bit错误 x bit错误 数据块较大且容易发生多bit错误 多于(x+1) bit错误 SSD NAND Flash(MLC/TLC) ECC

正文六篇(持续更新中...)

常用的数据差错控制技术(1)- 重复校验(Repetition Code)
常用的数据差错控制技术(2)- 奇偶校验(Parity Check)
常用的数据差错控制技术(3)- 和校验(Checksum)

常用的数据差错控制技术(4)- 循环冗余校验(CRC)
常用的数据差错控制技术(5)- 汉明码校验(Hamming Code SEC-DED)
常用的数据差错控制技术(6)- 博斯-乔赫里-霍克文黑姆码校验(BCH Code)