前方誤り訂正(FEC: Forward Error Correction)は、データ伝送におけるエラー検出と訂正を同時に行う技術です。データ送信時に、元のデータにエラー訂正のための冗長な情報を付加することで、受信側は再送要求を行うことなく、受信データに含まれるエラーを直接修正できます。このため、一方向誤り訂正とも呼ばれます。
FECは、ノイズの影響を受けにくい堅牢なデータ伝送を実現します。データの一部がノイズによって損傷を受けても、付加された冗長情報から元のデータを復元できます。デジタル通信システムにおいて、ある程度のノイズレベルまでは完璧に機能しますが、ノイズレベルが許容範囲を超えると、全く機能しなくなるという特性があります。この「全てか無しか」の挙動は、特にシャノン限界に近い性能を持つ強力な符号で顕著です。
FECの大きな利点は、エラー発生時の再送が不要な点です。再送には時間と帯域幅を要するため、リアルタイム性が求められる動画配信や音声通話、衛星通信などでは、遅延を抑える上で非常に有効です。一方で、エラー訂正用の符号を付加するため、データ量は増加します。このデータ量の増加は、訂正能力の高さとのトレードオフ関係にあります。より多くのエラーを訂正できる符号は、それだけ多くの冗長情報が必要となるためです。
FECは、大きく分けてブロック符号と畳み込み符号の2種類があります。
ブロック符号は、データを一定サイズのブロック(パケット)に分割し、各ブロックに対して独立に符号化を行います。リード・ソロモン符号、ゴレイ符号、BCH符号、ハミング符号などは、代表的なブロック符号です。
コンパクトディスクや
DVD、コンピュータのハードディスクドライブなど、幅広い分野で利用されています。多くのブロック符号は、有限体の代数的な性質を利用して設計されています。
畳み込み符号は、任意の長さのデータ列を連続的に符号化します。必要に応じてブロック符号に変換することも可能です。復号には、ビタビアルゴリズムが広く用いられますが、他のアルゴリズムも使用されます。
ブロック符号と畳み込み符号は、それぞれ異なる特性を持つため、これらを組み合わせることで、より高度なエラー訂正能力を持つシステムを構築できます。一般的には、畳み込み符号を基本とし、その復号過程で発生したエラーをブロック符号を用いて二次的に訂正する構成が用いられます。この手法は、1986年のボイジャー2号による
天王星探査において初めて実用化され、以来、人工衛星や宇宙探査機の通信において標準的な技術となっています。
近年注目されているFEC方式として、ターボ符号があります。ターボ符号は、複数の比較的単純な畳み込み符号とインタリーバと呼ばれるデータ並べ替え機構を組み合わせることで、シャノン限界に極めて近い高いエラー訂正能力を実現します。
ターボ符号は、CDMA2000 1x (TIA IS-2000) などの携帯電話通信システムで初めて商用利用されました。これは
クアルコムによって開発され、世界中の通信事業者によって広く展開されました。その後継規格である1xEV-DO (TIA IS-856) でもターボ符号が使用されています。
このように、FECはデータ伝送における信頼性を高める上で重要な役割を果たしています。今後も、より高度な符号化技術の開発が進み、様々な通信システムで利用されることが期待されます。