crc 校验能力(循环冗余校验CRC是什么)

01 总线与总线协议

crc 校验能力(循环冗余校验CRC是什么)(1)

民用飞机通过 A429、A629、A664、TTP 等常见的航空总线,提供了飞控、航电等机载系统和设备间传输信号的公共路径,可实现系统内部和系统间的数据交互

crc 校验能力(循环冗余校验CRC是什么)(2)

每一种数据总线,均定义了其如何使用的一套规则,这就是 “总线协议”。相关数据收发设备,需遵循同一 “总线协议”,才能实现正常通信。

例如针对 A429 总线,ARINC(航空无线电通信公司) 发布了三份总线规范文件。

crc 校验能力(循环冗余校验CRC是什么)(3)

02 总线传输信号的完整性

根据飞机系统的安全性评估过程,如果某些信号的错误或异常,对飞机安全有重要影响,那么我们对这些信号通常有非常高的完整性要求。

其中 a 为 0 或 1;x 用来表明二进制数据的排列位置。例如一个 10 位二进制数 1101011011 用多项式表示,如下:

crc 校验能力(循环冗余校验CRC是什么)(4)

P(x) 除以一个下图所示的 CRC 多项式后,可得到一个余数 R(x) ,即 CRC 校验码。

crc 校验能力(循环冗余校验CRC是什么)(5)

CRC算法中的,常见的生成多项式,如上图所示。

注:由于多项式表示或二进制表示较为繁琐,造成交流不便,因此实际使用时多采用 16 进制简写法来表示。同时考虑到多项式最高位为 1,而最高位的位置可由原始数据的位宽确定,因此十六进制简记式中,将最高位的 1 去掉了。

04 CRC校验码如何产生?

在 CRC 算法中,多项式的乘除法,可以对应到二进制数的模 2 运算,这就是我们通常所说的异或运算

在工程应用中,我们希望余数的位数固定以便在实现时可以节省资源。常见的 CRC 方案是 16 位或 32 位。若原始数据的长度比 CRC 码短,必须扩展到 16/32 位以上才能到一个 16/32 位的余数。通常的做法是在原始数据的右边添加相应的 CRC 码位数。

这里列举一个简单的例子,用于阐明 CRC 校验码的计算过程

假设原始二进制数据为 1101011011,采用 4 位 CRC 校验,则除数多项式选取CRC-4,即 10011。计算过程如下所示(计算前将原始数据后面补 4 个 0)。

crc 校验能力(循环冗余校验CRC是什么)(6)

最后得到的余数为 1110,即计算得到的 4 位 CRC 校验码。16/32 位 CRC 校验码的计算过程与之类似。

05 总结

理论上 32 位 CRC 可提供 99.999999976716935634613037109375% 的错误检测率,或者说传输链路完整性可达到 2.328E-10(1/2的 32 次方),因此 32 位 CRC 在高完整性数据传输过程中,得到了广泛应用。

当然啦,CRC 只是提高传输信号完整性的一种措施,并非唯一。感兴趣的朋友,欢迎留言,我们一起探讨民机的世界!

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页