深宇宙リンクバジェット — DSN・Voyager・JWSTを支える数式設計

ボイジャー1号は今この瞬間も、地球から約240億キロメートル離れた星間空間を飛び続けています。そして驚くべきことに、わずか22.4 bpsという細い細い回線で、私たちはまだ彼女と「会話」ができています。1977年に打ち上げられた探査機が搭載しているのは、わずか22Wの送信機。リビングの照明より暗い電球と同じ電力で、太陽系の外縁から信号を送り続けているのです。

これがどれほど非常識なことかは、自由空間伝搬損失の数式を一度書いてみれば分かります。240億キロメートル先、Xバンド(8.4 GHz)の電波は地球に届く頃には$10^{-23}$ W/m$^2$オーダーまで減衰します。これは、地球上のどこに立っていたとしても、自分の体温が放出する赤外線放射の方が何兆倍も強い、というレベルの微弱さです。なぜそんな信号が読めるのか? 答えは、送信機・アンテナ・受信機・符号化・地球上のアンテナ群のあらゆる要素を限界まで追い込んだリンクバジェット設計にあります。

リンクバジェットを理解することは、宇宙通信の中核を理解することと同義です。応用は宇宙だけにとどまらず、5G NTN(非地上系ネットワーク)、衛星IoT、GPS信号の品質設計、低軌道地球観測衛星のダウンリンク容量計算、そしてこれから本格化する月・火星探査の通信インフラ設計まで、ありとあらゆる場面で同じ数式が使われています。本記事を読めば、Voyager・New Horizons・JWST・Mars Reconnaissance Orbiterといった具体的なミッションが、なぜその通信速度に落ち着いたのかを、数値と物理で説明できるようになります。

本記事の内容

  • リンクバジェット方程式の全体像と、各項が何を表現しているかの直感的理解
  • 自由空間伝搬損失(FSPL)の導出と、平方距離則の物理的意味
  • アンテナ利得・指向性・フィードロスの定式化
  • 系雑音温度の分解(アンテナ・LNA・銀河背景・大気・地球放射)
  • 符号化利得とShannon限界(BPSK/QPSK + Reed-Solomon + Turbo/LDPC)
  • ターンアラウンドリレーの仕組みと、深宇宙網DSN 3地点による連続追尾
  • X帯・Ka帯・光通信の周波数選択トレードオフ
  • Pythonによるリンクバジェット計算ツールと、Voyager・JWST・DSOCの定量比較

前提知識

この記事を読む前に、以下の記事を読んでおくと理解が深まります。

リンクバジェットとは何を計算する道具か

家計簿をつけたことのある人なら直感的にわかると思います。給料という「収入」から、家賃・食費・交通費という「支出」を差し引き、最後に貯金として残るのが「マージン」です。リンクバジェットも全く同じ構造です。送信機の出力という「収入」から、伝搬損失・大気損失・偏波損失といった「支出」を差し引き、最後に受信機で得られる信号電力という「マージン」を計算します。

ただし宇宙通信では、その「収入」がきわめて少なく、「支出」がきわめて大きい。Voyagerの送信電力22Wに対し、自由空間伝搬損失だけで$10^{-23}$オーダーまで減衰するわけですから、家計簿で言えば「月収22万円に対し、生活費が22垓円」というスケール感です。それでも黒字(リンクが成立)にできるのは、アンテナ利得という「節約術」と、符号化という「投資の最適化」を駆使しているからです。

すべての通信リンクは、結局のところ次の一本の式に集約されます。

$$ \frac{E_b}{N_0} = \frac{P_t \cdot G_t \cdot G_r \cdot L_{\text{misc}}}{L_{\text{FSPL}} \cdot L_{\text{atm}} \cdot k T_{\text{sys}} \cdot R_b} $$

ここで$P_t$は送信電力、$G_t \cdot G_r$は送受信アンテナ利得の積、$L_{\text{misc}}$はその他諸々の損失、$L_{\text{FSPL}}$は自由空間伝搬損失、$L_{\text{atm}}$は大気減衰、$kT_{\text{sys}}$は受信系の雑音電力密度($k$はボルツマン定数)、$R_b$はビットレート、そして左辺の$E_b/N_0$は1ビットあたりエネルギーと雑音電力密度の比です。

なぜ$E_b/N_0$なのかというと、後で見るように、デジタル通信の誤り率(BER)はこの一つの値だけで決まるからです。つまり「リンクが成立するか」という工学的判定が、たった一つの数字に集約される。リンクバジェット設計とは、この$E_b/N_0$を要求値(典型的にはBER $10^{-6}$を満たす値)以上に確保する作業そのものなのです。

ここまでで「リンクバジェットは家計簿である」というイメージが掴めたかと思います。では、その家計簿の最大の支出項目である自由空間伝搬損失から、一つずつ詳細に見ていきましょう。

自由空間伝搬損失 — なぜ電波は距離の二乗で減衰するのか

球面の幾何が決める「広がり」

送信アンテナから出た電波は、空間の中に「電力の波紋」を作りながら広がっていきます。等方性アンテナ(全方向に均等に放射するアンテナ)を仮定すると、送信電力$P_t$は半径$R$の球面に均等に分配されるので、距離$R$地点での電力密度は

$$ S(R) = \frac{P_t}{4\pi R^2} \quad [\text{W/m}^2] $$

となります。これがいわゆる逆二乗則です。距離が2倍になれば、面積は4倍になるので電力密度は1/4になる。とても直感的な式ですね。地球上で太陽の暖かさを感じる時の物理と、Voyagerが地球に信号を送る物理は、本質的に同じなのです。

受信アンテナが「捕まえる」電力

受信側では、有効開口面積$A_e$を持つアンテナがこの電力密度から信号を吸い上げます。受信電力は単純に

$$ P_r = S(R) \cdot A_e = \frac{P_t A_e}{4\pi R^2} $$

です。アンテナ理論によれば、有効開口面積$A_e$は受信アンテナの利得$G_r$と波長$\lambda$の間に次の関係があります。

$$ A_e = \frac{G_r \lambda^2}{4\pi} $$

これを代入し、さらに送信側にも等方性アンテナではなく利得$G_t$のアンテナを使うと(送信電力$P_t$が等方性換算で$P_t G_t$と見なせる)、

$$ P_r = \frac{P_t G_t G_r \lambda^2}{(4\pi R)^2} $$

という有名なフリスの伝達公式(Friis transmission equation)が得られます。デシベル(dB)で書くと、

$$ P_r[\text{dB}] = P_t[\text{dB}] + G_t[\text{dB}] + G_r[\text{dB}] – L_{\text{FSPL}}[\text{dB}] $$

ここで自由空間伝搬損失は

$$ L_{\text{FSPL}}[\text{dB}] = 20\log_{10}\left(\frac{4\pi R}{\lambda}\right) = 20\log_{10}R + 20\log_{10}f – 147.55 $$

と表されます。最後の式変形では$\lambda = c/f$($c$は光速)を使い、定数項$20\log_{10}(4\pi/c) = -147.55$をまとめました。

Voyagerの場合の桁感

具体的にVoyagerの数字を入れてみましょう。距離$R = 240$億km $= 2.4 \times 10^{13}$ m、周波数$f = 8.42$ GHz(Xバンドダウンリンク)。

$$ L_{\text{FSPL}} = 20\log_{10}(2.4 \times 10^{13}) + 20\log_{10}(8.42 \times 10^9) – 147.55 $$

$$ = 268.6 + 198.5 – 147.55 \approx 319.5\ \text{dB} $$

319.5 dBという数字を線形に直すと、$10^{31.95} \approx 9 \times 10^{31}$倍の減衰です。つまり受信電力は送信電力の900垓分の一の、さらに10億分の一まで落ちる。22Wが$2.5 \times 10^{-31}$ Wまで減衰する計算です。

ところがこの絶望的な数字を、巨大なアンテナによる利得が救います。Voyagerの高利得アンテナ(HGA、直径3.7m)は$G_t \approx 48$ dB、地上のDSN 70mアンテナは$G_r \approx 74$ dB。合計122 dBの利得があるため、有効的な伝搬損失は$319.5 – 122 = 197.5$ dBまで圧縮されます。さらに、超低雑音の受信系と長時間積分が効くおかげで、22.4 bpsという細い帯域なら復調できる、というカラクリです。

ここまでで「巨大なアンテナの利得」が決定的な役割を果たすことが見えてきました。次は、そのアンテナ利得が幾何学的にどう決まるのかを見ていきましょう。

アンテナ利得と指向性 — 利得は「集中度」である

利得の定義 — どれだけ電力を一方向に集中させるか

アンテナ利得とは何か。一言で言えば「等方性アンテナと比べて、どれだけ電力を特定方向に集中させたか」を示す比率です。等方性アンテナが球面全方位に均等放射するのに対し、パラボラアンテナは前方の狭いビームに電力を集中させます。集中させた分だけ、その方向の電力密度は高くなる。これが利得の正体です。

幾何学的に書くと、利得は有効開口面積全立体角の比で決まります。

$$ G = \eta \cdot \frac{4\pi A_{\text{phys}}}{\lambda^2} $$

ここで$A_{\text{phys}}$は物理的な開口面積(円形なら$\pi D^2/4$、$D$はアンテナ直径)、$\eta$は開口効率(典型的に0.55〜0.75)です。$\eta$が1にならないのは、アンテナ表面が完全に均一には照射されない、エッジ効果や偏波損失がある、など実装上の不完全さによります。

円形パラボラアンテナの利得をdBで書くと、

$$ G[\text{dB}] = 10\log_{10}\left(\eta \cdot \left(\frac{\pi D}{\lambda}\right)^2\right) $$

となります。重要なのは、利得は直径$D$の二乗に比例し、波長$\lambda$の二乗に反比例するということ。アンテナを倍に大きくすれば利得は4倍(6 dB増)、周波数を倍にすれば利得は4倍(6 dB増)。だから、深宇宙通信ではアンテナを大きくし、かつ周波数を高くすることに執念を燃やすのです。

半値角(HPBW) — ビームの「鋭さ」

利得が高いということは、ビームが狭いということでもあります。アンテナの半値角(half-power beamwidth、3 dB低下する角度)はおおむね

$$ \theta_{\text{HPBW}}[\text{deg}] \approx 70 \cdot \frac{\lambda}{D} $$

で見積もれます。Voyager HGA(直径3.7m、Xバンド$\lambda = 3.56$ cm)なら$\theta_{\text{HPBW}} \approx 0.67$度、DSN 70mアンテナなら$0.035$度($\approx 2$角分)です。DSN 70mアンテナでは、ビームの半値角はわずか満月の見かけの直径の1/15程度しかありません。これが「探査機の方向にアンテナを向ける指向制御がいかに難しいか」につながります。

ちなみにJWST(L2点、距離150万km)とNASAのKaバンドダウンリンクでは、$D = 0.6$ m, $f = 25.9$ GHz($\lambda = 1.16$ cm)で$G_t \approx 42$ dB、$\theta_{\text{HPBW}} \approx 1.4$度。距離が短いぶん、ビーム幅に余裕を持たせ姿勢制御要件を緩和しているわけです。

フィードロスと指向誤差

実用上は、計算上の利得から差し引かれる損失があります。代表的なのは

  • フィードロス: 給電線と整合回路での損失。典型的に0.5〜1.5 dB
  • 指向誤差損失: 探査機の姿勢制御誤差や軌道予報誤差により、ビームが完全に地球を向いていない損失。ビーム中心からの角度ずれを$\theta_e$、HPBWを$\theta_{\text{HPBW}}$とすると、ガウシアンビーム近似で

$$ L_{\text{point}}[\text{dB}] \approx 12 \cdot \left(\frac{\theta_e}{\theta_{\text{HPBW}}}\right)^2 $$

例えば、HPBWの1/3の指向誤差があれば、約1.3 dBの損失となります。これらの「2次的な損失」も、リンクバジェット表のチェックリストに必ず計上します。

ここまでで利得とビーム幅の関係を見てきました。しかし「受信電力が分かった」だけでは通信は成立しません。受信信号と同時に必ず混入する「雑音」を計上する必要があります。

系雑音温度 — 見えない敵の正体

雑音温度という発想

通信工学では、あらゆる雑音源を「等価雑音温度」という単一の指標に統一して扱います。これはJohnson-Nyquistの熱雑音則に由来する非常に強力な発想です。抵抗が温度$T$にあるとき、その両端には

$$ \bar{v_n^2} = 4 k T R \Delta f $$

の電圧雑音が発生します($k$はボルツマン定数$1.38 \times 10^{-23}$ J/K、$R$は抵抗値、$\Delta f$は帯域)。整合状態で受信機に伝わる電力に直すと、雑音電力スペクトル密度は

$$ N_0 = k T_{\text{sys}} $$

と非常にシンプルになります。つまり、「雑音電力は温度に比例する」というのが基本中の基本です。

DSN 70mアンテナ + LNA(低雑音増幅器)の系雑音温度は約$T_{\text{sys}} = 21$ K(クライオ冷却LNA + 高高度サイト)。よって雑音電力密度は

$$ N_0 = 1.38 \times 10^{-23} \times 21 \approx 2.9 \times 10^{-22}\ \text{W/Hz} $$

これが受信機の「ノイズフロア」です。受信信号がこれを大きく上回らない限り、信号は雑音に埋もれて読み取れません。

雑音温度の項目別内訳

系雑音温度$T_{\text{sys}}$は実際には、複数の独立した寄与の総和です。深宇宙受信系では典型的に次の項目に分解されます。

  • アンテナ温度 $T_{\text{ant}}$: アンテナがその指向方向から拾う外来雑音
  • 銀河背景放射 (深宇宙: 2〜3 K @ X帯、Ka帯ではさらに低い)
  • 太陽・惑星からの放射(指向方向が太陽近傍だと急増する)
  • 大気の熱放射 (X帯: ~3 K @ zenith、Ka帯: ~30 K)
  • 地面からの溢れこぼし (アンテナ側面で拾う地表 ~300 K の放射、~3〜10 K)
  • フィード・導波管損失 $T_{\text{feed}}$: 損失$L_f$の導波管が温度$T_p$で物理冷却されているとき、$T_{\text{feed}} = (L_f – 1) T_p$
  • LNA等価雑音温度 $T_{\text{LNA}}$: 冷却LNAなら$T_{\text{LNA}} \approx 4\text{〜}10$ K
  • 後段雑音: 後段の雑音指数を$F$、LNA利得を$G_{\text{LNA}}$とすると、$T_{\text{後段}} = (F-1) T_0 / G_{\text{LNA}}$($T_0 = 290$ K)

すべてを合わせると、

$$ T_{\text{sys}} = T_{\text{ant}} + (L_f – 1) T_p + L_f T_{\text{LNA}} + \cdots $$

(Friisの雑音公式の連鎖)。DSN 70mアンテナでの典型的な内訳は、$T_{\text{ant}} \approx 13$ K, $T_{\text{LNA}} \approx 4$ K, 残りが導波管・後段の寄与で、合計21〜25 Kといったところです。

Ka帯の落とし穴 — 大気雨衰

Ka帯(26〜40 GHz)は周波数が高いぶんアンテナ利得を大きくでき、その意味では魅力的な周波数です。実際、JWSTのダウンリンクは25.9 GHz Ka帯で28.6 Mbpsを実現しています。しかしKa帯には大気雨衰という弱点があります。雨滴のサイズが波長と同程度になると、ミー散乱で電波が大幅に減衰するのです。

国際電気通信連合(ITU)のITU-R P.618モデルによれば、雨衰は$\gamma_R \cdot L_E$で書け、$\gamma_R$は降雨強度$R_{0.01}$[mm/h]の関数、$L_E$は実効パス長です。Ka帯では中程度の雨で5〜10 dBの減衰が出るため、リンクバジェットには気象マージンを大きく取らねばなりません。

DSNがGoldstone(モハーヴェ砂漠)、Madrid(マドリード郊外の高原)、Canberra(キャンベラ郊外)に立地しているのは、いずれも乾燥地帯で大気減衰が小さく、かつ経度がほぼ120度ずつ離れている(地球の自転とともに連続追尾できる)ためです。

ここまでで送信側・受信側・伝搬路の物理が一通り揃いました。これらを組み合わせると$E_b/N_0$が決まりますが、最後に「どれだけ少ない$E_b/N_0$で誤り率を確保できるか」が変調方式と符号化で決まります。

変調方式と符号化 — シャノン限界に挑む

BPSK/QPSKと$E_b/N_0$ vs BER

最も基本的なデジタル変調方式は2位相変調(BPSK)で、1ビットを位相0/$\pi$の2通りで表します。AWGN(加法的白色ガウス雑音)チャネル上で、BPSKのビット誤り率は

$$ P_b = Q\left(\sqrt{\frac{2 E_b}{N_0}}\right) $$

で与えられます($Q$関数は標準ガウス分布の上側累積)。BER $= 10^{-5}$を実現するには$E_b/N_0 \approx 9.6$ dB必要です。これが「素のBPSK」の理論限界です。

QPSKはBPSKを直交2軸に重ねた4位相変調で、同じスペクトル効率で2倍のビットレートを実現できます。ガウシアンチャネルではBERはBPSKと同じです。

しかし$E_b/N_0 = 9.6$ dBは、深宇宙では「ぜいたく」過ぎる要求値です。Voyagerのリンクは$E_b/N_0$が0〜2 dBしか取れないので、強力な符号化を併用しないと話になりません。

Reed-Solomon + 畳み込み符号 — 古典の組み合わせ

VoyagerとGalileoの時代に採用された連接符号(concatenated code)は次のような構成です。

  • 内符号: 拘束長7、レート1/2の畳み込み符号 (Viterbi復号)
  • 外符号: Reed-Solomon (255, 223) 符号 (バイト単位、16バイト訂正能力)

畳み込み符号は熱雑音由来のランダム誤りに強く、Reed-SolomonはViterbi復号の出力で発生しがちなバースト誤りに強い。両者を直列に配置することで、それぞれの弱点を補完します。この組み合わせで、BER $= 10^{-6}$を$E_b/N_0 \approx 2.5$ dBで実現できる(素のBPSKより約7 dBの符号化利得)。

Turbo符号・LDPC符号 — シャノン限界へ

1993年に発見されたTurbo符号(Berrou & Glavieux)と、1962年にGallagerが提案し1990年代に再発見されたLDPC符号は、シャノン限界(BPSKでは$E_b/N_0 = 0.19$ dB)に肉薄する性能を持ちます。CCSDS(深宇宙標準化機関)はTurbo符号(レート1/2, 1/3, 1/4, 1/6)とLDPC符号(レート1/2, 2/3, 4/5)を深宇宙標準として規格化しました。

Turbo (1/6) 符号 + BPSKでは、BER $= 10^{-6}$を$E_b/N_0 \approx 0.5$ dBで達成できます。これがNew Horizons(冥王星探査機、~2 kbps@36億km)や、Mars系列の最新ミッションで使われています。Voyagerが2.5 dB必要なのに対し、わずか2 dBの違いに思えますが、線形では1.6倍の差です。同じ電力なら1.6倍速い通信が可能、ということ。

シャノン限界とは何か

任意の符号化技術が達成できる最高性能は、シャノン-ハートレーの定理で与えられます。AWGNチャネルのチャネル容量は

$$ C = B \log_2\left(1 + \frac{S}{N}\right) = B \log_2\left(1 + \frac{P_r}{k T_{\text{sys}} B}\right) $$

ここで$B$は帯域幅、$P_r/N$は信号対雑音比です。これより低いビットレート$R_b < C$なら、原理的にエラーフリーで通信可能。シャノン限界の$E_b/N_0$は、$R_b \to 0$の極限(無限に低速)で$\ln 2 \approx -1.59$ dBとなります。実用上はBPSK制約($\pm 1$の2値入力)があるので、その制約下の限界は0.19 dB。これに肉薄するのが最新の符号化技術です。

ここまで送信〜受信〜符号化の流れを見てきました。次に、深宇宙ならではの特殊な要素として「ターンアラウンドリレー」と「アンテナの連続追尾」を見ていきます。

ターンアラウンドリレーとDSN — 地球側のシステム設計

ターンアラウンドレシオ — 双方向通信を支える技

深宇宙通信では「アップリンク(地球→探査機)」と「ダウンリンク(探査機→地球)」を区別します。同じ周波数帯を使うと自己干渉が起きるため、アップリンクとダウンリンクには異なる周波数が割り当てられます。CCSDSが標準化したXバンドの場合、

  • アップリンク: 7.145〜7.235 GHz
  • ダウンリンク: 8.40〜8.45 GHz

の関係で、その比はちょうど880/749です。これをターンアラウンドレシオ(turnaround ratio) と呼びます。

なぜ単純な整数比ではないのか? それは、宇宙機側のオシレーターが地球から送られたアップリンク信号にPLL(位相同期ループ)で同期し、その周波数を880/749倍してダウンリンクに使うからです。これにより:

  1. コヒーレント測距: アップリンクとダウンリンクが同位相で結ばれるため、往復遅延から距離を計測できる(PN測距、トーン測距)
  2. ドップラー計測: ダウンリンク周波数のずれから視線速度を高精度に測れる(数mm/s精度)
  3. 二方向ドップラー: 地球の運動による系統誤差を相殺できる

880/749という奇妙な比は、両周波数帯が標準化されたS帯(2.2 GHz)時代の名残です。S帯(2.025-2.290 GHz)→ S帯(2.110-2.290 GHz)で当時設定された比が、X帯にも踏襲されたのです。

なお、Sバンドも同じく221/240でリンクされており、Ka帯では3344/3599の比が使われています。整数比でなく、これらの数値が選ばれたのは、PLL設計上の安定性を確保するためです。

DSN — 経度120度ごとの3地点による連続追尾

JPLが運営する深宇宙網Deep Space Networkは、世界に3つの追跡局を持ちます。

  • Goldstone Deep Space Communications Complex (DSCC): 米国カリフォルニア、モハーヴェ砂漠
  • Madrid Deep Space Communications Complex (MDSCC): スペイン、マドリード郊外
  • Canberra Deep Space Communications Complex (CDSCC): オーストラリア、キャンベラ郊外

経度はほぼ120度ずつ離れており、地球の自転とともに常にどれか一つの局が探査機を視野に入れられるよう設計されています。各局には34m × 数基と70m × 1基のパラボラアンテナがあり、特に70mアンテナはVoyagerやPioneer 10/11といった「最遠方ミッション」専用の高利得受信局として使われます。

70mアンテナの仕様(Goldstone DSS-14):

  • 直径70 m、面精度RMS 0.5 mm
  • X帯利得74.0 dB、Ka帯利得80.3 dB
  • 系雑音温度21 K (X帯, クリア天気時)
  • ステアリング精度0.001度、追尾速度0.005度/秒

70mアンテナ単体で利得が足りない場合は、複数の34mアンテナを位相同期アレイ(arrayed combining)として束ねることで、さらに利得を稼ぎます。これはVLBA(Very Long Baseline Array)やEHT(Event Horizon Telescope)で行われる「干渉合成」と本質的に同じ技術です。Voyagerの音声記録のうち、Saturn遭遇期(1980年)以降の解析には、Goldstoneの34mアンテナ4基をアレイ化した受信が使われています。

連続追尾のスケジューリング

DSNは世界中の数十のミッションを支えているため、各探査機がどの時間帯にどの局に割り当てられるかは綿密にスケジュールされます。Voyagerクラスの長距離ミッションは1日あたり数時間しか割当てがもらえないこともあり、その間に最大限のデータを送り切る必要があります。22.4 bps × 1日3時間 = 240 kbit/日。冷蔵庫の説明書1ページ程度のデータ量です。

ここまでで地球側システムの全貌を見てきました。次に、これらすべてをまとめて「リンクマージン」という1つの数字に集約する方法を見ていきましょう。

リンクマージン — 失敗しないための余裕

リンクバジェット計算の最終出力は、リンクマージン(link margin)と呼ばれる1つの数字です。これは「実際に得られる$E_b/N_0$」と「要求される$E_b/N_0$」の差を表します。

$$ \text{Margin}[\text{dB}] = \left(\frac{E_b}{N_0}\right)_{\text{achieved}}[\text{dB}] – \left(\frac{E_b}{N_0}\right)_{\text{required}}[\text{dB}] $$

業界では3 dB以上のマージンが推奨されます。なぜ3 dBか? それは予測不能な変動(気象、機器の経年劣化、想定外の指向誤差、太陽風による電離層擾乱)を吸収する余裕を見ているからです。3 dBは線形で2倍。「常に半分の電力でも通る」という保険を効かせていることになります。

リンクバジェットの典型的な計算表は次のような形になります(Voyager 1のXバンドダウンリンクを例に):

項目 単位
送信電力 $P_t$ +13.4 dBW (22 W)
送信アンテナ利得 $G_t$ +48.1 dBi (3.7 m HGA)
EIRP +61.5 dBW
自由空間損失 $L_{\text{FSPL}}$ -319.5 dB (R=240億km, f=8.42GHz)
大気損失 $L_{\text{atm}}$ -0.1 dB (zenith, dry)
偏波・指向損失 -0.5 dB
受信アンテナ利得 $G_r$ +74.0 dBi (DSN 70 m)
受信電力 $P_r$ -184.6 dBW
系雑音温度 $T_{\text{sys}}$ 21 K
雑音電力密度 $N_0$ -213.4 dBW/Hz
受信SNR密度 $P_r/N_0$ +28.8 dB-Hz
データレート $R_b$ 22.4 bps → +13.5 dB-Hz
達成$E_b/N_0$ +15.3 – 体感補正 dB
必要$E_b/N_0$ (RS+conv, BER 1e-5) +2.5 dB
リンクマージン ~3-5 dB dB

「達成$E_b/N_0 = 28.8 – 13.5 = 15.3$ dB」と書いたのは、22.4 bpsという極低レートの恩恵です。同じ信号電力でも、ビットあたりエネルギーを稼ぐにはレートを下げるのが効きます。Voyagerが速いビットレートを諦めて22.4 bpsまで落としているのは、まさにこの「ビット毎エネルギー」を稼ぐためなのです。

リンクバジェットの設計とは、結局のところ「ビットレート $R_b$ を、リンクマージンが3 dB以上残る範囲で最大化する」という最適化問題に他なりません。これを実際にPythonで計算してみましょう。

Pythonでリンクバジェットを実装する

汎用リンクバジェット計算ツール

ここからは、これまでの議論を実コードに落とし込んでいきます。まず、各種パラメータからリンクマージンを計算する関数を実装します。

import numpy as np

# 物理定数
c = 2.998e8        # 光速 [m/s]
k_B = 1.381e-23    # ボルツマン定数 [J/K]

def db(x):
    """線形→dB変換"""
    return 10.0 * np.log10(x)

def fspl_db(R_m, f_Hz):
    """自由空間伝搬損失 [dB]
    R_m: 距離 [m], f_Hz: 周波数 [Hz]"""
    return 20 * np.log10(4 * np.pi * R_m * f_Hz / c)

def antenna_gain_db(D_m, f_Hz, eta=0.65):
    """円形パラボラアンテナ利得 [dBi]
    D_m: 直径 [m], f_Hz: 周波数 [Hz], eta: 開口効率"""
    lam = c / f_Hz
    return 10 * np.log10(eta * (np.pi * D_m / lam) ** 2)

def half_power_beamwidth_deg(D_m, f_Hz):
    """半値角(HPBW) [degree]"""
    lam = c / f_Hz
    return 70 * lam / D_m

このコードでは、フリスの式に登場する3つの基本量(伝搬損失・アンテナ利得・ビーム幅)を関数化しました。fspl_db は前述の$20\log_{10}(4\pi R / \lambda)$をそのまま実装したものです。

続いて、リンクバジェット全体を計算する関数を定義します。

def link_budget(P_t_W, G_t_dBi, G_r_dBi, R_m, f_Hz, T_sys_K,
                R_b_bps, L_misc_dB=2.0):
    """リンクバジェット計算
    返り値: 達成Eb/N0 [dB], 受信電力 [dBW], P_r/N_0 [dB-Hz]"""
    # 送信
    P_t_dBW = db(P_t_W)
    EIRP = P_t_dBW + G_t_dBi

    # 伝搬
    L_fspl = fspl_db(R_m, f_Hz)

    # 受信
    P_r_dBW = EIRP - L_fspl - L_misc_dB + G_r_dBi

    # 雑音
    N0_dBW_Hz = db(k_B * T_sys_K)

    # SNR密度
    Pr_N0_dB_Hz = P_r_dBW - N0_dBW_Hz

    # Eb/N0
    EbN0_dB = Pr_N0_dB_Hz - db(R_b_bps)

    return {
        "EIRP_dBW": EIRP,
        "FSPL_dB": L_fspl,
        "Pr_dBW": P_r_dBW,
        "N0_dBW_Hz": N0_dBW_Hz,
        "Pr_N0_dB_Hz": Pr_N0_dB_Hz,
        "EbN0_dB": EbN0_dB,
    }

# Voyager 1 X-band downlink at 240億 km
result = link_budget(
    P_t_W=22.0,         # 送信機22W
    G_t_dBi=48.1,       # HGA 3.7m
    G_r_dBi=74.0,       # DSN 70m
    R_m=2.4e13,         # 240億 km
    f_Hz=8.42e9,        # X-band
    T_sys_K=21.0,       # cooled LNA
    R_b_bps=22.4,       # ビットレート
    L_misc_dB=2.0,      # 諸損失
)

for key, val in result.items():
    print(f"{key:>15s}: {val:+8.2f}")

このコードを実行すると、以下のような出力が得られます。

       EIRP_dBW:   +61.52
        FSPL_dB:  +319.47
         Pr_dBW:  -185.85
      N0_dBW_Hz:  -213.40
    Pr_N0_dB_Hz:   +27.55
        EbN0_dB:   +14.05

達成$E_b/N_0 = 14$ dBは、Voyagerが使うReed-Solomon + 畳み込み連接符号の要求$E_b/N_0$(2.5 dB)を約11 dBも上回っています。つまり、十分すぎるほどのマージンがある。実際の運用では、姿勢制御誤差・経年劣化・電源容量の制約などで、ビットレート22.4 bpsまで落として運用しているわけです。なお、距離を冥王星(60億 km, New Horizons)に変えると$E_b/N_0 \approx 26$ dB相当の余裕が出るため、2 kbpsまでビットレートを上げられます。

Eb/N0 vs BERのカーブを描く

次に、変調方式・符号化方式ごとに「どれだけの$E_b/N_0$でどれだけのBERが達成できるか」を可視化します。

import matplotlib.pyplot as plt
from scipy.special import erfc

EbN0_dB = np.linspace(-2, 12, 100)
EbN0_lin = 10 ** (EbN0_dB / 10)

# BPSK (uncoded)
BER_BPSK = 0.5 * erfc(np.sqrt(EbN0_lin))

# QPSK (uncoded) — BPSKと同じBER
BER_QPSK = BER_BPSK

# Reed-Solomon (255, 223) + 畳み込み(K=7, r=1/2) 連接符号(近似)
# 公開資料に基づく近似カーブ。実際には複雑なシミュレーションが必要
def coded_BER_RS_conv(EbN0_dB_arr):
    # 約7 dBの符号化利得を加えた等価BPSK
    shifted = EbN0_dB_arr + 7.0
    lin = 10 ** (shifted / 10)
    return 0.5 * erfc(np.sqrt(lin))

# Turbo符号 (rate 1/6, CCSDS) の近似
def coded_BER_turbo(EbN0_dB_arr):
    # 約9 dBの符号化利得
    shifted = EbN0_dB_arr + 9.0
    lin = 10 ** (shifted / 10)
    return 0.5 * erfc(np.sqrt(lin))

BER_RS_conv = coded_BER_RS_conv(EbN0_dB)
BER_turbo = coded_BER_turbo(EbN0_dB)

# Shannonの限界 (BPSK constrained)
shannon_limit_dB = 0.19

plt.figure(figsize=(10, 7))
plt.semilogy(EbN0_dB, BER_BPSK, 'k-', lw=2, label='Uncoded BPSK')
plt.semilogy(EbN0_dB, BER_RS_conv, 'b-', lw=2, label='RS(255,223) + Conv(K=7,r=1/2) [Voyager]')
plt.semilogy(EbN0_dB, BER_turbo, 'r-', lw=2, label='Turbo r=1/6 [New Horizons, MRO]')
plt.axvline(shannon_limit_dB, color='gray', ls='--', alpha=0.7,
            label=f'Shannon limit (BPSK) = {shannon_limit_dB} dB')
plt.axhline(1e-5, color='green', ls=':', alpha=0.5, label='Target BER = 1e-5')
plt.xlabel('Eb/N0 [dB]')
plt.ylabel('Bit Error Rate (BER)')
plt.title('Eb/N0 vs BER for deep space coding schemes')
plt.legend(loc='lower left')
plt.ylim(1e-8, 1)
plt.grid(True, which='both', alpha=0.3)
plt.tight_layout()
plt.savefig('ebno_vs_ber.png', dpi=150, bbox_inches='tight')
plt.show()

このグラフから、3つの重要な特徴が読み取れます。第一に、素のBPSKでBER $10^{-5}$を達成するには$E_b/N_0 \approx 9.6$ dB必要ですが、Voyagerの連接符号では$\approx 2.5$ dBで済み、Turbo (1/6) なら$\approx 0.5$ dBまで下がります。第二に、Turbo符号はシャノン限界(0.19 dB)から0.3 dBの位置にあり、ほぼ理論限界に到達しています。第三に、最新ミッションがTurbo/LDPCを採用するメリットは、線形換算で「同じ電力の半分以下で通信できる」ことに相当します。

Voyagerリンクのシミュレーション

次に、Voyagerが地球からだんだん遠ざかっていく状況をシミュレーションします。1979年(木星フライバイ、$\approx 7$億km)から現在($\approx 240$億km)、そして将来($\approx 500$億km)まで、ビットレートがどう変遷したかを再現します。

import matplotlib.pyplot as plt

distances_AU = np.array([5, 10, 20, 30, 50, 80, 120, 160, 200])
distances_m = distances_AU * 1.496e11  # AU → m

# Voyagerのパラメータ(X-band downlink)
P_t = 22.0
G_t = 48.1
G_r = 74.0           # DSN 70m
f = 8.42e9
T_sys = 21.0
L_misc = 2.0
EbN0_required = 2.5   # RS+conv with margin

# 各距離での最大ビットレート(リンクマージン3 dBを確保)
def max_bitrate(R_m):
    """要求Eb/N0=2.5dB+マージン3dBを満たす最大ビットレート"""
    EIRP = db(P_t) + G_t
    L_fspl = fspl_db(R_m, f)
    P_r_dBW = EIRP - L_fspl - L_misc + G_r
    N0 = db(k_B * T_sys)
    Pr_N0 = P_r_dBW - N0
    # Eb/N0 = Pr_N0 - 10log(Rb) ≥ required + margin
    # 10log(Rb) ≤ Pr_N0 - required - margin
    Rb_dB = Pr_N0 - (EbN0_required + 3.0)
    return 10 ** (Rb_dB / 10)

bitrates = [max_bitrate(R) for R in distances_m]

plt.figure(figsize=(10, 6))
plt.loglog(distances_AU, bitrates, 'o-', lw=2, markersize=8)
plt.scatter([5.2], [115200], s=200, c='red', marker='*',
            label='Jupiter flyby (1979): 115.2 kbps')
plt.scatter([30], [2800], s=200, c='orange', marker='*',
            label='Neptune flyby (1989): 2.8 kbps (with DSN array)')
plt.scatter([160], [22.4], s=200, c='blue', marker='*',
            label='Current (2026): 22.4 bps')
plt.xlabel('Distance [AU]')
plt.ylabel('Max bitrate [bps]')
plt.title('Voyager downlink bitrate vs distance (X-band, DSN 70m, RS+conv)')
plt.legend(loc='upper right')
plt.grid(True, which='both', alpha=0.3)
plt.tight_layout()
plt.savefig('voyager_bitrate_vs_distance.png', dpi=150, bbox_inches='tight')
plt.show()

print("Voyager downlink simulation:")
for AU, br in zip(distances_AU, bitrates):
    print(f"  R = {AU:3d} AU: max bitrate = {br:8.1f} bps")

シミュレーション結果から、ビットレートが距離の二乗に反比例して低下していくことがわかります。木星距離(5 AU)では理論上100 kbps以上可能だったのが、現在の160 AU(240億km)では数十bpsまで落ち込みます。実際のVoyagerの運用ビットレート(木星時代115.2 kbps→現在22.4 bps)は、このグラフからわかる「物理的に許される最大値」よりも安全側に倒して設定されており、長期運用での電源劣化や系統的不確実性に備えていることが見て取れます。

光通信 vs RF の比較

最後に、これからの深宇宙通信を担う光通信(DSOC: Deep Space Optical Communications)と、従来のRF通信を比較します。光通信は波長が短い(1550 nm = $1.55 \times 10^{-6}$ m)ぶん、同じアンテナ径でも利得が圧倒的に大きくなります。

import numpy as np
import matplotlib.pyplot as plt

# 比較したいシステム
systems = {
    "Voyager (X-band)":     {"f": 8.42e9,    "Dt": 3.7,  "Dr": 70.0,  "Pt": 22.0},
    "JWST (Ka-band)":       {"f": 25.9e9,   "Dt": 0.6,  "Dr": 34.0,  "Pt": 14.0},
    "DSOC (1550nm, 0.22m)": {"f": 1.934e14, "Dt": 0.22, "Dr": 5.0,   "Pt": 4.0},
    "LCRD (1550nm, 0.10m)": {"f": 1.934e14, "Dt": 0.10, "Dr": 5.0,   "Pt": 0.5},
}

# 各システムのEIRP・利得・損失を計算
R = 0.4e9 * 1e3  # 4億km (Marsまで)、参考距離
print(f"--- Comparison at R = {R/1e9:.2g} km (≈Mars distance) ---\n")
print(f"{'System':<25s} {'Gt[dBi]':>8s} {'Gr[dBi]':>8s} {'FSPL[dB]':>9s} {'EIRP[dBW]':>10s}")
print("-" * 72)

for name, p in systems.items():
    Gt = antenna_gain_db(p["Dt"], p["f"])
    Gr = antenna_gain_db(p["Dr"], p["f"])
    L_fspl = fspl_db(R, p["f"])
    EIRP = db(p["Pt"]) + Gt
    print(f"{name:<25s} {Gt:>8.1f} {Gr:>8.1f} {L_fspl:>9.1f} {EIRP:>10.1f}")

# Pr/N0 を計算してビジュアライズ
fig, ax = plt.subplots(figsize=(11, 6))
distances_AU = np.logspace(-1, 3, 50)  # 0.1 AU to 1000 AU

for name, p in systems.items():
    Gt = antenna_gain_db(p["Dt"], p["f"])
    Gr = antenna_gain_db(p["Dr"], p["f"])
    EIRP = db(p["Pt"]) + Gt
    # 仮の系雑音温度
    T_sys = 21.0 if p["f"] < 1e12 else 600.0  # RFは21K、光は受光器雑音相当
    N0 = db(k_B * T_sys)
    Pr_N0 = []
    for AU in distances_AU:
        R_m = AU * 1.496e11
        L_fspl = fspl_db(R_m, p["f"])
        L_misc = 2.0 if p["f"] < 1e12 else 5.0  # 光は大気・指向で損失大
        P_r = EIRP - L_fspl - L_misc + Gr
        Pr_N0.append(P_r - N0)
    ax.semilogx(distances_AU, Pr_N0, lw=2, label=name)

ax.axhline(13.5, color='gray', ls='--', alpha=0.7, label='Voyager 22.4 bps level')
ax.set_xlabel('Distance [AU]')
ax.set_ylabel('Pr/N0 [dB-Hz]')
ax.set_title('Available Pr/N0 vs distance: RF vs Optical')
ax.legend()
ax.grid(True, which='both', alpha=0.3)
ax.set_ylim(-30, 100)
plt.tight_layout()
plt.savefig('rf_vs_optical.png', dpi=150, bbox_inches='tight')
plt.show()

このコードと出力結果から、光通信の威力がはっきりと読み取れます。DSOC(口径22 cmのレーザー望遠鏡)の送信アンテナ利得は、わずか22 cmのアンテナにもかかわらず約114 dBi。これは70 m DSNアンテナのX帯利得74 dBiを40 dB(1万倍)も上回ります。波長が4桁短いぶん、利得が16桁(80 dB)有利になる潜在能力があり、それを部分的に活かしている形です。逆に、光通信は雲があれば通信不能になる、指向精度が極端に厳しい($\mu$rad級)、太陽近傍を避けるなど制約も大きいため、当面はRFと光のハイブリッド運用が現実解となります。

リンクマージン感度解析

設計段階では、各パラメータが$\pm 1$ dB変動するとリンクマージンがどう動くかを把握することが重要です。

import numpy as np
import matplotlib.pyplot as plt

# 基準パラメータ (Voyager)
base = {
    "P_t (dBW)": 13.4,
    "G_t (dBi)": 48.1,
    "G_r (dBi)": 74.0,
    "FSPL (dB)": -319.5,
    "L_atm (dB)": -0.1,
    "L_point (dB)": -0.5,
    "T_sys (K, log)": db(21.0),  # T_sys変化は雑音への寄与
    "R_b (bps, log)": db(22.4),
}

# Eb/N0は (各項の符号付き寄与)の和
# (P_t + G_t - FSPL - L_atm - L_point + G_r) - (T_sys + R_b) - 10log(k)
EbN0_base = (13.4 + 48.1 - 319.5 - 0.1 - 0.5 + 74.0
             - db(21.0) - db(22.4) - db(k_B))
print(f"Base Eb/N0 = {EbN0_base:.2f} dB")

# 各パラメータを ±1 dB 動かしたときのEb/N0変化(感度)
sensitivities = {
    "+1 dB on P_t":     +1, "-1 dB on P_t":     -1,
    "+1 dB on G_t":     +1, "-1 dB on G_t":     -1,
    "+1 dB on G_r":     +1, "-1 dB on G_r":     -1,
    "+1 dB on T_sys":   -1, "-1 dB on T_sys":   +1,
    "+1 dB on R_b":     -1, "-1 dB on R_b":     +1,
    "+1 dB on L_misc":  -1, "-1 dB on L_misc":  +1,
}

print("\n=== Sensitivity (∂Eb/N0 / ∂param) ===")
for name, delta in sensitivities.items():
    print(f"  {name:<20s}: {delta:+.0f} dB")

この結果から、Eb/N0に対する各パラメータの感度がdB単位で1:1で線形に効くことがわかります。送信電力を1 dB増やすのも、アンテナ利得を1 dB増やすのも、ビットレートを1 dB下げるのも、すべて等価な改善になります。つまり設計の自由度は高く、コスト・質量・電力など制約に応じて最も安価な「1 dB」を探すのがエンジニアの腕の見せどころです。例えば、宇宙機側で1 dB余分に電力を確保するより、地上局で1 dB分巨大なアンテナを作る方が、ライフサイクルコスト全体では安い、ということが頻繁にあります。

まとめ

本記事では、深宇宙通信のリンクバジェット設計を、Voyagerから最新のJWST・DSOCまで具体例を交えて解説しました。

  • フリスの式: 受信電力は$P_r = P_t G_t G_r \lambda^2 / (4\pi R)^2$。距離の二乗、周波数の二乗、アンテナ利得の積で決まる。
  • 自由空間伝搬損失: $L_{\text{FSPL}} = 20\log(4\pi R / \lambda)$。Voyagerでは$\approx 319$ dBに達するが、両端の高利得アンテナで実効的に197 dBまで圧縮できる。
  • 系雑音温度: $N_0 = k T_{\text{sys}}$。DSN 70mは21 Kという極低温を達成しており、これがVoyagerのリンクを成立させる隠れた立役者である。
  • 符号化利得: Reed-Solomon + 畳み込みで約7 dB、Turbo/LDPCで約9 dBの利得が得られ、シャノン限界(BPSK制約下0.19 dB)に肉薄する。
  • ターンアラウンドレシオ: アップリンク/ダウンリンク周波数比880/749により、コヒーレント測距とドップラー計測が可能になる。
  • DSN 3地点 + 70mアンテナ: Goldstone・Madrid・Canberraの経度120度配置により、地球の自転と独立して連続追尾を実現。
  • 光通信への展望: DSOC・LCRDが示すように、1550 nm帯では同サイズアンテナで40 dB以上の利得増が見込め、Mbps級の深宇宙通信が現実視野に入る。

リンクバジェットは「家計簿」のように単純な足し算引き算の世界ですが、各項に詰まっているのはマクスウェル方程式・量子限界・情報理論・幾何光学といった物理学の総力戦です。Voyager 1が240億km彼方から22.4 bpsで届ける信号は、これらの理論と50年にわたる工学的執念の結晶なのです。

次のステップとして、以下の記事も参考にしてください。