一回も披露したことのない豆知識

 送信されてくるethernetフレームを受信しながらCRC32を計算し、
FCSチェックを実施するハード(VHDLによる)を作成しようとしています。

 ハードの構成は、下記URL(の中程)のような、1bit単位でのxorにより実施しようと考えています。
http://homepage3.nifty.com/izushi/OTN/tn2/index. …

 ethernetフレームで計算されるCRC32が、下記パラメータ、
(1)ビットシフト方向:右
(2)生成多項式:0xEDB88320
(3)初期値(0xFFFFFFFF)
(4)出力XOR(0xFFFFFFFF)
(5)フレームのLSB側(FCSデータが格納されている方)からデータ送り

と一致することは判明し、検証も終わったのですが、
フレームはFCS側からではなく、MSB側(MACアドレス側)から転送されてくるため、
(5)と相反し、実装できません。

フレームのLSB側(FCSデータ側)からではなく、MSB側(MACアドレス側)から
データを送り、(1)~(5)の条件で求めたCRC32の値を再現することはできるのでしょうか?

「CRC32」、「左送り」などで調べてみたのですが、
下記URLのように、MSB側(格納データのアドレス0側)から計算している例も
あったのですが、CRC32の値が(1)~(5)パラメータで求めたものとCRC32の値が異なりました。
http://oshiete.goo.ne.jp/qa/5183760.html

 要約すると、同一のデータを使用して、MSB側、LSB側から計算し、
同じCRC32の値となるようなパラメータの組み合わせが有るか無いか、
ということになると思うのですが・・・

よろしくお願いします。

A 回答 (1件)

    • good
    • 0
この回答へのお礼

すいません、リンク先の鍵になりそうなソース中の
expecting $6FCF9E13
や、Delphiの構文を調べていたら、偶然下記URLが見つかりました。
http://mzex.wordpress.com/2006/09/15/crc%E3%81%8 …

BYTE単位でLSBデータ送り、マクロではMSBデータ送りでなぜかCRCが一致しました。(CRC値自信もBYTE SWAPしていましたが・・・)

先に進めそうなので、原因究明はペンディングして、実装を進めようと思います。

回答ありがとうございました。

お礼日時:2012/07/15 20:55

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報