错误检测效率(CRC,校验和等)

时间:2009-08-24 15:49:15

标签: checksum crc telecommunication error-detection data-link-layer

我有一个假设的情况是发送数据单元,每个字节数千字节。故障率很少,但是当发生错误时,它不太可能是单个位错误,并且更可能是连续几位中的错误。

起初我想过使用校验和,但显然可能会错过大于一位的位错误。奇偶校验也不起作用,因此CRC可能是最佳选择。

对千字节有效使用循环冗余校验吗?或者还有其他方法可以更好地运作吗?

4 个答案:

答案 0 :(得分:7)

循环冗余校验(CRC)是特别的流行方式,因为它们能够有效地检测到多个位错误并保证准确性。

有不同的设计来生成CRC多项式,其中权衡是精确度与计算复杂度。在您的情况下,您可以选择符合您的准确性要求的“最快”。

您可能希望从Cyclic Redundancy Check上的这篇维基百科文章开始。

答案 1 :(得分:2)

CRC在另一个问题中有所涉及 When is CRC more appropriate to use than MD5/SHA1?
它适用于检测随机错误并易于实现。

答案 2 :(得分:1)

使用CRC是正常的。我不确定你的'效率'是什么意思,但我认为有时CRC是用硬件实现的(例如在以太网卡上)。否则,您可能会找到“优化”实现(使用查找表)。

答案 3 :(得分:1)

您的磁盘扇区有多大?可能至少512字节。 CRC是硬件级磁盘ECC的历史悠久的方案。

库存CRC多项式算法对于少量的比特错误非常有效。精确的精度在数学上是可计算的。 CRC在硬件中也非常高效,其中相对较少数量的门和移位寄存器可以动态管理工作。