什么是设备 CRC

了解循环冗余校验(CRC)是什么,以及这种关键的错误检测技术在设备中的工作原理、优点、局限性和应用。
On this page

什么是设备 CRC

摘要

循环冗余校验(CRC)是当今大多数数字设备中必不可少的错误检测技术。它通过以非常高的概率检测意外更改,实现了设备之间可靠的数据传输。本文全面介绍了 CRC 的工作原理、在设备通信中的重要性、实现、优点和局限性。

循环冗余校验(CRC)是数字数据通信和存储设备中使用的一种重要的错误检测技术。它有助于确保设备之间传输的数据或存储在内存中的数据的完整性。让我们来了解一下 CRC 是什么,它在设备中的工作原理,以及为什么它对可靠通信至关重要。

什么是 CRC?

CRC 是一种校验和算法,用于检测原始数据中的意外更改或错误。发送者从数据中计算出 CRC 值,并将其与原始数据一起发送。然后接收者从接收到的数据中重新计算 CRC,并将其与发送者发送的 CRC 进行比较。如果两个值匹配,则数据很可能已被正确传输,没有错误。如果它们不匹配,接收者可以请求重新传输数据。

CRC 的关键优势在于检测诸如传输时的噪声和存储位翻转等常见错误。这允许采取行动来纠正这些错误。CRC 在当今的设备中无处不在——调制解调器、硬盘、路由器都使用 CRC。

为什么 CRC 对设备很重要?

对于像路由器和调制解调器这样传输大量数据的设备来说,由于噪声,传输过程中错误的发生是不可避免的。诸如硬盘等存储设备在从内存读取数据时也经常会出现位错误。如果不检测到错误会导致包括重要数据丢失在内的不利后果。

CRC 提供了一种技术,可以以非常高的概率检测此类错误,使系统能够采取措施纠正它们。这使得数据传输更加可靠。这就是 CRC 被设备间广泛采用的原因。

设备中的 CRC 如何工作?

CRC 值是通过将输入数据视为一个大的二进制数来计算的。该二进制数被预定的“生成多项式”除。除法的余数就是 CRC 值。

例如,考虑输入数据1101。我们使用简单的多项式x2 + 1作为生成多项式。将1101除以x2 + 1得到余数11,这是该输入数据的 2 位 CRC 值。

CRC 实现错误检测的关键特性是:

  1. CRC 运算将输入数据视为一个整体数。因此即使更改一比特的数据也会产生不同的 CRC 值。

  2. 生成多项式的选择使 CRC 除法对常见的错误模式(如单比特翻转)具有抵抗性。

具体的 CRC 算法和生成多项式根据所需的错误检测能力和实现约束而有所不同。但是基本工作原理仍然相同。

下面是两个常用的 CRC 验证工具。

CRC 计算过程

CRC 计算涉及以下关键步骤:

  1. 将输入数据视为一个二进制数。追加 0 比特,数量等于 CRC 宽度。

  2. 使用生成多项式对增强后的输入数据进行二进制除法。

  3. 除法的余数就是 CRC 值。将其附加到原始数据上。

  4. 接收者对接收到的数据(包括 CRC)使用生成多项式进行除法。

  5. 如果余数为 0,数据无误。否则检测到错误。

我们来看一个针对输入数据11010011的 CRC-8 计算示例:

  1. 追加 8 个零位,得到 16 位数字1101001100000000

  2. 使用生成多项式x8 + x7 + x4 + x3 + x + 1。用其除以增强后的数据。

  3. 余数是10011011。这个 8 位余数就是 CRC 值。

  4. 传输11010011 10011011 - 原始数据与追加的 CRC。

  5. 接收者对接收到的数据除以生成多项式。如果余数为 0,则无误检。否则检测到误差。

CRC 在设备中的优势

在设备中使用 CRC 的主要优势是:

  • 错误检测 - 可以以很高的概率检测随机位翻转等错误。

  • 抗噪声 - 可对传输错误提供保护,抵御噪声干扰。

  • 端到端验证 - 由于 CRC 在接收数据时重新计算,可验证端到端完整性。

  • 无需确认 - CRC 消除了每个数据包确认的开销。

  • 独立操作 - 算术 CRC 可以轻松在硬件/软件中实现。

  • 数据完整性 - 通过检测错误确保只使用正确的数据进行处理。

不同设备中的 CRC

CRC 广泛应用于各种数字设备:

  • 存储 - 硬盘、闪存使用 CRC 检测和纠正位错误。

  • 网络 - 以太网、调制解调器使用 CRC 检查数据包和帧。

  • 无线 - 蓝牙使用 CRC 验证设备之间的无误传输。

  • 卫星 - CRC 对下行遥测数据进行编码,以检查空间辐射错误。

  • 汽车 - CAN 总线使用 CRC 使 ECU 能够检测故障消息。

这展示了 CRC 在保护数据完整性中的通用性和广泛使用。

CRC 的局限性

但是,CRC 也存在一些缺点:

  • 突发错误 - 不擅长检测跨多个比特的突发错误。

  • 恶意错误 - 对故意引入错误以损坏数据的恶意攻击者没有弹性。

  • 校验和冲突 - 不同的输入数据生成相同的 CRC 值的可能性非常低,但存在。

  • 错误校正 - CRC 只能检测而不能纠正错误。要进行更正,需要诸如前向错误校正等技术。

总结

总之,CRC 是当今大多数数字设备中必不可少的错误检测技术。它通过以非常高的概率检测意外更改,实现了设备之间可靠的数据传输。使用 CRC 验证数据的完整性有助于构建健壮的系统,这些系统在检测到错误时可以采取行动。CRC 在不同应用中的无所不在展示了它对设备通信可靠性的重要性。