衛星受信機のフロントエンド、無線LANのRF段、レーダーの中間周波数前段 — マイクロ波回路には必ずと言ってよいほど「ある周波数帯だけを通し、それ以外を遮断する」バンドパスフィルタ(BPF)が組み込まれています。数 GHz を超える周波数では、コイルやコンデンサといった集中定数素子はそのままでは使えません。素子の物理寸法が波長と同程度になり、リード線のインダクタンスや浮遊容量が無視できなくなるからです。そこで登場するのが、プリント基板上の銅箔パターンそのものをフィルタ素子として使う「分布定数フィルタ」です。なかでも、2本の線路を平行に走らせて電磁的に結合させる結合線路バンドパスフィルタは、設計が体系化されていて製造も容易なため、マイクロ波 BPF の定番として広く使われています。
このフィルタの面白いところは、回路図上の「コイルとコンデンサ」が、基板上では「2本の平行な銅パターンの間隔と長さ」に化けることです。つまり、低域プロトタイプ(規格化された LC ラダー回路)の素子値 $g_k$ を計算し、それを偶モード・奇モードという 2 つの伝搬モードのインピーダンス $Z_{0e}, Z_{0o}$ に翻訳すれば、あとは線路の幅と間隔として基板に落とし込めます。本記事では、この「$g_k$ から $Z_{0e}, Z_{0o}$ へ」という翻訳の数式を 1 段ずつ省略せずに導き、最後に Python でチェビシェフ応答の $|S_{21}|$ を合成して設計の妥当性を確認します。
結合線路 BPF の理論を理解すると、以下のような場面で見通しが格段によくなります。
- 衛星通信・地上局: 受信フロントエンドのチャネルフィルタや、送受共用器(デュプレクサ)の帯域制限に結合線路 BPF が使われます。比帯域とリップルを設計段階で正確に予測できることが、システムの雑音指数やアイソレーション確保に直結します。
- レーダー・計測器: 局部発振器の高調波除去や、中間周波数前段のプリセレクタとして、急峻な遮断特性を持つ多段 BPF が要求されます。段数とリップルのトレードオフを定量的に扱えると、最小の段数で仕様を満たす設計ができます。
本記事の内容
- 結合線路と偶モード・奇モードの直感的な理解
- 偶モード・奇モードインピーダンス $Z_{0e}, Z_{0o}$ の定義と、結合係数 $k$ との関係の導出
- $\lambda/4$ 結合線路 1 段が帯域通過特性を示すことの導出(ABCD パラメータ経由)
- 低域プロトタイプ係数 $g_k$ とインピーダンス/アドミタンスインバータ $J$ の関係
- $g_k$ から各段の $Z_{0e}, Z_{0o}$ を決める設計式の段階的展開
- Python 実装: チェビシェフ規格化プロトタイプ → 結合線路パラメータ → ABCD/S 行列カスケードで $|S_{21}|$ を合成
- 比帯域・リップルの設計妥当性の読み取り
前提知識
この記事を読む前に、以下の記事を読んでおくと理解が深まります。
- 伝送線路理論 — 特性インピーダンスと反射・定在波を基礎から理解する
- マイクロストリップ線路の設計 — 特性インピーダンスと実効誘電率
- 1/4波長変成器 — インピーダンス整合の基礎
- 結合共振器バンドパスフィルタ — 結合係数と外部Qで設計する
結合線路とは
まず、結合線路という構造を直感的につかんでおきましょう。プリント基板の上に、幅の細い銅のラインを 1 本走らせると、それは特性インピーダンス $Z_0$ を持つ普通の伝送線路(マイクロストリップ線路)になります。では、もう 1 本のラインを、間隔 $s$ をあけてすぐ隣に平行に走らせるとどうなるでしょうか。2 本の線路は十分に近いと、片方の線路を流れる信号がもう片方に電界(容量結合)と磁界(誘導結合)を通じて漏れ込みます。この「お隣に漏れ込む」現象が結合(coupling)であり、2 本の線路をまとめて結合線路(coupled lines)と呼びます。
結合した 2 本の線路は、もはや独立した 2 本の線路としては振る舞いません。代わりに、2 つの「協調した振動の仕方」を持つようになります。1 つは 2 本の線路に同じ向き・同じ大きさの電圧を与えるモード、もう 1 つは逆向き・同じ大きさの電圧を与えるモードです。前者を偶モード(even mode)、後者を奇モード(odd mode)と呼びます。
なぜこの 2 つのモードが特別なのでしょうか。2 本の線路が対称(同じ形状)であれば、任意の励振は「偶モードの成分」と「奇モードの成分」の重ね合わせで必ず表せます。ちょうど、2 つのおもりをバネでつないだ連成振動が、必ず「同相モード」と「逆相モード」の重ね合わせで書けるのと同じ理屈です。連成振動を 2 つの基準モードに分解すると見通しがよくなるように、結合線路も偶モードと奇モードに分解すると、各モードが独立した 1 本の伝送線路として扱えるようになります。
偶モードと奇モードでは、線路が感じる実効的な容量・インダクタンスが変わります。偶モードでは隣の線路が同電位なので両者の間に電界がほとんど立たず、奇モードでは逆電位なので両者の間に強い電界が立ちます。この違いのため、2 つのモードは異なる特性インピーダンスを持ちます。それぞれを偶モードインピーダンス $Z_{0e}$、奇モードインピーダンス $Z_{0o}$ と呼びます。結合が強いほど両者の差は大きくなり、結合がゼロなら $Z_{0e} = Z_{0o} = Z_0$ に戻ります。
ここまでで、結合線路には偶モード・奇モードという 2 つの伝搬モードがあり、それぞれ固有のインピーダンスを持つことがわかりました。次に、これらのモードインピーダンスを定量的に定義し、結合の強さを表す「結合係数」との関係を導きましょう。
偶モード・奇モードインピーダンスと結合係数
モードインピーダンスの定義
対称な結合線路を考えます。2 本の線路を線路 1、線路 2 と呼び、それぞれの単位長さあたりの自己キャパシタンスを $C_{11} = C_{22} = C$、相互キャパシタンス(線路間の容量)を $C_{12} = C_m$ とします。同様に自己インダクタンスを $L$、相互インダクタンスを $L_m$ とします。
偶モードでは両線路に同じ電圧を与えるため、線路間に電位差がなく、相互容量 $C_m$ には電荷が溜まりません。したがって偶モードが感じる実効容量は線路の対地容量 $C_{11} – C_{12}$ に $C_m$ への充電分が加わらず、対地容量のみになります。一方、磁界については同じ向きの電流が流れるため、相互インダクタンスが自己インダクタンスを助ける向きに働きます。結果として偶モードの単位長さあたりの実効パラメータは
$$ L_e = L + L_m, \quad C_e = C_{11} – C_{12} = C – C_m $$
となります。ここで $C_{11}$ は線路 1 の全自己容量で、$C_{11} = C$、線路間容量を引いた対地成分が偶モード容量になる点に注意してください。
奇モードでは両線路に逆向きの電圧を与えるため、線路間に最大の電位差が生じ、相互容量 $C_m$ がフルに効きます。さらに線路間の対称面が仮想的な接地面(電気壁)として働くため、対地容量に相互容量の 2 倍が加わります。電流は逆向きなので相互インダクタンスは自己インダクタンスを打ち消す向きに働きます。したがって奇モードの実効パラメータは
$$ L_o = L – L_m, \quad C_o = C_{11} + C_{12} = C + C_m $$
となります。各モードはそれぞれ独立した 1 本の無損失伝送線路とみなせるので、その特性インピーダンスは伝送線路の一般公式 $Z_0 = \sqrt{L/C}$ を各モードに適用して
$$ Z_{0e} = \sqrt{\frac{L_e}{C_e}} = \sqrt{\frac{L + L_m}{C – C_m}}, \quad Z_{0o} = \sqrt{\frac{L_o}{C_o}} = \sqrt{\frac{L – L_m}{C + C_m}} $$
と書けます。$L_m > 0$、$C_m > 0$ なので $Z_{0e} > Z_{0o}$ が常に成り立ちます。偶モードは分子が大きく分母が小さいので大きなインピーダンス、奇モードはその逆で小さなインピーダンスになる、という関係です。
結合係数の導出
結合の強さを 1 つの無次元量で表したいときに使うのが電圧結合係数 $k$(バックワード結合の結合係数)です。結合線路方向性結合器の理論から、結合係数は偶奇モードインピーダンスを用いて
$$ \begin{equation} k = \frac{Z_{0e} – Z_{0o}}{Z_{0e} + Z_{0o}} \end{equation} $$
と定義されます。この形を見ると、反射係数 $\Gamma = (Z_L – Z_0)/(Z_L + Z_0)$ とそっくりであることに気づきます。実際、結合とは「片方の線路を基準インピーダンスと見たときの、もう片方からの反射的な漏れ込み」と解釈でき、その大きさが $(Z_{0e}-Z_{0o})/(Z_{0e}+Z_{0o})$ で測られるのです。$k$ は $0$(結合なし、$Z_{0e}=Z_{0o}$)から $1$(完全結合)の範囲を取り、$|k|$ が大きいほど強い結合を意味します。
逆に、$k$ と単一線路の特性インピーダンス $Z_0$ が与えられたとき、$Z_{0e}, Z_{0o}$ を求めることもできます。対称結合線路では、偶奇モードインピーダンスの相乗平均が単一線路インピーダンスに等しいという重要な関係
$$ \begin{equation} Z_{0e} \, Z_{0o} = Z_0^2 \end{equation} $$
が成り立ちます。これは、結合線路の終端を整合する条件(システムインピーダンス $Z_0$ で見たときに反射が消える条件)から導かれます。式 (1) と式 (2) を連立すると、$Z_{0e}, Z_{0o}$ を $Z_0$ と $k$ で表せます。式 (1) を $Z_{0e} – Z_{0o} = k(Z_{0e} + Z_{0o})$ と書き直し、和を $S = Z_{0e} + Z_{0o}$、積を $P = Z_{0e} Z_{0o} = Z_0^2$ とおくと、差は $Z_{0e} – Z_{0o} = kS$ です。
ここで恒等式 $(Z_{0e} – Z_{0o})^2 = (Z_{0e} + Z_{0o})^2 – 4 Z_{0e} Z_{0o}$ を使うと、
$$ (kS)^2 = S^2 – 4 Z_0^2 $$
これを $S$ について解くと $S^2(1 – k^2) = 4 Z_0^2$、すなわち $S = 2 Z_0 / \sqrt{1 – k^2}$ が得られます。和 $S$ と差 $kS$ がわかれば、
$$ Z_{0e} = \frac{S + kS}{2} = Z_0 \frac{1 + k}{\sqrt{1 – k^2}} = Z_0 \sqrt{\frac{1 + k}{1 – k}} $$
最後の等号では $1 – k^2 = (1-k)(1+k)$ と因数分解し、$(1+k)/\sqrt{(1-k)(1+k)} = \sqrt{(1+k)/(1-k)}$ を使いました。同様に奇モードは
$$ Z_{0o} = \frac{S – kS}{2} = Z_0 \sqrt{\frac{1 – k}{1 + k}} $$
これで、結合係数 $k$ と基準インピーダンス $Z_0$ から偶奇モードインピーダンスが一意に決まることがわかりました。フィルタ設計では逆に、各段に必要な $Z_{0e}, Z_{0o}$ を先に決め、それを実現する線路幅と間隔をマイクロストリップの設計式や電磁界シミュレータで求める、という流れになります。
ここまでで、結合線路を特徴づける 3 つの量 $Z_{0e}, Z_{0o}, k$ の相互関係を整理しました。では、なぜ結合線路 1 段がバンドパス特性を示すのでしょうか。次にその仕組みを ABCD パラメータから導きます。
λ/4 結合線路段の帯域通過特性
結合線路セクションの ABCD パラメータ
フィルタの 1 段は、対称結合線路の片側のポートを開放、対角のポートを終端とした「2 ポート結合線路セクション」で構成されます。具体的には、結合線路の 4 つの端子のうち、入力ポートと出力ポートを対角に取り、残る 2 ポートを開放にする接続です。この 2 ポート回路の伝送特性を表すには、ABCD パラメータが便利です。なぜなら、複数段を縦続接続したときに ABCD 行列の積で全体特性が計算できるからです。
長さ $\ell$、電気長 $\theta = \beta \ell$ の対称結合線路セクション(開放端構成)の ABCD パラメータは、偶奇モード解析から次のように導かれます。要点だけ述べると、各モードが独立に $\theta$ だけ位相回転するとして偶奇モードの電圧・電流を重ね合わせ、開放端条件を課して整理します。結果は
$$ \begin{aligned} A &= D = \frac{Z_{0e} \cos\theta + Z_{0o}\cos\theta}{Z_{0e} – Z_{0o}} \cdot \text{(構成依存)} \\ B &= j \, \frac{(Z_{0e} – Z_{0o})^2 – (Z_{0e} + Z_{0o})^2 \cos^2\theta}{2(Z_{0e}-Z_{0o})\sin\theta} \cdot \text{(構成依存)} \end{aligned} $$
のような形になりますが、実用上はもっと扱いやすい等価回路に置き換えるのが定石です。Cohn による有名な結果は、1 段の結合線路セクションは、両側に特性インピーダンス $Z_0$ の伝送線路を従え、中央にアドミタンスインバータ $J$ を挟んだ等価回路で表せる、というものです。
結合線路段とインバータの等価
具体的には、電気長 $\theta$ の対称結合線路セクションは、$\theta = \pi/2$(すなわち中心周波数で線路長が $\lambda/4$)の近傍で、$J$ インバータ(理想的な $90^\circ$ 移相・インピーダンス反転素子)として振る舞います。そのとき偶奇モードインピーダンスとインバータ値 $J$ の間には
$$ \begin{equation} Z_{0e} = Z_0 \left[ 1 + J Z_0 + (J Z_0)^2 \right], \quad Z_{0o} = Z_0 \left[ 1 – J Z_0 + (J Z_0)^2 \right] \end{equation} $$
という関係が成り立ちます。この 2 式は結合線路設計の心臓部なので、意味を確認しておきましょう。両式を足すと $Z_{0e} + Z_{0o} = 2 Z_0 [1 + (JZ_0)^2]$、引くと $Z_{0e} – Z_{0o} = 2 Z_0 \cdot J Z_0 = 2 J Z_0^2$ となります。したがって式 (1) の結合係数は
$$ k = \frac{Z_{0e} – Z_{0o}}{Z_{0e} + Z_{0o}} = \frac{J Z_0}{1 + (J Z_0)^2} $$
となり、インバータ値 $J$ が結合の強さ $k$ を決めることがはっきり見えます。$J Z_0$ が大きいほど結合が強く、偶奇モードインピーダンスの差が開きます。
なぜバンドパスになるのか
$\lambda/4$ 結合線路セクションがバンドパス特性を示す物理的な理由を直感的に押さえましょう。中心周波数では電気長が $\theta = \pi/2$ ちょうどになり、開放端の結合線路は「直列共振」した状態に相当します。このとき信号は最大限に隣の線路へ結合し、効率よく通過します。中心周波数からずれると $\theta$ が $\pi/2$ から外れ、開放端のスタブが容量性または誘導性のリアクタンスを持ち始め、結合が弱まって信号が通りにくくなります。
数式で見ると、開放端結合線路の入力イミタンスは $\cot\theta$ や $\tan\theta$ を含む形になり、$\theta = \pi/2$ で共振点を持ちます。共振点の周りで透過特性がピークを持つこと、これがまさにバンドパスフィルタの応答です。複数の $\lambda/4$ 結合線路セクションを縦続接続すると、各段の共振が協調して帯域端を急峻にし、所望の通過帯域を形成します。隣り合う段が中心周波数で $\lambda/4$ ずつずれているため、全体としては結合共振器フィルタの分布定数版とみなせます。この対応関係は 結合共振器バンドパスフィルタ の集中定数モデルと本質的に同じです。
ここまでで、1 段の $\lambda/4$ 結合線路がアドミタンスインバータ $J$ として働き、$J$ が偶奇モードインピーダンスと式 (3) で結ばれることがわかりました。残る課題は「各段の $J$ をどう決めるか」です。これは低域プロトタイプ係数 $g_k$ から計算します。次にその設計式を導きます。
低域プロトタイプとインバータ設計式
低域プロトタイプとは
フィルタ設計の出発点は、規格化低域プロトタイプ(low-pass prototype)です。これは、カットオフ角周波数 $\omega_c = 1$ rad/s、システムインピーダンス $g_0 = 1\,\Omega$ に規格化された理想的な低域通過 LC ラダー回路で、その素子値を $g_0, g_1, g_2, \dots, g_n, g_{n+1}$ と書きます。$n$ は次数(段数)です。$g_1, g_3, \dots$ は直列インダクタまたは並列キャパシタ、偶番号はその逆、という梯子状の回路を表しますが、フィルタ設計では具体的な回路ではなく、この数列 $g_k$ さえあれば十分です。
$g_k$ は応答の種類によって決まります。代表的なのは最大平坦(バターワース)と等リップル(チェビシェフ)です。チェビシェフは通過帯域内で一定のリップル(許容変動)$L_{Ar}$ [dB] を許す代わりに、同じ次数でバターワースより急峻な遮断を実現します。マイクロ波 BPF では急峻さが重視されるため、チェビシェフが多用されます。
$n$ 次チェビシェフプロトタイプの $g_k$ は閉形式で計算できます。リップル $L_{Ar}$ [dB] に対して中間量を
$$ \beta_0 = \ln\!\left[ \coth\!\left( \frac{L_{Ar}}{17.37} \right) \right], \quad \gamma = \sinh\!\left( \frac{\beta_0}{2n} \right) $$
と定義します。$17.37 = 40/\ln 10$ という係数は、デシベル表記のリップルを自然対数ベースの量へ変換するためのものです。次に補助量
$$ a_k = \sin\!\left( \frac{(2k-1)\pi}{2n} \right), \quad b_k = \gamma^2 + \sin^2\!\left( \frac{k\pi}{n} \right), \quad k = 1, 2, \dots, n $$
を用いると、プロトタイプ係数は
$$ g_1 = \frac{2 a_1}{\gamma}, \qquad g_k = \frac{4 a_{k-1} a_k}{b_{k-1} \, g_{k-1}} \quad (k = 2, 3, \dots, n) $$
という漸化式で求まります。$\sinh, \coth$ といった双曲線関数が現れるのは、チェビシェフ多項式の零点・極が複素平面上で楕円上に並ぶことに由来します。最後に終端素子 $g_{n+1}$ は、奇数次なら $g_{n+1} = 1$、偶数次なら $g_{n+1} = \coth^2(\beta_0/4)$ です。チェビシェフの偶数次フィルタは入出力インピーダンスが整合しない($g_{n+1} \neq 1$)という独特の性質があり、これは偶数次チェビシェフ多項式が原点で 1 にならないことの帰結です。
比帯域とインバータ値の決定
低域プロトタイプはあくまでカットオフ $1$ rad/s の低域フィルタです。これを中心周波数 $f_0$、比帯域 $w = (f_2 – f_1)/f_0$ のバンドパスフィルタに変換するのが周波数変換です。$f_1, f_2$ は帯域端周波数、$f_0 = \sqrt{f_1 f_2}$(幾何平均)が中心周波数です。比帯域 $w$ は通過帯域の相対的な広さを表す無次元量で、たとえば $w = 0.1$ なら中心周波数の $10\%$ の幅を持つフィルタです。
結合線路 BPF では、各段のアドミタンスインバータ値 $J_{k,k+1}$(第 $k$ 段と第 $k+1$ 段の間のインバータ)が、プロトタイプ係数 $g_k$ と比帯域 $w$ から次のように決まります。両端のインバータ($k=0$ と $k=n$)と中間のインバータで式が異なります。まず入力側の第 1 インバータは
$$ \begin{equation} J_{0,1} = \frac{1}{Z_0} \sqrt{\frac{\pi w}{2 g_0 g_1}} \end{equation} $$
中間のインバータ($k = 1, 2, \dots, n-1$)は
$$ \begin{equation} J_{k,k+1} = \frac{1}{Z_0} \frac{\pi w}{2} \frac{1}{\sqrt{g_k g_{k+1}}} \end{equation} $$
そして出力側の第 $n+1$ インバータは
$$ \begin{equation} J_{n,n+1} = \frac{1}{Z_0} \sqrt{\frac{\pi w}{2 g_n g_{n+1}}} \end{equation} $$
です。これらの式の構造を読み解きましょう。比帯域 $w$ が小さい(狭帯域)ほど、すべての $J$ が小さくなります。$J$ が小さいということは式 (3) より偶奇モードインピーダンスの差が小さい、すなわち結合が弱いことを意味します。狭帯域フィルタほど線路を弱く結合させる(間隔 $s$ を広げる)必要がある、という物理的に納得のいく結論です。逆に広帯域フィルタは強い結合(狭い間隔)を要求します。両端のインバータ(式 4, 6)は $\sqrt{w}$ に比例し、中間(式 5)は $w$ に比例する点も特徴的で、これは入出力ポートの整合条件と内部段の結合条件で必要な次数が異なるためです。
なお、結合線路 BPF は $n$ 次フィルタに対して$n+1$ 個の結合線路セクションを必要とします。インバータの個数が $J_{0,1}$ から $J_{n,n+1}$ まで $n+1$ 個あり、各インバータが 1 つの結合線路セクションに対応するからです。
各段の偶奇モードインピーダンスへの翻訳
最後の翻訳ステップです。各段の $J_{k,k+1}$ が決まったら、式 (3) を使ってその段の偶奇モードインピーダンスを計算します。$J$ を $Z_0 J$(無次元化したインバータ値)の形で代入すると、第 $(k, k+1)$ 段の結合線路セクションのインピーダンスは
$$ (Z_{0e})_{k,k+1} = Z_0 \left[ 1 + Z_0 J_{k,k+1} + (Z_0 J_{k,k+1})^2 \right] $$
$$ (Z_{0o})_{k,k+1} = Z_0 \left[ 1 – Z_0 J_{k,k+1} + (Z_0 J_{k,k+1})^2 \right] $$
で与えられます。$k = 0, 1, \dots, n$ のすべてについてこれを計算すると、$n+1$ 組の $(Z_{0e}, Z_{0o})$ が得られ、これが各結合線路セクションの設計目標値になります。あとは各セクションについて、マイクロストリップ結合線路の解析式(あるいは電磁界シミュレータ)を使い、目標の $Z_{0e}, Z_{0o}$ を実現する線路幅 $W$ と間隔 $s$ を求め、線路長は中心周波数で $\lambda_g/4$($\lambda_g$ は管内波長)とします。
設計手順全体を改めて整理すると、(1) 仕様($f_0$, $w$, $n$, リップル $L_{Ar}$)を決める、(2) チェビシェフ $g_k$ を計算する、(3) 式 (4)〜(6) で $J_{k,k+1}$ を計算する、(4) 式 (3) で各段の $Z_{0e}, Z_{0o}$ を計算する、(5) 各 $Z_{0e}, Z_{0o}$ を線路寸法に変換する、という 5 ステップです。本記事の Python 実装では (1)〜(4) を実装し、さらに得られた $Z_{0e}, Z_{0o}$ から各段の ABCD 行列を組み立ててカスケードし、実際の $|S_{21}|$ 応答を合成して設計の妥当性を確認します。
数式での設計式が出そろいました。次に具体的な数値を入れた設計例で、各量がどんな値になるかを手計算ベースで確認しましょう。
具体例: 2 GHz・比帯域 10% の 3 段チェビシェフ BPF
具体的な数値で設計の流れを追ってみましょう。仕様を次のように設定します。中心周波数 $f_0 = 2$ GHz、比帯域 $w = 0.10$($200$ MHz 幅)、次数 $n = 3$、通過帯域リップル $L_{Ar} = 0.5$ dB、システムインピーダンス $Z_0 = 50\,\Omega$ とします。
まずチェビシェフ係数を求めます。$L_{Ar} = 0.5$ dB に対して $\beta_0 = \ln[\coth(0.5/17.37)] = \ln[\coth(0.0288)] \approx \ln(34.77) \approx 3.549$、$\gamma = \sinh(3.549/6) = \sinh(0.5915) \approx 0.6265$ です。これらから漸化式を回すと、$n=3$、リップル $0.5$ dB の標準的なチェビシェフ係数
$$ g_0 = 1, \quad g_1 = 1.5963, \quad g_2 = 1.0967, \quad g_3 = 1.5963, \quad g_4 = 1.000 $$
が得られます(奇数次なので $g_4 = g_{n+1} = 1$、また $g_1 = g_3$ という対称性も奇数次チェビシェフの特徴です)。これらは教科書の標準表とも一致します。
次にインバータ値を式 (4)〜(6) で計算します。$Z_0 J$ の無次元値で示すと、入力側は
$$ Z_0 J_{0,1} = \sqrt{\frac{\pi \times 0.10}{2 \times 1 \times 1.5963}} = \sqrt{0.0984} \approx 0.3137 $$
中間段は
$$ Z_0 J_{1,2} = \frac{\pi \times 0.10}{2} \frac{1}{\sqrt{1.5963 \times 1.0967}} = 0.1571 \times \frac{1}{1.3231} \approx 0.1187 $$
対称性から $Z_0 J_{2,3} = Z_0 J_{1,2} \approx 0.1187$、$Z_0 J_{3,4} = Z_0 J_{0,1} \approx 0.3137$ です。
最後に式 (3) で各段の偶奇モードインピーダンスを求めます。入力段($Z_0 J = 0.3137$)では
$$ Z_{0e} = 50 \times (1 + 0.3137 + 0.3137^2) = 50 \times 1.4121 \approx 70.6\,\Omega $$
$$ Z_{0o} = 50 \times (1 – 0.3137 + 0.3137^2) = 50 \times 0.7847 \approx 39.2\,\Omega $$
中間段($Z_0 J = 0.1187$)では
$$ Z_{0e} = 50 \times (1 + 0.1187 + 0.0141) \approx 56.6\,\Omega, \quad Z_{0o} = 50 \times (1 – 0.1187 + 0.0141) \approx 44.8\,\Omega $$
入力段は結合が強く $Z_{0e}$ と $Z_{0o}$ の差が約 $31\,\Omega$ と大きいのに対し、中間段は差が約 $12\,\Omega$ と小さいことがわかります。これは、入出力ポートの整合に必要な結合が内部段の結合より強い、という設計式 (4)〜(6) の構造をそのまま反映しています。$Z_{0e} Z_{0o}$ を計算すると入力段で $70.6 \times 39.2 \approx 2768 \approx 50^2$ となり、式 (2) の関係 $Z_{0e} Z_{0o} = Z_0^2$ もおおむね満たされていることが確認できます。
これで手計算による設計値が得られました。次に、この計算を Python で自動化し、さらに得られた偶奇モードインピーダンスから実際の $|S_{21}|$ 応答を合成して、狙い通りのバンドパス特性になっているかを検証しましょう。
Python による設計と応答合成
チェビシェフ係数とインバータ値の計算
まず、チェビシェフ低域プロトタイプ係数 $g_k$ を閉形式で計算し、続いて式 (4)〜(6) でインバータ値、式 (3) で各段の偶奇モードインピーダンスを求める関数を実装します。
import numpy as np
def chebyshev_prototype(n, ripple_db):
"""n次チェビシェフ低域プロトタイプ係数 g[0..n+1] を計算"""
beta0 = np.log(1.0 / np.tanh(ripple_db / 17.37)) # coth = 1/tanh
gamma = np.sinh(beta0 / (2 * n))
a = np.array([np.sin((2 * k - 1) * np.pi / (2 * n)) for k in range(1, n + 1)])
b = np.array([gamma**2 + np.sin(k * np.pi / n)**2 for k in range(1, n + 1)])
g = np.zeros(n + 2)
g[0] = 1.0
g[1] = 2 * a[0] / gamma
for k in range(2, n + 1):
g[k] = 4 * a[k - 2] * a[k - 1] / (b[k - 2] * g[k - 1])
# 終端係数
if n % 2 == 1:
g[n + 1] = 1.0
else:
g[n + 1] = (1.0 / np.tanh(beta0 / 4))**2
return g
# 設計仕様
n = 3
ripple_db = 0.5
w = 0.10 # 比帯域
Z0 = 50.0 # システムインピーダンス [Ω]
g = chebyshev_prototype(n, ripple_db)
print("g係数:", np.round(g, 4))
このコードは、リップル $0.5$ dB・$3$ 次のチェビシェフ係数を計算します。実行すると g係数: [1. 1.5963 1.0967 1.5963 1. ] と表示され、先ほど手計算で求めた値と一致します。$g_1 = g_3$ の対称性も再現されており、関数が正しく実装されていることが確認できます。
インバータ値と偶奇モードインピーダンス
得られた $g_k$ から、各段のインバータ値と偶奇モードインピーダンスを計算します。
def coupled_line_design(g, w, Z0):
"""g係数・比帯域w・基準Z0から各段の Z0e, Z0o を計算"""
n = len(g) - 2 # 次数
ZJ = np.zeros(n + 1) # Z0 * J_{k,k+1}, インデックス0..n
# 入力側 (k=0)
ZJ[0] = np.sqrt(np.pi * w / (2 * g[0] * g[1]))
# 中間段 (k=1..n-1)
for k in range(1, n):
ZJ[k] = (np.pi * w / 2) / np.sqrt(g[k] * g[k + 1])
# 出力側 (k=n)
ZJ[n] = np.sqrt(np.pi * w / (2 * g[n] * g[n + 1]))
# 式(3)で偶奇モードインピーダンスへ
Z0e = Z0 * (1 + ZJ + ZJ**2)
Z0o = Z0 * (1 - ZJ + ZJ**2)
return ZJ, Z0e, Z0o
ZJ, Z0e, Z0o = coupled_line_design(g, w, Z0)
for k in range(len(ZJ)):
print(f"段{k}: Z0*J={ZJ[k]:.4f}, Z0e={Z0e[k]:.2f} Ω, Z0o={Z0o[k]:.2f} Ω")
実行すると、第 0 段(入力)と第 3 段(出力)で $Z_{0e} \approx 70.6\,\Omega$、$Z_{0o} \approx 39.2\,\Omega$、中間段で $Z_{0e} \approx 56.6\,\Omega$、$Z_{0o} \approx 44.8\,\Omega$ という値が得られ、具体例の手計算と一致します。入出力段の結合が中間段より強い(インピーダンス差が大きい)という設計式の特徴がはっきり数値に現れています。
結合線路セクションの ABCD 行列
各段の $Z_{0e}, Z_{0o}$ がわかったので、これらから各結合線路セクションの ABCD 行列を組み立てます。開放端構成の対称結合線路セクション(電気長 $\theta$)の ABCD パラメータは、偶奇モード解析から次の閉形式で与えられます。
def coupled_section_abcd(Z0e, Z0o, theta):
"""開放端結合線路セクションのABCD行列 (電気長theta)"""
# 標準的な結合線路セクションのABCDパラメータ
denom = (Z0e - Z0o) * np.sin(theta)
A = ((Z0e + Z0o) / (Z0e - Z0o)) * np.cos(theta)
B = 1j * (((Z0e + Z0o)**2 * np.cos(theta)**2
- (Z0e - Z0o)**2) / (2 * denom))
C = 1j * (2 / denom)
D = A
return np.array([[A, B], [C, D]], dtype=complex)
この関数は、与えられた偶奇モードインピーダンスと電気長から、1 段分の結合線路セクションを 2 ポート回路として表す ABCD 行列を返します。電気長 $\theta$ は周波数に依存し、中心周波数で $\theta = \pi/2$($\lambda/4$)になるように設定します。次に、これを全段について計算して縦続接続します。
全段カスケードと S21 の計算
ABCD 行列は縦続接続が単純な行列積になるという性質を持ちます。全段の ABCD 行列を掛け合わせ、最後に ABCD から $S_{21}$ へ変換します。
def filter_response(Z0e, Z0o, w, f0, freqs, Z0):
"""周波数配列に対する|S21|[dB]を計算"""
S21_db = np.zeros(len(freqs))
for i, f in enumerate(freqs):
# 中心周波数でtheta=pi/2となるように電気長を設定
theta = (np.pi / 2) * (f / f0)
# 全段のABCD行列をカスケード
M = np.eye(2, dtype=complex)
for k in range(len(Z0e)):
M = M @ coupled_section_abcd(Z0e[k], Z0o[k], theta)
A, B, C, D = M[0, 0], M[0, 1], M[1, 0], M[1, 1]
# ABCD -> S21 (基準インピーダンスZ0)
S21 = 2 / (A + B / Z0 + C * Z0 + D)
S21_db[i] = 20 * np.log10(np.abs(S21))
return S21_db
f0 = 2.0e9
freqs = np.linspace(1.0e9, 3.0e9, 2001)
S21_db = filter_response(Z0e, Z0o, w, f0, freqs, Z0)
ここでは、各周波数で電気長 $\theta = (\pi/2)(f/f_0)$ を計算し、全段の ABCD 行列を順に掛け合わせて全体の伝達特性を求めています。最後に ABCD パラメータの標準公式 $S_{21} = 2/(A + B/Z_0 + C Z_0 + D)$ で透過係数に変換しています。次に、この $|S_{21}|$ を周波数に対してプロットします。
応答の可視化
計算した透過特性を描画し、設計仕様(中心周波数・比帯域・リップル)が満たされているかを確認します。
import matplotlib.pyplot as plt
plt.figure(figsize=(10, 6))
plt.plot(freqs / 1e9, S21_db, color='navy', lw=2, label='|S21| (3-stage Chebyshev)')
# 設計仕様のライン
f1 = f0 * (1 - w / 2) / 1e9
f2 = f0 * (1 + w / 2) / 1e9
plt.axvline(f0 / 1e9, color='gray', ls=':', label='center f0 = 2 GHz')
plt.axhline(-ripple_db, color='red', ls='--', alpha=0.6,
label=f'ripple level -{ripple_db} dB')
plt.axvspan(f1, f2, color='orange', alpha=0.12, label='target passband')
plt.xlabel('Frequency [GHz]')
plt.ylabel('|S21| [dB]')
plt.title('Coupled-Line Bandpass Filter Response')
plt.ylim(-60, 3)
plt.xlim(1.0, 3.0)
plt.grid(True, alpha=0.3)
plt.legend(loc='lower center')
plt.tight_layout()
plt.savefig('coupled_line_bpf_response.png', dpi=150, bbox_inches='tight')
plt.show()
このグラフからは、設計の妥当性に関するいくつかの重要な点が読み取れます。第 1 に、$|S_{21}|$ のピークが $f_0 = 2$ GHz を中心に形成され、狙い通りの中心周波数でバンドパス特性が現れています。第 2 に、通過帯域内で透過特性が $0$ dB 付近と $-0.5$ dB 付近の間を等リップルで振動しており、チェビシェフ応答の特徴である「通過帯域内の等リップル」が再現されています。リップルの谷が設計値 $L_{Ar} = 0.5$ dB のライン(赤破線)にほぼ接していることから、リップル仕様が満たされていることが確認できます。第 3 に、帯域端の外側で透過特性が急峻に落ち込み、$3$ 段($n=3$)に対応した遮断の傾きを示しています。オレンジの帯(目標通過帯域 $1.9$〜$2.1$ GHz)と $-0.5$ dB ラインの交点付近で帯域端が決まっており、比帯域 $10\%$ がほぼ達成されています。
次数とリップルの影響
設計パラメータが応答にどう効くかを確認するため、次数 $n$ とリップルを変えて比較します。
import numpy as np
import matplotlib.pyplot as plt
f0 = 2.0e9
freqs = np.linspace(1.0e9, 3.0e9, 2001)
Z0, w = 50.0, 0.10
plt.figure(figsize=(10, 6))
for n_try, rip in [(3, 0.1), (3, 0.5), (5, 0.5), (7, 0.5)]:
g = chebyshev_prototype(n_try, rip)
_, Z0e, Z0o = coupled_line_design(g, w, Z0)
S21 = filter_response(Z0e, Z0o, w, f0, freqs, Z0)
plt.plot(freqs / 1e9, S21, lw=1.8,
label=f'n={n_try}, ripple={rip} dB')
plt.xlabel('Frequency [GHz]')
plt.ylabel('|S21| [dB]')
plt.title('Effect of Order and Ripple on Coupled-Line BPF')
plt.ylim(-80, 3)
plt.xlim(1.0, 3.0)
plt.grid(True, alpha=0.3)
plt.legend()
plt.tight_layout()
plt.savefig('coupled_line_bpf_order_ripple.png', dpi=150, bbox_inches='tight')
plt.show()
この比較グラフからは、設計パラメータと性能のトレードオフが明瞭に読み取れます。まず、次数 $n$ を $3 \to 5 \to 7$ と増やすほど帯域端の遮断が急峻になり、阻止帯域での減衰量が大きくなります。一方で段数が増えるとそれだけ多くの結合線路セクションが必要になり、基板面積と挿入損失(実回路では導体損失が段数に比例して増える)が増大します。次に、リップルを $0.1$ dB から $0.5$ dB に増やすと、同じ次数でも帯域端の遮断がやや急峻になります。これは「通過帯域内の平坦さを犠牲にして遮断特性を稼ぐ」というチェビシェフフィルタの本質的なトレードオフを示しています。狙う仕様(帯域端での要求減衰量)に対して、最小の段数で満たすようにリップルと次数を選ぶのが実務的な設計方針になります。
これらの数値実験により、結合線路 BPF の設計式が物理的に妥当なバンドパス応答を生み、次数・リップル・比帯域という設計パラメータが応答を直感通りに制御することが確認できました。
まとめ
本記事では、結合線路バンドパスフィルタの設計理論を、偶モード・奇モードインピーダンスの定義から $|S_{21}|$ 応答の合成まで一貫して解説しました。要点を整理します。
- 偶奇モードインピーダンス: 対称結合線路は偶モード(同電位励振)と奇モード(逆電位励振)に分解でき、それぞれ特性インピーダンス $Z_{0e}, Z_{0o}$ を持つ。両者は $L_e = L+L_m$、$C_e = C-C_m$ 等の実効パラメータから定まり、常に $Z_{0e} > Z_{0o}$ となる。
- 結合係数との関係: 結合係数 $k = (Z_{0e}-Z_{0o})/(Z_{0e}+Z_{0o})$、相乗平均条件 $Z_{0e} Z_{0o} = Z_0^2$ から $Z_{0e} = Z_0\sqrt{(1+k)/(1-k)}$、$Z_{0o} = Z_0\sqrt{(1-k)/(1+k)}$ が導かれる。
- インバータ等価: $\lambda/4$ 結合線路セクションはアドミタンスインバータ $J$ として働き、$Z_{0e} = Z_0[1 + J Z_0 + (JZ_0)^2]$、$Z_{0o} = Z_0[1 – JZ_0 + (JZ_0)^2]$ で結ばれる。
- 設計式: チェビシェフプロトタイプ係数 $g_k$ と比帯域 $w$ から、両端 $J_{0,1}, J_{n,n+1} \propto \sqrt{w}$、中間 $J_{k,k+1} \propto w$ でインバータ値が決まり、各段の $Z_{0e}, Z_{0o}$ が一意に定まる。
- Python 検証: $g_k$ →インバータ値→ $Z_{0e}, Z_{0o}$ → ABCD 行列カスケード→ $S_{21}$ の流れで合成した応答は、設計した中心周波数・比帯域・等リップルを正しく再現した。
結合線路 BPF は、低域プロトタイプという抽象的な数列を、最終的に基板上の線路の幅と間隔という物理寸法へ翻訳する、フィルタ設計の典型的な思考の流れを凝縮しています。本記事で扱った $Z_{0e}, Z_{0o}$ を実際のマイクロストリップ寸法に落とし込むには、線路の実効誘電率と特性インピーダンスの関係が必要です。
次のステップとして、以下の記事も参考にしてください。