有两种使用线性反馈移位寄存器(LFSR)实现CRC生成的方法,如下图所示
。图中生成多项式的系数为100111,红色的"+“圆圈是异或运算符。两者的初始化寄存器值均为00000。
例如,如果输入数据比特流是10010011,则A和B都将给出CRC校验和1010.不同之处在于A以8个移位结束,而B具有8+5=13移位,因为输入数据附加了5个零。我可以很容易地理解B,因为它非常接近模2除法。然而,我不能从数学上理解A如何在少5个班次的情况下得到同样的结果。我听说人们在谈论A利用了前置的零,但我不明白。有人能给我解释一下吗?谢谢!
发布于 2021-02-20 16:45:40
您可以说,架构(A)通过将polyn的MSB与Message的MSB对齐来实现模除,因此它实现了类似以下内容(在我的示例中,实际上我有另一个crc polyn ):
但在架构(B)中,您可以说我们尝试预测消息的MSB,因此我们将CRC polyn的MSB与消息的MSB-1对齐,类似于以下内容:
我可以在this tutorial中推荐有关此操作的详细信息
https://stackoverflow.com/questions/25415724
复制相似问题