質問

私はそれぞれ1000バイトのデータユニットを送信する仮説的な状況を持っています。故障率はまれですが、エラーが発生すると、単一のビットエラーになる可能性が低く、数ビットのエラーになる可能性が高くなります。

最初はチェックサムを使用することを考えましたが、どうやら1ビットよりも大きいビットエラーを見逃す可能性があります。パリティチェックも機能しないため、CRCが最良の選択肢になる可能性があります。

1000バイトで環状冗長チェックを使用するのは効率的ですか?それとも、よりうまく機能する他の方法はありますか?

役に立ちましたか?

解決

周期的な冗長チェック(CRC)が一般的です 具体的には 精度が保証されている複数のビットエラーを検出する効率のため。

トレードオフが精度と計算の複雑さであるCRC多項式を生成するためのさまざまな設計があります。あなたの場合、正確性の要件を満たす「最速」のものを選択できます。

あなたは、このウィキペディアの記事から始めたいと思うかもしれません 周期的な冗長性チェック.

他のヒント

CRCはここで別の質問で取り上げられています
CRCはいつMD5/SHA1よりも使用するのが適切ですか?
ランダムなエラーを検出し、実装しやすいのに適しています。

CRCを使用するのは正常です。 「効率」とはどういう意味かはわかりませんが、CRCがハードウェアに実装されることもあると思います(たとえば、イーサネットカードに)。それ以外の場合は、「最適化された」実装を見つけることができます(ルックアップテーブルを使用)。

ディスクセクターはどれくらいですか?おそらく少なくとも512バイト。 CRCは、ハードウェアレベルのディスクECCの昔からのスキームです。

ストックCRC多項式アルゴリズムは、少数のビットエラーに非常に効果的です。正確な精度は数学的に計算可能です。 CRCは、比較的少数のゲートとシフトレジスタがその場でジョブを管理できるハードウェアでも非常に効率的です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top