しきい値デコーダー

みなさん、こんにちは!



数ヶ月前、私はすでにエラー訂正コーディング方法について話し始めました。 最初の記事は、チェイスアルゴリズムに関するものでした。 彼女はここにいます 。 多くの人がこの分野に興味を持っていたので、続けることにしました。 次に続くのは、非常に好奇心が強く、有望で、最も重要なのは、わかりやすいしきい値デコーダーです。 さあ始めましょう!



仕組み



しきい値デコーダーは、「多数決」の原則に基づいて非常に単純なデコードを提供します。

エンコーダは、エンコードが必要なベクトルのビットで満たされたレジスタキューです。 処理はゼロセルから始まります。 ゼロセルにあるビットの場合、必要な特性が計算され、キューを離れたビットは12番目のセルのキューの最後に移動され、ゼロセルにあるビットに必要なデータの計算に使用できます。 コーディングメカニズムは、元のベクトルのすべてのビットがゼロセルになるまで機能します。 エンコーダーの前には、2つの位置を持つキーがあります。 最初の位置では、キーは、レジスタがいっぱいになるまでチャネルからレジスタにビットを渡します。 レジスタがいっぱいになると、キーは状態2に転送され、エンコードが開始され、最後の(12番目の)レジスタセルのビットは、それらに必要な特性を計算した後、ゼロセルに入ります。

画像



提示されたエンコーダーは、「生成多項式」g(x)= 1 + x + x ^ 4 + x ^ 6を使用して定義されていると言えます。

したがって、エンコードプロセスでは、暗号化されたメッセージの2つの部分が受信され、その後、結合されて単一のベクトルとしてチャネルに送信されます。 最初の-情報(u)には、エンコードされたメッセージのゼロレジスタセルから直接送信された元のメッセージのビットが含まれます。 2番目のテスト(v)には、レジスタセルのビットに「生成多項式」g(x)の非ゼロの累乗に対応するインデックスを追加したビットが含まれます。



エンコーダーの例



次のメッセージを暗号化する必要があるとします:0111011011011。情報ブランチ(u)は、元のメッセージに完全に対応します。 「1101101101110」に等しくなります。

検証ブランチ(v)は、0番目、1番目、4番目、6番目のレジスタセルから「モジュロ2」ビットを追加することで得られるビットで構成されます。

例:

1.レジスタ内:1 0 1 1 1 0 1 1 0 1 1 0 1

V = 1⊕0⊕1⊕1 = 1;

2.レジスタ内:1 1 0 1 1 1 0 1 1 0 1 1 0

V = 1⊕1⊕1⊕0 = 1;

......

13.レジスタ内:0 1 1 1 0 0 1 0 1 1 0 1 1

V = 0⊕1⊕0⊕1 = 0;

エンコーダの「円」の後、検証部分はベクトル「111000000010」になります。

したがって、ベクトル「10111011011011110000000010」がチャネルに送信されます。



ベクトルの形式[u | v]は真であるだけではありません。 また、たとえば次のような他の形式に簡単に置き換えることができます。[u1 | v1 | u2 | v2 ... un | vn]。



デコーダー操作



しきい値デコーダーの動作を検討してください。 デコーダーの最初のステップで、含まれるエンコーダーを使用して、チェックビットが計算されます。チャネルから受信したuブランチの情報ビットについて、「モジュロ2」がvブランチから受信したチェックビットと加算されます。 その結果、シンドロームレジスタでシンドロームが形成され、エラーの存在が示されます。 デコーダーのエンコーダーレジスタの前には、エンコーダーのキーと同様に機能するキーがあります。 最初の位置では、チャネルからエンコーダーにビットを「入れ」、デコードの開始後、エンコーダーレジスタの12番目のセルからのビットがゼロセルに送信されます。 シンドロームレジスタのキーも同様に機能します。 唯一の違いは、最初の状態では、チャネルからではなく、キーの前にある加算器からレジスタにビットを渡すことです。

画像

シンドロームレジスタを埋めた後、0番目のセルからの情報シンボルがデコードされ、デコードされたシンボルに対応するシンドロームレジスタ要素の合計がしきい値要素(PE)で比較されます。 合計がしきい値よりも大きい場合、PE出力は1に設定され、情報シンボルと関連するチェックが変更されます。 それ以外の場合、PEは0になります。

フィードバックによる情報レジスタの修正もシンドロームレジスタから削除されるため、考慮されるデコーダはフィードバック付きのデコーダです。

エラー「10111 1 1101101 1110000000010」を元のメッセージ「10111011011011110000000010」に導入します。

シンドロームレジスタには、次の値が含まれます。「00000011001010」(写真のシンドロームレジスタの最初のビットはセル「0」です)

1.シンドロームレジスタ:「0000011001010」→「0000011001010」

しきい値では、1、1 <2→変更はありません。 結果は「1」の値です。

2.シンドロームレジスタ:「0000110010100」→「0000110010100」

しきい値1では、1 <2→変更はありません。 結果は「1」の値です。

......

6シンドロームレジスタ:「1100101000000」→「0000000000000」。

しきい値4、4> 2で→変更があります。 結果は「0」の値であり、シンドロームに変更が加えられます。

その結果、デコード後、「1 1 0 1 1 0 1 1 0 1 1 1 0」というメッセージが表示されます。 エラーは修正されました。 そして、すべてのビットの位置を反転すると、最初のメッセージ「0 1 1 1 0 1 1 0 0 1 1 0 1 1」が得られます。



エピローグ



しきい値デコーダーは、実装の容易さ、効率、および速度の優れた組み合わせです。 その開発は、マルチしきい値デコーダーです。 近いうちにどれを試すかを教えてください。

それを読んでくれたすべての人に感謝します。 建設的なコメント/コメントがあれば嬉しいです。 私は理解できるようにしようとしました:)



All Articles