跳转到主要内容

CRC

【视频】我的CRC足够好吗?

selina /

循环冗余校验(CRC)通常被添加到IC或子系统之间的接口以检测数据损坏,但是在标准中给出关于如何确定所选CRC是否足够的非常少的指导。

<iframe src='//players.brightcove.net/706011717001/BywpcfpJg_default/index.html' allowfullscreen frameborder=0 width='600' height='338'></iframe>

<strong><a href="http://www.analog.com/cn/applications/markets/internet-of-things.htmll"…,获取更多IOT物联网设计信息</a></strong>

循环冗余校验确保正确的数据通信

selina /

<br/>
<strong>Ken Kavanagh</strong>

在工业环境中,电子系统通常工作在极端的温度条件下,或处于电子噪声环境,或是其它恶劣条件,而系统在这种条件下能否正常工作至关重要。举例来说,如果发送给控制机器臂位置的DAC的数据遭到破坏,机器臂就会按非预期的方向移动, 这不仅危险,而且代价巨大。试想一下,机器臂如果砸到生产线上的新车,或者更糟,砸到生产工人,后果会怎样?

有几种方法可以确保收到正确数据后才执行动作。最简单的方式就是控制器回读所发送的数据。如果接收的数据与发送的数据不匹配,则说明其中一者已受到破坏,必须发送新数据并进 行验证。这种方法的确可靠,但产生的开销也很大,每段数据 都必须经过验证,传输的数据量要翻一倍。

另一种替代方法是循环冗余校验(CRC),即随每个数据包发送一个校验和(checksum),接收器就会指示是否存在问题, 所以控制器无需验证接收。校验和一般通过向数据应用一个多项式方程式来生成。应用于一个24位字时,CRC-8可产生一 个8位校验和。将校验和与数据组合在一起,全部32位都发送到能够分析该组合的器件,并指示是否出错——这种方法虽 然不是无可挑剔解决方案,但却比读写方法更加高效。