VHDL でイーサネット 10GE MAC デザインを生成しました。現在、CRCを実装しようとしています。VHDL で 64 ビットの並列 CRC-32 ジェネレーターを使用しています。
仕様:
- データ バスは 64 ビット
- 制御バスは 8 ビット (データ バイトを検証)
問題:
たとえば、着信パケットの長さが 14 バイトであるとします (パディングがない場合)。
CRC は 1 クロック サイクルで最初の 8 バイトに対して計算されますが、残りの 6 バイトに対して CRC を計算しようとすると、ゼロが付加されているために結果が正しくありません。
64 ビットの並列 CRC ジェネレーターを使用して、任意の長さのバイト パケット長の CRC を生成する方法はありますか?
試したこと:
さまざまな並列 CRC ジェネレーター (8 ビット並列 CRC、16 ビット並列 CRC ジェネレーターなど) を使用しました。しかし、それは多くの FPGA リソースを消費します。64 ビットの並列 CRC ジェネレーターのみを使用してリソースを節約したいと考えています。