这是我的快速理解。
令 M(x) 为 m 阶输入消息(即具有 m+1 位),G(x) 为 n 阶 CRC 多项式。此类消息的 CRC 结果由下式给出
C(x) = (M(x) * xn) % G(x)
This is what the circuit B is implementing. The additional 5 cycles it takes is because of the xn operation.
电路 A 没有遵循这种方法,而是尝试做一些更聪明的事情。它试图解决这个问题
如果 C(x) 是 M(x) 的 CRC,那么消息 {M(x), D} 的 CRC 是多少
其中 D 是新位。因此它试图一次解决一位而不是像电路 b 那样解决整个消息。因此,对于 8 位消息,电路 A 仅需要 8 个周期。
现在,既然您已经了解了为什么电路 B 看起来像它那样,那么让我们看看电路 A。专门针对您的情况的数学,将位 D 添加到消息 M(x) 对 CRC 的影响如下
Let current CRC C(x) be {c4, c3, c2, c1, c0} and new bit that is shifted in be D
NewCRC = {M(x), D}*x5) % G(x) = (({M(x), 0} * x5) % G(x)) XOR ((D * x5) % G(x))
which is ({c3, c2, c1, c0, 0} XOR {0, 0, c4, c4, c4}) XOR ({0, 0, D, D, D})
which is {c3, c2, c1^c4^D, c0^c4^D, c4^D}
即 LFSR 电路 A。