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

199 阅读3分钟

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

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

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

校验法对比

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

正文篇(持续更新中...3/6)

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

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