0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【技术】FEC—数据防丢失,提升数据通信可信度!

亿佰特物联网应用专家 2022-07-20 18:10 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

前向纠错—FEC

前向纠错(FEC)是增加数据通信的可信度的方法。

前向的意义是纠错过程为单方向的,没有错误的信息反馈。利用数据进行传输冗余信息的方法,当传输中出现错误,将允许接收器再建数据。

即一种差错控制方式信号在被送入传输信道之前会按一定的算法进行编码处理,加入带有信号本身特征的冗余码,在接收端按照相应算法对接收到的信号进行解码,从而找出在传输过程中产生的错误码并将其纠正。比较经典的编码解码方式例如汉明码、BCH码、RS码等。

汉明码(Hamming Code),是在电信领域的一种线性调试码,以发明者理查德·卫斯里·汉明的名字命名。汉明码在传输的消息流中插入验证码,当计算机存储或移动数据时,可能会产生数据位错误,以侦测并更正单一比特错误。

简单来说,前向纠错(FEC)就是在数据中添加冗余进行传输,检验出错误后通过冗余可以恢复原本的数据。汉明码是一种可用于前向纠错(FEC)的编码和解码方式。

奇偶校验

汉明码使用到了奇偶校验的方法,所以先复习一下——奇偶校验。

示例中高亮位为校验位,如果传输过程中,某一数据位发生错误,则检验便会不符合校验规则。

奇校验:所有传送的二进制代码的数位(含字符的各数位和校验位)中,“1”的个数为奇数。

例:1001 1011——0 1001 1011因传输的原始数据中,1的位数为5,奇数,所以校验位写0。

偶校验:所有传送的二进制代码的数位(含字符的各数位和校验位)中,“1”的个数为偶数。

例:1001 1011——1 1001 1011因传输的原始数据中,1的位数为5,奇数,所以校验位写1。

汉明码

1

什么是冗余

冗余,在汉明码中是附加在数据中的校验位,它是附加在数据的比特位之间,是一种二进制位,可以通过冗余位来检验数据错误和恢复正确的数据。那么,一个数据中的冗余位,应该是多少个,可以使用(式 2-1)计算:

2n >= m+n+1 (式 2-1)

(n:冗余位位数。m:数据位数。)

例:传输一个8位的数据0x9B,二进制表示为1001 1011,则计算n的结果为4:24>=8+4+1。

2

怎么分组

如下图2-1,假设有一个7位的数据,每个位编号1,2......7。分为3组:C1,C2和C3。

C1:1,2,4,5

C2:2,3,5,6

C3:4,5,6,7

始终假设,只有一个错误存在其中。

如果,只有C1区错误,C2和C3区没有错误,根据这个条件,可以看出,C2中2,3,5,6是没有错误的,C3中4,5,6,7没有错误,说明出错的是1。再来一次,如果C2和C3区有错误,C1区没有错误,这次我们可以排除C1中1,2,4,5没有错误,C2和C3只有一个错误,则出错的肯定是6。

8dd8f284-03c1-11ed-9ade-dac502259ad0.png

(图 2-1)

3

编码

接下来,我们开始编码了,使用奇校验方式,还是上面那个数字为例:0x9B,二进制表示位1001 1011,这是一个8位的数据,所以冗余位的个数位4,总的数据位数为12。

到这里,又出现了一个问题,冗余码放哪些位置呢?前面or后面?都不是,冗余码(奇偶校验码)穿插在数据中放置,放置的位置和冗余码数量有关,即位置在:20,21,22,23,24……2n-1。

示例为4个冗余位,则放置在第1,2,4,8位的位置上,如下图2-2,剩下的数据位,我们顺序填入需要编码的数据,如下图2-3。

8dfa90b0-03c1-11ed-9ade-dac502259ad0.png

(图 2-2)

8e18c9cc-03c1-11ed-9ade-dac502259ad0.png

(图 2-3)

这时候,我们发现了,图中我们不仅对数据位编号,并且表示为二进制,原因就是,数据位编号的二进制表示,是我们进行数据位分组的依据。接下来,我们开始分组:

①二进制编号第一位为1的:1,3,5,7,9,11 ————20

②二进制编号第二位为1的:2,3,6,7,10,11 ————21

③二进制编号第三位为1的:4,5,6,7,12 ————22

④二进制编号第四位为1的:8,9,10,11,12 ————23

高亮的编号位是每组对应填入奇偶检验位的位置,对实际的数据位数采用奇校验:

①组:1的个数为4,因此20处填入1

②组:1的个数为2,因此21处填入1

③组:1的个数为3,因此22处填入0

④组:1的个数为2,因此23处填入1

综上,编码后的数据为1001 1101 0111,如图2-4所示。

8e2ce894-03c1-11ed-9ade-dac502259ad0.png

(图 2-4)

4

检错与纠错

数据传输过程中,如果没有错误,校验通过,则皆大欢喜。如果数据出错了呢,我们便要进行检错(找到错误)和纠错(纠正错误)。在此之前,我们还是要重复一下,汉明码最多只能纠错一个比特位的数据错误。我们接下来开始。

假设数据位编号为7的数据,在传输过程中,不小心,从”1“变成了”0”。如图2-5。

8e4f91b4-03c1-11ed-9ade-dac502259ad0.png

(图 2-5)

检错:

①奇校验第一组:目前数据位11,9,7,5,3,1数据表示为010111,此时数据位中1的个数为4,不满足奇校验,说明这一组数据中某一个位出错。因为要满足奇校验,所以需要补1满足。

8e6e5022-03c1-11ed-9ade-dac502259ad0.png

(图 2-6)

②奇校验第二组:目前数据位11,10,7,6,3,2数据表示为000011,但是此时数据位中1的个数为2,不满足奇校验,说明这一组数据中某一个位出错。因为要满足奇校验,所以需要补1满足。

8e99eb24-03c1-11ed-9ade-dac502259ad0.png

(图 2-7)

③奇校验第三组:目前数据位12,7,6,5,4数据表示为10010,但是此时数据位中1的个数为2,不满足奇校验,说明这一组数据中某一个位出错。因为要满足奇校验,所以需要补1满足。

8ec01cc2-03c1-11ed-9ade-dac502259ad0.png

(图 2-8)

④奇校验第四组:目前数据位12,11,10,9,8数据表示为10011,此时数据位中1的个数为1,满足奇校验,说明这 一组数据正确。只需要补0

8ed0bc9e-03c1-11ed-9ade-dac502259ad0.png

(图 2-9)

纠错:

重新校验之后,把补上的数位按照从高位到低位排列得出:0111,也就是7。所以,错误的数位编号为7,只需要将收到的数据的第七位取反,即得到正确的发送方发送的数据:1001 1101 0111。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 通信
    +关注

    关注

    18

    文章

    6316

    浏览量

    139564
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    2025华为数据通信创新峰会欧洲站圆满落幕

    “华为数据通信创新峰会2025”今日在德国慕尼黑盛大启幕,吸引了来自德国、法国、意大利、瑞士、西班牙、土耳其等30+国家的800余位行业专家及合作伙伴参会。与会者围绕智能网络发展趋势及欧洲数智化转型
    的头像 发表于 10-13 09:38 846次阅读

    华为发布数据通信未来十大技术趋势报告

    宏科等多位院士莅临大会作主旨报告。会上,华为发布《数据通信未来技术趋势》报告(以下简称“报告”),引领未来网络发展方向。 华为数据通信产品线研发副总裁、数通技术规划部部长金闽伟表示:“
    的头像 发表于 09-14 15:37 4501次阅读
    华为发布<b class='flag-5'>数据通信</b>未来十大<b class='flag-5'>技术</b>趋势报告

    工业数据通信网关是什么?有什么推荐?

    在当今工业 4.0 和智能制造的大背景下,工业数据通信网关作为连接工业设备与上层系统的关键桥梁,发挥着至关重要的作用。它就像是工业领域的 “翻译官” 和 “数据快递员”,能够实现不同设备之间的通信
    的头像 发表于 08-27 14:35 594次阅读
    工业<b class='flag-5'>数据通信</b>网关是什么?有什么推荐?

    华为品智联接数据通信商业市场创新峰会圆满落幕

    近日,以“无智联,不AI”为主题的品智联接数据通信商业市场创新峰会在深圳成功举办。在此次峰会上,华为依托核心技术突破,重磅发布星河AI高品质万兆园区网络解决方案,以及“无智联,不AI”星云计划,并与
    的头像 发表于 07-01 15:52 695次阅读

    2025华为数据通信创新峰会香港站圆满收官

    华为数据通信创新峰会2025在香港盛大启幕。本次峰会以“星河AI网络:引领AI-Powered网络创新,跃升数智生产力”为主题,汇聚了来自中国香港、泰国、菲律宾、印度尼西亚、马来西亚、新加坡等
    的头像 发表于 06-11 11:05 1122次阅读

    CYUSB3014采用5根地址线通信,但其中一条地址线悬空,对数据通信有影响吗?

    CYUSB3014采用5根地址线通信,但其中一条地址线悬空,对数据通信有影响吗??是否还能进行正常的多个端点通信,只要跳过那个地址线对应的socket即可?
    发表于 05-21 07:59

    2025华为河南商业市场数据通信新品推介会成功举行

    近日,以“品智联接耀中原,成就商业好生意”为主题的2025华为河南商业市场数据通信新品推介会在郑州成功举办。来自数据通信领域的众多精英以及业内知名企业代表齐聚一堂,共同见证华为在数据通信领域的创新
    的头像 发表于 05-15 14:12 913次阅读

    AD7768与STM32F407进行数据通信,SPI1读取到的数据不完整,整体数据在字节上出现偏移,怎么解决?

    进行数据通信,我们采用所有数据都在DOUT0上输出的模式。 然后使用DRDY信息来进行数据中断触发。 但是目前存在问题:SPI1读取到的数据不完整,整体
    发表于 04-24 06:40

    网段隔离器实现多网段PLC数据通信

    在工厂自动化生产中,不同生产环节的PLC处于不同网段,实现多网段PLC数据通信提升生产协同性至关重要。网段隔离器凭借自身特性,可有效解决这一问题。 实现原理 网段隔离器基于NAT(IP地址转换
    的头像 发表于 04-18 15:15 645次阅读
    网段隔离器实现多网段PLC<b class='flag-5'>数据通信</b>

    华为数据通信创新峰会2025成功举办

    华为数据通信创新峰会2025首站在摩洛哥马拉喀什成功举办,来自埃及、科特、埃塞俄比亚、摩洛哥等多个国家的400余位行业领袖、技术专家及合作伙伴现场参会,共同探讨AI驱动下的网络技术革新与非洲数字化
    的头像 发表于 04-16 16:29 800次阅读

    华为DatacomStar数据通信实训系统正式发布

    以“因聚而生 众智有为”为主题的“华为中国合作伙伴大会2025”在深圳举行。会议期间,由华为数据通信产品线和企业培训与认证部联合打造的“DatacomStar数据通信实训系统”正式发布,定义人才培养新范式!
    的头像 发表于 03-24 15:11 1331次阅读

    传感器仿真模型的可信度评估方案

    由于仿真是对真实世界进行抽象建模并通过编程实现,仿真得到的计算结果与真实仿真对象的表现存在差异,因此模拟仿真测试的可信度成为当前亟需解决的关键问题,需要提出有效的评估方法。
    的头像 发表于 02-14 16:41 4341次阅读
    传感器仿真模型的<b class='flag-5'>可信度</b>评估方案

    用FT2232H结合MATLAB API DLL读取ADS1271数据,如何才能不丢数据

    USB数据通信比较麻烦,所以暂时不考虑。想在外面通过逻辑电路来实现数据无丢读取,因为我采集的是交流信号,不允许数据丢失。请问有没有办法实现。
    发表于 01-13 06:04

    利用ADS1293与ARM进行SPI数据通信的程序设计该注意什么?

    请教大家,利用ADS1293与ARM 进行SPI 数据通信的程序设计该注意什么?比如比特率的设置该设置什么?有没有相关的例程可以参考?3通道24位数据是按通道的次序每个通道24位这样发送吗?这个24位是不是只是指ECG的信号?谢谢!
    发表于 01-06 06:44

    使用SN65hvd50进行数据通信,在待机空闲的情况下温升有10℃以上,为什么?

    最近在使用SN65hvd50进行数据通信,发现这个片子在待机空闲的情况下温升有10℃以上,是在没有外接连线,没有任何匹配电阻的情况下,R和D测试均为低电平!如果在通信条件下温升有20多摄氏度。查找原因无果,换过不同批次的片子情况相同,麻烦大神给个指点!!!
    发表于 12-20 10:29