変調・符号化#118

デュオバイナリ符号 — あえてISIを許容する部分応答方式

ナイキスト第1基準の『ISIを完全にゼロにする』という要求は、実は急峻すぎるフィルタという実装上の代償を伴う。隣接シンボルとの和を送るデュオバイナリ符号が、制御された1シンボル分のISIをあえて許容することで、緩やかなフィルタと引き換えに帯域幅を節約する仕組みを、プリコーディングによる誤り伝搬対策まで含めて数式で理解する。

前提知識: パルス整形とナイキスト基準 — 帯域を有限に収める設計

部分応答方式デュオバイナリ符号間干渉プリコーディング帯域幅効率

この回で学ぶこと

パルス整形とナイキスト基準の回では、符号間干渉(Inter-Symbol Interference, ISI)を完全にゼロにするための条件を導出しました。ナイキストのISIゼロ基準

n=P ⁣(f+nT)=T\sum_{n=-\infty}^{\infty} P\!\left(f + \frac{n}{T}\right) = T

を満たす限り、パルス整形フィルタ p(t)p(t) は理論上どんな帯域幅を使ってもよいのですが、実際に使える帯域幅には上限があるため、多くのシステムはこの条件を満たす最小帯域幅、つまりロールオフ率 α0\alpha \to 0 の理想矩形(ブリックウォール)フィルタに近づけたくなります。ところが前回学んだ通り、α0\alpha \to 0 に近づけるほどフィルタの遷移域は急峻になり、有限タップ数のディジタルフィルタで正確に実現するのが難しくなるという実装上の壁にぶつかります。ISIをゼロにするという「理想」を追求すればするほど、フィルタの「現実」が苦しくなる、というトレードオフです。

この回では、発想を少し変えてみます。ISIを完全にゼロにすることをそもそも諦め、その代わりに「隣の1シンボルとだけ、決まった量だけ干渉する」という、あらかじめわかっている・制御された形のISIをわざと作り出すとどうなるでしょうか。これが部分応答方式 (Partial Response Signaling)、あるいは相関符号化 (Correlative Coding) と呼ばれる考え方で、最も基本的で実務でも使われる形が、隣接するシンボルどうしの和を送るデュオバイナリ (Duobinary) 符号です。ISIを完全に消し去るのではなく、その振る舞いを完全に把握・制御した上で受信側で取り除く、という発想の転換によって、より緩やかで実装しやすいフィルタ特性のまま、理論的な最小帯域幅を達成できることを見ていきます。

直感的な導入: 「あえてISIを残す」という発想

前回の議論を思い出しましょう。理想矩形フィルタ P(f)=TP(f) = T (f1/(2T)|f| \le 1/(2T))、00 (それ以外) は、ナイキスト条件を満たす帯域幅最小のフィルタでした。その時間応答は p(t)=sinc(t/T)p(t) = \text{sinc}(t/T) で、t=nTt = nT (n0n \ne 0) においてきれいにゼロを通ります。問題は、このフィルタを実現するには周波数 f=1/(2T)f = 1/(2T) でスペクトルが TT から 00不連続にジャンプする必要があり、これは物理的に実現不可能(無限に急峻)だという点でした。レイズドコサイン・RRCフィルタは、この不連続な崖をコサインでなだらかにする代わりに、余分な帯域幅(α\alpha 分の遷移域)を支払う、という解決策でした。

デュオバイナリの発想はこうです。「崖をなだらかにするために帯域幅を追加で払う」のではなく、「崖の直前(ナイキスト周波数のちょうど際)でスペクトルが自然にゼロへ滑らかに収束するような別のパルス波形を、最小帯域幅 1/(2T)1/(2T) の中で作れないか」と考えます。答えは作れます。ただしその代償として、時間領域では隣接する1シンボル分だけ、大きさも符号もあらかじめわかっている形でISIが残ります。このISIは雑音ではなく、送信側で意図的に作られた決定論的な干渉なので、受信側でその発生規則を知っていれば、正しく元のビット列に戻すことができます。「ISIを消す」から「ISIを飼い慣らす」への発想の転換、これがデュオバイナリの核心です。

デュオバイナリ符号の定式化

相関符号化: 隣接シンボルの和

送信したい2値データ列を ak{1,+1}a_k \in \{-1, +1\} とします(前回・前々回と同じ、0/10/1 ビットをバイポーラ電圧に対応させたもの)。デュオバイナリ符号は、この aka_k を1シンボル分の遅延を挟んで足し合わせた新しい系列 ckc_k を作り、それを実際に送信します。

ck=ak+ak1c_k = a_k + a_{k-1}

ak,ak1{1,+1}a_k, a_{k-1} \in \{-1, +1\} なので、ckc_k は3通りの値しか取りません。

ck{2, 0, +2}c_k \in \{-2,\ 0,\ +2\}

ak=ak1a_k = a_{k-1} のとき ck=±2c_k = \pm 2(振幅最大)、akak1a_k \ne a_{k-1} のとき ck=0c_k = 0 です。つまり送信信号は2値のバイポーラPAMではなく、3値(ternary)のPAM信号になります。この操作は、記号 DD を「1シンボル周期だけ遅延させる演算子」として使うと、多項式の形で簡潔に書けます。

C(D)=A(D)(1+D)C(D) = A(D)\cdot(1 + D)

(1+D)(1+D) という多項式が、デュオバイナリという「1次(1-tap)の部分応答」を特徴づける相関符号化多項式です。一般に kk 個先までのシンボルと相関を持たせる高次の部分応答方式(たとえば修正デュオバイナリ 1D21-D^2 など)も存在しますが、この回では最も基本的な (1+D)(1+D) の場合、すなわちデュオバイナリに絞って扱います。

パルス応答とナイキスト第2基準

なぜこの操作が「制御されたISI」を生むのかを、パルス波形のレベルで確認しましょう。理想的なナイキストパルス(前回学んだ、最小帯域幅 1/(2T)1/(2T) の理想矩形フィルタの時間応答)を p(t)=sinc(t/T)p(t) = \text{sinc}(t/T) とします。デュオバイナリ符号 ck=ak+ak1c_k = a_k + a_{k-1} を、この p(t)p(t) で送信したときの実効パルス応答 g(t)g(t) は、p(t)p(t) 自身とそれを1シンボル分遅らせたものの和になります。

g(t)=p(t)+p(tT)=sinc ⁣(tT)+sinc ⁣(tTT)g(t) = p(t) + p(t - T) = \text{sinc}\!\left(\frac{t}{T}\right) + \text{sinc}\!\left(\frac{t-T}{T}\right)

この g(t)g(t) を整数倍のシンボル間隔 t=nTt = nT でサンプリングしてみます。sinc(n)=0\text{sinc}(n) = 0 (n0n \ne 0 の整数)、sinc(0)=1\text{sinc}(0) = 1 であることを使うと、

g(nT)={1n=01n=10それ以外の整数 ng(nT) = \begin{cases} 1 & n = 0 \\ 1 & n = 1 \\ 0 & \text{それ以外の整数 } n \end{cases}

前回のナイキスト第1基準(ISIゼロ基準)は「p(nT)p(nT) は原点だけ1、それ以外は全部0」でした。この g(t)g(t) は原点だけでなく、隣の1シンボル先(n=1n=1)でも値1を持つという点で第1基準を破っています。しかしその破り方は無秩序ではなく、「ちょうど1シンボル先にだけ、大きさ1の既知の干渉が乗る」という完全に決定論的で有限な形をしています。このように、ISIをゼロにする代わりに、有限個の隣接シンボルに限定された既知のパターンのISIを許容する基準を**ナイキスト第2基準(制御されたISIの基準)**と呼びます。デュオバイナリはこの第2基準を満たす最も単純な(11シンボル先のみに干渉が及ぶ)部分応答パルスです。

なぜ実装が楽になるのか: 周波数領域で見る

g(t)=p(t)+p(tT)g(t) = p(t) + p(t-T) をフーリエ変換すると、時間シフトはフーリエ変換上で位相回転になるので、

G(f)=P(f)(1+ej2πfT)=2P(f)cos(πfT)ejπfTG(f) = P(f)\left(1 + e^{-j2\pi f T}\right) = 2P(f)\cos(\pi f T)\, e^{-j\pi f T}

理想矩形フィルタ P(f)=TP(f) = T (f1/(2T)|f| \le 1/(2T))、00 (それ以外) を代入すると、振幅特性は

G(f)={2Tcos(πfT),f12T0,f>12T|G(f)| = \begin{cases} 2T\left|\cos(\pi f T)\right|, & |f| \le \dfrac{1}{2T} \\[4pt] 0, & |f| > \dfrac{1}{2T} \end{cases}

ここが前回との対比で最も重要な点です。ナイキスト周波数 f=1/(2T)f = 1/(2T) ちょうどで cos(πfT)=cos(π/2)=0\cos(\pi f T) = \cos(\pi/2) = 0 となるため、G(f)|G(f)| はこの境界でなめらかにゼロへ収束します。理想矩形フィルタ P(f)P(f) 自身は境界で TT から 00 へ不連続にジャンプしていたのに対し、デュオバイナリの実効スペクトル G(f)G(f) は、帯域幅を追加で使うことなく(占有帯域幅はあくまで最小の 1/(2T)1/(2T) のまま)、境界での不連続を解消しています。レイズドコサインフィルタが「帯域幅を α\alpha 分だけ余分に使って崖をなだらかにする」設計だったのに対し、デュオバイナリは「1シンボル分の制御されたISIと引き換えに、最小帯域幅の中で崖をなだらかにする」設計だと言えます。この滑らかな減衰特性のおかげで、送受信フィルタに要求される遷移域の急峻さが大幅に緩和され、有限タップ数のディジタルフィルタでも高い精度で実現できるようになります。

受信側の復号: プリコーディングとモジュロ演算

素朴な復号とその問題点

受信側では、雑音を無視すればサンプル値 ck=ak+ak1c_k = a_k + a_{k-1} がそのまま得られます。ここから元の aka_k を復元する最も素朴な方法は、1つ前に復号したシンボル a^k1\hat{a}_{k-1} を使って引き算することです。

a^k=cka^k1\hat{a}_k = c_k - \hat{a}_{k-1}

この方法には重大な弱点があります。もし雑音の影響で a^k1\hat{a}_{k-1} の判定を1つでも間違えると、その誤りが引き算を通じて a^k\hat{a}_k に伝わり、さらに a^k+1\hat{a}_{k+1}a^k+2\hat{a}_{k+2} …と再帰的に伝搬し続けてしまいます。これを誤り伝搬 (Error Propagation) と呼びます。たった1回の雑音による判定誤りが、それ以降のすべてのビットを台無しにしかねないという、実用上は到底受け入れがたい弱点です。

プリコーディング: 送信側での差動符号化

この問題を解決するのがプリコーディング (Precoding) です。デュオバイナリ符号化を行うに、送信データ dk{0,1}d_k \in \{0, 1\} に対して、モジュロ2の差動符号化を1段挟みます。

pk=(dk+pk1)mod2=dkpk1p_k = (d_k + p_{k-1}) \bmod 2 = d_k \oplus p_{k-1}

(\oplus は排他的論理和、p1p_{-1} は初期状態として任意に 00 などを定めておきます。)この pkp_k をバイポーラ電圧に変換したものを実際にデュオバイナリ符号化にかけます。

ak=12pk{+1,1}a_k = 1 - 2p_k \in \{+1, -1\} ck=ak+ak1c_k = a_k + a_{k-1}

このプリコーディングがなぜ効くのかを、pkp_kpk1p_{k-1} の関係で見てみましょう。

  • dk=0d_k = 0 のとき: pk=pk1p_k = p_{k-1}(状態が変化しない)なので ak=ak1a_k = a_{k-1}、よって ck=ak+ak1=±2c_k = a_k + a_{k-1} = \pm 2
  • dk=1d_k = 1 のとき: pkpk1p_k \ne p_{k-1}(状態が反転する)なので ak=ak1a_k = -a_{k-1}、よって ck=ak+ak1=0c_k = a_k + a_{k-1} = 0

驚くべきことに、ckc_k の値だけを見れば、a^k1\hat{a}_{k-1} が何であったかを一切参照せずに dkd_k を復元できることがわかります。ck=2|c_k| = 2 なら dk=0d_k = 0ck=0c_k = 0 なら dk=1d_k = 1 です。これを1つの閉じた式にまとめると、モジュロ4演算を使ってこう書けます。

d^k=(ck+2)mod42\hat{d}_k = \frac{(c_k + 2) \bmod 4}{2}

検算してみましょう。ck=2c_k = -2 なら (ck+2)mod4=0mod4=0(c_k+2) \bmod 4 = 0 \bmod 4 = 0 なので d^k=0\hat{d}_k = 0ck=0c_k = 0 なら (ck+2)mod4=2(c_k+2)\bmod 4 = 2 なので d^k=1\hat{d}_k = 1ck=+2c_k = +2 なら (ck+2)mod4=4mod4=0(c_k+2)\bmod 4 = 4 \bmod 4 = 0 なので d^k=0\hat{d}_k = 0。確かに先ほどの対応関係と一致します。

この復号則の本質は、各シンボルの判定が、直前の判定結果に依存しない「メモリレス(記憶を持たない)」な演算になっていることです。プリコーディングによって、aka_kak1a_{k-1} の「差動的な関係」の情報が既にビット列 {pk}\{p_k\} の中に符号化されているため、受信側は各時刻の ckc_k 単体を見るだけで dkd_k を判定でき、前段の判定を引きずる再帰計算が不要になります。

誤り伝搬の解消

先ほどの素朴な復号 a^k=cka^k1\hat{a}_k = c_k - \hat{a}_{k-1} と比較すると、この違いは決定的です。プリコーディングされたメモリレス復号則のもとでは、雑音によって1つのシンボル ckc_k の3値判定(しきい値は ±1\pm 1 に置く)を誤ったとしても、その誤りは対応する d^k\hat{d}_k 一つだけに影響し、後続の d^k+1,d^k+2,\hat{d}_{k+1}, \hat{d}_{k+2}, \dots には一切波及しません。誤りが時間的に孤立する、という性質は、後段の誤り訂正符号(畳み込み符号やLDPC符号など)と組み合わせる上でも極めて重要です。誤り伝搬を起こす符号と組み合わせると、1回のランダム誤りが長いバースト誤りに化けてしまい、多くの誤り訂正符号の設計前提(ランダムな孤立誤りを想定)を崩してしまうためです。

なお、3値のパルス振幅検出はしきい値が2つ(1-1+1+1)必要になるため、同じ平均送信電力の2値(バイポーラ)伝送と比べると、判定余裕(ノイズマージン)が狭くなり、同じビット誤り率を得るために必要な Eb/N0E_b/N_0 がいくらか悪化します。文献では、シンボルごとの独立判定(最尤系列検出を行わない簡易な方式)によるデュオバイナリは、理想的な2値伝送に対しておよそ2.1dB程度の検波損失があるとされています。この損失は、占有帯域幅を最小限に抑えられるという利点と引き換えのコストであり、リンク設計ではこのトレードオフを踏まえて方式を選択します。

実務での使われ方

デュオバイナリ(相関符号化)は、1963年にA. Lenderが提案して以来、帯域幅が厳しく制約された高速伝送の現場で使われ続けています。

  • 光ファイバー通信: 10Gbps・40Gbps級の長距離DWDM(高密度波長分割多重)光伝送システムでは、光デュオバイナリ変調 (Optical Duobinary Modulation, ODB) が広く採用されてきました。デュオバイナリ化によって送信スペクトルの占有帯域幅を狭められるため、波長分散(ファイバー中を伝搬する際に生じる波形の広がり)への耐性が向上し、また同じ波長グリッド間隔により多くのチャンネルを詰め込める(波長分割多重の高密度化)という実務上の利点があります。
  • 高速電気バックプレーン・SerDes: 数十Gbps級のチップ間・基板間の高速シリアル伝送(バックプレーン、SerDes)においても、伝送路の高周波減衰特性が実質的に部分応答的な波形整形として働くことを逆に利用し、意図的にデュオバイナリ的な符号化と等化を組み合わせて、限られたチャネル帯域の中で高いシンボルレートを実現する設計が用いられることがあります。
  • 衛星通信: 深宇宙探査機の主リンク(CCSDS標準)では、前回学んだ通りRRCフィルタによる帯域幅制御が主流ですが、トランスポンダの帯域幅が厳しく制限されていた初期の商用衛星通信や、狭帯域が割り当てられた一部のリンクでは、デュオバイナリを含む相関符号化方式が帯域幅節約の手段として研究・利用されてきました(K. Feherらによる衛星通信向け相関符号化の研究が代表的です)。

いずれの応用でも共通するのは、「与えられた帯域幅の中でできるだけ高いシンボルレートを詰め込みたいが、フィルタの実装難易度や受信機の複雑さは抑えたい」という要求です。ただし実際のチャネルには、ここで扱った「意図的で既知」のISIに加えて、フィルタの特性ずれやマルチパスなどに起因する意図しない・未知のISIも残留します。この残留ISIを推定して打ち消す技術が**チャネル等化(イコライゼーション)**であり、デュオバイナリのような部分応答方式は、しばしばこの等化技術と組み合わせて使われます。等化技術そのものは、今後のレッスンで改めて扱います。

演習問題

  1. 理想ナイキストパルス p(t)=sinc(t/T)p(t) = \text{sinc}(t/T) を使い、デュオバイナリの実効パルス応答 g(t)=p(t)+p(tT)g(t) = p(t) + p(t-T)t=T, 0, T, 2Tt = -T,\ 0,\ T,\ 2T のそれぞれで評価し、本文中の g(nT)g(nT) の結果(原点と1シンボル先だけが1、それ以外は0)と一致することを確認してください。

  2. 初期状態 p1=0p_{-1} = 0 として、送信データ列 dk=1,0,1,1,0d_k = 1, 0, 1, 1, 0(k=0,1,2,3,4k=0,1,2,3,4)をプリコーディングし、pkp_kaka_kck=ak+ak1c_k = a_k+a_{k-1}(ただし a1=1a_{-1}=1 とする)を順に求めてください。さらに本文のモジュロ4復号則 d^k=[(ck+2)mod4]/2\hat{d}_k = \big[(c_k+2)\bmod 4\big]/2 を各 ckc_k に適用し、元の dkd_k が正しく復元されることを確認してください。

  3. あるシンボルレート RsR_s のリンクで、(a) 理想的なデュオバイナリ方式(最小帯域幅 B=RsB = R_s で送信可能)と、(b) 前回学んだロールオフ率 α=0.35\alpha=0.35 のRRCフィルタを使う方式(占有帯域幅 B=(1+α)RsB=(1+\alpha)R_s)を比較し、同じシンボルレートを送るのに必要な占有帯域幅の差を百分率で求めてください。

  4. プリコーディングを行わずに単純な減算復号 a^k=cka^k1\hat{a}_k = c_k - \hat{a}_{k-1} を使っていると仮定します。ある1つのシンボル区間で雑音により3値判定を誤った場合、その後の復号結果にどのような影響が及ぶか、本文の議論をもとに具体的に説明してください。また、その誤りがプリコーディング+モジュロ復号を使った場合にはどう扱われるかも対比して述べてください。

まとめと次回予告

デュオバイナリ符号は、ナイキスト第1基準の「ISIを完全にゼロにする」という理想を追わず、代わりに「1シンボル分だけの、既知で制御されたISI」をあえて許容する部分応答方式でした。隣接シンボルの和 ck=ak+ak1c_k=a_k+a_{k-1} を送ることで、最小帯域幅 1/(2T)1/(2T) の中でもスペクトルがナイキスト周波数で滑らかにゼロへ収束し(ナイキスト第2基準)、レイズドコサインのように帯域幅を追加で払わなくても実装しやすい特性が得られることを見ました。受信側では単純なしきい値判定や再帰的な減算では誤り伝搬という重大な問題が起きるため、送信側でのプリコーディング(モジュロ2の差動符号化)と、それに対応するモジュロ演算による記憶を持たない復号則を組み合わせることで、この問題を解決する仕組みも確認しました。

「隣接シンボルとの間に、意図的で制御された関係を持たせる」という発想は、実はデュオバイナリだけの専売特許ではありません。次回は、位相領域でこれと似た発想を極限まで押し進めた連続位相変調 (Continuous Phase Modulation, CPM) の一般論に軽く触れます。CPMでは振幅ではなく位相そのものが複数シンボルにまたがって連続的につながっており、GMSK(以前のレッスンで扱った具体例)はその特殊ケースの一つに過ぎないことがわかります。

参考文献

  • A. Lender, “The duobinary technique for high speed data transmission,” IEEE Transactions on Communication and Electronics, vol. 82, no. 2, 1963
  • P. Kabal, S. Pasupathy, “Partial Response Signaling,” IEEE Transactions on Communications, vol. 23, no. 9, 1975
  • J. G. Proakis, M. Salehi, Digital Communications, 5th ed., McGraw-Hill
  • K. Feher, Digital Communications: Satellite/Earth Station Engineering, Prentice-Hall
  • K. Yonenaga et al., “Optical duobinary transmission system with no receiver sensitivity degradation,” Electronics Letters, vol. 31, no. 4, 1995