任意の CRC 多項式のエラー検出能力を計算する方法を見つけようとしました。
任意の多項式に適用できる (または適用できない) さまざまなエラー検出機能があることを知っています。
シングル ビット エラーの検出: CRC 幅 >= 1 のみが必要なため、すべての CRC がこれを実行できます。
バースト エラーの検出: すべての CRC は、その幅に等しいサイズまでバースト エラーを検出できます。
奇数のビット エラーの検出: 項の数が偶数の多項式 (完全な 2 進多項式で偶数の 1 ビットを意味する) を使用した CRC でこれを行うことができます。
ランダム ビット エラーの検出 (フレーム サイズに依存): 特定の HD と多項式の最大フレーム サイズを計算できる、すぐに使用できる C アルゴリズムがあります。私はそれを完全には理解していませんでしたが、うまくいきました。
16 ビット CRC 多項式 x¹⁶+x¹²+x⁵+1 = 0x11021 を仮定します。その多項式は次のことができます。
- すべてのシングル ビット エラーを検出します (データ サイズに依存しません)。
- 最大 16 ビット幅 (データ サイズに依存しない) までのすべてのバースト エラーを検出します。
- 奇数のビット エラーをすべて検出します (多項式の項が 4 つあるため、データ サイズに依存しません)。
- 最大 32571 ビット データ サイズの 3 ビット エラー (HD4) を検出します。
上記は正しいですか?
追加の CRC エラー検出機能はありますか? はいの場合、任意のCRC多項式がそれらをサポートしているかどうかを(深い数学の知識なしで)どのように確認できますか?