ADCの前段には必ずアンチエイリアシングフィルタが入ります。サンプリング周波数の半分より上の成分を落とさないと、高い周波数のノイズが折り返して信号帯域のど真ん中に化けてしまうからです。ではそのフィルタを、抵抗とコンデンサだけで作れるでしょうか。RCローパスを2段つなげば確かに $-40$ dB/dec の傾きは得られます。しかし実際にやってみると、通過帯域の端がだらしなく垂れ下がり、遮断周波数付近の切れ味がまるで出ません。段間の相互作用によって、この回路がどうやっても実現できない領域があるのです。

上の2つの回路は、赤で描いたコンデンサ $C_1$ の下端がグラウンドに落ちているか、オペアンプの出力に戻っているかだけが違います。それだけの違いで、右のグラフのように遮断周波数付近の切れ味が変わります。破線($Q=0.5$)は受動RC2段が到達できる限界で、通過帯域の端がすでに垂れているのに対し、$Q=0.707$ や $Q=1.307$ の曲線は $\omega_0$ の直前まで平坦を保っています。
その壁を破るのがサレンキー型アクティブフィルタです。オペアンプによる正帰還をたった1本のコンデンサ経路で加えるだけで、インダクタを一切使わずに「共振」を作り出し、任意の2次伝達関数を実現できます。1955年に MIT リンカーン研究所の R. P. Sallen と E. L. Key が発表して以来、70年たった今でもアナログフィルタ設計の第一選択肢であり続けています。
サレンキー回路を理解すると、次のような場面で自分の手で設計判断ができるようになります。
- ADC前のアンチエイリアシングフィルタ: 何次にするか、各段の $Q$ をいくつにするか、素子公差でどこまで特性が動くかを見積もれます
- DAC後の再構成フィルタ: 折り返しイメージを落としつつ、群遅延のうねりで波形が崩れないバランスを取れます
- センサフロントエンド: 加速度センサやマイクの出力から、機械共振や電源リプルを狙って除去できます
- オーディオのクロスオーバー: リンクウィッツ・ライリー型($Q=0.5$ のバターワース2段)はサレンキー回路2個で作れます
本記事の内容
- サレンキー回路の直感 — なぜ正帰還が「共振」を生むのか
- キルヒホッフ則から単位利得サレンキーLPFの伝達関数を完全導出
- 遮断周波数 $\omega_0$ と $Q$ を素子値 $R_1, R_2, C_1, C_2$ に対応づける
- 有限利得版($K \neq 1$)の伝達関数と、等値法・等容量法の設計手順の比較
- 4次バターワースを $Q=0.541$ と $Q=1.307$ の2段に分ける根拠を極配置から説明
- Python: 設計した素子値のボード線図と理想バターワースの重ね合わせ
- Python: 素子公差 $\pm 1\%$ のモンテカルロによる $f_0$・$Q$ のばらつき評価
- Python: チェビシェフ0.5 dBリップル版との群遅延・ステップ応答比較
前提知識
この記事を読む前に、以下の記事を読んでおくと理解が深まります。
RC2段の限界 — なぜ「共振」が必要なのか
まず、なぜわざわざオペアンプを使うのかをはっきりさせておきましょう。
抵抗 $R$ とコンデンサ $C$ による1次ローパスの伝達関数は $1/(1+sRC)$ です。これを2段つなげば $-40$ dB/dec が得られそうに思えます。ところが素直に直列につなぐと、2段目が1段目から電流を引くため、単純な積にはなりません。仮にバッファを挟んで完全に分離できたとしても、伝達関数は
$$ H(s) = \frac{1}{(1+sR_aC_a)(1+sR_bC_b)} $$
となり、分母は必ず実数の負の極を2個持ちます。ここが決定的な制約です。2次系の標準形
$$ H(s) = \frac{\omega_0^2}{s^2 + \dfrac{\omega_0}{Q}s + \omega_0^2} $$
と見比べると、実根が2つということは判別式が非負、つまり $\omega_0^2/Q^2 \geq 4\omega_0^2$ すなわち $Q \leq 1/2$ を意味します。$Q \leq 1/2$ の領域は「過減衰」であり、遮断周波数付近の落ち方が鈍く、通過帯域の端がすでに垂れています。バターワース($Q = 0.707$)ですら到達できません。

左のグラフで、$Q=0.35$ の2つの極(青)はどちらも実軸上にあり、しかも一方は $-2.45\omega_0$ という遠い位置に押しやられています。$Q$ を上げていくと2つの極は $-\omega_0$ に近づき、$Q=0.5$ でちょうど重なり(橙)、そこを超えると実軸を離れて円周上を上下に分かれます。右のグラフを見ると、実軸上に縛られた $Q=0.35$ は $\omega_0$ ですでに $-9.1$ dB も落ちており、$-3$ dB であるべき遮断周波数の定義から大きく外れていることがわかります。
$Q > 1/2$ を作るには、極を複素共役対にする必要があります。複素極とは、時間領域で言えば減衰しながら振動する応答、つまり共振です。LCフィルタならインダクタとコンデンサのエネルギー交換で自然に共振が生まれますが、インダクタは低周波では巨大・高価・高損失で、しかも磁気結合でノイズを拾います。1 kHz のフィルタに数百 mH のコイルを使いたい人はいません。
そこで発想を変えます。エネルギーを蓄えて返す素子がもう1個ないなら、出力から入力側へエネルギーを能動的に押し返せばよい。オペアンプの出力から、フィルタの途中のノードにコンデンサ経由で信号を戻す。これが正帰還であり、サレンキー回路の核心です。押し返す量が足りなければ過減衰、押し返しすぎれば発振、その中間に $Q > 1/2$ の美味しい領域があります。
では、その正帰還が具体的にどんな回路で、どんな伝達関数を生むのか。次節で回路を組み立て、キルヒホッフ則から丁寧に導出しましょう。
サレンキー型ローパスフィルタの回路
回路構成と記号の約束
単位利得(ボルテージフォロワ)型のサレンキーLPFは、次のように構成されます。
- 入力 $V_{\mathrm{in}}$ から抵抗 $R_1$ を通ってノード A へ
- ノード A から抵抗 $R_2$ を通ってノード B へ
- ノード B からコンデンサ $C_2$ を通ってグラウンドへ
- ノード B をオペアンプの非反転入力($+$)に接続
- オペアンプの出力 $V_{\mathrm{o}}$ を反転入力($-$)に直結(ボルテージフォロワ、利得1)
- 出力 $V_{\mathrm{o}}$ からコンデンサ $C_1$ を通ってノード A へ戻す

この図が以降の導出のすべての土台になります。ノードAには $R_1$・$R_2$・$C_1$ の3本の枝が集まり、ノードBには $R_2$ と $C_2$ の2本だけが集まる(オペアンプの入力には電流が流れない)という非対称さが、2次の分母を生む鍵です。図の下に示した2本の式が、次節で解く連立方程式そのものです。
ポイントは6番目です。素直なRC2段なら $C_1$ の下端はグラウンドに落ちます。それを出力に付け替えるだけで、回路の性格が一変します。
なぜ一変するのかを直感的に説明しましょう。低い周波数では $V_{\mathrm{o}} \approx V_{\mathrm{in}}$ なので、$C_1$ の両端の電位差はほぼゼロです。電位差がなければ電流は流れず、$C_1$ は「存在しないのと同じ」になります。つまり低周波では $C_1$ の減衰作用が消える。一方、周波数が上がって出力の位相が遅れ始めると、$V_{\mathrm{o}}$ とノード A の電位差が開き、$C_1$ が急に効き始めます。「遮断周波数の手前までは邪魔をせず、そこを過ぎたら一気に効く」— この周波数依存の切り替わりこそが、通過帯域の平坦さと遮断の鋭さを両立させる仕掛けです。

左のグラフで、低い周波数では緑の破線(ノードA)と青の実線(出力)がぴったり重なり、赤い線(両端の電位差)だけが $-50$ dB 以下に沈んでいます。右のグラフはその比 $|V_A – V_o|/|V_o| = \omega R_2 C_2$ を取り出したもので、10 Hz では 0.002 程度しかない一方、4458 Hz で1に達し、そこから先は $C_1$ が支配的になります。「遮断周波数の手前までは邪魔をせず、そこを過ぎたら効く」という切り替わりが、周波数に比例する単純な形で実現されていることが読み取れます。
なお、ここで使っているオペアンプは単なるバッファであり、増幅はしていません。それでも $Q$ が作れるのは、バッファが「ノード B の電圧を、負荷を一切かけずに $C_1$ の下端へコピーする」という一方通行の作用を提供しているからです。受動回路では絶対にできない非相反な操作であり、これが「アクティブ」フィルタと呼ばれる理由です。
解析の前提
導出では次を仮定します。
- オペアンプは理想的(入力インピーダンス無限大、出力インピーダンス0、利得誤差なし)。したがって非反転入力には電流が流れ込まず、$V_{\mathrm{o}} = V_B$ が厳密に成り立ちます
- 素子は理想的な線形抵抗・線形容量
- ラプラス領域($s = j\omega$ を含む複素周波数)で扱います
理想オペアンプの仮定は後の「実装上の注意」で緩めますが、まずはこの理想化で骨格を掴みましょう。
回路と仮定が固まりました。ここからは、ノード A とノード B にキルヒホッフの電流則を適用して、伝達関数を一行ずつ導いていきます。
伝達関数の導出
ノード方程式を立てる
ノード B から始めます。$R_2$ を通って流れ込む電流が、すべて $C_2$ を通ってグラウンドへ抜けます。オペアンプの入力には電流が流れないので、行き先はそれしかありません。
$$ \frac{V_A – V_B}{R_2} = V_B \cdot s C_2 $$
この式を $V_A$ について解きます。両辺に $R_2$ を掛けて $V_B$ を移項すると、
$$ V_A = V_B (1 + s R_2 C_2) $$
ボルテージフォロワなので $V_{\mathrm{o}} = V_B$ です。これを代入すると、ノード A の電圧が出力電圧で表せます。
$$ V_A = V_{\mathrm{o}} (1 + s R_2 C_2) \tag{1} $$
式(1)は重要です。ノード A は出力より「$1 + sR_2C_2$ 倍だけ大きい」電圧を持ちます。低周波では $V_A \approx V_{\mathrm{o}}$ ですが、高周波になるほど $V_A$ が出力から離れていきます。
次にノード A です。ここには3本の枝が集まります。$R_1$ から流れ込む電流、$R_2$ へ出ていく電流、そして $C_1$ を通って出力側へ出ていく電流です。
$$ \frac{V_{\mathrm{in}} – V_A}{R_1} = \frac{V_A – V_B}{R_2} + (V_A – V_{\mathrm{o}}) s C_1 \tag{2} $$
$C_1$ の電流の向きに注意してください。$C_1$ の一端はノード A、他端は出力 $V_{\mathrm{o}}$ なので、電位差は $V_A – V_{\mathrm{o}}$ です。ここに正帰還が効いています。
出力電圧だけの式に整理する
式(2)の右辺を、すべて $V_{\mathrm{o}}$ で書き直します。まず第1項は、ノード B の式そのものなので $V_{\mathrm{o}} s C_2$ に置き換えられます。
$$ \frac{V_A – V_B}{R_2} = V_B s C_2 = V_{\mathrm{o}} s C_2 $$
続いて第2項の $V_A – V_{\mathrm{o}}$ に式(1)を代入すると、定数項の1が打ち消し合って、次のように簡潔になります。
$$ V_A – V_{\mathrm{o}} = V_{\mathrm{o}}(1 + sR_2C_2) – V_{\mathrm{o}} = V_{\mathrm{o}} \, s R_2 C_2 $$
ここが導出の山場です。「ノード A と出力の電位差は $sR_2C_2$ に比例する」— つまり低周波では $C_1$ の両端に電位差がつかないという、先ほどの直感がそのまま式になりました。
これらを式(2)の右辺に戻すと、右辺は
$$ V_{\mathrm{o}} s C_2 + (V_{\mathrm{o}} \, s R_2 C_2)\, s C_1 = V_{\mathrm{o}} s C_2 + V_{\mathrm{o}} s^2 R_2 C_1 C_2 $$
左辺も式(1)を使って $V_A$ を消します。
$$ \frac{V_{\mathrm{in}} – V_{\mathrm{o}}(1 + sR_2C_2)}{R_1} = V_{\mathrm{o}} s C_2 + V_{\mathrm{o}} s^2 R_2 C_1 C_2 $$
両辺に $R_1$ を掛けて分母を払うと、
$$ V_{\mathrm{in}} – V_{\mathrm{o}}(1 + sR_2C_2) = V_{\mathrm{o}} s R_1 C_2 + V_{\mathrm{o}} s^2 R_1 R_2 C_1 C_2 $$
$V_{\mathrm{o}}$ の項をすべて右辺に集めると、
$$ V_{\mathrm{in}} = V_{\mathrm{o}} \left[ 1 + s R_2 C_2 + s R_1 C_2 + s^2 R_1 R_2 C_1 C_2 \right] $$
したがって伝達関数は次のようになります。
$$ \begin{equation} H(s) = \frac{V_{\mathrm{o}}}{V_{\mathrm{in}}} = \frac{1}{s^2 R_1 R_2 C_1 C_2 + s (R_1 + R_2) C_2 + 1} \end{equation} $$
分母が $s$ の2次式になりました。分子は定数なので、これは正真正銘の2次ローパスです。$s \to 0$ で $H \to 1$(DC利得1)、$s \to \infty$ で $H \sim 1/(s^2 R_1R_2C_1C_2)$ となり $-40$ dB/dec で落ちます。
標準形との対応 — $\omega_0$ と $Q$ を読み取る
2次系の標準形と比べるため、分母の $s^2$ の係数で全体を割ります。
$$ H(s) = \frac{\dfrac{1}{R_1R_2C_1C_2}}{s^2 + \dfrac{(R_1+R_2)C_2}{R_1R_2C_1C_2} s + \dfrac{1}{R_1R_2C_1C_2}} $$
標準形
$$ H(s) = \frac{\omega_0^2}{s^2 + \dfrac{\omega_0}{Q}s + \omega_0^2} $$
と定数項どうしを比較すれば、ただちに固有角周波数が読み取れます。
$$ \begin{equation} \omega_0 = \frac{1}{\sqrt{R_1 R_2 C_1 C_2}} \end{equation} $$
美しい形です。4つの素子の幾何平均の逆数になっています。$R_1$ を倍にして $R_2$ を半分にしても $\omega_0$ は変わりません。
次に1次の係数を比較します。$\omega_0/Q = (R_1+R_2)C_2 / (R_1R_2C_1C_2)$ なので、両辺を $\omega_0$ で割って
$$ \frac{1}{Q} = \frac{(R_1+R_2)C_2}{R_1R_2C_1C_2} \cdot \sqrt{R_1R_2C_1C_2} = \frac{(R_1+R_2)C_2}{\sqrt{R_1R_2C_1C_2}} $$
分子を $R_1C_2$ と $R_2C_2$ に分けて、それぞれ平方根の中に押し込みます。$R_1 C_2 / \sqrt{R_1R_2C_1C_2} = \sqrt{R_1^2C_2^2/(R_1R_2C_1C_2)} = \sqrt{R_1C_2/(R_2C_1)}$ という変形を両方の項に施すと、
$$ \begin{equation} \frac{1}{Q} = \sqrt{\frac{R_2 C_2}{R_1 C_1}} + \sqrt{\frac{R_1 C_2}{R_2 C_1}} \end{equation} $$
これがサレンキーLPFの設計式の中核です。この形にしておくと、設計上の性質が一目でわかります。
第一に、$1/Q$ は時定数の比だけで決まります。$R_1, R_2, C_1, C_2$ をすべて同じ倍率でスケールしても $Q$ は不変で、$\omega_0$ だけが変わります。だから「まず比で $Q$ を決め、次に絶対値で $\omega_0$ を合わせる」という2段階の設計ができます。
第二に、両方の項に $\sqrt{C_2/C_1}$ が共通因子として入っています。実際、$u = \sqrt{R_1/R_2}$ と置けば
$$ \frac{1}{Q} = \sqrt{\frac{C_2}{C_1}}\left( u + \frac{1}{u} \right) $$
と書けます。$u + 1/u \geq 2$(相加相乗平均、等号は $u=1$ すなわち $R_1=R_2$)なので、
$$ \begin{equation} \frac{1}{Q} \geq 2\sqrt{\frac{C_2}{C_1}} \quad \Longleftrightarrow \quad \frac{C_1}{C_2} \geq 4Q^2 \end{equation} $$
単位利得サレンキーで $Q$ を実現するには、容量比 $C_1/C_2$ が最低でも $4Q^2$ 必要という、極めて実用的な不等式が出ました。$Q$ を欲張るほど容量比が二乗で効いてくる、と覚えておいてください。

左のグラフは、容量比を固定したときに抵抗比 $u$ をどう振っても $Q$ が $u=1$ の山を超えられないことを示しています。$C_1/C_2 = 1$(青)ではどんな抵抗比を選んでも $Q$ が $0.5$ を超えず、$Q=0.707$ に届かせるには容量比を2以上にするしかありません。右のグラフはその境界 $C_1/C_2 = 4Q^2$ を対数軸で描いたもので、$Q=1.307$ で6.83、チェビシェフの高$Q$段($Q=2.94$)では34.6という大きな容量比が要求されることがわかります。
これらの図から、設計の順序が「まず目標 $Q$ に対して容量比を確保し、それから抵抗比で微調整する」になる理由が見えてきます。
伝達関数と設計式が揃いました。しかし $Q$ という数字が回路の振る舞いにどう現れるのか、まだ抽象的です。次節で $Q$ の物理的な意味を、極の位置と周波数特性の両面から押さえましょう。
$Q$ の意味 — 極配置・ピーク・過渡応答
極の位置と $Q$
分母 $s^2 + (\omega_0/Q)s + \omega_0^2 = 0$ を解くと、
$$ s = -\frac{\omega_0}{2Q} \pm \omega_0\sqrt{\frac{1}{4Q^2} – 1} $$
$Q > 1/2$ のとき根号の中身は負なので、極は複素共役対
$$ s = -\frac{\omega_0}{2Q} \pm j\,\omega_0\sqrt{1 – \frac{1}{4Q^2}} $$
になります。ここで極の絶対値を計算すると、実部と虚部の二乗和は
$$ \frac{\omega_0^2}{4Q^2} + \omega_0^2\left(1 – \frac{1}{4Q^2}\right) = \omega_0^2 $$
となり、極は必ず半径 $\omega_0$ の円周上に乗ることがわかります。$Q$ を変えても極は円周上を滑るだけで、円から外れません。
さらに、極と負の実軸のなす角を $\theta$ とすると、$\cos\theta = |{\rm Re}\,s| / \omega_0 = 1/(2Q)$ より
$$ \begin{equation} Q = \frac{1}{2\cos\theta} \end{equation} $$
$Q = 0.5$ なら $\theta = 0°$(実軸上の二重極)、$Q = 0.707$ なら $\theta = 45°$、$Q \to \infty$ なら $\theta \to 90°$(虚軸上=発振の縁)。$Q$ は「極が虚軸にどれだけ近いか」を測る量です。この $\theta$ の見方は、後でバターワース多項式との対応を説明するときに決定的な役割を果たします。

左のグラフでは、$Q$ を $0.5$ から $3$ まで動かしても極が黒い円(半径 $\omega_0$)から一切外れず、円周上を虚軸に向かって滑っていくだけであることが確認できます。右のグラフは $Q = 1/(2\cos\theta)$ の曲線で、$\theta$ が $60°$ を超えたあたりから $Q$ が急激に立ち上がり、$90°$ で発散します。$\theta$ が $67.5°$ で $Q = 1.31$、$80.4°$ で $Q = 3$ — わずか13度の差でQが2倍以上になるという非線形さが、高$Q$段ほど設計が難しくなる根本の理由です。
周波数特性のピーク
$s = j\omega$ を代入して振幅を求めると、
$$ |H(j\omega)| = \frac{\omega_0^2}{\sqrt{(\omega_0^2-\omega^2)^2 + (\omega_0\omega/Q)^2}} $$
分母を最小化する $\omega$ を探すと、$\omega_{\mathrm{peak}} = \omega_0\sqrt{1 – 1/(2Q^2)}$ でピークが立ちます。この式が実数になる条件は $Q > 1/\sqrt{2} = 0.707$ です。つまりバターワース($Q=0.707$)はピークが立つか立たないかのちょうど境目であり、これが「最大平坦」と呼ばれる所以です。ピーク値は
$$ |H|_{\max} = \frac{Q}{\sqrt{1 – 1/(4Q^2)}} $$
で、$Q = 1.307$ なら $3.01$ dB のピークになります。後で設計する4次バターワースの2段目がこの値です。段単体では通過帯域が約3 dB盛り上がるのに、1段目の緩やかな垂れと組み合わさると完全に平坦になる — この打ち消し合いが多段設計の妙味です。
ステップ応答
時間領域では、$Q$ は減衰比 $\zeta = 1/(2Q)$ を通じて過渡応答のリンギングを支配します。ステップ応答のオーバーシュート量は $\exp(-\pi\zeta/\sqrt{1-\zeta^2})$ で、$Q = 0.707$ で約 4.3%、$Q = 1.307$ では約 27% にもなります。高い $Q$ の段を単体で見るとかなり暴れますが、これも段間で打ち消され、4次バターワース全体としてはオーバーシュート約 10.8% に収まります(後のPythonで実測します)。

左右のグラフは同じ $Q$ を周波数領域と時間領域から見たものです。左では $Q = 0.707$(緑)までピークが立たず、$Q = 1.307$ で $+3.01$ dB、$Q = 2$ で $+6.30$ dB とピークが急成長します。右のステップ応答では、$Q = 0.5$ が行き過ぎ量 $0\%$(臨界制動)なのに対し、$Q = 0.707$ で $4.3\%$、$Q = 1.307$ で $27.2\%$、$Q = 2$ では $44.4\%$ に達し、しかも整定までの振動回数が増えていきます。周波数領域のピークと時間領域のリンギングは、同じ「極が虚軸に近い」ことの表と裏だという対応が読み取れます。
$Q$ の意味が掴めました。次は、単位利得に縛られない一般の利得 $K$ を持つ回路へ拡張し、そこから2通りの設計手順を導きます。
有限利得版への拡張
利得 $K$ の回路
ボルテージフォロワの代わりに、非反転増幅器(利得 $K = 1 + R_b/R_a$)を使う構成を考えます。出力を分圧して反転入力に戻すので、$V_{\mathrm{o}} = K V_B$ となります。$C_1$ の下端は引き続き出力 $V_{\mathrm{o}}$ に接続します。
先ほどと同じ手順で解くと($V_B = V_{\mathrm{o}}/K$、$V_A = (V_{\mathrm{o}}/K)(1+sR_2C_2)$ を代入して整理すると)、次が得られます。
$$ \begin{equation} H(s) = \frac{K}{s^2 R_1R_2C_1C_2 + s\left[R_1C_2 + R_2C_2 + R_1C_1(1-K)\right] + 1} \end{equation} $$
$K = 1$ とすれば $R_1C_1(1-K) = 0$ となり、先ほどの単位利得の式に一致します。検算としても安心です。
注目すべきは1次の係数に現れる $R_1C_1(1-K)$ の項です。$K > 1$ ならこの項は負になり、係数全体を小さくします。$\omega_0/Q$ が小さくなる、すなわち $Q$ が大きくなる。正帰還を強めるほど極が虚軸に寄っていく様子が、式の上で直接見えています。
$\omega_0$ は $K$ に依存せず、$\omega_0 = 1/\sqrt{R_1R_2C_1C_2}$ のままです。一方 $Q$ は
$$ \begin{equation} \frac{1}{Q} = \frac{R_1C_2 + R_2C_2 + R_1C_1(1-K)}{\sqrt{R_1R_2C_1C_2}} \end{equation} $$
となります。この式が2通りの設計手順の出発点です。
設計法1: 等値法(equal-component)
最も単純な発想は「同じ値の素子を使い回す」ことです。$R_1 = R_2 = R$、$C_1 = C_2 = C$ と置きます。
$\omega_0$ の式に代入すると、
$$ \omega_0 = \frac{1}{\sqrt{R \cdot R \cdot C \cdot C}} = \frac{1}{RC} $$
$Q$ の式に代入します。分子は $RC + RC + RC(1-K) = RC(3-K)$、分母は $\sqrt{R^2C^2} = RC$ なので、きれいに約分されて
$$ \begin{equation} \frac{1}{Q} = 3 – K \quad \Longleftrightarrow \quad K = 3 – \frac{1}{Q} \end{equation} $$
驚くほど簡潔です。設計手順は次の3ステップで終わります。
- 目標の $f_0$ から $RC = 1/(2\pi f_0)$ を決め、扱いやすい $R$(数 k$\Omega$〜数十 k$\Omega$)を選んで $C$ を決める
- 目標の $Q$ から $K = 3 – 1/Q$ を計算する
- $R_b/R_a = K – 1 = 2 – 1/Q$ となるように帰還抵抗を決める
たとえば $Q = 1.3066$ なら $K = 3 – 0.7654 = 2.2346$、$R_b/R_a = 1.2346$ です。
この方法の利点は、$\omega_0$ と $Q$ が完全に分離されている点です。$RC$ をいじれば周波数だけ、$K$ をいじれば $Q$ だけが動きます。可変フィルタを作るときには非常に便利です。
しかし致命的な弱点があります。$K \to 3$ で $Q \to \infty$、つまり発振に向かう坂の上に設計点があるのです。$K$ のわずかな誤差が $Q$ に大きく増幅されて現れます。感度を定量化すると、
$$ S^Q_K \equiv \frac{K}{Q}\frac{\partial Q}{\partial K} = \frac{K}{3-K} = KQ = 3Q – 1 $$
$Q = 1.3066$ なら $S^Q_K = 2.92$。抵抗比の 1% 誤差が $Q$ の 2.9% 誤差になります。$Q = 10$ の帯域通過フィルタなら $S^Q_K = 29$ で、もはや実用に耐えません。等値法は $Q$ が 1〜2 程度までの用途に限るのが賢明です。

左のグラフを見ると、$Q$ が $1$ を超えたあたりから曲線が急に立ち上がり、$K = 3$ の赤い破線(発振)に向かって漸近しています。段2の設計点 $K = 2.235$ はすでに坂の途中にあり、$K$ をあと $0.77$ 増やすだけで発振してしまう位置です。右のグラフは同じことを感度で表したもので、等値法の $S^Q_K = 3Q-1$ は $Q = 5$ で $14$、$Q = 10$ で $29$ と線形に悪化するのに対し、容量比法(緑)は $Q$ をいくら上げても $0.5$ で頭打ちです。「$Q$ を利得で作るか素子比で作るか」が感度の桁を決めていることが一目でわかります。
設計法2: 等容量法と、単位利得の壁
コンデンサは抵抗に比べて入手可能な値の刻みが粗く(E6〜E12系列が中心)、精度も悪く($\pm 5\%$ が普通、$\pm 1\%$ は高価)、種類を増やすと部品表が膨らみます。そこで「コンデンサは1種類 $C_1 = C_2 = C$ に固定し、抵抗で調整する」という発想が出てきます。これが等容量法です。
まず単位利得($K=1$)で試してみましょう。$C_1 = C_2 = C$ を $1/Q$ の式に代入すると、$C$ が約分されて
$$ \frac{1}{Q} = \sqrt{\frac{R_2}{R_1}} + \sqrt{\frac{R_1}{R_2}} $$
ここで先ほどの相加相乗平均が牙をむきます。$u + 1/u \geq 2$ より $1/Q \geq 2$、つまり
$$ Q \leq \frac{1}{2} $$
単位利得かつ等容量では、$Q$ は絶対に $0.5$ を超えられません。これはRC2段(バッファ分離)とまったく同じ限界です。$C_1$ を出力に戻したのに、$C_1 = C_2$ という縛りが正帰還の効果を殺してしまうのです。先ほど導いた不等式 $C_1/C_2 \geq 4Q^2$ からも同じ結論が出ます。$C_1/C_2 = 1$ なら $4Q^2 \leq 1$ です。
したがって等容量法を活かすには、利得 $K$ を使うしかありません。$C_1=C_2=C$ を有限利得版の $1/Q$ に代入すると、
$$ \frac{1}{Q} = \frac{R_1 + R_2 + R_1(1-K)}{\sqrt{R_1R_2}} = (2-K)\sqrt{\frac{R_1}{R_2}} + \sqrt{\frac{R_2}{R_1}} $$
$K$ と $R_1/R_2$ の2つの自由度で $Q$ を作れます。$R_1 = R_2$ とすれば $1/Q = 3-K$ となり等値法と一致するので、等容量法は等値法を含むより広い設計空間だと言えます。ただし $Q$ を $K$ で作る限り、$S^Q_K$ が大きいという弱点は共通です。
設計法3: 容量比法(単位利得を守る)
では、単位利得のまま高い $Q$ を得るにはどうするか。答えは不等式 $C_1/C_2 \geq 4Q^2$ が教えてくれています。コンデンサを2種類使うのです。
抵抗を $R_1 = R_2 = R$ に揃えると、
$$ \frac{1}{Q} = 2\sqrt{\frac{C_2}{C_1}} \quad \Longrightarrow \quad Q = \frac{1}{2}\sqrt{\frac{C_1}{C_2}}, \qquad \omega_0 = \frac{1}{R\sqrt{C_1C_2}} $$
$Q = 0.707$ なら $C_1/C_2 = 2$、$Q = 1.307$ なら $C_1/C_2 = 6.83$ です。手順は次の通りです。
- 目標 $Q$ から $C_1/C_2 = 4Q^2$ を計算する
- $\sqrt{C_1C_2} = 1/(\omega_0 R)$ となるように $R$ とコンデンサの絶対値を決める
- 入手可能なコンデンサ値に丸め、その丸め誤差を $R_1 \neq R_2$ で吸収する
3番目が実務のコツです。コンデンサは値の自由度が低いので先に決め打ちし、抵抗(E96系列で $\pm 1\%$ 品が安価)で $\omega_0$ と $Q$ の両方を追い込みます。$C_1, C_2$ を固定したとき、$u = \sqrt{R_1/R_2}$ は
$$ u + \frac{1}{u} = \frac{1}{Q}\sqrt{\frac{C_1}{C_2}} \equiv t $$
の解 $u = (t + \sqrt{t^2-4})/2$ で求まり($t \geq 2$ すなわち $C_1/C_2 \geq 4Q^2$ が実数解の条件)、$\sqrt{R_1R_2} = 1/(\omega_0\sqrt{C_1C_2})$ から $R_1 = u\sqrt{R_1R_2}$、$R_2 = \sqrt{R_1R_2}/u$ と決まります。
この方式の最大の利点は、$Q$ が受動素子の比だけで決まり、オペアンプの利得誤差にほとんど依存しないことです。感度は後で計算しますが、すべて $|S| \leq 0.5$ に収まります。実務では特別な理由がない限り、この単位利得+容量比法を第一選択にすべきです。
2次の作り方が3通り出揃いました。次は、これを何段重ねればよいのか、各段の $Q$ をどう決めるのかという「次数と配分」の話に進みます。
バターワース多項式と段分割
なぜ4次を2段に分けるのか
サレンキー回路1個で作れるのは2次までです。より急峻な減衰が欲しければ段を重ねます。4次なら2段、6次なら3段、5次のような奇数次なら2次段+1次RC段です。
問題は「4次バターワースの分母多項式を、どの2次因子に分ければよいか」です。適当に分けてはいけません。バターワース多項式は一意に決まっており、その因数分解も一意だからです。
正規化された $n$ 次バターワースの極は、$s$ 平面の単位円上に等間隔に並ぶという美しい性質を持ちます。$|H(j\omega)|^2 = 1/(1+\omega^{2n})$ を解析接続すると $H(s)H(-s) = 1/(1+(-s^2)^n)$ となり、その極は単位円周上を $2n$ 等分した点です。安定なフィルタにするには左半平面の $n$ 個だけを取ります。
$n=4$ の場合、左半平面の4つの極は負の実軸から $\pm 22.5°$ と $\pm 67.5°$ の位置にあります($180°/(2\times 4) = 22.5°$ 刻み)。共役対にまとめると、2つの2次因子は
- 極角 $\theta_1 = 22.5°$ の対 → $Q_1 = 1/(2\cos 22.5°) = 0.5412$
- 極角 $\theta_2 = 67.5°$ の対 → $Q_2 = 1/(2\cos 67.5°) = 1.3066$
いずれも $\omega_0 = 1$(単位円上なので当然)です。多項式で書けば
$$ B_4(s) = (s^2 + 0.76537 s + 1)(s^2 + 1.84776 s + 1) $$
で、1次係数の逆数がそれぞれ $Q_2 = 1/0.76537 = 1.3066$、$Q_1 = 1/1.84776 = 0.5412$ です。
ここで強調したいのは、2段とも $f_0$ は同じ 1 kHz(正規化1)だが、$Q$ は別々という点です。「2次バターワース($Q=0.707$)を2段重ねれば4次バターワース」というのは誤りです。$Q=0.707$ を2段重ねると $|H|^2 = 1/(1+\omega^4)^2$ となり、$\omega=1$ で $-6$ dB になってしまいます。バターワースの定義($\omega=1$ で $-3$ dB、通過帯域最大平坦)を満たすには、片方を $Q=0.541$ に落として垂れさせ、もう片方を $Q=1.307$ に上げて $+3$ dB持ち上げ、両者を打ち消させる必要があるのです。

左のグラフで、4次バターワースの4つの極(青×と赤×)が単位円上に $22.5°$ 刻みで並んでいます。$Q = 0.707$ に対応する $45°$ の位置(緑の丸印)は4次バターワースには現れません。右のグラフはその帰結で、$Q=0.707$ を2段重ねた緑の破線は $\omega_0$ で $-6.02$ dB と、正しい4次バターワース(黒、$-3.01$ dB)の2倍落ちてしまっています。減衰域では両者の傾きが同じ $-80$ dB/dec なので一致して見えますが、遮断周波数の定義そのものがずれている点が致命的です。
$Q$ 配分の一般則も見えます。$n$ 次バターワースの $k$ 番目($k=1,\dots,\lfloor n/2\rfloor$)の2次因子は
$$ Q_k = \frac{1}{2\cos\theta_k}, \qquad \theta_k = \frac{(2k-1)\pi}{2n} $$
次数が上がるほど最高 $Q$ の段が虚軸に近づき、設計が難しくなります。6次なら $\theta = 15°, 45°, 75°$ で $Q = 0.518, 0.707, 1.932$、8次なら最高 $Q$ が $2.563$。高次フィルタの実装難易度は、この最高 $Q$ 段で決まると言っても過言ではありません。

左のグラフでは、どの次数でも低$Q$側の段は $0.5$ 強に張り付いており、次数が上がって増えるのは最高$Q$の段だけであることがわかります。右の棒グラフはその最高$Q$と、単位利得サレンキーで実現するのに必要な容量比 $4Q^2$ を並べたもので、4次では容量比7で済むのに10次では41、14次では80が要求されます。10 nF に対して 400 nF を精度よく揃えるのは現実的ではないため、高次では単位利得を諦めるか、多重帰還型など別トポロジに移るという判断が必要になります。
縦続の順序 — 低$Q$段を先に
2段の順序は特性上は無関係(伝達関数は積なので可換)ですが、実回路ではダイナミックレンジの観点から順序が効きます。
$Q = 1.307$ の段は単体で $+2.98$ dB のピークを持ちます。この段を1段目に置くと、入力が大きいときに 839 Hz 付近($\omega_0\sqrt{1-1/(2Q^2)}$)で内部信号が約 1.4 倍に膨れ、オペアンプの出力がクリップする恐れがあります。逆に $Q = 0.541$ の段を先に置けば、その出力は全周波数で $0$ dB 以下(最大 $-0.001$ dB)に収まり、次段のピークは全体の平坦化によって相殺されます。
一方でノイズの観点では逆の議論もあり得ます(高$Q$段を後ろに置くと、その段自身のノイズがフィルタリングされずに出力へ出る)。実務では「大信号を扱うならクリップ回避優先で低$Q$先行、微小信号を扱うならノイズ優先で検討」と使い分けます。本記事では標準的な低$Q$ → 高$Q$の順で設計します。
理論が揃いました。次は実際に素子値を決め、E24/E96の現実的な値に丸めて、どこまで理想に迫れるかを見ていきます。
設計例: 1 kHz 4次バターワースLPF
素子値を決める
仕様: 遮断周波数 $f_0 = 1$ kHz、4次バターワース、DC利得1、単位利得サレンキー2段。
段1($Q_1 = 0.5412$): 必要な容量比は $C_1/C_2 \geq 4Q_1^2 = 1.1716$。E24で入手しやすい $C_1 = 22$ nF、$C_2 = 15$ nF を選ぶと比は $1.467$ で条件を満たします。
$t = (1/Q_1)\sqrt{C_1/C_2} = 1.8478 \times 1.2111 = 2.2378$、$u = (t+\sqrt{t^2-4})/2 = 1.6208$。$\sqrt{R_1R_2} = 1/(\omega_0\sqrt{C_1C_2}) = 8761\,\Omega$ より $R_1 = 14200\,\Omega$、$R_2 = 5406\,\Omega$。E96系列に丸めて $R_1 = 14.3$ k$\Omega$、$R_2 = 5.36$ k$\Omega$。
段2($Q_2 = 1.3066$): 必要な容量比は $4Q_2^2 = 6.8284$。$C_1 = 82$ nF、$C_2 = 10$ nF なら比は $8.2$ で余裕があります。同様に計算して $R_1 = 8582\,\Omega$、$R_2 = 3600\,\Omega$、E96に丸めて $R_1 = 8.66$ k$\Omega$、$R_2 = 3.57$ k$\Omega$。
| 段1(低$Q$) | 段2(高$Q$) | |
|---|---|---|
| 目標 $Q$ | 0.5412 | 1.3066 |
| $C_1$ | 22 nF | 82 nF |
| $C_2$ | 15 nF | 10 nF |
| $R_1$ | 14.3 k$\Omega$ | 8.66 k$\Omega$ |
| $R_2$ | 5.36 k$\Omega$ | 3.57 k$\Omega$ |
| 実現 $f_0$ | 1000.72 Hz (+0.07%) | 999.59 Hz (−0.04%) |
| 実現 $Q$ | 0.5393 (−0.35%) | 1.3019 (−0.36%) |
コンデンサを粗いE24の値に固定したにもかかわらず、抵抗の自由度2つで $f_0$ を $0.1\%$ 以内、$Q$ を $0.4\%$ 以内に追い込めました。「容量は決め打ち、抵抗で追い込む」戦略が効いていることがわかります。
素子感度の理論値
丸め誤差とは別に、素子の公差による特性変動を見積もっておきましょう。感度は $S^y_x = (x/y)(\partial y/\partial x)$ で定義します。
$\omega_0 = (R_1R_2C_1C_2)^{-1/2}$ は4素子の対称な式なので、
$$ S^{\omega_0}_{R_1} = S^{\omega_0}_{R_2} = S^{\omega_0}_{C_1} = S^{\omega_0}_{C_2} = -\frac{1}{2} $$
$Q$ については、$A = \sqrt{R_1C_2/(R_2C_1)}$、$B = \sqrt{R_2C_2/(R_1C_1)}$($1/Q = A+B$)と置くと、$1/Q$ を各素子で対数微分して整理することで
$$ S^Q_{C_1} = \frac{1}{2}, \quad S^Q_{C_2} = -\frac{1}{2}, \quad S^Q_{R_1} = -\frac{Q(A-B)}{2}, \quad S^Q_{R_2} = +\frac{Q(A-B)}{2} $$
が得られます。段2の設計値では $A = 0.5439$、$B = 0.2242$ なので $S^Q_{R_1} = -0.208$、$S^Q_{R_2} = +0.208$。すべての感度が $0.5$ 以下です。しかも $R_1$ と $R_2$ の感度は符号が逆なので、同じロットの抵抗が同方向にずれる場合は打ち消し合います。
対照的に、等値法で同じ $Q_2 = 1.307$ を作った場合を計算すると $S^Q_{C_1} = +2.11$、$S^Q_{C_2} = -2.11$、$S^Q_{R_1} = +0.81$、$S^Q_{R_2} = -0.81$ に加え、帰還抵抗の $S^Q_{R_b} = +1.61$、$S^Q_{R_a} = -1.61$ が上乗せされます。二乗和平方根は $3.93$ で、容量比法の $0.766$ の5倍です。次のPythonで、この差が実際のばらつきにどう出るかをモンテカルロで確かめます。
Pythonでの検証
設計値から描くボード線図と理想バターワースの比較
まず、上で決めた素子値から2段の伝達関数を組み立て、理想の4次バターワースと重ねます。
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
from scipy import signal
for cand in ["Hiragino Sans", "Yu Gothic", "Noto Sans CJK JP", "IPAexGothic", "Meiryo"]:
if any(cand == f.name for f in matplotlib.font_manager.fontManager.ttflist):
plt.rcParams["font.family"] = cand
break
plt.rcParams["axes.unicode_minus"] = False
def sallen_key_w0Q(R1, R2, C1, C2):
"""単位利得サレンキーLPFの素子値から (ω0, Q) を返す"""
w0 = 1.0 / np.sqrt(R1 * R2 * C1 * C2)
invQ = np.sqrt(R2 * C2 / (R1 * C1)) + np.sqrt(R1 * C2 / (R2 * C1))
return w0, 1.0 / invQ
# E96/E24 に丸めた設計値(段1: 低Q, 段2: 高Q)
stages = [(14300.0, 5360.0, 22e-9, 15e-9),
(8660.0, 3570.0, 82e-9, 10e-9)]
for i, st in enumerate(stages):
w0, Q = sallen_key_w0Q(*st)
print(f"段{i+1}: f0 = {w0/2/np.pi:.2f} Hz, Q = {Q:.4f}")
実行すると 段1: f0 = 1000.72 Hz, Q = 0.5393 / 段2: f0 = 999.59 Hz, Q = 1.3019 と表示されます。目標の $Q_1 = 0.5412$、$Q_2 = 1.3066$ に対して誤差 $0.4\%$ 以内、$f_0$ は $0.1\%$ 以内です。E24の粗いコンデンサ値から出発しても、抵抗2本の自由度で $f_0$ と $Q$ の両方を追い込めることが数値で確認できました。
次に周波数特性を描きます。
fc = 1000.0
f = np.logspace(1, 5, 900)
w = 2 * np.pi * f
s = 1j * w
# 設計した2段の縦続
H = np.ones_like(s)
for st in stages:
w0, Q = sallen_key_w0Q(*st)
H *= w0**2 / (s**2 + (w0 / Q) * s + w0**2)
# 理想4次バターワース
bB, aB = signal.butter(4, 2 * np.pi * fc, analog=True)
_, HB = signal.freqresp(signal.TransferFunction(bB, aB), w)
fig, ax = plt.subplots(2, 1, figsize=(9, 8), sharex=True)
ax[0].semilogx(f, 20*np.log10(np.abs(H)), lw=2, label="設計した素子値(E24/E96)")
ax[0].semilogx(f, 20*np.log10(np.abs(HB)), "--", lw=1.5, label="理想4次バターワース")
ax[0].axhline(-3, color="gray", ls=":", label="−3 dB")
ax[0].set_ylabel("利得 [dB]"); ax[0].set_ylim(-100, 10)
ax[0].legend(); ax[0].grid(True, which="both", alpha=0.3)
ax[0].set_title("設計値と理想バターワースの周波数特性")
ax[1].semilogx(f, 20*np.log10(np.abs(H / HB)), lw=2, color="crimson")
ax[1].set_xlabel("周波数 [Hz]"); ax[1].set_ylabel("理想との差 [dB]")
ax[1].grid(True, which="both", alpha=0.3)
ax[1].set_title("理想バターワースからの誤差")
plt.tight_layout(); plt.show()

上のグラフでは2本の曲線がぴったり重なり、目視では区別がつきません。下の誤差プロットを見ると、全帯域(10 Hz〜100 kHz)での最大誤差は $0.059$ dB にすぎず、しかも最大値は 1 kHz 付近に現れます。減衰域では誤差がほぼ0になっており、これは減衰域の傾き($-80$ dB/dec)が $\omega_0$ の絶対値ではなく次数だけで決まるためです。実測値では 1 kHz で $-3.069$ dB(理想 $-3.010$ dB)、2 kHz で $-24.12$ dB(理想 $-24.10$ dB)と、実用上まったく問題ないレベルで一致しています。
段ごとの寄与と打ち消し合い
「$Q=0.541$ の垂れ」と「$Q=1.307$ の $+3$ dBピーク」がどう打ち消し合うかを可視化します。
fig, ax = plt.subplots(figsize=(9, 5.5))
labels = ["段1(Q=0.539): 通過帯域が垂れる", "段2(Q=1.302): +3 dB のピーク"]
for st, lab in zip(stages, labels):
w0, Q = sallen_key_w0Q(*st)
Hi = w0**2 / (s**2 + (w0 / Q) * s + w0**2)
ax.semilogx(f, 20*np.log10(np.abs(Hi)), lw=1.8, label=lab)
print(f"{lab}: 最大利得 {20*np.log10(np.abs(Hi).max()):+.3f} dB")
ax.semilogx(f, 20*np.log10(np.abs(H)), lw=2.5, color="k", label="縦続後(4次バターワース)")
ax.axhline(0, color="gray", ls=":")
ax.set_xlim(50, 5000); ax.set_ylim(-40, 6)
ax.set_xlabel("周波数 [Hz]"); ax.set_ylabel("利得 [dB]")
ax.set_title("2段の特性と、その積が平坦になる仕組み")
ax.legend(); ax.grid(True, which="both", alpha=0.3)
plt.tight_layout(); plt.show()

出力は 段1: 最大利得 -0.001 dB / 段2: 最大利得 +2.984 dB です。段2は単体で 839 Hz 付近に約 3 dB のピークを持ち、これだけを見ると「平坦」からは程遠い特性です。しかし段1の緩やかな垂れと掛け合わせると、黒い線のように 1 kHz まで完全にフラットになります。バターワースの平坦さは、平坦な段を重ねて得られるのではなく、垂れとピークの精密な打ち消しで作られている — これが「4次を $Q=0.707$ 2段で作ってはいけない」理由の視覚的な答えです。
また、段2の最大利得が $+2.984$ dB あることは、この段を1段目に置くと内部信号が約1.4倍に膨らむことを意味します。低$Q$段を先に置くべきという設計指針が、この数値で裏づけられます。
素子公差 ±1% のモンテカルロ
理想値どおりの部品は手に入りません。$R_1, R_2, C_1, C_2$ が独立に $\pm 1\%$ 一様分布でばらつくとして、$f_0$ と $Q$ がどれだけ動くかを調べます。
rng = np.random.default_rng(1)
N = 20000
tol = lambda v: v * (1 + 0.01 * rng.uniform(-1, 1, N))
fig, axes = plt.subplots(2, 2, figsize=(11, 7))
params = []
for i, st in enumerate(stages):
R1, R2, C1, C2 = [tol(v) for v in st]
w0, Q = sallen_key_w0Q(R1, R2, C1, C2)
params.append((w0, Q))
f0 = w0 / (2 * np.pi)
axes[i, 0].hist(f0, bins=60, color="steelblue")
axes[i, 0].set_title(f"段{i+1} の遮断周波数 $f_0$(σ={100*f0.std()/f0.mean():.3f}%)")
axes[i, 0].set_xlabel("$f_0$ [Hz]"); axes[i, 0].set_ylabel("頻度")
axes[i, 1].hist(Q, bins=60, color="indianred")
axes[i, 1].set_title(f"段{i+1} の $Q$(σ={100*Q.std()/Q.mean():.3f}%)")
axes[i, 1].set_xlabel("$Q$"); axes[i, 1].set_ylabel("頻度")
print(f"段{i+1}: f0 {f0.mean():.2f} Hz σ={100*f0.std()/f0.mean():.3f}% "
f"範囲[{f0.min():.1f}, {f0.max():.1f}] | "
f"Q {Q.mean():.4f} σ={100*Q.std()/Q.mean():.3f}% 範囲[{Q.min():.4f}, {Q.max():.4f}]")
plt.tight_layout(); plt.show()

4つのヒストグラムはいずれも一様分布4個の積和にもかかわらず釣鐘型になっており、中心極限定理が効いていることがわかります。$f_0$ の分布幅(段1で $983.1$〜$1019.5$ Hz)に対して $Q$ の分布幅は相対的に狭く、これは $Q$ の感度二乗和平方根 $0.766$ が $\omega_0$ の $1.0$ より小さいことの反映です。
実行結果は、段1が f0 σ=0.576%, Q σ=0.450%、段2が f0 σ=0.575%, Q σ=0.441% です。素子1個あたりの標準偏差は $\pm 1\%$ 一様分布なので $1\%/\sqrt{3} = 0.577\%$、感度の二乗和平方根は $\omega_0$ について $\sqrt{4\times 0.5^2} = 1.0$、$Q$ について $\sqrt{0.208^2\times 2 + 0.5^2\times 2} = 0.766$ です。理論予測は $f_0$ が $0.577\%$、$Q$ が $0.442\%$ で、モンテカルロの実測とほぼ完全に一致しました。感度解析が正しく機能していることの確認になります。
$Q$ の実測範囲は段2で $[1.285, 1.319]$、つまり2万回引いても目標 $1.307$ から $1.7\%$ 以内の外れにとどまります。$\pm 1\%$ 部品で組めば、4次バターワースは十分に量産できる設計だと言えます。
等値法と容量比法の $Q$ ばらつき比較
同じ $Q = 1.307$ を等値法($R_1=R_2=10$ k$\Omega$、$C_1=C_2=15.9$ nF、$K=2.235$、$R_b/R_a=1.235$)で作った場合と比較します。
rng = np.random.default_rng(2)
N = 20000
tol = lambda v: v * (1 + 0.01 * rng.uniform(-1, 1, N))
Q_target = 1 / (2 * np.cos(np.radians(67.5))) # = 1.3066
K = 3 - 1 / Q_target # = 2.2346
R, C, Ra = 10e3, 15.9155e-9, 10e3
Rb = (K - 1) * Ra
R1, R2, C1, C2 = tol(R), tol(R), tol(C), tol(C)
Kn = 1 + tol(Rb) / tol(Ra) # 帰還抵抗の公差で K もばらつく
invQ = (R1*C2 + R2*C2 + R1*C1*(1 - Kn)) / np.sqrt(R1*R2*C1*C2)
Q_eq = 1 / invQ
# 容量比法(単位利得)の段2
r1, r2, c1, c2 = [tol(v) for v in stages[1]]
_, Q_uni = sallen_key_w0Q(r1, r2, c1, c2)
plt.figure(figsize=(9, 5))
plt.hist(Q_eq / Q_eq.mean(), bins=80, alpha=0.65, label=f"等値法(σ={100*Q_eq.std()/Q_eq.mean():.2f}%)")
plt.hist(Q_uni / Q_uni.mean(), bins=80, alpha=0.65, label=f"容量比法・単位利得(σ={100*Q_uni.std()/Q_uni.mean():.2f}%)")
plt.xlabel("$Q$ / 平均"); plt.ylabel("頻度")
plt.title("同じ Q=1.307 を作ったときの、設計法によるばらつきの違い")
plt.legend(); plt.grid(alpha=0.3); plt.tight_layout(); plt.show()
print(f"等値法 : Q 平均{Q_eq.mean():.4f} σ={100*Q_eq.std()/Q_eq.mean():.3f}% 範囲[{Q_eq.min():.4f}, {Q_eq.max():.4f}]")
print(f"容量比法 : Q 平均{Q_uni.mean():.4f} σ={100*Q_uni.std()/Q_uni.mean():.3f}% 範囲[{Q_uni.min():.4f}, {Q_uni.max():.4f}]")

左のヒストグラムでは、同じ $\pm 1\%$ 部品なのに赤(等値法)の裾が青(容量比法)の5倍以上に広がっています。右の棒グラフがその原因で、等値法は $C_1, C_2$ の感度が $\pm 2.11$、帰還抵抗 $R_a, R_b$ が $\pm 1.61$ と点線($\pm 0.5$)を大きくはみ出しているのに対し、容量比法は6本すべてが点線の内側に収まり、しかも $R_a, R_b$ という誤差源そのものが存在しません。
結果は 等値法: σ=2.284% 範囲[1.214, 1.423]、容量比法: σ=0.445% 範囲[1.285, 1.319] です。同じ $\pm 1\%$ 部品を使っているのに、$Q$ のばらつきは約5倍違います。ヒストグラムでも等値法の分布が明らかに広く、裾が $\pm 8\%$ 近くまで伸びています。
原因は前節で計算した感度です。等値法では $S^Q_{C_1} = 2.11$、$S^Q_{R_b} = 1.61$ と大きな値が並び、しかも公差を持つ素子が帰還抵抗 $R_a, R_b$ の2個ぶん増えます。予測 $\sigma_Q = 3.93 \times 0.577\% = 2.27\%$ は実測 $2.284\%$ とよく一致します。$Q$ を「素子比」で作るか「利得」で作るかという設計判断が、量産歩留まりに直結することがはっきりわかります。
チェビシェフ0.5 dBリップル版との群遅延比較
同じ4次でも、多項式をバターワースからチェビシェフに変えると特性が大きく変わります。チェビシェフ0.5 dBリップル版の2次因子は、$f_0 = 597.0$ Hz・$Q = 0.705$ と $f_0 = 1031.3$ Hz・$Q = 2.941$ です。バターワースと違い2段の $f_0$ が異なる点、そして高$Q$段の $Q$ が $2.94$ にまで跳ね上がる点に注目してください。
fc = 1000.0
wc = 2 * np.pi * fc
bB, aB = signal.butter(4, wc, analog=True)
bC, aC = signal.cheby1(4, 0.5, wc, analog=True)
f = np.logspace(1, 4.5, 3000)
w = 2 * np.pi * f
def mag_and_groupdelay(b, a, w):
_, h = signal.freqresp(signal.TransferFunction(b, a), w)
phase = np.unwrap(np.angle(h))
return 20 * np.log10(np.abs(h)), -np.gradient(phase, w)
mB, gB = mag_and_groupdelay(bB, aB, w)
mC, gC = mag_and_groupdelay(bC, aC, w)
fig, ax = plt.subplots(1, 2, figsize=(13, 5))
ax[0].semilogx(f, mB, lw=2, label="バターワース(Q=0.541 / 1.307)")
ax[0].semilogx(f, mC, lw=2, label="チェビシェフ0.5dB(Q=0.705 / 2.941)")
ax[0].set_xlim(100, 5000); ax[0].set_ylim(-60, 5)
ax[0].set_xlabel("周波数 [Hz]"); ax[0].set_ylabel("利得 [dB]")
ax[0].set_title("振幅特性: 遮断の鋭さ"); ax[0].legend(); ax[0].grid(True, which="both", alpha=0.3)
ax[1].semilogx(f, gB * 1e3, lw=2, label="バターワース")
ax[1].semilogx(f, gC * 1e3, lw=2, label="チェビシェフ0.5dB")
ax[1].set_xlim(100, 5000)
ax[1].set_xlabel("周波数 [Hz]"); ax[1].set_ylabel("群遅延 [ms]")
ax[1].set_title("群遅延: 通過帯域内の平坦さ"); ax[1].legend(); ax[1].grid(True, which="both", alpha=0.3)
plt.tight_layout(); plt.show()

左のグラフでは、2 kHz でバターワースが $-24.1$ dB、チェビシェフが $-30.6$ dB と、チェビシェフが $6.5$ dB 深く落ちています。通過帯域に $0.5$ dB のリップルを許す代償として、遮断の鋭さを買ったわけです。
右のグラフの落差はもっと劇的です。バターワースの群遅延は DC で $0.416$ ms、通過帯域内のピークが $0.622$ ms(最大/最小比 $1.50$)に収まるのに対し、チェビシェフは DC で $0.431$ ms、1 kHz 直前で $1.067$ ms まで跳ね上がります(比 $2.48$)。遮断端付近の信号だけが2.5倍長く遅れるため、方形波やパルスを通すと波形が目に見えて崩れます。この群遅延の暴れは、$Q=2.94$ の段が虚軸のすぐそばに極を置いていることの直接の帰結です。
ステップ応答で見る「代償」
周波数領域の話を時間領域に翻訳しておきましょう。
t = np.linspace(0, 6e-3, 4000)
_, yB = signal.step(signal.TransferFunction(bB, aB), T=t)
_, yC = signal.step(signal.TransferFunction(bC, aC), T=t)
plt.figure(figsize=(9, 5))
plt.plot(t * 1e3, yB, lw=2, label=f"バターワース(行き過ぎ量 {100*(yB.max()-1):.1f}%)")
plt.plot(t * 1e3, yC / yC[-1], lw=2, label=f"チェビシェフ0.5dB(行き過ぎ量 {100*(yC.max()/yC[-1]-1):.1f}%)")
plt.axhline(1, color="gray", ls=":")
plt.xlabel("時間 [ms]"); plt.ylabel("出力(最終値で規格化)")
plt.title("4次ローパスのステップ応答")
plt.legend(); plt.grid(alpha=0.3); plt.tight_layout(); plt.show()

バターワースの行き過ぎ量は $10.8\%$、チェビシェフは $18.1\%$ です。緑の帯($\pm 1\%$ の整定帯)に最終的に収まる時刻を読むと、バターワースが $1.66$ ms なのに対しチェビシェフは $3.00$ ms と約1.8倍かかっています。さらにチェビシェフはリンギングが長く尾を引き、整定に時間がかかります。マルチプレクサでチャネルを切り替えながらADCで読むような用途では、この整定時間がサンプリングレートの上限を決めてしまいます。
3つの実験を通じて見えてくるのは、フィルタ設計が「遮断の鋭さ」「通過帯域の平坦さ」「時間応答の素直さ」の三すくみだということです。バターワースはその中庸で、汎用のアンチエイリアシングには最も無難な選択です。遮断の鋭さが絶対条件ならチェビシェフ、波形の忠実さが最優先ならベッセル(群遅延最大平坦)を選びます。
実装上の注意
理想オペアンプの仮定を緩めると、いくつか現実的な制約が見えてきます。
オペアンプの利得帯域幅積(GBW)。単位利得サレンキーでも、オペアンプの開ループ利得が有限なら $K$ は正確に1になりません。しかも $K$ に対する $Q$ の感度は $K=1$ 近傍で $S^Q_K = Q\sqrt{R_1C_1/(R_2C_2)}$ となり、今回の段2では $5.81$ という大きな値です。ただし理想的なフォロワなら $K$ の誤差は開ループ利得の逆数程度なので、無視できるほど小さくなります。問題は周波数が上がったときで、GBWが不足すると位相遅れが $Q$ を持ち上げ、通過帯域にピークが出ます。経験則として GBW $\geq 100\,Q f_0$ を目安に選びます。今回なら $100 \times 1.31 \times 1$ kHz $= 131$ kHz 以上で、一般的な汎用オペアンプ(GBW 1 MHz)で十分です。
入力バイアス電流によるDCオフセット。非反転入力へはDC的に $R_1 + R_2$ を通して信号源が見えます。バイポーラ入力のオペアンプなら、バイアス電流 $I_B$ が $(R_1+R_2)I_B$ のオフセットを生みます。段2なら $12.2$ k$\Omega \times I_B$。$I_B = 100$ nA なら $1.2$ mV です。気になる場合はFET入力品を選ぶか、反転側にも同じ抵抗値を入れて相殺します。
コンデンサの誘電体。容量比 $C_1/C_2$ が $Q$ を直接決めるので、容量の温度・電圧依存が大きい誘電体(Y5V、X7Rの高容量品など)は避けます。C0G/NP0 かフィルム(PPS、ポリプロピレン)が定石です。特にセラミックのDCバイアス特性による容量低下は、$Q$ と $f_0$ の両方を狂わせます。
減衰域での折り返し。実回路では高い周波数でオペアンプの出力インピーダンスが上がり、$C_1$ の帰還経路が単なる「入力から出力へのフィードスルー」として働き始めます。その結果、減衰量がある周波数で頭打ちになり、再び上昇することがあります。深い減衰が必要なら、入力側に小さなRCを追加するなどの対策を取ります。
まとめ
本記事では、サレンキー型アクティブフィルタの設計を、回路のノード方程式から実装上の注意まで通して解説しました。
- RC2段では $Q \leq 1/2$ が限界。$C_1$ の下端をグラウンドから出力に付け替える正帰還が、インダクタなしで複素極(=共振)を作り出す
- キルヒホッフ則から $H(s) = 1/(s^2R_1R_2C_1C_2 + s(R_1+R_2)C_2 + 1)$ が導かれ、$\omega_0 = 1/\sqrt{R_1R_2C_1C_2}$、$1/Q = \sqrt{R_2C_2/(R_1C_1)} + \sqrt{R_1C_2/(R_2C_1)}$ という設計式が得られる
- $1/Q$ は時定数の比だけで決まるため、「比で $Q$、絶対値で $\omega_0$」の2段階設計ができる
- 単位利得で $Q$ を実現する条件は $C_1/C_2 \geq 4Q^2$。等容量($C_1=C_2$)だと $Q \leq 1/2$ に逆戻りするので、単位利得なら容量を2種類使う
- 等値法($R_1=R_2$, $C_1=C_2$, $K=3-1/Q$)は式が最も簡単だが $S^Q_K = 3Q-1$ が大きく、$\pm 1\%$ 部品で $\sigma_Q = 2.28\%$。容量比法(単位利得)は全感度 $\leq 0.5$ で $\sigma_Q = 0.44\%$ と5倍良い
- 4次バターワースの極は単位円上の $\pm 22.5°$、$\pm 67.5°$ にあり、$Q = 1/(2\cos\theta)$ から $Q_1 = 0.541$、$Q_2 = 1.307$ の2段に分かれる。$Q=0.707$ を2段重ねるのは誤り
- 段2単体の $+2.98$ dBピークと段1の垂れが打ち消し合って平坦になるため、ダイナミックレンジの観点から低$Q$段を先に置く
- チェビシェフ0.5 dBは2 kHzで $6.5$ dB深く落ちる代わりに、群遅延の変動が $2.48$ 倍(バターワースは $1.50$ 倍)、行き過ぎ量も $18.1\%$(同 $10.8\%$)と時間応答が悪化する
サレンキー回路は「2次伝達関数を回路に落とす」ための最も基本的な道具です。ここで身につけた「多項式を2次因子に分解し、各因子の $\omega_0$ と $Q$ を素子値に対応づけ、感度で設計法を選ぶ」という流れは、多重帰還型(MFB)やバイカッド、状態変数型フィルタにもそのまま通用します。
次のステップとして、以下の記事も参考にしてください。