64b in和32b out的CRC是多少?

时间:2012-10-22 09:25:25

标签: boost fpga crc

我正在开发一个软件实用程序来将一些数据传输到pci-e板。为避免数据传输故障,我在每个数据包中都添加了一个CRC字段,以便pci-e板可以用CRC值验证接收到的数据。

然后我们发现CRC值未能通过验证。

我正在使用 boost :: crc_32_type 来生成CRC值,而硬件人告诉我,电路板中的CRC实现来自http://www.easics.com/webtools/crctool并且他们正在使用 64 数据总线宽度版本 CRC32 - ETHERNET / AAL5。

那么,是否可以使用boost :: crc_32_type来处理他们正在使用的那个?

任何建议都将不胜感激!

[编辑2013.02.20 ]

  1. 工作crc模板应具有以下定义:
    boost :: crc_optimal< 32,0x04C11DB7,0xFFFFFFFF,0x0,false,false>
  2. 每个8字节的顺序在处理之前应该被颠倒
  3. 使用std :: for_each而不是process_bytes来获得结果,但我仍然不太明白它们之间的区别。

1 个答案:

答案 0 :(得分:3)

您可以使用crc_32_type - 首先,您必须确保您的字节与硬件人员的字节数相同。 EASICS代码使用的约定是流中的第一个字节进入数据[63:56]。