この記事は、Zenn に公開した「DWDM は何を多重しているのか」の内容を、「グリッドの周波数と波長の換算」に絞って書き直したものです。
なぜ周波数で並べるのか、といった背景は原本のほうが詳しいので、あわせて参照してください。
光伝送の資料では、同じ波長が「1552.52nm」と書かれたり「193.1THz」と書かれたりします。装置の画面は周波数、相手の資料は波長、ということもよくあります。この記事では、その往復を手で計算せずに済むよう、Python の短い関数にまとめます。
前提: 決まっていること
ITU-T の勧告 G.694.1 で、DWDM のグリッドは次のように決められています。
| 項目 | 値 |
|---|---|
| 起点 | 193.1THz |
| 固定グリッドの間隔 | 12.5 / 25 / 50 / 100GHz など |
| 固定グリッドの周波数 | 193.1THz + n × 間隔(n は整数) |
| flexible grid の中心 | 193.1THz + n × 6.25GHz |
| flexible grid の幅 | 12.5GHz × m(m は正の整数) |
波長は、周波数との関係 波長 = 光の速さ ÷ 周波数 で決まります。光の速さは定義値の 299,792,458m/s を使います(真空中の波長になります)。
手順1: 換算の関数を書く
C = 299_792_458 # 光速 [m/s](定義値)
ANCHOR_THZ = 193.1 # ITU-T G.694.1 の起点
def thz_to_nm(f_thz: float) -> float:
"""周波数 [THz] → 真空中の波長 [nm]"""
return C / (f_thz * 1e12) * 1e9
def nm_to_thz(wl_nm: float) -> float:
"""真空中の波長 [nm] → 周波数 [THz]"""
return C / (wl_nm * 1e-9) / 1e12
手順2: 固定グリッドの n 番目を出す
def fixed_grid(n: int, spacing_ghz: float = 50) -> float:
"""固定グリッド: 193.1 THz + n × 間隔"""
return ANCHOR_THZ + n * spacing_ghz / 1000
手順3: flexible grid の枠を出す
flexible grid は「中心」と「幅」の2つで1つの枠を表します。枠の下端と上端も一緒に返しておくと、隣の枠と重なっていないかの確認に使えます。
def flex_slot(n: int, m: int) -> tuple[float, float, float]:
"""flexible grid: 中心 193.1 + n × 6.25 GHz、幅 12.5 × m GHz。下端・中心・上端 [THz]"""
center = ANCHOR_THZ + n * 0.00625
half = 12.5 * m / 2 / 1000
return center - half, center, center + half
手順4: 動かしてみる
print(f"起点 193.1 THz = {thz_to_nm(193.1):.3f} nm")
print(f"1550 nm = {nm_to_thz(1550):.3f} THz")
for n in (-2, -1, 0, 1, 2):
f = fixed_grid(n, 50)
print(f"n={n:+d}: {f:.3f} THz / {thz_to_nm(f):.3f} nm")
lo, c, hi = flex_slot(n=6, m=6)
print(f"flex n=6, m=6: 中心 {c:.5f} THz、幅 {12.5*6:.1f} GHz({lo:.5f}〜{hi:.5f} THz)")
print(f"50 GHz ≈ {thz_to_nm(193.4 - 0.025) - thz_to_nm(193.4 + 0.025):.3f} nm")
出力:
起点 193.1 THz = 1552.524 nm
1550 nm = 193.414 THz
n=-2: 193.000 THz / 1553.329 nm
n=-1: 193.050 THz / 1552.926 nm
n=+0: 193.100 THz / 1552.524 nm
n=+1: 193.150 THz / 1552.122 nm
n=+2: 193.200 THz / 1551.721 nm
flex n=6, m=6: 中心 193.13750 THz、幅 75.0 GHz(193.10000〜193.17500 THz)
50 GHz ≈ 0.401 nm
結果の読み方
- n が増えると、周波数は上がり、波長は短くなります。 「番号が大きい=波長が長い」と思い込んでいると、逆向きに数えてしまいます
- 50GHz の間隔は、1550nm 付近で約 0.4nm です。 波長で等間隔に見えても、周波数の上で等間隔なのはこちらのほうです
- n=6, m=6 の枠は 75GHz 幅で、下端がちょうど 193.1THz になります。隣に枠を置くときは、下端・上端が重ならないかを確かめます
注意: 「チャネル番号」はこの n と同じとは限らない
装置やメーカーの資料にある「チャネル 34」のような番号は、この記事の n(起点からの差)とは振り方が違うことがあります。別の会社や別の装置と話すときは、番号ではなく周波数(THz)で確認するのが安全です。
参考
- ITU-T G.694.1「Spectral grids for WDM applications: DWDM frequency grid」— https://www.itu.int/rec/T-REC-G.694.1