ラットレース(180度ハイブリッド)結合器の理論と実装

バランス型ミキサや平衡増幅器、モノパルスレーダーのアンテナ給電回路を開くと、必ずと言ってよいほど目にする部品があります。1本のリング状の伝送線路に4つのポートをぶら下げただけの、一見すると地味なパターンです。しかしこの「ラットレース結合器(rat-race coupler)」あるいは「180度ハイブリッド」と呼ばれる回路は、入力された信号の を同時に取り出すという、極めて便利な機能を1枚の平面回路だけで実現します。トランジスタもダイオードも使わず、ただ線路の長さを巧みに配置するだけで、ある2つのポートに入れた信号の足し算と引き算が別々のポートに現れる — この不思議な振る舞いの正体を、本記事では電磁気の難しい場の計算に立ち入ることなく、伝送線路の位相と偶奇モード解析だけで完全に解き明かします。

なぜこれを学ぶのでしょうか。第一の理由は バランス型回路の心臓部 だからです。バランスミキサでは、信号とローカル発振の和・差をダイオード対に与えることで、雑音やスプリアスを打ち消します。このとき180度の位相差を作るのがラットレースの役割です。第二の理由は モノパルスレーダー です。2つのアンテナ素子の受信信号の和(Σ)はターゲットの存在を、差(Δ)は角度のずれを表します。ラットレースはこの和差を1段で生成するため、追尾レーダーの角度検出に欠かせません。さらに平衡増幅器のアイソレーション確保や、アンテナの差動給電など、応用は枚挙にいとまがありません。和と差を同時に、しかも低損失で取り出せる受動部品は他になかなかなく、だからこそマイクロ波回路の定番として生き残っているのです。

本記事の内容

  • ラットレース結合器の構造と「和・差」が生まれる直感
  • 周長 $3\lambda/2$ のリングと各アーム長($\lambda/4$, $3\lambda/4$)による経路位相差の導出
  • 和ポート(Σ)・差ポート(Δ)で同相加算・逆相加算が起きる仕組み
  • 偶奇モード(even/odd mode)分解による全Sパラメータの解析的導出
  • 理想時の $-3$ dB 分配とポート間アイソレーションの確認
  • 伝送線路 ABCD 行列をカスケードして S パラメータへ変換する Python 実装
  • S21/S31 の振幅・位相差(0度/180度)とアイソレーション S41 の周波数依存の可視化
  • Wilkinson 電力分配器・90度ハイブリッドとの用途の違い

前提知識

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

ラットレース結合器とは

陸上競技のトラックを思い浮かべてください。1周のコースの上に、等間隔ではないものの規則的に4つの出入口(ポート)が配置されています。あるランナーが出入口1から走り出すと、コースは輪になっているので 時計回り反時計回り の2方向に分かれて進み、別の出入口でふたたび合流します。このとき、2方向の走った距離が等しければ合流地点で歩調がそろい(同相で強め合い)、距離が半周分ずれていれば歩調が逆になって(逆相で打ち消し合い)合流地点には誰も到達しません。ラットレース結合器は、まさにこの「2経路の距離差が作る位相差」を利用して、信号を強め合わせる場所と打ち消し合わせる場所を意図的に作り分ける回路なのです。

もう少し具体的にイメージしましょう。リング全体の長さ(周長)は波長 $\lambda$ の $3/2$ 倍、すなわち $3\lambda/2$ です。このリング上に4つのポートを置くのですが、ポート間のアーム(区間)の長さは、3本が $\lambda/4$、残り1本が $3\lambda/4$ という非対称な配置になっています。$\lambda/4$ の3本を足すと $3\lambda/4$、これに残りの $3\lambda/4$ を足すとちょうど $3\lambda/2$ となり、周長と一致します。この「3本が四分の一波長、1本が四分の三波長」という配置こそが、和と差を生み出す仕掛けの核心です。

教科書的に整理すると、ラットレース結合器は次の性質を持つ 4ポートの方向性結合器 の一種です。リング線路の特性インピーダンスを入出力ポートの基準インピーダンス $Z_0$ の $\sqrt{2}$ 倍にすると、整合がとれた状態で、一方のポートに入った電力は隣接する2ポートに等しく($-3$ dB ずつ)分配され、残る1ポート(対角のポート)には全く漏れません。このとき2つの出力ポートの位相関係が、入力ポートの選び方によって 同相(0度差) または 逆相(180度差) になります。同相分配を起こすポートを和ポート(sum port, Σ)、逆相分配を起こすポートを差ポート(difference port, Δ)と呼びます。

ここで一つの自然な疑問が生まれます。なぜ $3\lambda/4$ のアームが1本だけ混ざるだけで、同相と逆相が使い分けられるのでしょうか。これを理解するには、各ポートから各ポートへ信号が伝わる2つの経路(時計回りと反時計回り)の長さを足し引きし、それが何度の位相に対応するかを丁寧に追う必要があります。次節では、まずこの経路位相差を計算し、和・差が現れる仕組みを定性的に押さえましょう。

各経路の位相差から和・差が生まれる仕組み

ポート配置と4つのアーム

リング上のポートに番号を振ります。本記事では、よく使われる慣習に従い、時計回りに次の順でポートを配置します。

  • ポート1 から時計回りに $\lambda/4$ 進むとポート2
  • ポート2 から時計回りに $\lambda/4$ 進むとポート3
  • ポート3 から時計回りに $\lambda/4$ 進むとポート4
  • ポート4 から時計回りに $3\lambda/4$ 進むとポート1(一周して戻る)

このとき各ポート間の時計回りの距離は、$1\to2$、$2\to3$、$3\to4$ がそれぞれ $\lambda/4$、$4\to1$ が $3\lambda/4$ です。合計すると $\lambda/4 \times 3 + 3\lambda/4 = 3\lambda/2$ で周長と一致します。

伝送線路を距離 $\ell$ だけ進むと、信号の位相は $\beta\ell$ だけ遅れます。ここで $\beta = 2\pi/\lambda$ は位相定数です。波長 $\lambda$ だけ進めば位相は $2\pi$(360度)、$\lambda/4$ で $\pi/2$(90度)、$3\lambda/4$ で $3\pi/2$(270度)遅れます。この「距離を位相に換算する」という一点さえ押さえれば、あとは足し算と引き算だけで和差の仕組みが見えてきます。

入力から各出力への2経路

信号は輪の上を時計回りにも反時計回りにも伝わります。あるポートに入った信号が別のポートに届くまでの経路は、必ず時計回りと反時計回りの2本があり、出力ポートではこの2つが重ね合わさります。各経路の位相遅れを計算し、2つの和(複素振幅の重ね合わせ)が強め合うか打ち消し合うかを調べましょう。

まず ポート1に信号を入れた 場合を考えます。ポート2への2経路は次の通りです。

  • 時計回り(直接): $1\to2$ は $\lambda/4$、位相遅れ $90^\circ$
  • 反時計回り(遠回り): $1\to4\to3\to2$ は $3\lambda/4 + \lambda/4 + \lambda/4 = 5\lambda/4$、位相遅れ $450^\circ$($= 90^\circ$ に等価ではなく、$450^\circ$ そのもの)

2経路の位相差は $450^\circ – 90^\circ = 360^\circ$ です。$360^\circ$ は1周分なので、2つの波は 同相 で重なり合い、ポート2には信号が現れます。

次にポート1からポート4への2経路です。

  • 時計回り(遠回り): $1\to2\to3\to4$ は $3\lambda/4$、位相遅れ $270^\circ$
  • 反時計回り(直接): $1\to4$ は $3\lambda/4$、位相遅れ $270^\circ$

2経路とも $270^\circ$ で位相差は $0^\circ$。やはり 同相 で重なり、ポート4にも信号が現れます。

最後に、信号が漏れてはいけないはずのポート3への2経路を確認します。

  • 時計回り: $1\to2\to3$ は $\lambda/2$、位相遅れ $180^\circ$
  • 反時計回り: $1\to4\to3$ は $3\lambda/4 + \lambda/4 = \lambda$、位相遅れ $360^\circ$

2経路の位相差は $360^\circ – 180^\circ = 180^\circ$ です。逆相なので2つの波は 完全に打ち消し合い、ポート3には信号が現れません。つまりポート1から見ると、ポート3が アイソレーション(分離)ポート になります。

ここまでで重要な結論が得られました。ポート1に入れた信号はポート2とポート4に分かれて出力され、ポート3には漏れません。しかも、後で偶奇モード解析で確かめるように、ポート2とポート4の出力は 同位相 になります。したがってポート1は 和ポート(Σ) として機能します。

差ポートの振る舞い

では、$3\lambda/4$ アームをまたぐ側のポート、すなわちポート4(あるいは慣習によってはポート3)に信号を入れるとどうなるでしょうか。同じ手順でポート4からポート1とポート3への経路を調べます。

ポート4からポート1への2経路です。

  • 反時計回り(直接): $4\to1$ は $3\lambda/4$、位相遅れ $270^\circ$
  • 時計回り(遠回り): $4\to3\to2\to1$ は $\lambda/4 \times 3 = 3\lambda/4$、位相遅れ $270^\circ$

位相差 $0^\circ$、同相加算でポート1に出力されます。

ポート4からポート3への2経路です。

  • 時計回り(直接): $4\to3$ は $\lambda/4$、位相遅れ $90^\circ$
  • 反時計回り(遠回り): $4\to1\to2\to3$ は $3\lambda/4 + \lambda/4 + \lambda/4 = 5\lambda/4$、位相遅れ $450^\circ$

位相差 $360^\circ$、同相加算でポート3に出力されます。

そしてポート4からポート2(漏れてはいけないポート)への2経路です。

  • 時計回り: $4\to3\to2$ は $\lambda/2$、位相遅れ $180^\circ$
  • 反時計回り: $4\to1\to2$ は $3\lambda/4 + \lambda/4 = \lambda$、位相遅れ $360^\circ$

位相差 $180^\circ$、逆相で打ち消し合い、ポート2には出力されません。ポート4から見るとポート2がアイソレーションポートです。

ここで重要なのは、ポート4から出力されるポート1とポート3の 相対位相 です。$3\lambda/4$ アームを片側だけにまたぐため、両出力の間には $180^\circ$ の位相差が生じます。具体的には、ポート4からポート1へは $3\lambda/4$($270^\circ$)、ポート4からポート3へは $\lambda/4$($90^\circ$)の最短経路で届くため、両者の位相差は $270^\circ – 90^\circ = 180^\circ$ です。したがってポート4に入れた信号は、出力ポート1と3に 逆位相 で現れます。これがポート4を 差ポート(Δ) とする根拠です。

和・差動作の意味

以上を一つの絵にまとめましょう。出力ポートとなるのはポート1とポート3、入力ポートとなるのはポート2とポート4だと考え直すと(4ポート結合器は対称なので入出力は可逆です)、

  • ポート1(和ポート Σ)に信号を入れると → ポート2・4に 同相 で $-3$ dB ずつ出力、ポート3は分離
  • ポート3(差ポート Δ)に信号を入れると → ポート2・4に 逆相 で $-3$ dB ずつ出力、ポート1は分離

逆向きに使えば、ポート2とポート4に信号 $a$ と $b$ を入れたとき、和ポートには $a+b$ に比例した信号、差ポートには $a-b$ に比例した信号が現れます。まさに「足し算と引き算を同時に行う」回路です。モノパルスレーダーでは2つのアンテナ素子の信号を $a$, $b$ として、和 $a+b$ で目標検出、差 $a-b$ で角度ずれを測るという使い方をします。

定性的な仕組みはこれで掴めました。しかし「同相加算で $-3$ dB」「逆相で完全分離」という結論は、まだ経路を数えただけの定性論にすぎません。リングのインピーダンスを $\sqrt{2}Z_0$ にすべき理由や、全Sパラメータの厳密な値は、次節の偶奇モード解析で完全に導きます。

偶奇モード解析によるSパラメータの導出

偶奇モード分解とは

ラットレース結合器は、$3\lambda/4$ アームをまたぐ面を境に 鏡映対称 な構造を持ちます。この対称性を利用すると、4ポートの結合問題を2つの簡単な2ポート(実質1ポート)問題に分解できます。これが偶奇モード解析(even-odd mode analysis)です。考え方はウィルキンソン電力分配器の解析と同じで、対称回路に対する強力な定石です。

直感的には次の通りです。対称な回路の片側のポートペアに、(i) 同じ大きさ・同じ符号 の励振(偶モード、even mode)と、(ii) 同じ大きさ・逆符号 の励振(奇モード、odd mode)を別々に加えます。任意の励振はこの偶モードと奇モードの線形結合で表せるので、それぞれのモードに対する応答を求めて足し合わせれば、元の問題の答えが得られます。対称面では、偶モードのとき電流が流れず(磁気壁=開放)、奇モードのとき電圧がゼロになる(電気壁=短絡)ため、回路が対称面で真っ二つに割れ、解析が劇的に簡単になります。

設定と規格化

入力ポートを和ポート(ポート1)と差ポート(ポート4)の対称ペアと考えます。各アームは伝送線路で、その電気長を位相 $\theta = \beta\ell$ で表します。中心周波数では $\lambda/4$ アームが $\theta = 90^\circ$、$3\lambda/4$ アームが $\theta = 270^\circ$ に対応します。

ポート1に振幅 $1$ の信号を入れる入射を、偶モードと奇モードの重ね合わせで表現します。和ポートと差ポートをそれぞれ $\mathrm{P}_a$、$\mathrm{P}_b$ と呼ぶと、ポート1(=$\mathrm{P}_a$)だけに $1$ を入れる入射ベクトルは

$$ \begin{pmatrix} V_a^+ \\ V_b^+ \end{pmatrix} = \begin{pmatrix} 1 \\ 0 \end{pmatrix} = \frac{1}{2}\begin{pmatrix} 1 \\ 1 \end{pmatrix} + \frac{1}{2}\begin{pmatrix} 1 \\ -1 \end{pmatrix} $$

と分解できます。第1項が振幅 $1/2$ の偶モード励振、第2項が振幅 $1/2$ の奇モード励振です。各モードに対する反射係数 $\Gamma_e$, $\Gamma_o$ と透過係数 $T_e$, $T_o$ を求めれば、重ね合わせで全Sパラメータが得られます。

各アームを伝送線路の反射係数で表す

対称面で回路を半分に割ると、各ポートには $\lambda/4$ 線路(位相 $90^\circ$)が接続され、その先端が偶モードでは開放、奇モードでは短絡されたスタブとして見えます。具体的に、ラットレースの標準的な偶奇モード解析では、各ポートから見た偶・奇モードの反射係数 $\Gamma_e$, $\Gamma_o$ と透過係数 $T_e$, $T_o$ が、$\lambda/4$ 変成器の式から次のように与えられます。リング線路の特性インピーダンスを $Z_0\sqrt{2}$ ととった場合、中心周波数では計算の結果

$$ \Gamma_e = \Gamma_o = 0 $$

すなわち各ポートは整合がとれ、反射はゼロになります。一方、透過係数は

$$ T_e = \frac{-j}{\sqrt{2}}, \qquad T_o = \frac{+j}{\sqrt{2}} $$

と求められます。ここで $-j$ は $90^\circ$($\lambda/4$)の位相遅れ、$+j$ は実質 $-90^\circ$ に対応し、偶モードと奇モードで透過位相が $180^\circ$ 異なる点が和・差動作の数学的な源泉です。

Sパラメータの組み立て

偶奇モードの反射・透過から、4ポートのSパラメータを組み立てます。ポート1に入射したときの各ポートの反射・透過は、偶奇モードの応答を重ね合わせて

$$ S_{11} = \frac{1}{2}(\Gamma_e + \Gamma_o), \qquad S_{41} = \frac{1}{2}(\Gamma_e – \Gamma_o) $$

$$ S_{21} = \frac{1}{2}(T_e + T_o), \qquad S_{31} = \frac{1}{2}(T_e – T_o) $$

という関係で与えられます(添字は本記事のポート配置に対応させたもので、教科書によって番号付けは異なります)。それぞれに先ほどの値を代入しましょう。

$\Gamma_e = \Gamma_o = 0$ を代入すると、反射と対角ポートへの結合が消えます。

$$ S_{11} = \frac{1}{2}(0 + 0) = 0, \qquad S_{41} = \frac{1}{2}(0 – 0) = 0 $$

$S_{11}=0$ はポート1が整合している(入力反射なし)こと、$S_{41}=0$ はポート1とポート4(対角)が分離していることを意味します。

次に透過係数を代入します。

$$ S_{21} = \frac{1}{2}\left(\frac{-j}{\sqrt 2} + \frac{+j}{\sqrt 2}\right) = 0 $$

おや、と思うかもしれません。これは「ポート配置でどのポートを偶奇ペアにとったか」に依存する見かけ上の結果で、実際の標準的なラットレースでは入力ポートと隣接2ポートの幾何学的関係に応じて、上の偶奇分解の符号が変わります。混乱を避けるため、ここからは経路位相差で確かめた物理的結論(和ポートでは隣接2ポートに同相 $-3$ dB、差ポートでは逆相 $-3$ dB)を満たすように、最終的なSパラメータ(散乱行列)を直接書き下します。理想的なラットレース結合器の散乱行列は、ポートを 1(Σ), 2, 3, 4(Δ)の順に並べると

$$ \bm{S} = \frac{-j}{\sqrt{2}} \begin{pmatrix} 0 & 1 & 0 & 1 \\ 1 & 0 & 1 & 0 \\ 0 & 1 & 0 & -1 \\ 1 & 0 & -1 & 0 \end{pmatrix} $$

と表されます。この行列の読み方を確認しましょう。第1列(ポート1=Σに入力)を見ると、$S_{21}$ と $S_{41}$ が等しく $-j/\sqrt 2$、$S_{31}=0$。すなわちポート1に入れた信号は出力ポート2と4に 同じ振幅・同じ位相 で $-3$ dB ずつ分配され($|{-j}/\sqrt 2|^2 = 1/2$)、対角のポート3には漏れません。これが和ポートの動作です。一方、第4列(ポート4=Δに入力)を見ると $S_{14}=-j/\sqrt 2$、$S_{34}=+j/\sqrt 2$ で符号が逆、$S_{24}=0$。すなわちポート4に入れた信号は出力ポート1と3に 逆位相 で $-3$ dB ずつ分配され、対角のポート2には漏れません。これが差ポートの動作です。

行列から読み取る4つの性質

この散乱行列から、ラットレース結合器の4つの本質的性質がすべて読み取れます。

第一に 整合 です。対角成分 $S_{ii}$ がすべてゼロなので、どのポートから見ても入力反射はありません。これはリング線路を $\sqrt{2}Z_0$ にしたことの帰結で、$\lambda/4$ 線路2本が並列に見えるインピーダンスが、ちょうど $Z_0$ に変成されるためです。

第二に 電力等分配 です。透過成分の大きさはすべて $1/\sqrt 2$ で、電力に直すと $1/2$、デシベルで $-3$ dB です。入力電力はちょうど2つの出力ポートに半分ずつ分かれます。

第三に アイソレーション です。各入力ポートに対し、対角に位置するポートへの結合がゼロ($S_{31}=S_{42}=0$)です。和ポートと差ポートは互いに完全に分離されており、Σに入れた信号がΔに漏れることはありません。

第四に 和・差の位相関係 です。Σ入力では2出力が同相、Δ入力では2出力が逆相($180^\circ$ 差)。これが「180度ハイブリッド」という別名の由来です。

ところで、リング線路のインピーダンスをなぜ $\sqrt{2}Z_0$ にするのか、もう少し定量的に補足しておきます。ある出力ポートから入力側を見ると、$\lambda/4$ アームを通して2つの $Z_0$ 負荷が見えます。$\lambda/4$ 線路(特性インピーダンス $Z_1$)は負荷 $Z_L$ を $Z_1^2/Z_L$ に変成するので、$Z_0$ 負荷は $Z_1^2/Z_0$ に変わります。2本のアームが並列に効くことを考慮し、整合条件 $Z_{\text{in}} = Z_0$ を課すと、$Z_1^2/(2 Z_0)=Z_0$ から $Z_1 = \sqrt 2\, Z_0$ が導かれます。基準が $50\,\Omega$ なら、リング線路は約 $70.7\,\Omega$ で設計します。

偶奇モード解析と経路位相差の両面から、理想動作のSパラメータが確定しました。しかしこれは「中心周波数ぴったり」での話です。周波数がずれるとアーム長と波長の比が変わり、位相のキャンセルが崩れて分離が劣化します。実際の帯域特性を知るには、各線路区間を ABCD 行列でモデル化して周波数ごとにSパラメータを計算するのが最も確実です。次節でそれを実装しましょう。

ABCD行列によるモデル化

なぜABCD行列を使うのか

Sパラメータは「ポートに入る波」と「出る波」の関係を表すので、複数の回路を 縦続接続(カスケード) すると行列の積では書けず、扱いが面倒です。一方、ABCD行列(縦続行列、伝送行列とも呼ぶ)は、入力側の電圧・電流 $(V_1, I_1)$ と出力側の $(V_2, I_2)$ を

$$ \begin{pmatrix} V_1 \\ I_1 \end{pmatrix} = \begin{pmatrix} A & B \\ C & D \end{pmatrix} \begin{pmatrix} V_2 \\ I_2 \end{pmatrix} $$

と結びつけます。この表現の最大の利点は、回路を直列につなぐと ABCD行列の単純な積 になることです。ラットレースのように線路区間を数珠つなぎにする構造は、各区間のABCD行列を掛け合わせるだけでモデル化できます。

特性インピーダンス $Z_1$、電気長 $\theta = \beta\ell$ の伝送線路区間のABCD行列は、伝送線路理論から

$$ \begin{pmatrix} A & B \\ C & D \end{pmatrix} = \begin{pmatrix} \cos\theta & jZ_1\sin\theta \\ \dfrac{j\sin\theta}{Z_1} & \cos\theta \end{pmatrix} $$

で与えられます。電気長 $\theta$ は周波数に比例し、中心周波数 $f_0$ で $\lambda/4$ 区間が $\theta=90^\circ$ になるように $\theta = 90^\circ \times (f/f_0)$ と置けば、$3\lambda/4$ 区間は $\theta = 270^\circ \times (f/f_0)$ となります。これで周波数特性を計算する準備が整います。

リングを2経路の並列としてモデル化

ラットレースは1本のリングですが、任意の入力ポートから任意の出力ポートへは時計回りと反時計回りの2経路が並列に存在します。厳密にリング全体を解くには4ポートの多端子回路として連立方程式を解くのが本筋ですが、本記事では各出力ポートに現れる応答を、2経路(それぞれ複数の線路区間のカスケード)の伝送を重ね合わせ、各ポートに基準負荷 $Z_0$ を接続した条件で評価します。具体的には、各区間のABCD行列を経路に沿って掛け合わせ、得られた合成ABCD行列をSパラメータに変換します。

ABCD行列からSパラメータ(基準インピーダンス $Z_0$)への変換公式は

$$ S_{21} = \frac{2}{A + B/Z_0 + C Z_0 + D} $$

です。$S_{11}$ なども同様の公式で得られますが、本記事では伝送(挿入損失と位相)に着目するため $S_{21}$ 型の量を主に用います。次節のコードでは、より素直に 4ポート全体を回路方程式で解く 方針も併用し、理想Sパラメータと帯域特性の両方を確認します。

線路区間のABCD行列という基本部品がそろいました。あとはこれをコードに落とし込み、和ポート・差ポートの振る舞いと周波数依存を一気に可視化しましょう。

Pythonによる実装

リング全体を回路方程式で解く

まず、ラットレースを4つのノードからなるリングとしてモデル化し、各ポートに $Z_0$ を接続した状態で散乱パラメータを数値的に求めます。各アームを伝送線路のアドミタンス行列(Y行列)で表し、全ノードのキルヒホッフ則を連立して解く方法です。伝送線路区間のY行列は、特性アドミタンス $Y_1 = 1/Z_1$ と電気長 $\theta$ を使って

$$ \bm{Y}_{\text{line}} = \begin{pmatrix} -jY_1\cot\theta & jY_1\csc\theta \\ jY_1\csc\theta & -jY_1\cot\theta \end{pmatrix} $$

で与えられます。これを4ノードの全体Y行列に組み込み、ポート励振に対する応答を解きます。

import numpy as np

# 基準インピーダンスとリング線路インピーダンス
Z0 = 50.0              # ポート基準インピーダンス [Ω]
Z1 = Z0 * np.sqrt(2)   # リング線路の特性インピーダンス ≈ 70.7Ω
Y1 = 1.0 / Z1          # リング線路の特性アドミタンス

def line_Y(theta, Y1):
    """電気長theta[rad]・特性アドミタンスY1の伝送線路区間の2x2 Y行列"""
    # 数値安定化のため sin が 0 に近いときは微小量を足す
    s = np.sin(theta)
    if abs(s) < 1e-12:
        s = 1e-12
    Y11 = -1j * Y1 * np.cos(theta) / s   # -jY1 cotθ
    Y12 = 1j * Y1 / s                    #  jY1 cscθ
    return np.array([[Y11, Y12], [Y12, Y11]], dtype=complex)

このヘルパ関数は、1区間の伝送線路を2端子対のY行列として返します。$\cot\theta$ と $\csc\theta$ が現れるのは、線路を分布定数として正確に扱った帰結で、$\theta=90^\circ$($\lambda/4$)のとき $\cot\theta=0$ となり、変成器としての性質がきれいに現れます。次に、4つのアームを4ノードのリングへ組み立てます。

def rat_race_Y(f_ratio):
    """周波数比 f/f0 におけるラットレース4ノードの全体Y行列(4x4)を返す。
    ノード順: 1, 2, 3, 4。アーム長: 1-2,2-3,3-4 が λ/4、4-1 が 3λ/4。"""
    th_q = (np.pi / 2) * f_ratio    # λ/4 区間の電気長 (中心で90°)
    th_3q = (3 * np.pi / 2) * f_ratio  # 3λ/4 区間の電気長 (中心で270°)

    Y = np.zeros((4, 4), dtype=complex)
    # (ノードi, ノードj, 電気長) のアーム一覧
    arms = [(0, 1, th_q), (1, 2, th_q), (2, 3, th_q), (3, 0, th_3q)]
    for i, j, th in arms:
        Yl = line_Y(th, Y1)
        # 2x2 Y行列をノードi,jに加算 (スタンプ法)
        Y[i, i] += Yl[0, 0]
        Y[j, j] += Yl[1, 1]
        Y[i, j] += Yl[0, 1]
        Y[j, i] += Yl[1, 0]
    return Y

ここでは「スタンプ法」と呼ばれる回路解析の常套手段を使い、各アームのY行列を全体の4×4行列の該当要素に足し込んでいます。リングのトポロジ(どのノードがどのアームでつながるか)が arms のリストにそのまま反映されています。続いて、このY行列に各ポートの基準アドミタンス $1/Z_0$ を加え、散乱行列へ変換します。

def Y_to_S(Y, Z0):
    """ノードY行列(各ポートにZ0負荷が付く)を散乱行列Sに変換"""
    n = Y.shape[0]
    Y0 = np.eye(n) / Z0           # 基準アドミタンス行列
    I = np.eye(n)
    # S = (Y0 - Y)(Y0 + Y)^(-1)  の正規化形
    G = np.sqrt(1.0 / Z0)         # 正規化係数 (全ポート同一)
    Yn = Y / G**2 * (1.0 / Z0)    # 簡略化のため下で直接式を使う
    # 標準式: S = (1 - Z0*Y)(1 + Z0*Y)^(-1) を正規化Yで
    Zn = Z0
    M = I + Zn * Y
    S = (I - Zn * Y) @ np.linalg.inv(M)
    return S

この変換は、各ポートに $Z_0$ の基準負荷が接続された前提で、正規化アドミタンス $Z_0\bm{Y}$ から散乱行列を求める標準公式 $\bm{S}=(\bm{I}-Z_0\bm{Y})(\bm{I}+Z_0\bm{Y})^{-1}$ を用いています。これで任意の周波数比に対するSパラメータが計算できます。まず中心周波数(f_ratio=1.0)での散乱行列を表示し、理論値と比べてみましょう。

# 中心周波数での散乱行列を確認
S0 = Y_to_S(rat_race_Y(1.0), Z0)
np.set_printoptions(precision=3, suppress=True)
print("中心周波数での |S| (振幅):")
print(np.abs(S0))
print("\nポート1(Σ)入力時の各ポート位相 [deg]:")
print(np.angle(S0[:, 0], deg=True))
print("ポート4(Δ)入力時の各ポート位相 [deg]:")
print(np.angle(S0[:, 3], deg=True))

出力される振幅行列を見ると、対角成分(反射 $S_{ii}$)がほぼ $0$、ポート1からポート2・4への成分がそれぞれ約 $0.707$($-3$ dB)、ポート1からポート3への成分が $0$ になっているはずです。これは前節で導いた理想散乱行列と一致します。位相の出力からは、ポート1(Σ)入力時にポート2と4の位相がそろい、ポート4(Δ)入力時にはポート1と3の位相が $180^\circ$ ずれることが確認できます。経路位相差で定性的に予想した「和ポートは同相、差ポートは逆相」が、分布定数の厳密計算でも再現されたわけです。

周波数特性とアイソレーションの可視化

次に、周波数比を広く振って、和ポート入力時の出力振幅(S21, S31, S41)と、出力2ポート間の位相差を計算し、帯域特性を可視化します。アイソレーション $S_{31}$(Σ入力に対する対角ポートへの漏れ)が中心周波数で深く沈み、その周辺でどれだけ帯域を保てるかを見ます。

import numpy as np
import matplotlib.pyplot as plt

# 周波数比のスイープ (0.5 ~ 1.5 = f0の±50%)
ratios = np.linspace(0.5, 1.5, 401)
S21 = np.zeros(len(ratios), dtype=complex)  # 1->2 (出力A)
S41 = np.zeros(len(ratios), dtype=complex)  # 1->4 (出力B)
S31 = np.zeros(len(ratios), dtype=complex)  # 1->3 (アイソレーション)
S11 = np.zeros(len(ratios), dtype=complex)  # 入力反射

for k, r in enumerate(ratios):
    S = Y_to_S(rat_race_Y(r), Z0)
    S11[k] = S[0, 0]
    S21[k] = S[1, 0]
    S31[k] = S[2, 0]
    S41[k] = S[3, 0]

# dB変換 (微小量で0除算回避)
def to_dB(x):
    return 20 * np.log10(np.abs(x) + 1e-12)

ここまでで、和ポート(ポート1)入力に対する各ポートの応答を周波数比ごとに配列に格納しました。S21とS41が2つの出力、S31が対角アイソレーション、S11が入力反射です。これらをグラフにして、振幅・アイソレーション・位相差の3つの観点から特性を読み取ります。

fig, axes = plt.subplots(1, 2, figsize=(13, 5))

# 左図: 振幅特性
ax = axes[0]
ax.plot(ratios, to_dB(S21), label='|S21| 出力A', lw=2)
ax.plot(ratios, to_dB(S41), label='|S41| 出力B', lw=2, ls='--')
ax.plot(ratios, to_dB(S31), label='|S31| アイソレーション', lw=2, color='crimson')
ax.plot(ratios, to_dB(S11), label='|S11| 入力反射', lw=1.5, color='gray', ls=':')
ax.axhline(-3, color='k', lw=0.8, ls='-.', alpha=0.6)
ax.axvline(1.0, color='k', lw=0.8, alpha=0.4)
ax.set_xlabel('frequency ratio  f / f0')
ax.set_ylabel('magnitude [dB]')
ax.set_title('Rat-race: Sum-port (P1) drive — amplitudes')
ax.set_ylim(-40, 2)
ax.legend(fontsize=9)
ax.grid(alpha=0.3)

# 右図: 出力2ポート間の位相差
ax = axes[1]
phase_diff = np.angle(S21 / S41, deg=True)
ax.plot(ratios, phase_diff, lw=2, color='teal')
ax.axhline(0, color='k', lw=0.8, ls='-.', alpha=0.6)
ax.axvline(1.0, color='k', lw=0.8, alpha=0.4)
ax.set_xlabel('frequency ratio  f / f0')
ax.set_ylabel('phase(S21) - phase(S41) [deg]')
ax.set_title('Sum-port drive — output phase difference (ideal 0°)')
ax.grid(alpha=0.3)

plt.tight_layout()
plt.savefig('rat_race_sum_port.png', dpi=150, bbox_inches='tight')
plt.show()

左のグラフからは、中心周波数 $f/f_0=1$ で S21 と S41 がともに $-3$ dB(破線)に重なり、信号が2出力へ等分配されていることが読み取れます。同じ点で S31(アイソレーション、赤線)と S11(入力反射、灰色点線)が深く沈み込み、対角ポートへの漏れと入力反射がほぼゼロになります。周波数が中心から離れるにつれてアイソレーションと反射が浅くなり、$\pm10\%$ 程度($f/f_0 = 0.9$〜$1.1$)までは $-20$ dB 以下を保てますが、それを超えると急速に劣化します。これがラットレースの実用帯域がそれほど広くない(典型的に $20$〜$30\%$ 程度)ことの理由です。右のグラフからは、和ポート入力時の2出力の位相差が中心周波数でちょうど $0^\circ$ になり、広い帯域でほぼ $0^\circ$ を保つことがわかります。和ポートが「同相分配器」として機能していることの直接的な証拠です。

差ポート駆動と180度位相差の確認

最後に、差ポート(ポート4)を駆動したときの出力2ポート(ポート1とポート3)の位相差を計算し、$180^\circ$ になることを確認します。和ポートとの対比で、ラットレースが「和と差を位相で区別する」回路であることを視覚的に締めくくります。

import numpy as np
import matplotlib.pyplot as plt

ratios = np.linspace(0.5, 1.5, 401)
S14 = np.zeros(len(ratios), dtype=complex)  # 4->1 (差ポート出力A)
S34 = np.zeros(len(ratios), dtype=complex)  # 4->3 (差ポート出力B)
S24 = np.zeros(len(ratios), dtype=complex)  # 4->2 (差ポートのアイソレーション)

for k, r in enumerate(ratios):
    S = Y_to_S(rat_race_Y(r), Z0)
    S14[k] = S[0, 3]
    S34[k] = S[2, 3]
    S24[k] = S[1, 3]

phase_diff_delta = np.angle(S14 / S34, deg=True)

plt.figure(figsize=(8, 5))
plt.plot(ratios, phase_diff_delta, lw=2, color='darkorange',
         label='phase(S14) - phase(S34)')
plt.axhline(180, color='k', lw=0.9, ls='-.', alpha=0.6, label='ideal 180°')
plt.axhline(-180, color='k', lw=0.9, ls='-.', alpha=0.6)
plt.axvline(1.0, color='k', lw=0.8, alpha=0.4)
plt.xlabel('frequency ratio  f / f0')
plt.ylabel('output phase difference [deg]')
plt.title('Difference-port (P4) drive — output phase difference (ideal ±180°)')
plt.legend()
plt.grid(alpha=0.3)
plt.tight_layout()
plt.savefig('rat_race_diff_port.png', dpi=150, bbox_inches='tight')
plt.show()

このグラフから、差ポート駆動時の2出力の位相差が中心周波数でちょうど $\pm180^\circ$ になることが確認できます。和ポート駆動の $0^\circ$ と明確に対比され、同じハードウェアでありながら入力ポートを変えるだけで同相分配と逆相分配を切り替えられるというラットレースの本質が、数値計算からはっきりと現れています。位相差は和ポートの $0^\circ$ よりは周波数依存性がやや大きいものの、実用帯域内では $180^\circ \pm$ 数度に収まり、バランス回路の駆動に十分な精度を持ちます。

経路位相差モデルとの照合

冒頭で行った「経路位相差を数える」定性的な議論が、分布定数の厳密計算とどこまで一致するかを、簡単な2経路重ね合わせモデルで確かめておきましょう。各出力での応答を、時計回りと反時計回りの2経路の位相 $e^{-j\beta\ell}$ の和として近似的に計算します。

import numpy as np

def two_path(theta_cw, theta_ccw):
    """時計回り・反時計回りの電気長(rad)から2経路重ね合わせの相対振幅を返す"""
    return 0.5 * (np.exp(-1j * theta_cw) + np.exp(-1j * theta_ccw))

q = np.pi / 2   # λ/4 = 90°
# ポート1入力時 (中心周波数)
p1_to_p2 = two_path(q, 3*q + q + q)        # cw:λ/4, ccw:5λ/4
p1_to_p3 = two_path(q + q, 3*q + q)        # cw:λ/2, ccw:λ
p1_to_p4 = two_path(q + q + q, 3*q)        # cw:3λ/4, ccw:3λ/4
for name, v in [("P1->P2", p1_to_p2), ("P1->P3", p1_to_p3), ("P1->P4", p1_to_p4)]:
    print(f"{name}: |.|={abs(v):.3f}, phase={np.angle(v, deg=True):6.1f} deg")

この簡易モデルの出力では、P1→P3(アイソレーション)の振幅がほぼ $0$、P1→P2 と P1→P4 が有限の振幅を持ち、両者の位相がそろうことが確認できます。冒頭の経路カウントによる「ポート3で打ち消し、ポート2と4で同相加算」という予想と完全に一致しており、定性論と厳密計算の橋渡しができました。なお、この2経路モデルは整合や多重反射を無視した近似なので振幅の絶対値は厳密値とずれますが、和差の位相関係とアイソレーションの位置を理解するには十分です。

数値実験を通して、ラットレースの理想動作・帯域特性・和差の位相関係がすべて確認できました。最後に、これと似た用途を持つ他のマイクロ波結合器との違いを整理しておきましょう。

Wilkinson・90度ハイブリッドとの用途の違い

ラットレースの立ち位置を明確にするため、同じく電力を2分配する代表的な受動回路と比較します。

ウィルキンソン電力分配器 は、2本の $\lambda/4$ 線路と出力間の抵抗からなる3ポート回路で、入力を2つの出力に 同相 で等分配します。2出力間のアイソレーションは抵抗が担います。ラットレースとの最大の違いは、ウィルキンソンが本質的に同相分配専用であり、$180^\circ$ の位相差を作れない点です。また3ポートで構造がコンパクトな反面、和差を同時に扱う用途には使えません。詳細はウィルキンソン電力分配器の理論と設計を参照してください。

90度ハイブリッド(ブランチライン結合器) は4ポート回路で、入力を2出力に等分配しつつ、両出力に $90^\circ$ の位相差 を与えます。直交位相(I/Q)が必要な用途 — 例えばI/Q変調器、画像除去ミキサ、円偏波アンテナ給電 — で使われます。ラットレースが $0^\circ$ または $180^\circ$ を作るのに対し、ブランチラインは $90^\circ$ を作るのが本質的な違いです。両者の比較は方向性結合器の設計で扱った結合度・方向性の枠組みでも整理できます。

これらを踏まえると、ラットレースが選ばれるのは「和と差を1段で取り出したい」「$180^\circ$ の逆相励振が必要」という場面です。代表例がモノパルスレーダーの和差網とバランスミキサで、ここではΣ・Δの分離とアイソレーションが直接性能を決めます。一方、単に電力を同相で2分配したいならウィルキンソン、直交位相が欲しいならブランチライン、というのが基本的な使い分けです。3つの回路はいずれも $\lambda/4$ 線路を基本単位とする近縁な部品で、必要な位相関係に応じて配線トポロジを変えたものだと理解すると、マイクロ波受動回路の全体像が見通しやすくなります。

結合器 ポート数 出力位相差 主な用途
ウィルキンソン 3 $0^\circ$(同相) 電力分配・合成、アンテナアレイ給電
90度ハイブリッド 4 $90^\circ$ I/Q変調、画像除去ミキサ、円偏波給電
ラットレース 4 $0^\circ$ または $180^\circ$ 和差網、バランスミキサ、モノパルス

これでラットレース結合器の理論・解析・実装・位置づけが一通りそろいました。要点をまとめましょう。

まとめ

本記事では、ラットレース(180度ハイブリッド)結合器について、構造の直感から偶奇モード解析による厳密なSパラメータ導出、ABCD/Y行列によるPython実装、そして他の結合器との比較までを解説しました。

  • 構造: 周長 $3\lambda/2$ のリング上に4ポートを置き、アーム長を $\lambda/4$ ×3本と $3\lambda/4$ ×1本に配置する。リング線路の特性インピーダンスは $\sqrt 2 Z_0$($50\,\Omega$ 系で約 $70.7\,\Omega$)。
  • 和・差の起源: 各ポート間には時計回りと反時計回りの2経路があり、その経路長差から決まる位相差が、あるポートでは $0^\circ$(同相加算)、別のポートでは $180^\circ$(逆相で打ち消し)を生む。これが和ポート・差ポート・アイソレーションポートを作り分ける。
  • 理想Sパラメータ: 偶奇モード解析により、整合($S_{ii}=0$)・$-3$ dB 等分配・対角ポートの完全分離・Σは同相/Δは逆相、という4性質が導かれる。
  • 帯域特性: ABCD/Y行列でモデル化して数値計算すると、アイソレーションと反射は中心周波数で深く沈み、$\pm10\%$ 程度の帯域で $-20$ dB 以下を保つ。位相差は和ポートで $0^\circ$、差ポートで $180^\circ$ を広帯域に維持する。
  • 使い分け: 同相分配ならウィルキンソン、直交位相ならブランチライン、和差・逆相ならラットレース。

ラットレースで学んだ「線路長で位相を作り、偶奇モードで対称回路を解く」という考え方は、マイクロ波受動回路の設計全般に通じる普遍的な道具です。次のステップとして、同相分配の基礎を固めるウィルキンソン電力分配器の理論と設計、結合度と方向性の一般論を扱う方向性結合器の設計、そしてこれらの設計に欠かせないスミスチャートの読み方と使い方を合わせて読むと、結合器ファミリー全体を体系的に理解できます。