5

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

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

对一千字节使用循环冗余检查是否有效?或者还有其他更好的方法吗?

4

4 回答 4

7

循环冗余校验 (CRC) 特别受欢迎因为它们能够高效地检测多个比特错误并保证准确度。

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

您可能想从有关Cyclic Redundancy Check的这篇 Wikipedia 文章开始。

于 2009-08-24T15:59:45.253 回答
2

此处的另一个问题涉及 CRC
CRC 何时比 MD5/SHA1 更适合使用?
适用于检测随机错误,易于实现。

于 2009-08-24T16:09:07.967 回答
1

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

于 2009-08-24T16:02:52.970 回答
1

你的磁盘扇区有多大?可能至少 512 字节。而CRC是硬件级磁盘ECC的老字号方案。

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

于 2009-08-24T16:20:26.450 回答