畳み込み符号化
畳み込み符号は、一般に前方誤り訂正に適したノンブロッキング符号です。ブロック コードでは、エンコーダによって生成される n シンボルのコード グループは、この期間中の k ビットの入力情報によって完全に決定されます。このコード グループ内の監視ビットは、このコード グループ内の k 個の情報ビットのみを監視します。畳み込み符号も k ビットの情報セグメントを n ビットの符号グループに符号化しますが、監視シンボルは現在の k ビットの情報セグメントだけでなく、前の m = (N -1) 個の情報セグメントにも関連します。したがって、コードグループ内の監視シンボルは N 個の情報セグメントを監視します。通常、Nは符号化制約度と呼ばれ、nNは符号化制約長と呼ばれます。
一般に、畳み込み符号の場合、k と n の値は比較的小さな整数であり、n は k より大きく、畳み込み符号は (n,k,N) として記録され、符号化率は kn\ として定義されます。 frac{k} { n}nk。
エンコーダは、Nk ステージのシフト レジスタ、nモジュロ 2 加算器、およびロータリー スイッチを含む 3 つの主要コンポーネントで構成されます。各モジュロ 2 加算器の入力端子の数は異なります。入力端子は一部のシフト レジスタの出力端子に接続されます。モジュロ 2 加算器の出力端子はロータリー スイッチに接続されます。ロータリー スイッチはタイムスロットごとに 1 回回転し、 nビットを出力します。時間を等間隔のタイム スロットに分割し、各タイム スロットで k ビットがシフト レジスタに左端から入力され、シフト レジスタの各レベルに一時的に格納されている情報が k ビット右にシフトされます。
畳み込みエンコーダの一般原理ブロック図を次の図に示します。
(3,1,3) 畳み込みエンコーダのブロック図を次の図に示します。
上記のブロック図によれば、
ci = bi {c_i}={b_i}c私は=b私は
di = bi ⊕ bi − 2 {d_i}={b_i}⊕{b_{i-2}}d私は=b私は⊕bi − 2
ei = bi ⊕ bi − 1 ⊕ bi − 2 {e_i}={b_i}⊕{b_{i-1}}⊕{b_{i-2}}e私は=b私は⊕bi − 1⊕bi − 2
其中, b i {b_i} b私は現在の入力情報ビット、bi − 1 {b_{i-1}}bi − 1和 b i − 2 {b_{i-2}} bi − 2シフト レジスタに保存される情報の最初の 2 ビット。M 3 M 2 {M_3M_2}
によるとM3M2異なる場合、定義された状態テーブルは次のようになります。
M 3 M 2 {M_3M_2}M3M2 | 対応ステータス |
---|---|
00 | ある |
01 | b |
10 | c |
11 | d |
シフトレジスタの状態と入出力シンボルの関係は下表のとおりです。
シフト レジスタの以前の状態M 3 M 2 {M_3M_2}M3M2 | 输入 b i {b_i} b私は | M 3 M 2 M 1 {M_3M_2M_1}M3M2M1 | シディエイ {c_id_ie_i}c私はd私はe私は | シフトレジスタの次の状態M 3 M 2 {M_3M_2}M3M2 |
---|---|---|---|---|
あ(00) | b 1 = 0 {b_1}=0b1=0 | 000 | 000 | あ(00) |
あ(00) | b 1 = 1 {b_1}=1b1=1 | 001 | 111 | b(01) |
b(01) | b 2 = 0 {b_2}=0b2=0 | 010 | 001 | c(10) |
b(01) | b 2 = 1 {b_2}=1b2=1 | 011 | 110 | d(11) |
c(10) | b 3 = 0 {b_3}=0b3=0 | 100 | 011 | あ(00) |
c(10) | b 3 = 1 {b_3}=1b3=1 | 101 | 100 | b(01) |
d(11) | b 4 = 0 {b_4}=0b4=0 | 110 | 010 | c(10) |
d(11) | b 4 = 1 {b_4}=1b4=1 | 111 | 101 | d(11) |
状態 a の次の状態は a または b のみであり、状態 b の次の状態は c または d のみであり、状態 c の次の状態は a または b のみであり、状態の次の状態は a または b のみであることがわかります。 d は c または d のみにすることができます。
畳み込みコードの幾何学的表現は、コード ツリー図、状態図、およびグリッド図に分類できます。
上記の (3,1,3) 畳み込みエンコーダに対応するコード ツリー図を次の図に示します。
コードツリー図では、入力情報ビットが0の場合は状態が上に移動し、入力情報ビットが1の場合は状態が下に移動します。
4 番目のレベルの分岐から開始すると、コード ツリーの上半分と下半分は同じであることがわかります。これは、4 番目の入力情報ビットから開始して、出力シンボルが最初の入力情報と何の関係もないことを意味します。即ち、これ エンコーダの拘束度はN=3である。また、コードツリー図上では、情報ビットを入力することで符号化後の出力シーケンス(たとえば、入力シーケンスが 1101 の場合、出力シーケンスは 111 110 010 100)を読み取ることができます。読み出し時は、入力情報ビットが 1 の場合は下位ブランチが読み出され、入力情報ビットが 0 の場合は上ブランチが読み出されます。
上記の (3,1,3) 畳み込みエンコーダに対応する状態図を次の図に示します。
状態図において、点線は入力情報ビットが1の場合の状態遷移ルートを表し、実線は入力情報ビットが0の場合の状態遷移ルートを表します。
行の横にある 3 桁の数字は、エンコードされた出力ビットです。出力シーケンスは、状態図を使用して入力シーケンスに基づいて簡単に取得することもできます。読み出し時はステートaから開始し、入力が1の場合は点線の3ビットを出力として読み出し、入力が0の場合は実線の3ビットを出力として読み出し、次のステートにジャンプします。そして読み続けてください。
上記の (3,1,3) 畳み込みエンコーダに対応するグリッド図を次の図に示します。
グリッド図において、点線は入力情報ビットが 1 であることを示し、実線は入力情報ビットが 0 であることを示します。
4 番目のタイムスロットの後のグリッド パターンは 3 番目のタイムスロットのパターンを完全に繰り返していることがわかります。これは、畳み込み符号の拘束長が 3 であることも反映しています。
ビタビ復号化
ビタビ復号アルゴリズムは、1967 年にビタビによって提案されました。この方法は比較的単純で計算が速いため、広く使用されています。基本原理は、受信信号シーケンスをすべての可能な送信信号シーケンスと比較し、最小のハミング距離を持つシーケンスを現在の送信信号シーケンスとして選択することです。
情報理論では、同じ長さの 2 つの文字列間のハミング距離は、2 つの文字列の対応する位置にある異なる文字の数です。言い換えれば、これは、ある文字列を別の文字列に変換するために置換する必要がある文字の数です。たとえば、0000 と 1111 の間のハミング距離は 4、0000 と 0101 の間のハミング距離は 2 です。
以下では、この例を使用してビタビ復号化プロセスを説明します。送信されたシーケンスが 1101 で、エンコードされたシーケンスが 111 110 010 100 であると仮定します。
これは (n,k,N) = (3,1,3) 畳み込み符号であるため、送信シーケンスの制約次数は N = 3 であるため、最初の nN = 9 ビット、つまり 111 を調べる必要があります。 110 010、そしてパスに沿って毎回 最初のレベルには 4 つの状態があり、各状態には 2 つのパスによってのみ到達できます。したがって、4 つの状態には 8 つの到着パスがあります。次に、対応するシーケンス間のハミング距離を比較します。これら 8 つのパスと受信シーケンス 111 110 010 のリストは次のとおりです。
パス | 対応する配列 | ハミング距離 | 生き残るか否か |
---|---|---|---|
ああああ | 000 000 000 | 6 | いいえ |
アブカ | 111 001 011 | 4 | はい |
ああああ | 000 000 111 | 7 | いいえ |
abcb | 111 001 100 | 5 | はい |
aabc | 000 111 001 | 6 | いいえ |
アブDC | 111 110 010 | 0 | はい |
アブド | 000 111 110 | 5 | いいえ |
アブド | 111 110 101 | 3 | はい |
2 つのパスの各状態までのハミング距離を比較し、距離が小さい方のパスを保持します。これを生き残りパスと呼びます。2 つのパスのハミング距離が同じ場合、どちらか一方を維持できるため、残りのパスは 4 つだけになります。
次に、後続の 3 桁 100 の調査を続け、以下の表に示すように、上記の 4 つの生き残ったパスを 1 レベル増やした後の 8 つの可能なパスのハミング距離を計算します。
パス | 元の生き残ったパスのハミング距離 | 新しいパスを追加 | 距離を追加する | 総距離 | 生き残るか否か |
---|---|---|---|---|---|
アブカ+ア | 4 | ああ(000) | 1 | 5 | いいえ |
絶対直流+α | 0 | ca(011) | 3 | 3 | はい |
abc+b | 4 | アブ(111) | 2 | 6 | いいえ |
abdc+b | 0 | cb(100) | 0 | 0 | はい |
abcb+c | 5 | bc(001) | 2 | 7 | いいえ |
abdd+c | 3 | DC(010) | 2 | 5 | はい |
abcb+d | 5 | BD(110) | 1 | 6 | いいえ |
アブド+ディ | 3 | dd(101) | 1 | 4 | はい |
テーブル内の最小のハミング距離は 0、対応するパスは abdcb、対応するシーケンスは 111 110 010 100 で、入力エンコード シーケンスと一致するため、対応する送信シーケンスは 1101 となり、デコードが完了します。
シーケンス内に少量のビット エラーがある場合でも、デコードを完了することができます。
上記の例でも、送信されたシーケンスは 1101 で、エンコードされたシーケンスは 111 110 010 100 です。受信シーケンスのビット 4 と 11 でエラーが発生したと仮定します。つまり、受信シーケンスは 111 010 010 110 です。
リスト解析も同様の方法で、最初の nN = 9 ビット 111 010 010 を調べ、8 パスの対応するシーケンスと受信シーケンス 111 010 010 のハミング距離を比較します。
パス | 対応する配列 | ハミング距離 | 生き残るか否か |
---|---|---|---|
ああああ | 000 000 000 | 5 | いいえ |
アブカ | 111 001 011 | 3 | はい |
ああああ | 000 000 111 | 6 | いいえ |
abcb | 111 001 100 | 4 | はい |
aabc | 000 111 001 | 7 | いいえ |
アブDC | 111 110 010 | 1 | はい |
アブド | 000 111 110 | 6 | いいえ |
アブド | 111 110 101 | 4 | はい |
次に、後続の 3 桁 110 の調査を続け、以下の表に示すように、上記の 4 つの生き残ったパスを 1 レベル増やした後の 8 つの可能なパスのハミング距離を計算します。
パス | 元の生き残ったパスのハミング距離 | 新しいパスを追加 | 距離を追加する | 総距離 | 生き残るか否か |
---|---|---|---|---|---|
アブカ+ア | 3 | ああ(000) | 2 | 5 | いいえ |
絶対直流+α | 1 | ca(011) | 2 | 3 | はい |
abc+b | 3 | アブ(111) | 1 | 4 | いいえ |
abdc+b | 1 | cb(100) | 1 | 2 | はい |
abcb+c | 4 | bc(001) | 3 | 7 | いいえ |
abdd+c | 4 | DC(010) | 1 | 5 | はい |
abcb+d | 4 | BD(110) | 0 | 4 | はい |
アブド+ディ | 4 | dd(101) | 2 | 6 | いいえ |
テーブル内の最小のハミング距離は 2 で、対応するパスは依然として abdcb であり、その対応するシーケンスは 111 110 010 100 であり、入力コーディング シーケンスと一致しているため、対応する送信シーケンスは 1101 であり、正しい変換は次のようになります。完成したコードです。
畳み込み符号化とビタビ復号化については以上です。
この記事の参考資料:
Principles of Communication/Fan Changxin、Cao Lina編