その3ということで、
異なった符号にたいする波長分散の影響を考察します。
ここでは、
光信号のスペクトラム表示および電気信号のフィルタリングの例として
デュオバイナリ符号伝送の計算例を示します。
デュオバイナリ符号の生成は、
入力のデータ(2値:1/0)に対して、一ビットのディレイを持った
以下のような加算器にて行われます。
出力のデータは3準位(3値)のデータとなります。
この多値化により信号の帯域利用効率を高めることができます。
といいますか、それをこの計算例で確認してみます。
単純に加算すると、0,1,2 の3準位になりますが、
上の例では、そこから 1 をひいて -1,0,1 としています。
これは、最終的にマッハツェンダ型光変調器をもちいて
生成した光信号との整合がよく、
理解しやすいと思われるためです。
では、実際に PRBS データを使ってデュオバイナリ符号を生成してみます。
この例では 2^4-1 PRBS をつかいます。
また、説明の簡略化のためあらかじめデータの最後に 0 を追加して
偶数個のデータとします。
このデータが循環するものとします。
つまり、最後の 0 の後に最初の 1 がつづき、
また同じ符号列にもどるとします。
このデータをそのまま用いてデュオバイナリ符号を生成すると以下のようになります。
元の符号(一番上の符号列)にたいして、
1bit 遅らせた符号列(真ん中の符号列)を加算し、
そこから 1 をひきます。
得られたデータ(一番下の符号列)は、1 と -1 の間にはかならず 0 があるという
デュオバイナリ信号の特徴が見られます。
しかし、入力の符号との相関を見るのは一見難しく思えます。
ここで導入されるのが、デュオバイナリ符号を生成する前に、
入力の符号に対して、
あらかじめ符号変換を行うという技術です(プリコーディングと呼ばれます)。
具体的には、
EXNOR を用いて図のように出力をフィードバックする形でコーディングします。
一番最初のデータをコーディングするために、
EXNOR の初期出力値を 1 と仮定しています。
このプリコードされたデータに対してデュオバイナリコード生成を行うと、
以下のようになります。
同様に、入力符号列と一ビット遅らせた符号列を加算し1ひきます。
得られた符号列(一番下)を見ると、
その絶対値は(プリコード前の)入力データと一致しています。
実際の光信号では、この 1 と -1 というデータが、
光の位相が反転したデータにて実現されます
(AM-PSK (Amplitude Modulated-Phase Shift Keyed) duo-binary といわれます)。
したがって、パワー検出を行うと、
そのままもとのデータを再生することができます。
プリコーディング無しでデュオバイナリ符号を生成し、
受信後のデータに対して符号変換を行う場合を
ポストコーディングといいます。
多分、最も一般的だと思われる方法で、光デュオバイナリ信号を生成します。
PRBS 2^9-1 符号列の最後に 0 を足したデータファイル prbs_p0.txt にたいして、
プリコーディング precoder.bas を実行し、
プリコードされたデータ precode.txt を得ます。
デュオバイナリ符号の生成は、この 1/0 の論理データに対してではなく、
この論理データにより生成された NRZ 変調波形にビットレートの 30% 程度の
帯域をもつ LPF を使用することで、
隣り合わせたビット間の和をとります。
NRZwaveform.bas により NRZ 波形を生成した後、
BesselLPF.bas を使用してフィルタリングをおこないます。
BesselLPF.bas は、
入出力ファイル名はプログラム中に記入されていますが、
フィルタのカットオフ周波数は実行時に入力します。
以下は NRZ変調波形(NRZwaveform.txt)とその LPF(fc=3.3GHz) 出力波形(LPFout.txt)の例です。
フィルタの群遅延により、データの時間軸が若干ずれています。
この波形をマッハツェンダ型変調器に入力することで光デュオバイナリ信号を得ます
(mzMod.bas の入力として LPFout.txt を指定し mzMod.bas を実行します)。
このとき、マッハツェンダ型変調器はチャープフリータイプのもので、
バイアス点は NULL(消光する点)とします
(mzMod.bas 内にて、cf=0、offset=pi とします)。
これにより、バイアス点をはさんで両隣の位相が 180 度異なります。
以下の図は変調の様子の概略です。
得られた光出力波形(mzModOut.txt)を、
OE.bas によりモニタした結果(idealOE.txt)は以下のようになります。
元の prbs_p0.txt から生成した NRZ 波形と比べると、
元のデータが得られていることが確認できます。
さて、得られた光デュオバイナリ信号がどの程度帯域利用効率が
良いのか見るために、光スペクトラムを NRZ の場合と比べてみます。
OSpectrum.bas を使い mzModOut.txt のスペクトラムを確認します。
OSpectrum.bas は光サンプリング信号にたいして、
FFT を行い各周波数のスペクトル強度を表示します。
スペクトルの生成は、
その1の例にて説明したように FFT 係数を周波数ゼロのまわりに
シフトして得ます。
NRZ の場合の光スペクトラムは以下のようになります。
グラフの横軸は周波数で、
キャリア周波数がゼロにシフトされたスペクトラムです。
単位は [GHz] です。
5[GHz] ごとにグリッドがひいてあります。
縦軸は相対パワーレベルで、単位は [dB] です。
10[dB] ごとにグリッドがひいてあります。
デュオバイナリ信号の場合のスペクトラムは以下のようになります。
横軸・縦軸のスケールは NRZ の場合と同様です。
この二つのスペクトラムを比べると、
デュオバイナリ変調は、
スペクトル占有幅が狭くなっていることが見て取れます。
また、光キャリア成分が抑圧されていることもわかります。
波長分散耐力を見るために、
伝送前と伝送後(波長分散 1600[ps/nm])のアイダイアグラムを比較します。
以下は伝送前のアイダイアグラム(idealOE.txt)です。
この例では、
変調波形の LPF に 7 次ベッセルフィルタを使いましたので、
アイがきれいに一致しています(実際は 5 次程度で十分だと思います)。
つぎに、伝送後の(波長分散 1600[ps/nm]を与えた)アイダイアグラムです。
その1、その2での例に比べると、明らかにアイ開口がすぐれています。
占有帯域幅が縮小することにより、波長分散による影響が減少することがわかります。