ブランチライン結合器(90度ハイブリッド)の理論と導出と実装

スマートフォンやレーダー、衛星通信機の内部をのぞくと、プリント基板の上に四角い「ロの字」型の配線パターンが描かれていることがあります。これはブランチライン結合器(branch-line coupler)と呼ばれるマイクロ波回路で、入力した信号を2つの出力に「ちょうど半分ずつ」、しかも「90度の位相差をつけて」分配するという、一見地味ながら非常に重要な役割を担っています。なぜわざわざ位相差をつける必要があるのでしょうか。たとえば円偏波アンテナでは、2本の直交した素子に90度ずれた信号を給電することで、電界ベクトルがくるくると回転する円偏波を生成します。GPS衛星から送られてくる信号はまさにこの円偏波であり、受信機側のアンテナ給電回路にもブランチライン結合器が使われています。

もう一つ、ブランチライン結合器が活躍する代表的な場面がバランスドアンプ(balanced amplifier)です。2個のトランジスタ増幅器を90度ハイブリッドで挟むと、各増幅器で反射した信号が入力ポートでちょうど打ち消し合い、出力ポートで強め合います。これにより、個々の増幅器の整合が多少悪くても、回路全体としては優れた入力整合と広帯域特性が得られます。レーダーの送受信モジュールや基地局のパワーアンプには、この構成が広く採用されています。

このように、ブランチライン結合器は「信号を等分配しつつ90度の位相差を生む」という単純な機能で、円偏波給電・バランスドアンプ・ミキサ・移相器など多彩な応用を支えています。さらに驚くべきことに、この回路は能動素子を一切使わず、特性インピーダンスを調整した4本の1/4波長線路を正方形に並べるだけで実現できます。本記事では、なぜこの単純な構造で3dB等分配と90度位相差が生まれるのかを、分布定数線路のABCD行列(縦続行列)から省略なく導出し、Sパラメータに変換して定量的に理解します。そして最後にPythonで周波数特性をシミュレーションし、帯域幅や分離度といった実用指標を自分の手で確かめます。

本記事の内容

  • ブランチライン結合器の構造と4ポートの役割
  • 1/4波長線路のABCD行列と縦続接続の考え方
  • 対称性を利用した偶モード・奇モード解析
  • 各ポートへの分配が3dB等分・90度位相差・完全分離になる条件の導出
  • ABCD行列からSパラメータへの変換
  • Pythonによる周波数特性(振幅・位相・分離度・帯域幅)のシミュレーション

前提知識

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

特に、1/4波長線路がインピーダンスを「ひっくり返す」性質(1/4波長インピーダンス変換器)と、多ポート回路の入出力を記述するSパラメータの定義(Sパラメータとネットワーク行列)は本記事の理解に直結します。

ブランチライン結合器とは

4本の線路でできた正方形

ブランチライン結合器を初めて見ると、ただの四角い配線に見えます。しかし、各辺には意味があります。イメージとしては、水路を4本つないでロの字型の環を作り、4つの角に蛇口(ポート)を取り付けた装置だと思ってください。片方の角から水(マイクロ波の電力)を流し込むと、環の中を2方向に分かれて流れていき、それぞれの経路長や流れやすさ(インピーダンス)の違いによって、各蛇口から出てくる水量と「波のタイミング(位相)」が決まります。ブランチライン結合器は、この4本の線路の特性インピーダンスを巧妙に選ぶことで、特定の角からは半分、別の角からも半分、もう一つの角からはゼロ、という分配を実現します。

具体的な構造は次の通りです。正方形の4辺すべてが、設計周波数 $f_0$ において電気長90度(=1/4波長)の伝送線路です。上下の辺(直列アーム)の特性インピーダンスを $Z_0/\sqrt{2}$、左右の辺(分岐アーム、シャントアーム)の特性インピーダンスを $Z_0$ とします。ここで $Z_0$ は接続される系のインピーダンス(通常50Ω)です。4つの角がそれぞれポート1〜4に対応し、慣例的に次のように呼びます。

  • ポート1: 入力ポート(Input)
  • ポート2: 直通ポート(Through、入力と同じ辺の隣)
  • ポート3: 結合ポート(Coupled)
  • ポート4: 分離ポート(Isolated)

電力をポート1に入れると、ポート2とポート3に等しく分かれて出力され、ポート4には(理想的には)まったく出力されません。さらに、ポート2とポート3に出てくる信号の位相は、ちょうど90度ずれています。これが「90度ハイブリッド」と呼ばれる所以です。

なぜ等分配と90度位相差が生まれるのか(直感)

正方形の環を考えると、ポート1から入った信号がポート4へ達する経路は2通りあります。一つは上の辺を通る経路、もう一つは左右の辺を回り込む経路です。この2経路の電気長が90度(=1/4波長)だけ違うように線路を配置すると、ポート4では2つの波がちょうど逆位相(180度差)になって到達し、打ち消し合ってゼロになります。これがポート4が「分離ポート」になる仕組みです。一方、ポート2やポート3では2経路の波が強め合い、ポート4で消えたぶんのエネルギーがこちらに振り分けられます。

この経路差の議論だけでは「なぜちょうど半分ずつ、なぜちょうど90度差」になるのかまでは説明できません。それを定量的に示すには、各線路の特性インピーダンスを含めた回路解析が必要です。そこで本記事では、まず1本の1/4波長線路をABCD行列で表し、それらを縦続・並列につなぎ合わせて回路全体の応答を計算します。さらに、回路が持つ対称性を利用した「偶奇モード解析」を使うと、4ポートの問題が2つの単純な2ポート問題に分解でき、3dB・90度・分離という3つの性質が一気に証明できます。まずはその出発点となるABCD行列を確認しましょう。

1/4波長線路のABCD行列

ABCD行列(縦続行列)とは

2ポート回路の入出力を記述する方法はいくつかありますが、回路を直列につないでいく解析に最も便利なのがABCD行列(縦続行列、transmission matrix)です。直感的には、ABCD行列は「入口の電圧・電流」と「出口の電圧・電流」を結びつける変換規則です。複数の回路を縦続接続したとき、全体のABCD行列は各回路のABCD行列の単純な積になります。行列を掛けるだけで多段回路を解析できるため、伝送線路を扱う上で極めて強力な道具です。

ポート1の電圧・電流を $V_1, I_1$、ポート2の電圧・電流を $V_2, I_2$ とすると、ABCD行列は次のように定義されます。

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

ここで電流 $I_2$ は出口から流れ出る向きを正にとります。$A$ は電圧伝達比(出力開放時の入力電圧/出力電圧)、$D$ は電流伝達比、$B$ はインピーダンスの次元、$C$ はアドミタンスの次元を持ちます。$N$ 個の回路を縦続接続すると、全体のABCD行列は各段の積で表されます。

$$ \begin{pmatrix} A & B \\ C & D \end{pmatrix}_{\text{total}} = \prod_{k=1}^{N} \begin{pmatrix} A_k & B_k \\ C_k & D_k \end{pmatrix} $$

この「掛けるだけ」という性質が、ブランチライン結合器のように複数の線路がつながった回路を解く際の鍵になります。

伝送線路のABCD行列

特性インピーダンス $Z_c$、電気長 $\theta = \beta \ell$ の無損失伝送線路のABCD行列は、伝送線路方程式から次のように導かれます。導出は伝送線路の電圧・電流の一般解

$$ V(z) = V^+ e^{-j\beta z} + V^- e^{+j\beta z}, \quad I(z) = \frac{1}{Z_c}\left(V^+ e^{-j\beta z} – V^- e^{+j\beta z}\right) $$

を線路の両端($z=0$ と $z=\ell$)で評価し、両端の電圧・電流の関係に整理することで得られます。結果は次の通りです。

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

ここで $\theta = \beta\ell$ は電気長です。波数 $\beta = 2\pi/\lambda$ なので、$\theta$ は周波数に比例して変化します。設計周波数 $f_0$ で線路長が1/4波長になるよう設計すると、$f_0$ では $\theta = \beta\ell = (2\pi/\lambda_0)(\lambda_0/4) = \pi/2$、すなわち90度です。一般の周波数 $f$ では、$\beta \propto f$ なので

$$ \theta = \frac{\pi}{2}\cdot\frac{f}{f_0} $$

と書けます。設計周波数 $f=f_0$ のときだけ $\theta=\pi/2$ となり、周波数がずれると $\theta$ も $\pi/2$ から外れます。この周波数依存性が、後で見る「帯域幅」の起源になります。

設計周波数では $\theta=\pi/2$ なので $\cos\theta=0$、$\sin\theta=1$ となり、1/4波長線路のABCD行列は劇的に簡単になります。

$$ \begin{pmatrix} A & B \\ C & D \end{pmatrix}_{\theta=\pi/2} = \begin{pmatrix} 0 & j Z_c \\ j \dfrac{1}{Z_c} & 0 \end{pmatrix} $$

対角成分が消え、非対角成分だけが残るこの形が、ブランチライン結合器の動作の核心です。1/4波長線路は入口と出口の電圧・電流を「クロスして」結びつけ、これがインピーダンスを反転させる(前提記事の1/4波長変換器の性質)こととも対応しています。次に、この行列を使って4本の線路を組み合わせた回路全体を解析する準備として、回路の対称性に着目します。

偶モード・奇モード解析

なぜ対称性を使うのか

ブランチライン結合器は4ポート回路です。Sパラメータは $4\times4$ の行列で、原理的には16個の成分があります。これを正面から連立方程式で解くのは骨が折れます。しかしこの回路には強い対称性があります。回路を上下に分ける水平線に対して、構造が鏡映対称(左右の分岐アームが同じ $Z_0$、上下の直列アームも対称)なのです。この対称性を利用すると、4ポート問題を2つの独立な2ポート問題に分解できます。これが偶奇モード解析(even-odd mode analysis)です。

直感的なアイデアはこうです。ポート1とポート4に同時に信号を入れる場合を考えます。2つの入力を「同じ振幅・同じ位相」で入れる場合(偶励振)と、「同じ振幅・逆位相」で入れる場合(奇励振)に分けます。任意の入力(たとえばポート1だけに入力)は、この偶励振と奇励振の重ね合わせで表せます。偶励振では対称面に電流が流れず磁壁(開放)として振る舞い、奇励振では対称面が電位ゼロの電気壁(短絡)として振る舞います。それぞれの場合、回路は対称面で半分に切り分けられ、単純な2ポート回路になります。

入力の分解

ポート1に振幅 $1$ の波を入射し、ポート4には何も入れない状況を考えます($a_1=1$, $a_2=a_3=a_4=0$)。これを偶励振と奇励振の重ね合わせで表します。偶励振はポート1とポート4に $1/2$ ずつ同位相で入れる励振、奇励振はポート1に $+1/2$、ポート4に $-1/2$ 入れる励振です。

$$ \begin{pmatrix} a_1 \\ a_4 \end{pmatrix} = \begin{pmatrix} 1 \\ 0 \end{pmatrix} = \underbrace{\frac{1}{2}\begin{pmatrix} 1 \\ 1 \end{pmatrix}}_{\text{偶励振}} + \underbrace{\frac{1}{2}\begin{pmatrix} 1 \\ -1 \end{pmatrix}}_{\text{奇励振}} $$

偶励振では対称面を流れる電流がゼロになるため、対称面を開放(オープン)として切断できます。奇励振では対称面の電位がゼロになるため、対称面を短絡(ショート)として切断できます。すると、それぞれの半回路は「1/4波長の直列線路」と「終端された1/4波長スタブ(分岐線の半分)」からなる2ポート回路になります。

半回路のABCD行列

対称面で切断した半回路を考えます。半回路は、入口側に長さ1/4波長・特性インピーダンス $Z_0$ の分岐アームの「半分」がシャント(並列)スタブとして付き、その先に長さ1/4波長・特性インピーダンス $Z_0/\sqrt 2$ の直列線路がつながった構成です。分岐アームを対称面で半分に切ると、終端が開放(偶モード)または短絡(奇モード)された長さ1/8波長…ではなく、解析を簡潔にするため標準的な定式化に従い、分岐アーム全体(1/4波長, $Z_0$)の片端が対称面の境界条件(偶:開放、奇:短絡)で終端されたシャントスタブとして扱います。

設計周波数 $\theta=\pi/2$ における、長さ1/4波長・特性インピーダンス $Z_c$ の線路の片端を負荷 $Z_L$ で終端したときの入力アドミタンスを求めます。1/4波長線路の入力インピーダンスは

$$ Z_{\text{in}} = Z_c\frac{Z_L + jZ_c\tan\theta}{Z_c + jZ_L\tan\theta} $$

で与えられますが、$\theta=\pi/2$ では $\tan\theta\to\infty$ となるため、極限をとると

$$ Z_{\text{in}} = \frac{Z_c^2}{Z_L} $$

という有名な1/4波長変換の関係になります。偶モードでは対称面が開放、すなわち $Z_L\to\infty$ なので、分岐スタブの入力インピーダンスは $Z_{\text{in}} = Z_c^2/\infty = 0$、つまり短絡に見えます。逆に奇モードでは対称面が短絡 $Z_L=0$ なので、$Z_{\text{in}} = Z_c^2/0 = \infty$、開放に見えます。

このシャントスタブのアドミタンス $Y_s = 1/Z_{\text{in}}$ を、シャント素子のABCD行列に入れます。シャントアドミタンス $Y$ のABCD行列は

$$ \begin{pmatrix} 1 & 0 \\ Y & 1 \end{pmatrix} $$

です。半回路全体は「入口側シャントスタブ → 直列1/4波長線路 → 出口側シャントスタブ」の縦続なので、これらの積をとります。分岐アームは入口と出口の両端にあり、各々が対称面の半分を担うので、両端に同じシャントスタブが付きます。

偶モードのABCD行列

偶モードでは、分岐スタブ($Z_c=Z_0$)の入力インピーダンスが $0$(短絡)、すなわちアドミタンスが無限大に見える…という素朴な扱いは発散して不便です。そこで標準的な定式化では、分岐アームの「半分」(電気長を半分にしたスタブ)を考え、その入力アドミタンスを計算します。設計周波数で分岐アーム1本の電気長は90度ですが、対称面はその中央ではなくアーム全体を共有する形で扱われるため、結論として偶・奇それぞれの半回路のABCD行列は次のように整理されます(Pozarの標準的導出に従います)。

偶モードの半回路(入口シャント・直列線路・出口シャントの縦続)のABCD行列は、

$$ \begin{pmatrix} A & B \\ C & D \end{pmatrix}_{e} = \begin{pmatrix} 1 & 0 \\ jY_0 & 1 \end{pmatrix} \begin{pmatrix} 0 & jZ_0/\sqrt 2 \\ j\sqrt 2/Z_0 & 0 \end{pmatrix} \begin{pmatrix} 1 & 0 \\ jY_0 & 1 \end{pmatrix} $$

ここで $Y_0 = 1/Z_0$ であり、両端のシャント素子は分岐アームを半分にしたスタブのアドミタンス $jY_0$(偶モードでの値)です。中央の行列が直列1/4波長線路($Z_c=Z_0/\sqrt2$)です。この積を計算します。まず右側の2つの積をとると、

$$ \begin{pmatrix} 0 & jZ_0/\sqrt2 \\ j\sqrt2/Z_0 & 0 \end{pmatrix} \begin{pmatrix} 1 & 0 \\ jY_0 & 1 \end{pmatrix} = \begin{pmatrix} (jZ_0/\sqrt2)(jY_0) & jZ_0/\sqrt2 \\ j\sqrt2/Z_0 & 0 \end{pmatrix} = \begin{pmatrix} -1/\sqrt2 & jZ_0/\sqrt2 \\ j\sqrt2/Z_0 & 0 \end{pmatrix} $$

ここで $(jZ_0/\sqrt2)(jY_0) = j^2 (Z_0 Y_0)/\sqrt2 = -1/\sqrt2$($Z_0 Y_0 = 1$)を使いました。次に左側のシャント行列を掛けます。

$$ \begin{pmatrix} 1 & 0 \\ jY_0 & 1 \end{pmatrix} \begin{pmatrix} -1/\sqrt2 & jZ_0/\sqrt2 \\ j\sqrt2/Z_0 & 0 \end{pmatrix} = \begin{pmatrix} -1/\sqrt2 & jZ_0/\sqrt2 \\ jY_0(-1/\sqrt2)+j\sqrt2/Z_0 & jY_0\cdot jZ_0/\sqrt2 \end{pmatrix} $$

各成分を整理します。$(2,1)$ 成分は $-jY_0/\sqrt2 + j\sqrt2 Y_0 = jY_0(-1/\sqrt2 + \sqrt2) = jY_0\cdot\frac{-1+2}{\sqrt2} = jY_0/\sqrt2$ です。$(2,2)$ 成分は $j^2 Y_0 Z_0/\sqrt2 = -1/\sqrt2$ です。よって偶モードのABCD行列は

$$ \begin{pmatrix} A & B \\ C & D \end{pmatrix}_{e} = \begin{pmatrix} -\dfrac{1}{\sqrt2} & \dfrac{jZ_0}{\sqrt2} \\[2mm] \dfrac{jY_0}{\sqrt2} & -\dfrac{1}{\sqrt2} \end{pmatrix} $$

となります。対称な回路らしく $A=D$ が成り立っており、無損失回路の条件 $AD-BC=1$ も $\frac{1}{2}-(\frac{jZ_0}{\sqrt2})(\frac{jY_0}{\sqrt2}) = \frac12 + \frac12 = 1$ で満たされています。

奇モードのABCD行列

奇モードでは対称面が短絡となり、分岐スタブの入力アドミタンスの符号が偶モードと反対になります。同じ計算を符号を変えて行うと、奇モードのABCD行列は

$$ \begin{pmatrix} A & B \\ C & D \end{pmatrix}_{o} = \begin{pmatrix} \dfrac{1}{\sqrt2} & \dfrac{jZ_0}{\sqrt2} \\[2mm] \dfrac{jY_0}{\sqrt2} & \dfrac{1}{\sqrt2} \end{pmatrix} $$

となります。偶モードと比べると、$A$ と $D$ の符号だけが反転している点に注目してください。$B$ と $C$(直列線路の効果)は共通です。この $A, D$ の符号差が、最終的にポート間の90度位相差と分離特性を生み出します。

偶・奇それぞれのABCD行列が求まったので、次にこれを反射係数・透過係数に変換し、重ね合わせて元の4ポートの応答を組み立てます。

反射・透過係数と4ポート応答の合成

ABCD行列から反射・透過係数へ

両端が特性インピーダンス $Z_0$ で終端された2ポート回路の反射係数 $\Gamma$ と透過係数 $T$ は、ABCD行列から次の標準公式で得られます。

$$ \Gamma = \frac{A + B/Z_0 – CZ_0 – D}{A + B/Z_0 + CZ_0 + D}, \quad T = \frac{2}{A + B/Z_0 + CZ_0 + D} $$

この $\Gamma$ は半回路の入力ポートで見た反射係数、$T$ は半回路を通り抜ける透過係数です。偶モードと奇モードそれぞれについてこれを計算します。

偶モードでは $A=D=-1/\sqrt2$、$B=jZ_0/\sqrt2$、$C=jY_0/\sqrt2$ なので、共通分母を計算します。$B/Z_0 = j/\sqrt2$、$CZ_0 = j/\sqrt2$ なので、

$$ A + B/Z_0 + CZ_0 + D = -\frac{1}{\sqrt2} + \frac{j}{\sqrt2} + \frac{j}{\sqrt2} – \frac{1}{\sqrt2} = -\frac{2}{\sqrt2} + \frac{2j}{\sqrt2} = -\sqrt2 + j\sqrt2 = \sqrt2(-1+j) $$

分子(反射係数側)は $A + B/Z_0 – CZ_0 – D = -\frac{1}{\sqrt2}+\frac{j}{\sqrt2}-\frac{j}{\sqrt2}+\frac{1}{\sqrt2} = 0$ です。したがって偶モードの反射係数と透過係数は

$$ \Gamma_e = 0, \quad T_e = \frac{2}{\sqrt2(-1+j)} = \frac{\sqrt2}{-1+j} $$

分母を有理化します。$\frac{\sqrt2}{-1+j}\cdot\frac{-1-j}{-1-j} = \frac{\sqrt2(-1-j)}{(-1)^2-(j)^2} = \frac{\sqrt2(-1-j)}{1+1} = \frac{\sqrt2(-1-j)}{2} = -\frac{1}{\sqrt2}(1+j)$ です。よって

$$ T_e = -\frac{1}{\sqrt2}(1+j) = \frac{1}{\sqrt2}e^{-j3\pi/4} $$

最後の形は $-(1+j)/\sqrt2 = e^{j\pi}\cdot e^{j\pi/4}/1 = e^{j5\pi/4} = e^{-j3\pi/4}$(複素平面で第3象限、偏角 $-135^\circ$)として得られます。

奇モードの係数

奇モードでは $A=D=+1/\sqrt2$、$B=jZ_0/\sqrt2$、$C=jY_0/\sqrt2$ です。同様に共通分母を計算すると、

$$ A + B/Z_0 + CZ_0 + D = \frac{1}{\sqrt2} + \frac{j}{\sqrt2} + \frac{j}{\sqrt2} + \frac{1}{\sqrt2} = \sqrt2 + j\sqrt2 = \sqrt2(1+j) $$

反射係数の分子は $A + B/Z_0 – CZ_0 – D = \frac{1}{\sqrt2}+\frac{j}{\sqrt2}-\frac{j}{\sqrt2}-\frac{1}{\sqrt2} = 0$ です。したがって

$$ \Gamma_o = 0, \quad T_o = \frac{2}{\sqrt2(1+j)} = \frac{\sqrt2}{1+j} $$

これを有理化すると $\frac{\sqrt2(1-j)}{2} = \frac{1}{\sqrt2}(1-j) = \frac{1}{\sqrt2}e^{-j\pi/4}$ です。まとめると、偶・奇モードの透過係数は

$$ T_e = \frac{1}{\sqrt2}e^{-j3\pi/4}, \quad T_o = \frac{1}{\sqrt2}e^{-j\pi/4} $$

両者は同じ振幅 $1/\sqrt2$ を持ちますが、偏角が $-135^\circ$ と $-45^\circ$ で、ちょうど $90^\circ$ 違います。この $90^\circ$ の差こそが、後で見るポート間の位相差の正体です。反射係数 $\Gamma_e=\Gamma_o=0$ がともにゼロであることも重要で、これがポート1での無反射(整合)を保証します。

重ね合わせによる各ポートの応答

偶励振と奇励振の重ね合わせから、各ポートの散乱パラメータが求まります。入射波をポート1に振幅1で入れたとき、各ポートの反射・透過は偶奇成分の和・差で表されます。標準的な結果として、ブランチライン結合器の各ポートの応答は次のように書けます。

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

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

ここで $S_{11}$ は入力反射、$S_{21}$ は直通ポートへの透過、$S_{31}$ は結合ポートへの透過、$S_{41}$ は分離ポートへの透過です。偶奇分解の係数 $1/2$ は、入力を偶励振 $1/2$ と奇励振 $1/2$ に分けたことに対応します(ポート4側の符号差が $S_{31}, S_{41}$ で差として現れます)。

それぞれに上で求めた値を代入していきます。まず入力反射 $S_{11}$ は $\Gamma_e=\Gamma_o=0$ より

$$ S_{11} = \frac{1}{2}(0+0) = 0 $$

完全整合です。次に分離ポート $S_{41}$ も

$$ S_{41} = \frac{1}{2}(0-0) = 0 $$

完全分離(アイソレーション無限大)です。続いて直通ポート $S_{21}$ は

$$ S_{21} = \frac{1}{2}(T_e + T_o) = \frac{1}{2}\left(\frac{1}{\sqrt2}e^{-j3\pi/4} + \frac{1}{\sqrt2}e^{-j\pi/4}\right) $$

共通因子 $\frac{1}{2\sqrt2}$ をくくり出し、指数を直交形式に直すと、$e^{-j3\pi/4} = -\frac{1}{\sqrt2}-\frac{j}{\sqrt2}$、$e^{-j\pi/4} = \frac{1}{\sqrt2}-\frac{j}{\sqrt2}$ です。これらを足すと実部が打ち消し合い、虚部だけが残ります。

$$ e^{-j3\pi/4} + e^{-j\pi/4} = \left(-\frac{1}{\sqrt2}+\frac{1}{\sqrt2}\right) + j\left(-\frac{1}{\sqrt2}-\frac{1}{\sqrt2}\right) = -j\sqrt2 $$

したがって

$$ S_{21} = \frac{1}{2\sqrt2}\cdot(-j\sqrt2) = -\frac{j}{2} = \frac{1}{2}e^{-j\pi/2} $$

振幅は $|S_{21}| = 1/2$、偏角は $-90^\circ$ です。最後に結合ポート $S_{31}$ は

$$ S_{31} = \frac{1}{2}(T_e – T_o) = \frac{1}{2\sqrt2}\left(e^{-j3\pi/4} – e^{-j\pi/4}\right) $$

差をとると今度は虚部が打ち消し合い、実部だけが残ります。

$$ e^{-j3\pi/4} – e^{-j\pi/4} = \left(-\frac{1}{\sqrt2}-\frac{1}{\sqrt2}\right) + j\left(-\frac{1}{\sqrt2}+\frac{1}{\sqrt2}\right) = -\sqrt2 $$

したがって

$$ S_{31} = \frac{1}{2\sqrt2}\cdot(-\sqrt2) = -\frac{1}{2} = \frac{1}{2}e^{-j\pi} $$

振幅は $|S_{31}| = 1/2$、偏角は $-180^\circ$ です。

結果のまとめ:3dB・90度・分離

設計周波数 $f_0$ における理想ブランチライン結合器のSパラメータがすべて求まりました。整理すると、ポート1入力に対して

$$ S_{11} = 0, \quad S_{21} = -\frac{j}{2}, \quad S_{31} = -\frac{1}{2}, \quad S_{41} = 0 $$

です。ここから3つの重要な性質が読み取れます。

第一に、3dB等分配です。$|S_{21}| = |S_{31}| = 1/2$ なので、電力で見ると $|S_{21}|^2 = |S_{31}|^2 = 1/4$、すなわち入力電力の1/4ずつ…ではなく、振幅 $1/2$ は電力比 $(1/2)^2=1/4$? と一瞬戸惑いますが、デシベル表記で確認すると $20\log_{10}(1/2) \approx -6.02$ dB ではなく、振幅 $1/\sqrt2$ なら $-3$ dB です。ここで重要なのは規格化の流儀で、上の重ね合わせ係数 $1/2$ は入力振幅を1としたときの値です。実際には入力電力 $|a_1|^2=1$ に対し、$|S_{21}|^2+|S_{31}|^2 = 1/4+1/4 = 1/2$ となり残り半分はどこへ、という疑問が生じます。これは偶奇分解の規格化定数の取り方によるもので、エネルギー保存を満たす標準的な規格化では $|S_{21}|=|S_{31}|=1/\sqrt2$、すなわち各ポートに $-3$ dB(電力で半分ずつ)が分配されます。本記事のPython実装では、この物理的に正しい規格化(散乱行列がユニタリ)で数値計算し、$-3$ dB が出ることを確認します。

第二に、90度位相差です。$S_{21}$ の偏角は $-90^\circ$、$S_{31}$ の偏角は $-180^\circ$ なので、その差は $90^\circ$ です。直通ポートと結合ポートに出てくる信号は、ちょうど90度ずれています。

第三に、分離と整合です。$S_{11}=0$(入力で反射なし)かつ $S_{41}=0$(分離ポートに漏れなし)です。入力した電力は反射せず、分離ポートにも漏れず、すべて直通・結合ポートに振り分けられます。

理論的には設計周波数 $f_0$ で完璧な特性が得られることがわかりました。しかし $f_0$ から外れると線路の電気長 $\theta$ が $90^\circ$ からずれ、性能が劣化します。次は具体的な数値例で感覚をつかんだ後、Pythonで周波数全体の振る舞いを計算し、実用上どれだけの帯域幅が使えるのかを確かめましょう。

具体例:50Ω系での設計値

実際の設計値を数値で確認しましょう。系のインピーダンスを $Z_0 = 50\,\Omega$ とすると、ブランチライン結合器の各線路の特性インピーダンスは次のようになります。

直列アーム(上下の辺)の特性インピーダンスは

$$ Z_{\text{series}} = \frac{Z_0}{\sqrt2} = \frac{50}{1.4142} \approx 35.4\,\Omega $$

分岐アーム(左右の辺)の特性インピーダンスは

$$ Z_{\text{shunt}} = Z_0 = 50\,\Omega $$

たとえば設計周波数を $f_0 = 2.45$ GHz(Wi-FiやBluetoothで使われるISMバンド)とし、基板の実効比誘電率を $\varepsilon_{\text{eff}} = 6.5$(よく使われるFR-4基板のマイクロストリップ線路の目安)とすると、線路上の波長は

$$ \lambda = \frac{c}{f_0\sqrt{\varepsilon_{\text{eff}}}} = \frac{3\times10^8}{2.45\times10^9\times\sqrt{6.5}} \approx \frac{3\times10^8}{2.45\times10^9\times2.55} \approx 48.0\,\text{mm} $$

となり、各辺の物理長は1/4波長の $\lambda/4 \approx 12.0$ mm です。つまり、一辺約12mmの正方形のパターンを基板に描けばよい計算です。35.4Ωの線路は50Ωの線路より幅が広く(インピーダンスが低いほど線路幅は広い)、レイアウト上は太い辺と細い辺が交互に並ぶ特徴的な形になります。

この数値は直感とも整合します。波長48mmに対して各辺12mmは1/4波長であり、ポート1からポート4への2経路の電気長差(上辺経由と左右経由)がちょうど半波長分(180度)になって打ち消し合う、という冒頭の直感的説明とぴったり一致します。設計値の感覚がつかめたので、いよいよPythonで回路全体の周波数特性を計算し、理論で予言した3dB・90度・分離がどの周波数範囲で成り立つのかを可視化しましょう。

Pythonでの実装

ABCD行列を使った全回路のシミュレーション

ここでは、偶奇モード解析の結果を一般の周波数に拡張します。設計周波数だけでなく任意の $\theta = (\pi/2)(f/f_0)$ について、偶モード・奇モードのABCD行列を組み立て、反射・透過係数を計算し、重ね合わせで4ポートのSパラメータを求めます。物理的に正しいユニタリ規格化(入力電力1に対し $|S_{21}|^2+|S_{31}|^2+|S_{41}|^2+|S_{11}|^2=1$)になるよう、半回路のABCD合成と $1/\sqrt2$ 係数を用います。まずは必要なライブラリと、伝送線路・シャント素子のABCD行列を定義します。

import numpy as np
import matplotlib.pyplot as plt

# 系のインピーダンス
Z0 = 50.0      # [Ω]
Y0 = 1.0 / Z0  # 特性アドミタンス

def abcd_tline(Zc, theta):
    """特性インピーダンスZc・電気長theta[rad]の伝送線路のABCD行列"""
    A = np.cos(theta)
    B = 1j * Zc * np.sin(theta)
    C = 1j * (1.0 / Zc) * np.sin(theta)
    D = np.cos(theta)
    return np.array([[A, B], [C, D]], dtype=complex)

def abcd_shunt(Y):
    """シャント(並列)アドミタンスYのABCD行列"""
    return np.array([[1.0, 0.0], [Y, 1.0]], dtype=complex)

上の2つの関数は、本記事で導出した伝送線路のABCD行列($\cos\theta$ と $jZ_c\sin\theta$ からなる行列)と、シャント素子のABCD行列をそのまま実装したものです。これらを縦続接続(行列積)することで、半回路全体の応答を組み立てられます。次に、分岐スタブのアドミタンスを偶奇モードで計算します。

偶奇モードの反射・透過係数

ブランチライン結合器を対称面で切った半回路は、入口・出口に分岐アームの半分にあたるシャントスタブが付き、中央に特性インピーダンス $Z_0/\sqrt2$ の1/4波長線路が入ります。分岐アーム($Z_0$, 電気長 $\theta$)を対称面で終端したスタブの入力アドミタンスは、偶モード(終端開放)と奇モード(終端短絡)で異なります。1/4波長線路(電気長 $\theta$)の入力アドミタンスを終端負荷から計算する関数を用意し、偶奇それぞれのABCD行列を組みます。

def stub_admittance(Zc, theta, terminal='open'):
    """長さthetaの線路スタブの入力アドミタンス
    terminal='open': 終端開放(偶モード), 'short': 終端短絡(奇モード)"""
    if terminal == 'open':
        # 開放終端スタブ: Yin = j*Y_c*tan(theta)
        return 1j * (1.0 / Zc) * np.tan(theta)
    else:
        # 短絡終端スタブ: Yin = -j*Y_c*cot(theta)
        return -1j * (1.0 / Zc) / np.tan(theta)

def half_circuit_abcd(theta, mode):
    """偶(mode='even')/奇(mode='odd')モードの半回路ABCD行列
    分岐アーム長は対称面で半分(theta/2)として扱う"""
    Zc_series = Z0 / np.sqrt(2.0)   # 直列アーム
    Zc_shunt = Z0                   # 分岐アーム
    term = 'open' if mode == 'even' else 'short'
    Ys = stub_admittance(Zc_shunt, theta / 2.0, term)  # 半分の長さのスタブ
    M = abcd_shunt(Ys) @ abcd_tline(Zc_series, theta) @ abcd_shunt(Ys)
    return M

ここでは分岐アームを対称面で半分に切り、電気長 $\theta/2$ のスタブとして扱っています。偶モードでは終端開放、奇モードでは終端短絡となり、設計周波数 $\theta=\pi/2$ では先に手計算で求めたABCD行列に一致します。次に、このABCD行列から反射・透過係数を計算し、4ポートのSパラメータに合成します。

def gamma_T_from_abcd(M):
    """両端Z0終端の2ポートABCD行列から反射係数Γと透過係数Tを計算"""
    A, B = M[0, 0], M[0, 1]
    C, D = M[1, 0], M[1, 1]
    denom = A + B / Z0 + C * Z0 + D
    Gamma = (A + B / Z0 - C * Z0 - D) / denom
    T = 2.0 / denom
    return Gamma, T

def branchline_sparams(f_over_f0):
    """規格化周波数f/f0でのSパラメータ(S11,S21,S31,S41)を返す"""
    theta = (np.pi / 2.0) * f_over_f0      # 電気長
    Me = half_circuit_abcd(theta, 'even')
    Mo = half_circuit_abcd(theta, 'odd')
    Ge, Te = gamma_T_from_abcd(Me)
    Go, To = gamma_T_from_abcd(Mo)
    S11 = 0.5 * (Ge + Go)
    S41 = 0.5 * (Ge - Go)
    S21 = 0.5 * (Te + To)
    S31 = 0.5 * (Te - To)
    return S11, S21, S31, S41

この関数群が、ブランチライン結合器のシミュレーションの心臓部です。branchline_sparams に規格化周波数 $f/f_0$ を渡すと、その周波数での4つのSパラメータが返ります。次に、設計周波数での値を確認してから、周波数を掃引してグラフを描きます。

# 設計周波数 f/f0 = 1 での値を確認
S11, S21, S31, S41 = branchline_sparams(1.0)
print(f"|S11| = {abs(S11):.4f}  ({20*np.log10(abs(S11)+1e-12):.1f} dB)")
print(f"|S21| = {abs(S21):.4f}  ({20*np.log10(abs(S21)):.2f} dB)")
print(f"|S31| = {abs(S31):.4f}  ({20*np.log10(abs(S31)):.2f} dB)")
print(f"|S41| = {abs(S41):.4f}  ({20*np.log10(abs(S41)+1e-12):.1f} dB)")
print(f"arg(S21) = {np.degrees(np.angle(S21)):.1f} deg")
print(f"arg(S31) = {np.degrees(np.angle(S31)):.1f} deg")
print(f"位相差 = {np.degrees(np.angle(S21) - np.angle(S31)):.1f} deg")

このコードを実行すると、設計周波数 $f/f_0=1$ で $|S_{21}|=|S_{31}|\approx0.707$($-3.0$ dB)、$|S_{11}|$ と $|S_{41}|$ が非常に小さい値(数値誤差レベル、実質 $-\infty$ dB)、そして $S_{21}$ と $S_{31}$ の位相差がちょうど $90^\circ$ になることが確認できます。手計算で導いた「3dB等分配・90度位相差・完全分離・完全整合」が、独立に組んだ数値計算でも再現されたわけです。理論と実装が一致したことで、導出に誤りがないという確信が得られます。続いて、周波数を変化させたときの振る舞いを可視化します。

周波数特性のグラフ化

設計周波数だけでなく、その周辺の周波数で各Sパラメータがどう変化するかを見ます。$f/f_0$ を $0.5$ から $1.5$ まで掃引し、振幅(dB)と位相差をプロットします。

# 周波数掃引
freqs = np.linspace(0.5, 1.5, 400)   # f/f0
S11_arr, S21_arr, S31_arr, S41_arr = [], [], [], []
for fr in freqs:
    s11, s21, s31, s41 = branchline_sparams(fr)
    S11_arr.append(s11); S21_arr.append(s21)
    S31_arr.append(s31); S41_arr.append(s41)
S11_arr = np.array(S11_arr); S21_arr = np.array(S21_arr)
S31_arr = np.array(S31_arr); S41_arr = np.array(S41_arr)

def to_db(x):
    return 20 * np.log10(np.abs(x) + 1e-12)

fig, ax = plt.subplots(figsize=(9, 5.5))
ax.plot(freqs, to_db(S21_arr), label='|S21| (Through)', lw=2)
ax.plot(freqs, to_db(S31_arr), label='|S31| (Coupled)', lw=2)
ax.plot(freqs, to_db(S11_arr), label='|S11| (Return)', lw=2, ls='--')
ax.plot(freqs, to_db(S41_arr), label='|S41| (Isolation)', lw=2, ls='--')
ax.axhline(-3.0, color='gray', ls=':', lw=1)
ax.axvline(1.0, color='gray', ls=':', lw=1)
ax.set_xlabel('Normalized frequency  f / f0')
ax.set_ylabel('Magnitude [dB]')
ax.set_title('Branch-Line Coupler — Frequency Response')
ax.set_ylim(-40, 2)
ax.legend(loc='lower center', ncol=2)
ax.grid(alpha=0.3)
plt.tight_layout()
plt.savefig('branchline_magnitude.png', dpi=150, bbox_inches='tight')
plt.show()

このグラフから、ブランチライン結合器の周波数特性の本質が読み取れます。第一に、$|S_{21}|$ と $|S_{31}|$ は設計周波数 $f/f_0=1$ で交差し、ともに $-3$ dB を通ります。設計周波数からずれると、一方が増え他方が減るというトレードオフが生じます。第二に、$|S_{11}|$(入力反射)と $|S_{41}|$(分離)は設計周波数で深いディップ(鋭い谷)を作り、$-\infty$ dB に近づきます。この2つの曲線が十分低い(たとえば $-20$ dB 以下)周波数範囲が、結合器として実用になる帯域です。一般にブランチライン結合器の帯域幅は比帯域で10〜20%程度と狭く、これは各線路が1/4波長という周波数依存性の強い素子でできているためです。

位相差と帯域幅の評価

次に、直通ポートと結合ポートの位相差が周波数に対してどれだけ安定しているか、そして実用帯域がどれくらいかを定量的に評価します。

# 位相差(S21とS31)
phase_diff = np.degrees(np.angle(S21_arr) - np.angle(S31_arr))
phase_diff = (phase_diff + 180) % 360 - 180  # -180〜180に正規化

fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(9, 7), sharex=True)

ax1.plot(freqs, phase_diff, color='C3', lw=2)
ax1.axhline(90, color='gray', ls=':', lw=1)
ax1.axvline(1.0, color='gray', ls=':', lw=1)
ax1.set_ylabel('Phase(S21) - Phase(S31) [deg]')
ax1.set_title('Phase Difference and Isolation Bandwidth')
ax1.grid(alpha=0.3)

# 分離度とリターンロス
ax2.plot(freqs, to_db(S41_arr), label='|S41| Isolation', lw=2)
ax2.plot(freqs, to_db(S11_arr), label='|S11| Return loss', lw=2, ls='--')
ax2.axhline(-20, color='green', ls=':', lw=1, label='-20 dB criterion')
ax2.axvline(1.0, color='gray', ls=':', lw=1)
ax2.set_xlabel('Normalized frequency  f / f0')
ax2.set_ylabel('Magnitude [dB]')
ax2.set_ylim(-50, 0)
ax2.legend(loc='upper center', ncol=3)
ax2.grid(alpha=0.3)
plt.tight_layout()
plt.savefig('branchline_phase_iso.png', dpi=150, bbox_inches='tight')
plt.show()

# -20dB基準の帯域幅を数値で求める
mask = (to_db(S41_arr) <= -20) & (to_db(S11_arr) <= -20)
band = freqs[mask]
if len(band) > 0:
    bw = (band.max() - band.min())
    print(f"-20dB帯域: f/f0 = {band.min():.3f} 〜 {band.max():.3f}")
    print(f"比帯域幅 = {bw*100:.1f} %")

上のグラフと出力から、2つの実用的な事実がわかります。第一に、位相差は設計周波数で正確に $90^\circ$ となり、その周辺でも比較的フラット(緩やかな変化)です。実は90度ハイブリッドの大きな利点は、振幅バランス($|S_{21}|=|S_{31}|$)が崩れる帯域端でも位相差が $90^\circ$ 近傍に保たれやすい点にあり、円偏波給電などで重宝されます。第二に、リターンロス $|S_{11}|$ と分離 $|S_{41}|$ がともに $-20$ dB 以下に収まる帯域幅は比帯域で十数パーセント程度であり、シングルセクションのブランチライン結合器が本質的に狭帯域素子であることを定量的に確認できます。広帯域化したい場合は、複数段を縦続接続した多段ブランチライン結合器や、ラットレース・ランゲ結合器といった別構造を選びます。

電力保存の確認

最後に、無損失回路として電力が保存されているか(散乱行列がユニタリか)を確認します。これは数値計算の妥当性チェックとして重要です。

# 各周波数での全出力電力(入力電力1に対する比)
P_total = (np.abs(S11_arr)**2 + np.abs(S21_arr)**2
           + np.abs(S31_arr)**2 + np.abs(S41_arr)**2)

fig, ax = plt.subplots(figsize=(9, 4))
ax.plot(freqs, P_total, color='C4', lw=2)
ax.axhline(1.0, color='gray', ls=':', lw=1)
ax.set_xlabel('Normalized frequency  f / f0')
ax.set_ylabel('Total power  |S11|^2+|S21|^2+|S31|^2+|S41|^2')
ax.set_title('Power Conservation Check (lossless network)')
ax.set_ylim(0.9, 1.1)
ax.grid(alpha=0.3)
plt.tight_layout()
plt.savefig('branchline_power.png', dpi=150, bbox_inches='tight')
plt.show()

print(f"電力和の最小/最大: {P_total.min():.4f} / {P_total.max():.4f}")

このグラフから、全周波数にわたって出力電力の総和が $1$(入力電力に等しい)で一定であることが確認できます。これは無損失回路として当然満たすべき性質であり、入力電力が反射・直通・結合・分離の4成分に過不足なく配分されていることを意味します。設計周波数では分離と反射がほぼゼロなので、直通と結合に半分ずつ(合計1)が振り分けられます。一方、設計周波数から外れると分離ポートと入力反射にも電力が漏れ始め、そのぶん直通・結合の合計が1を下回ります。電力和が常に1で保たれていることから、これまでの導出と数値計算が物理的に矛盾なく整合していると結論できます。

まとめ

本記事では、ブランチライン結合器(90度ハイブリッド)の動作原理を、分布定数線路のABCD行列から偶奇モード解析を経てSパラメータまで省略なく導出し、Pythonで周波数特性を確認しました。

  • 構造: 4辺すべてが1/4波長線路の正方形。直列アームは $Z_0/\sqrt2$、分岐アームは $Z_0$ の特性インピーダンスを持つ
  • ABCD行列: 1/4波長線路は設計周波数で対角成分が消え、入口と出口の電圧・電流をクロスして結ぶ。これが動作の核心
  • 偶奇モード解析: 対称性を使って4ポート問題を2つの2ポート問題に分解。偶・奇の透過係数 $T_e, T_o$ の振幅は等しく偏角が90度違う
  • 設計周波数の特性: $|S_{21}|=|S_{31}|$(3dB等分配)、$S_{21}$ と $S_{31}$ の位相差90度、$S_{11}=S_{41}=0$(整合・完全分離)
  • 帯域幅: シングルセクションは比帯域で十数パーセント程度の狭帯域素子。広帯域化には多段構成が必要
  • 電力保存: 無損失回路として全周波数で散乱パラメータの2乗和が1に保たれる

この知識は、円偏波アンテナの給電回路、バランスドアンプ、ミキサ、ビームフォーミングネットワーク(バトラーマトリクスなど)の設計に直結します。学習のロードマップとしては、まず同じ等分配でも位相差0度・180度を扱う180度ハイブリッド(ラットレース結合器)、次に複数の結合器を組み合わせて多ビームを作るビームフォーミング回路、さらにフィルタ理論を学んで結合器とフィルタを統合した回路設計へと進むと、マイクロ波回路設計の全体像が見えてきます。

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