チートシート

デシベルとリンクバジェットの公式

dB、dBm、dBW、dBi、dBcを1ページにまとめた早見表です。熱雑音フロア、縦続接続の雑音指数、ITU-R P.525による自由空間損失、実行可能なコード付きのリンクバジェットのテンプレートを収録しています。

最終確認 2026年11月15日· NumPy 2.5

この早見表は、無線機に触れる前に机上でリンクの成立を確認したい人のためのものです。単位換算、雑音フロア、自由空間損失、リンクバジェットの計算を1か所にまとめています。背景にある考え方は、デシベルとリンクバジェットのレッスンと雑音・SNR・通信路容量のレッスンを読んでください。

単位

単位 意味 換算
dB 2つの電力の比 10 log10(P2 / P1)
dB(振幅) 同じインピーダンスにかかる2つの電圧の比 20 log10(V2 / V1)
dBm 1 mWを基準とする電力 10 log10(P / 1 mW)
dBW 1 Wを基準とする電力 dBW = dBm − 30
dBi 等方性放射体を基準とするアンテナ利得 dBdについてはアンテナ公式の早見表を参照
dBc 搬送波を基準とする電力。スプリアス、高調波、位相雑音に使う 搬送波より低いものは負の値
dBm/Hz 電力スペクトル密度 10 log10(B)を加えると帯域幅BでのdBmになる
dB/Hz C/N0のような1 Hzあたりの比 C/N0 (dB/Hz) = C/N (dB) + 10 log10(B)

暗算の大半は2つの規則で足ります。dBで表した利得と損失は足し算です。dBmで表した絶対レベルに加減してよいのはdBだけで、dBm同士を足してはいけません(2つの電力の加算には線形単位が必要です)。

覚えておきたい値

比 dB 電力 dBm dBW
× 2 3.01 1 µW −30 −60
× 4 6.02 1 mW 0 −30
× 10 10 100 mW 20 −10
× 100 20 1 W 30 0
× 0.5 −3.01 10 W 40 10
× 1/1000 −30 1 kW 60 30

無相関で等しい2つの信号を足すと、どちらか一方より3 dB大きくなります。差が10 dBの場合、弱い方を加えると強い方より0.41 dB大きくなります。

熱雑音

熱雑音の電力はkTBです。ITU-R勧告P.372(無線雑音)では、ボルツマン定数を1.38 × 10⁻²³ J/K、基準温度T0を290 Kとしており、10 log10(kT0) = −204 dBW/Hzとなります。ミリワット単位では−174 dBm/Hzです。

帯域幅 kT0B(雑音指数0 dB) 主な用途
1 Hz −174.0 dBm 基準密度
125 kHz −123.0 dBm LoRaチャネル
1 MHz −114.0 dBm 狭帯域IoT、BLE
20 MHz −101.0 dBm Wi-FiまたはLTEのチャネル
100 MHz −94.0 dBm サブキャリア間隔30 kHzのNR搬送波

受信機の雑音指数を加えると、アンテナ端換算の雑音フロアが得られます。

縦続接続の雑音指数

Friisの雑音公式です。各項はすべて線形の比で表します(F = 10^(NF/10)、G = 10^(gain/10))。

F_total = F1 + (F2 - 1)/G1 + (F3 - 1)/(G1 G2) + ...

最初のアンプより前にあるL dBの受動損失は、290 Kで雑音指数L dBとなり、システム雑音指数にそのまま加算されます。このため、低雑音増幅器(LNA)は機構上許す限りアンテナの近くに置きます。

自由空間損失

ITU-R P.525-5(自由空間減衰の計算)は、等方性アンテナ間の自由空間基本伝送損失を20 log10(4πd/λ)としています。周波数をMHz、距離をkmで表すと次のようになります。

L_bf (dB) = 32.4 + 20 log10(f_MHz) + 20 log10(d_km)

距離が2倍になるごとに6 dB増えます。等方性アンテナ間では周波数が2倍になるごとにも6 dB増えますが、開口面積が一定のアンテナではその分を利得で取り戻せます(アンテナの早見表を参照)。

周波数 100 m 1 km 10 km
868 MHz 71.2 dB 91.2 dB 111.2 dB
2.4 GHz 80.0 dB 100.0 dB 120.0 dB
3.5 GHz 83.3 dB 103.3 dB 123.3 dB
28 GHz 101.3 dB 121.3 dB 141.3 dB

この表は上の式から求めたものです。実際のリンクでは、クラッタ、壁、樹木、降雨、人体による損失が加わります。自由空間損失は最良の場合として扱ってください。

リンクバジェット

P_rx (dBm)      = P_tx + G_tx + G_rx - L_cable - L_path - L_misc
noise (dBm)     = -174 + 10 log10(B_Hz) + NF
sensitivity     = noise + SNR_required
margin (dB)     = P_rx - sensitivity
項目 数値の主な出典
P_tx 無線機のデータシートまたは規制上の上限(等価等方輻射電力(EIRP)の上限にはアンテナ利得が含まれる)
G_tx, G_rx アンテナのデータシートのdBi値。実際に使う角度での値
L_cable ケーブルのデータシートにある、その周波数での1 mあたりの損失に、各コネクタのデータシートにある挿入損失を加えた値
L_path 最初は自由空間、その後は実測モデルまたは標準化モデル
NF 受信機のデータシート、または上の縦続接続の計算
SNR_required 目標誤り率で復調器が必要とするSNR(BERの早見表を参照)
L_misc フェードマージン、人体損失、偏波不整合、干渉に対する余裕

データシートの受信感度は、明記されたデータレートと誤り率で測定されています。同じ条件どうしで比較してください。リンクマージンは、フェージングや、バジェットに含めなかったすべての要因に備えて残しておく余裕です。

コード

このコードは、雑音フロア、縦続接続の雑音指数、2.4 GHzの短いリンクバジェットを計算します。必要なのはNumPyだけです。

import numpy as np

def db_to_lin(x_db: float) -> float:
    return 10 ** (x_db / 10)

def lin_to_db(x: float) -> float:
    return 10 * np.log10(x)

def fspl_db(f_mhz: float, d_km: float) -> float:
    """Free-space basic transmission loss, ITU-R P.525 eq. (6)."""
    return 32.4 + 20 * np.log10(f_mhz) + 20 * np.log10(d_km)

def noise_floor_dbm(bw_hz: float, nf_db: float) -> float:
    """kT0B at 290 K plus noise figure."""
    k = 1.380649e-23
    return lin_to_db(k * 290 * bw_hz / 1e-3) + nf_db

def cascade_nf_db(stages: list[tuple[float, float]]) -> float:
    """Friis noise formula. stages = [(gain_dB, nf_dB), ...] in signal order."""
    f_total, g_running = 0.0, 1.0
    for i, (g_db, nf_db) in enumerate(stages):
        f = db_to_lin(nf_db)
        f_total += f if i == 0 else (f - 1) / g_running
        g_running *= db_to_lin(g_db)
    return lin_to_db(f_total)

# kT0 in dBm/Hz
print(f"kT0 = {noise_floor_dbm(1, 0):.2f} dBm/Hz")
for bw in [125e3, 1e6, 20e6, 100e6]:
    print(f"noise floor, {bw/1e6:g} MHz, NF 0 dB: {noise_floor_dbm(bw, 0):.1f} dBm")

# Receiver chain: filter (-1.5 dB, NF 1.5), LNA (+20 dB, NF 1.0), mixer (-7 dB, NF 7), IF amp (+20 dB, NF 4)
chain = [(-1.5, 1.5), (20.0, 1.0), (-7.0, 7.0), (20.0, 4.0)]
print(f"cascaded NF = {cascade_nf_db(chain):.2f} dB")

# Link budget: 2.4 GHz, 500 m, 20 dBm TX, 2 dBi each end, 3 dB of cable and connector loss
pt_dbm, gt_dbi, gr_dbi, losses_db = 20.0, 2.0, 2.0, 3.0
loss = fspl_db(2400, 0.5)
pr_dbm = pt_dbm + gt_dbi + gr_dbi - losses_db - loss
bw_hz, nf_db, snr_req_db = 20e6, 6.0, 10.0
sens_dbm = noise_floor_dbm(bw_hz, nf_db) + snr_req_db
print(f"FSPL = {loss:.1f} dB, received = {pr_dbm:.1f} dBm")
print(f"sensitivity = {sens_dbm:.1f} dBm, margin = {pr_dbm - sens_dbm:.1f} dB")

期待される出力:

kT0 = -173.98 dBm/Hz
noise floor, 0.125 MHz, NF 0 dB: -123.0 dBm
noise floor, 1 MHz, NF 0 dB: -114.0 dBm
noise floor, 20 MHz, NF 0 dB: -101.0 dBm
noise floor, 100 MHz, NF 0 dB: -94.0 dBm
cascaded NF = 2.88 dB
FSPL = 94.0 dB, received = -73.0 dBm
sensitivity = -85.0 dBm, margin = 12.0 dB

LNAの前にあるフィルタは、その1.5 dBがそのまま雑音指数に加わります。ミキサの雑音指数7 dBの影響は約0.25 dBにとどまります。前段にLNAの20 dBの利得があるためです。

よくある間違い

  • dBmにdBmを足す。ミリワットに換算して足し、dBmに戻してください。
  • 電力比に20 log10を使う。20 log10は電圧比または電界強度比にだけ使います。
  • リンクがボアサイトから外れているのに、アンテナのピーク利得を使う。
  • 規制上の上限がEIRPで定められている場合が多いことを忘れる。高利得のアンテナを使うほど、アンテナへの供給電力は小さくする必要があります。
  • 異なるデータレートや誤り率で測定された受信感度を比較する。
  • 障害物のあるリンクで、自由空間損失を予測値として扱う。まずフレネルゾーンのクリアランスを確認してください。

出典

誤りやバージョン変更に気づいたら 訂正の手順をご覧ください。