多位数据的硬件 CRC 实现

CRC implementation in Hardware for multi-bit data

我知道网上有免费的生成器,但我想了解如何为多位数据生成 CRC。当我们开始考虑并行输入位时,我希望了解逻辑的展开是如何工作的。串行实现很容易理解,但我需要理解并行实现背后的逻辑。

软件通常使用 table 查找一次处理多个位,例如 256 条目 table 一次处理 8 位,或者可以使用无进位乘法(如 X86 PCLMULQDQ) CRC 指令。

对于硬件,二进制 (GF(2)) 矩阵乘以固定矩阵通常用于替换 table 查找,因为它需要更少的门。例如,不是使用 256 x 32 位查找 table 将 8 位输入转换为 32 位 crc,编码矩阵将是 8 x 32 位矩阵。矩阵乘法为 data[1][8] · encode[8][32] = crc[1][32].