チャネルコーディングとは
チャネルコーディングは、デジタル通信で使用される技術であり、エラーが最小限またはエラーなしで送信されることを保証します。 使用できるさまざまなコーディング方法は、追加の2進数を送信に織り込むことによって実現されます。 受信側でデコードされると、送信で発生した可能性のあるエラーをチェックでき、多くの場合、修復されます。 それ以外の場合、受信者は単に送信を再度要求します。
チャネルコーディングの背後にある考え方は、特定のタイプの通信チャネルにエラーが避けられないために開発されました。 電波、電気信号、さらには光ファイバチャネル上の光波でも、媒体上である程度のノイズが発生するほか、一定の距離で発生する信号の劣化が発生します。 通信におけるこのような共通の問題であるため、情報理論やコーディング理論などの応用数学の分野で、それを処理するための多くの理論が発展しています。
一般的に使用される方法の1つは、自動再送要求(ARQ)と呼ばれます。これは、受信者が伝送のエラーをチェックし、発生した場合は再送信を要求するだけです。 これは、逆方向エラー訂正と呼ばれることもあります。 一方、チャネルコーディングは、前方誤り訂正(FEC)技術です。 送信者は、エラー修正コードと呼ばれる特別なアルゴリズムを使用して送信用のビットを準備し、受信側でデコードされます。 どちらの方法もハイブリッド方式で使用されることが多く、伝送の小さなエラーをチャネルコードで修復できます。大きなエラーでは完全な再送信が必要です。
最初のチャネルコーディング手法は、ハミングコードとして知られるものを開発したリチャードハミングという数学者によって作成されました。 これは、パリティビットと呼ばれる伝送に追加の2進数を含めることを必要とする最初の前方誤り訂正コードでした。 伝送の受信側でのパリティビットの巧妙な計算により、伝送でエラーが発生したかどうか、ビットストリングのどこにあるか、および元の伝送を回復するためにそれらを修復する方法が明らかになります。
ハミングコードは、ブロックコードと呼ばれるチャネルコーディング方法のファミリに分類され、その多くは長年にわたって開発されてきました。 通常、ブロックコードには、固定長のブロックに収集されるビットが含まれます。これは、コードワードと呼ばれます。 各コードワードには、受信者がデコードするための適切なチェックビットが与えられます。 ブロックコード方式では、コードワードにビットが追加されるため、伝送のサイズが大きくなる傾向があり、チャネルの帯域幅に影響を与える可能性があります。
別のチャネルコーディング方法は、畳み込みコードとして知られています。 これらのメソッドははるかに高速で、任意の長さのビットストリームをエンコードできます。 このタイプの一般的に使用されるコードの1つは、イタリアの数学者Andrew Viterbiによって作成されたViterbiコードと呼ばれます。 この方法の欠点は、畳み込みコードの長さが長くなると、デコード時の複雑さが増すことです。 多くの場合、畳み込みコードは、連結エラー訂正コードとして知られているブロックコードと組み合わせて使用されます。