0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

DWDM のグリッド(ITU-T G.694.1)の周波数と波長を Python で換算する

0
Posted at

この記事は、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)で確認するのが安全です。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?