トピックハブ

チャネル符号化

前方誤り訂正によってリンクをシャノン限界の近くで動作させる仕組みを解説します。ブロック符号と畳み込み符号、ターボ符号・LDPC符号・ポーラ符号、軟判定復号、5G NRがどのチャネルにどの符号を使うか、HARQを扱います。

更新 2026年11月15日 · 前方誤り訂正、畳み込み符号、ターボ符号、LDPC符号、ポーラ符号、軟判定復号、HARQ、TS 38.212

概要

チャネル符号化は、構造化された冗長性を加えることで、雑音やフェージングによる誤りを受信機が訂正できるようにします。符号化しないリンクには10 dB以上の余裕が必要ですが、現代のリンクがシャノン限界から数dBの範囲で動作できるのはチャネル符号化のおかげです。符号化利得は、無線機で得られる最も安価な利得です。処理と若干の伝送レートを必要としますが、送信電力・スペクトラム・アンテナ面積は必要としません。

本ハブでは、実用上重要な符号の系統、復号器による軟情報の使い方、セルラーシステムにおける符号化と再送の組み合わせ方を扱います。規格が特定の符号を選んだ理由、チップセットやFPGAの復号器が行っている処理、符号化リンクを正しくシミュレーションする方法を知る必要があるエンジニアを対象としています。

重要な考え方

冗長性・符号化率・軟判定

符号はK個の情報ビットをN個の符号化ビットに対応付けます。符号化率はR = K/Nです。冗長性があるため、一部のビットが誤っていても、復号器は送信された可能性が最も高い符号語を見つけられます。Hammingが1950年に発表した符号は、短いブロック内の単一誤りを訂正します。巡回冗長検査(CRC)は誤りを検出するだけです。セルラーのトランスポートブロックにはすべてCRCが付加されており、受信機は復号が成功したかどうかを判断できます。

実用上最大の利得は軟判定から得られます。復調器は0と1の硬判定値ではなく、ビットごとに対数尤度比(LLR)を渡します。LLRの正負は可能性の高い値を、大きさは信頼度を表します。軟判定復号は硬判定よりも測定可能なほど性能が高く、一部のビットが他のビットよりはるかに弱く届くフェージングチャネルでは、その差がさらに大きくなります。

畳み込み符号とターボ符号

畳み込み符号は、ビット列をシフトレジスタに通し、現在と直近の入力に依存するパリティビットを出力します。Viterbiが1967年に発表したアルゴリズムは、符号のトレリス上で最も可能性の高いパスを探索して復号します。その計算量はメッセージ長ではなく状態数に応じて増えます。畳み込み符号は現在も短い制御メッセージに使われています。

ターボ符号は、1993年にBerrou、Glavieux、Thitimajshimaが発表した符号で、2つの畳み込み符号器をインタリーバを介して連接します。復号器は軟情報を反復して交換し、原論文はシャノン限界に近い性能を報告しました。LTEはターボ符号を採用しました。3GPP TS 36.212(Release 19版)では、LTEは共有・ページング・マルチキャストのデータチャネルに符号化率1/3のターボ符号を、報知チャネルと下りリンク制御情報に符号化率1/3のテールバイティング畳み込み符号を使います。

5G NRのLDPC符号とポーラ符号

低密度パリティ検査(LDPC)符号は、1962年にGallagerが提案し、1996年にMacKayとNealが再発見した符号で、疎なパリティ検査行列で定義されます。確率伝搬(belief propagation)復号器は行列のエッジに沿ってメッセージを受け渡し、並列化しやすいため、NRの高いスループットに適しています。ポーラ符号は、2009年にArıkanが導入した符号です。対称な2元入力無記憶通信路において、低計算量の符号化・復号で通信路容量を達成することが証明されています。短いブロック長では、CRC支援の逐次除去リスト復号器で復号します。

3GPP TS 38.212(Release 19版)では、NRは上りリンク・下りリンクの共有チャネルとページングチャネルにLDPC符号を使います。2つのベースグラフが異なるブロックサイズと符号化率を受け持ちます。最大コードブロックサイズは、ベースグラフ1が8448 ビット、ベースグラフ2が3840 ビットです。ポーラ符号は、報知チャネル、下りリンク制御情報、12 ビット以上の上りリンク制御情報を保護します。11 ビット以下の上りリンク制御情報には小ブロック符号を使います。

NR DL-SCHの符号化チェーンtransport blockコードブロックBG1またはBG2循環バッファQAMシンボルTB CRC分割LDPCrate match連結変調チャネル軟合成LDPC復号・CRC検査NACK: 再送次のRVを使用ACK: 次のブロックNRのその他のチャネルBCH・DCI: ポーラ符号UCI: 小ブロック符号またはポーラ符号
TS 38.212に規定されたNR下りリンク共有チャネルの符号化チェーンとHARQ。トランスポートブロックにCRCを付加し、それぞれCRCを持つコードブロックに分割してLDPC符号化します。続いて、冗長バージョンで決まる開始点から循環バッファを読み出してレートマッチングを行い、連結します。その後、TS 38.211の規定どおりスクランブリングと変調を行います。復号に失敗すると受信機はNACKを送り、送信機は別の冗長バージョンを送ります。受信機はそれを保持済みの値と合成します。制御チャネルは代わりにポーラ符号または小ブロック符号を使います。

HARQ

ハイブリッド自動再送要求(HARQ)は、符号化と再送を組み合わせる仕組みです。送信機は符号化したブロックを送信し、そのブロックを保持しておきます。CRC検査に失敗すると、受信機は軟値を保持したまま否定応答を送ります。再送されたデータは、保存済みの値と合成してから再度復号します。チェイス合成では、再送はすべて同一です。インクリメンタル冗長では、再送ごとに異なる符号化ビットを送るため、実効符号化率は試行のたびに下がります。

TS 38.300は、NRのHARQを非同期のインクリメンタル冗長と説明しています。レートマッチャはLDPCの出力を循環バッファに書き込み、0から3の値をとる冗長バージョンが読み出しの開始位置を決めます。TS 38.214は、セルあたり各方向に最大16個、端末(UE)が対応している場合は32個のHARQプロセスをサポートします。このため、前のブロックが確認応答を待っている間も、リンクは新しいデータを送り続けられます。残留誤りはHARQが捕捉するため、リンクアダプテーションは誤りゼロを目標にしません。TS 38.214の通常のCQIテーブルでは、UEはトランスポートブロック誤り確率が0.1を超えない最大のCQIを報告します。

どこから始めるか

入門トラックでは、符号化の前提となる変調と雑音を扱います。まず/learn/beginner/04-noise-snr-and-capacity/と/learn/beginner/05-digital-modulation/を読んでください。プロジェクト/projects/qpsk-modem-ber/では、符号化リンクと比較するための符号化なしのベースラインが得られます。畳み込み符号・LDPC符号・ポーラ符号の復号を扱う中級レッスンは準備中です。/reference/capacity-and-spectral-efficiency/と3GPP仕様マップを手元に置いておくと便利です。

ツールとプラットフォーム

ツール 用途 ライセンス プラットフォーム
AFF3CT LDPC・ポーラ・ターボ・畳み込み・BCH・Reed-Solomon符号の高速なC++シミュレーション MIT /platforms/opensource/
Sionna リンクレベルシミュレータに含まれる5G NRのLDPC・ポーラ符号の符号器と復号器 Apache-2.0 /platforms/opensource/
CommPy Pythonによる畳み込み符号器、ViterbiおよびMAP復号器、ターボ符号、LDPC確率伝搬 BSD-3-Clause /platforms/opensource/
GNU Radioのfecモジュール 畳み込み・LDPC・ポーラ符号の符号器と復号器をストリーミングブロックとして提供 GPL-3.0 /platforms/gnuradio/

復号器のハードウェアについては、FPGA GuideのDSP on FPGAハブで演算処理を解説しています。

よくある間違い

  • 符号化ありと符号化なしの曲線を、Eb/N0ではなくシンボルあたりのSNRで比較すること。これでは符号化率によるペナルティが見えなくなります。
  • 正負の規約やスケーリングが誤ったLLRを軟判定復号器に入力すること。まず雑音のない入力で確認してください。
  • LDPC符号やターボ符号のエラーフロアを確認するには少なすぎるブロック数でシミュレーションすること。
  • ブロック誤り率とビット誤り率を区別せずに引用すること。
  • ある規格のLDPC復号器が別の規格でも使えると思い込むこと。パリティ検査行列が異なります。

さらに深く

最近の論文

  • Optimization of Finite Alphabet Message Passing Decoding on Fully Node-Parallel Architectures for 5G LDPC Codes

    A. von Bank, O. Griebel, E.-M. Edelmann et al. · arXiv cs.IT · ダイジェスト

    有限アルファベットLDPC復号器は、メッセージ更新の算術演算を小さなルックアップテーブルに置き換えるため、完全並列ハードウェアで配線と電力を節約できます。著者らは、チャネルや変調を仮定せず、フレーム誤り率を目的関数とするベイズ最適化でこれらのテーブルを設計し、すべての反復で共通に使う1組のテーブルを得ました。シミュレーションによる2値入力AWGNチャネル上で、5G NRのbase graph 2の(1000, 500) LDPC符号に対し、この復号器は正規化min-sum復号器と同等の誤り率を達成しました。12 nm FinFETプロセスで論理合成と配置配線を行った結果、21.6 Gbit/s、15.36 pJ/bitに達し、min-sumの25.02 pJ/bitに対してエネルギー効率で38.6%の改善となりました。これらは1つの符号に対するレイアウト後の見積もりであり、実測したシリコンの値ではありません。