5

有两种使用线性反馈移位寄存器 (LFSR) 生成 CRC 的方法,如图所示CRC LFSR。图中生成多项式的系数为 100111,红色“+”圈为异或运算符。两者的初始化寄存器值都是 00000。

例如,如果输入数据比特流是 10010011,则 A 和 B 都会给出 1010 的 CRC 校验和。不同之处在于 A 完成 8 次移位,而 B 完成 8+5=13 次移位,因为输入附加了 5 个零数据。我可以很容易地理解 B,因为它非常模仿模 2 除法。但是,我无法从数学上理解 A 如何在减少 5 次班次的情况下给出相同的结果。我听说人们在谈论 A 利用了预先附加的零,但我没听懂。谁能给我解释一下?谢谢!

4

2 回答 2

5

这是我的快速理解。

令 M(x) 为 m 阶输入消息(即具有 m+1 位),G(x) 为 n 阶 CRC 多项式。此类消息的 CRC 结果由下式给出

C(x) = (M(x) * x n ) % G(x)

这就是电路 B 正在实现的内容。它需要额外的 5 个周期是因为 x n操作。

电路 A 没有遵循这种方法,而是尝试做一些更聪明的事情。它试图解决这个问题

如果 C(x) 是 M(x) 的 CRC,那么消息 {M(x), D} 的 CRC 是多少

其中 D 是新位。所以它试图一次解决一个比特,而不是像电路 b 的情况下的整个消息。因此,对于 8 位消息,电路 A 只需 8 个周期。

现在,既然您已经了解为什么电路 B 看起来如此,那么让我们看看电路 A。数学,特别是针对您的情况,将位 D 添加到消息 M(x) 对 CRC 的影响如下

设当前 CRC C(x) 为 {c4, c3, c2, c1, c0},移入的新位为 D
NewCRC = {M(x), D}*x 5 ) % G(x) = (( {M(x), 0} * x 5 ) % G(x)) XOR ((D * x 5 ) % G(x))
即 ({c3, c2, c1, c0, 0} XOR {0, 0, c4, c4, c4}) XOR ({0, 0, D, D, D})
即 {c3, c2, c1^c4^D, c0^c4^D, c4^D}

即LFSR电路A。

于 2016-08-16T22:26:55.000 回答
0

您可以说架构 (A) 通过将 polyn 的 MSB 与 Message 的 MSB 对齐来实现模除法,因此它正在实现类似以下的内容(在我的示例中,我实际上有另一个 crc polyn):

在此处输入图像描述

但是在架构 (B) 中,您可以说我们尝试预测消息的 MSB,因此我们将 CRC polyn 的 MSB 与消息的 MSB-1 对齐,如下所示:

在此处输入图像描述

我可以在本教程中推荐有关此操作的详细信息

于 2021-02-20T08:45:40.130 回答