※ ChatGPTを利用し、要約された質問です(原文:CRC32のデータ送りの方向について)
CRC32のデータ送りの方向について
このQ&Aのポイント
CRC32のデータ送りの方向については、問題があります。
ethernetフレームの送信方向とCRC32の計算方向が一致しないため、実装はできません。
MSB側からのデータ送りでもCRC32の値は異なります。
送信されてくるethernetフレームを受信しながらCRC32を計算し、
FCSチェックを実施するハード(VHDLによる)を作成しようとしています。
ハードの構成は、下記URL(の中程)のような、1bit単位でのxorにより実施しようと考えています。
http://homepage3.nifty.com/izushi/OTN/tn2/index.html
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://okwave.jp/qa/q5183760.html
要約すると、同一のデータを使用して、MSB側、LSB側から計算し、
同じCRC32の値となるようなパラメータの組み合わせが有るか無いか、
ということになると思うのですが・・・
よろしくお願いします。
お礼
すいません、リンク先の鍵になりそうなソース中の expecting $6FCF9E13 や、Delphiの構文を調べていたら、偶然下記URLが見つかりました。 http://mzex.wordpress.com/2006/09/15/crc%E3%81%8C%E5%90%88%E3%81%84%E3%81%BE%E3%81%9B%E3%82%93%EF%BC%81%EF%BC%813/ BYTE単位でLSBデータ送り、マクロではMSBデータ送りでなぜかCRCが一致しました。(CRC値自信もBYTE SWAPしていましたが・・・) 先に進めそうなので、原因究明はペンディングして、実装を進めようと思います。 回答ありがとうございました。