检错码和纠错码讲解 通信中数据发生错误接收方如何判决
在数字通信系统中,模拟信号将转变为数字序列。
这种位序列被称为"数据流",传输过程中某个比特可能就会发出错位,1个比特的错误也会导致数据输出的灾难性(重大)误差。
图1 传输的01比特流
几乎在所有的电子设备中,我们都会发现错误,所以我们使用差错检测和校正技术来获得精确的输出。
常见的错误方式数据在传输期间(从发射器到接收器)可能被损坏。它可能受到外部噪音或其他信道的影响。在这种情况下,输入数据与接收到的输出数据不相同。这种不匹配的数据被称为"错误"。
数据错误将导致重要/安全数据的丢失。即使是数据中的一点变化也可能影响整个系统的性能。通常,数字系统中的数据传输将以比特传输的形式进行,在这种情况下,数据错误可能在0和1上发生。
图2 通信传输过程
在数据序列中,如果1改为0或0更改为1,则称为"位错误"。在从发射机到接收机的数据传输中,通常会出现3种类型的误差,它们是:
- 单比特错误Single bit errors
- 多位错误Multiple bit errors
- 突发错误Burst errors
整个数据序列中一位比特的变化称为"单比特错误"。在串行通信系统中,单比特错误的发生概率相对较少。这种错误通常发生在并行通信系统中,由于数据在单线上以位的方式传输,每条单线上有可能产生噪声。
图3 单比特错误
多比特错误Multiple bit errors如果发送器到接收机的两个或多个数据序列发生变化,则称为"多比特错误"。这种错误既发生在串行型数据通信网络中,也发生在并行型数据通信网络中。
图4 多个比特错误
突发错误Burst Errors数据序列中比特集合的变化称为突发错误。计算突发误差,要从改变的第一位bit到最后一位改变的bit。
图5 突发的比特错误
在图5,第4位和第6位之间的数字也被认为是误差。这些位被称为"突发错误"。这些突发比特在发送器和接收机之间都会发生变化,这可能会导致数据序列中的一个重大错误。这类错误发生在串行通信中,很难解决。
差错检测码Error Detecting Codes在数字通信系统中,误差随数据从一个通信系统传输到另一个通信系统。如果没有检测和纠正这些错误,传输的数据将会丢失。为了进行有效的通信,数据的传输应该是高度精确的,可以通过检测错误,然后再进行修正来实现。
差错检测是指在通信系统中,对从发射机发送到接收机的数据中存在的误差进行检测的过程。我们使用一些冗余码来检测这些错误,在从源(发送器)发送数据时增加数据。这些代码被称为"错误检测代码"。
差错检测编码有许多中,今天给大家介绍三种简单的,也是经典的三种:
- 奇偶校验Parity Checking
- 循环冗余校验(CRC)
- 纵向冗余校验(LRC)
奇偶校验位是发送数据之前添加到发送器数据中的附加比特。
在添加奇偶校验位之前,计算数据中1或0的数目。然后,中添加一个额外的位。
图6 奇偶校验
在数据中添加奇偶校验位将导致数据字符串长度的变化。如果我们有一个7位数据,那么在向数据二进制字符串中添加一个奇偶校验位之后,它将变成一个8位二进制数据字符串。
奇偶校验也称为"垂直冗余检查(VRC)"。有两种类型的奇偶校验位,它们是
偶校验:
如果数据中1的个数为偶数,则奇偶校验位为0。例如:10000001>奇偶校验位0。
如果数据中1的个数为奇数,则奇偶校验位为1。例如:10010001>奇偶校验位1。
偶校验的作用就是:加上奇偶校验位后,1的个数均为偶数个。
奇校验:
如果数据中1的个数为奇数,则奇偶校验位为0。例:10011101->奇偶校验位0。
如果数据中1的个数为偶数,则奇偶校验位为1。例:10010101->奇偶校验位1。
奇校验的作用就是:加上奇偶校验位后,1的个数均为奇数个。
将奇偶校验比特添加到发射机数据的电路称为"奇偶发生器"。奇偶校验比特被发送并在接收器处被检查。如果发射机处发送的奇偶校验比特与接收端接收的奇偶校验比特不相等,则检测错误。在接收端检测奇偶校验的电路称为"奇偶校验器"。
图7 奇偶校验举例
Cyclic Redundancy Check (CRC)循环冗余校验(CRC)也是多项式编码Polynomial Code
多项式编码的思想是:将位串看成是系数为0或1的多项式。CRC校验保护的单位是数据块。数据块的大小根据实际情况而定。每一个数据块均被看作是一个二进制多项式,即所有系数均为二进制(即1或0)的多项式。
当使用多项式编码时,发送方和接收方必须预先商定一个生成多项式(Generator Polynomial)G(x)。生成多项式的最高位和最低位必须为1。
从性能上和开销上考虑,CRC均远远优于奇偶校验及算术和校验等方式。因而,在数据存储和数据通讯领域,CRC无处不再:WinRAR,通用的图像存储格式GIF、TIFF都用CRC作为检错手段。
将待发送的位串看成系数为0或1的多项式
收发双方约定一个生成多项式G(x),其最高阶和最低阶系数必须为1.
发送方用位串及G(x)进行某种运算得到校验码,并在帧的膜外加上校验码,使带校验码的帧的多项式能被G(x)整除。
接收方收到信息后,用G(x)除多项式,若有余数,则传输有错。
图8 CRC生成的过程
举一个栗子,见图8
发送数据1001。
生成多项式G(x)=x^3 x 1,4个比特bits。
将要发送的数据系列左移3位,新的序列为1001000。
按模2算法,将生成的新序列除以生成多项式。
将余数多项式比特序列加到新的序列中即得发送端传送序列。
接收方可以直接用接收到的序列除以生成多项式G(x),如果余数R(x)=0,则正面传输正确。
Longitudinal Redundancy Check纵向冗余校验(法);
在纵向冗余方法中,以表格格式(行和列)排列一些比特块,然后分别计算每列的奇偶校验位。这些奇偶校验位的集合就是这些比特块的校验码。
纵向冗余校验是一种逐位奇偶校验,因为我们单独计算每一列的奇偶校验。
该方法可以很容易地检测出突发错误和单比特错误,但不能检测出在同一垂直切片中发生的2位错误。
图9 LRC生成过程
总结好了,三种差错检测编码介绍完了,下一步就是纠正错误的编码了。先检测,后纠正。
纠错码(error correcting code),在传输过程中发生错误后能在收端自行发现或纠正的码。仅用来发现错误的码一般常称为检错码。
纠错码也有很多种,比如说经典的分组码(Hamming Code),卷积码等。
分组码和卷积码不但可以用来纠正独立错误,而且可以用来恢复删除错误和纠正突发错误。如 分组码中有里德-索洛蒙码,法尔码等;卷积码中有岩垂码及扩散卷积码等。
由于篇幅有限,如果同学们感兴趣,可以自行学习哦。班长会在后期详细下介绍纠错码。
看到这里,为班长点个赞吧!欢迎在评论区留言讨论!
- 09-20长沙名师云课堂在哪里进入:长沙市中小学名师云课堂
- 04-23地图鱼生病了可以用蓝色水治疗吗?下面介绍它的常见病和治疗方法
- 03-28建材板块最新利好:能突破地产疲软周期吗
- 12-08vlog拍摄手机推荐 支持4K60FPS录制视频手机盘点
- 03-09美丽乡镇长岭镇,麻乍镇,按下村庄美颜
- 04-13为何民间忌讳不捡帽子:农村老话说,挂帐怕遇三十六
- 01-06守一份宁静享一处清欢:于一方茶席沏一壶清茶
- 12-08托管生活老师的经验和技巧 我是这样把一个托管班从8人做到48人的
- 09-20二手房房产知识干货简短精辟:一手房Vs二手房房产干货知识盘点
- 12-30公文写作基础知识归纳 公文写作,常用词汇整理词汇就是智慧
- 03-14适合冬天的高清手机壁纸:手机壁纸,天热了来一组清凉的壁纸
- 03-04阿拉德之怒各个觉醒职业:阿拉德之怒60版本全职业三觉
- 12-07宏碁acer新蜂鸟fun 14英寸评测 宏碁2023款新蜂鸟Fun性能怎么样
- 10-26铝材切割用什么锯片好用?铝材切割机锯切效果好不好
- 03-21女子留宿汗蒸会所:男孩跑进汗蒸馆女更衣室玩耍
- 02-24二月简短走心文案,二月你好朋友圈文案短句
热门
推荐
- 1汤姆叔叔的小屋的好词好句摘抄289
- 2关于环保的手抄报大学生300
- 3《我是余欢水》|电视剧简介265
- 4最新的天津石家大院导游词范文201
- 5有什么吸烟对人体的危害257
- 6仲裁法的相关法律法规都有哪些2392
- 7用黄澄澄一词怎么造句199
- 8跳绳抽筋有什么处理方法409