反転増幅回路とは?仮想短絡から利得を導出して設計する

ひずみゲージが出す数ミリボルトの信号、フォトダイオードが流すナノアンペアの電流、DACから出てくる中途半端な電圧範囲 — これらを「使える大きさ」に整えるとき、アナログ回路の現場でまず手が伸びるのが反転増幅回路(inverting amplifier)です。オペアンプ1個と抵抗2本、たったこれだけで「利得は $-R_f/R_{in}$」というきれいな設計式が成り立ちます。抵抗比だけで利得が決まるので、オペアンプ内部のトランジスタが温度でどれだけ暴れようと、増幅率はほとんど動きません。

しかし、この「抵抗比だけで決まる」という魔法のような性質は、いくつかの条件の上に成り立っています。オペアンプの開ループ利得 $A$ は無限大ではありませんし、周波数が上がれば $A$ はどんどん落ちます。入力インピーダンスは $R_{in}$ そのものになるので、信号源が弱いと利得が狂います。大きな信号を速く振ろうとすればスルーレートの壁にぶつかります。設計とは、この「魔法が効く範囲」を定量的に見積もる作業にほかなりません。

反転増幅回路を式のレベルで理解しておくと、次のような場面で直接効いてきます。

  • センサ計装 — ひずみゲージや熱電対の微小信号を AD コンバータのフルスケールに合わせ込むとき、利得誤差が何 % まで許されるかを開ループ利得から逆算できます
  • フォトダイオードのI-V変換(トランスインピーダンスアンプ) — 反転構成の「仮想接地に電流を流し込む」という性質そのものが、光電流を電圧に変える回路の原理になります
  • アクティブフィルタ・アナログ演算 — 加算回路、積分回路、微分回路はすべて反転増幅回路の $R_f$ や $R_{in}$ をインピーダンス $Z_f$、$Z_{in}$ に置き換えたものです
  • オーディオ・信号処理 — ミキサ(加算器)や位相反転段として使われ、GB積とスルーレートの制約が音質仕様に直結します

本記事の内容

  • 反転増幅回路の直感的な理解(てこ・シーソーとしての見方)
  • 仮想短絡(イマジナリショート)がなぜ成り立つのか、負帰還の自己調整として導く
  • 理想オペアンプの節点方程式から $V_{out}/V_{in} = -R_f/R_{in}$ を省略なく導出
  • 有限開ループ利得 $A$ のときの正確解と、利得誤差が「閉ループ利得 / $A$」で効くこと
  • 入力インピーダンスが $R_{in}$ になるという反転構成の弱点と、信号源抵抗の影響
  • 出力インピーダンスがループ利得で下がる仕組み
  • 一次極モデルから帯域幅 $f_{-3\text{dB}} = \text{GB} / (1 + R_f/R_{in})$ を導出
  • スルーレート制限とフルパワー帯域、小信号応答との切り分け
  • Python 実装: ボード線図、利得ごとの $-3$ dB 帯域の実測、ステップ応答の立ち上がり時間とスルーレート制限の分離
  • 実務的な設計手順(抵抗値の決め方、バイアス電流補償、位相補償)

前提知識

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

反転増幅回路とは

反転増幅回路の構成。入力電流が仮想接地ノードを通り抜けて帰還抵抗へ流れる様子

回路の全体像を先に見ておきます。部品はオペアンプ 1 個と抵抗 2 本だけで、信号は左から $R_{in}$ を通ってオペアンプの $-$ 端子(図の赤い点)に入り、そこから $R_f$ を通って出力へ抜けます。この図で最も大事なのは、$-$ 端子の電位が $0$ V に貼りついていること(仮想接地)と、$-$ 端子自身は電流を吸わないこと($I_-=0$)の 2 点です。この 2 つがあるおかげで「$R_{in}$ に流れた電流がそのまま $R_f$ に流れる」という関係が成り立ち、利得が抵抗比だけで決まります。

シーソーを思い浮かべてください。支点から左に 1 m の位置を 1 cm 押し下げると、支点から右に 10 m の位置は 10 cm 持ち上がります。押し下げた側と持ち上がった側は「逆向き」で、動く量の比は「支点からの距離の比」だけで決まります。板の材質が木でも鉄でも、この比は変わりません。

反転増幅回路はまさにこのシーソーです。支点にあたるのがオペアンプの反転入力端子($-$ 端子)で、ここは負帰還のはたらきによって常に 0 V に貼りつきます。左腕が入力抵抗 $R_{in}$、右腕が帰還抵抗 $R_f$ で、入力電圧 $V_{in}$ を上げると出力電圧 $V_{out}$ は下がり、その比は抵抗比 $R_f/R_{in}$ だけで決まる — オペアンプ内部がどんな回路でも、です。マイナス符号は「シーソーだから逆向き」という、ごく素朴な事実を表しています。

反転増幅回路をシーソーに例えた図。支点が仮想接地、左腕がRin、右腕がRfに対応する

図では左腕($R_{in}$)を少し持ち上げると、支点をはさんで右腕($R_f$)の先が逆向きに大きく下がっています。腕の長さの比が $1:4.6$ 程度なので、変位の比もそのまま $1:4.6$ になり、板が木でも鉄でもこの比は変わりません。回路でも同じで、支点にあたる $-$ 端子が動かない(仮想接地)かぎり、利得はオペアンプの中身に依存せず抵抗比 $R_f/R_{in}$ だけで決まります。

回路の構成は次の通りです。信号源 $V_{in}$ から抵抗 $R_{in}$ を通してオペアンプの反転入力端子に入り、その反転入力端子と出力端子の間に帰還抵抗 $R_f$ を渡します。非反転入力端子($+$ 端子)はグランドに落とします。部品はこれだけです。

この構成に対して、教科書は次の一行を提示します。

$$ \begin{equation} \frac{V_{out}}{V_{in}} = -\frac{R_f}{R_{in}} \end{equation} $$

あまりにも簡単なので、初めて見ると「オペアンプの性能はどこへ行ったのか」と戸惑います。実は、オペアンプの性能(開ループ利得 $A$)は式の中に残っていて、ただ $A$ が十分大きいときに消えて見えるだけです。この「消えて見える」仕組みを理解することが、反転増幅回路を設計できるようになるための本丸です。

もう一つ、$-$ 端子が 0 V に貼りつくという点は、電圧増幅以外の使い道も生みます。$-$ 端子はグランドと同じ電位なのに、グランドではありません。つまり「電位を動かさずに電流を吸い込む点」として使えます。フォトダイオードの光電流をここに流し込めば、その電流はすべて $R_f$ を通って出力に流れ、$V_{out} = -I_{ph} R_f$ という電流–電圧変換が成立します。反転構成が計測回路で重宝される理由の一つがこれです。

では、なぜ $-$ 端子は 0 V に貼りつくのでしょうか。次のセクションで、この「仮想短絡」を負帰還の自己調整として導きます。

仮想短絡(イマジナリショート)はなぜ成り立つのか

「$-$ 端子と $+$ 端子は同じ電位になる」— この仮想短絡(イマジナリショート、バーチャルショート)は、オペアンプ回路を解くときの最強の武器です。しかし、2 つの端子は物理的につながっていません。導線もなければ抵抗もありません。それなのに同じ電位になるのは、負帰還が「そうなるまで出力を動かす」からです。

サーモスタットを想像すると腑に落ちます。設定温度 25 ℃ のエアコンは、室温が 25 ℃ より高ければ冷やし、低ければ暖めます。ゲインが十分高ければ、室温は 25 ℃ のごく近くに落ち着きます。オペアンプも同じで、$V_{out} = A(V_+ – V_-)$ という関係にしたがって「$V_+$ と $V_-$ の差」を $A$ 倍して出力します。$A$ が $10^5$ 程度あるということは、出力が飽和せず(たとえば $|V_{out}| < 10$ V の範囲で)動いている限り、

$$ |V_+ – V_-| = \frac{|V_{out}|}{A} < \frac{10}{10^5} = 0.1\ \text{mV} $$

しかありえない、ということです。0.1 mV は多くの用途で「ほぼゼロ」です。だから $V_- \simeq V_+$ とみなしてよい、というのが仮想短絡の中身です。

ここで重要なのは、仮想短絡は「オペアンプの性質」ではなく「負帰還がかかっていて、かつ出力が飽和していない状態」の性質だという点です。負帰還がなければ(あるいは正帰還だと)、この論理は成り立ちません。反転増幅回路では $R_f$ が出力から $-$ 端子へ信号を戻しており、$-$ 端子の電位が上がれば出力が下がり、その下がった出力が $R_f$ を通じて $-$ 端子を引き下げる — たしかに逆向きに戻っているので、負帰還です。

反転増幅回路では $+$ 端子をグランドに接続しているので $V_+ = 0$、したがって $V_- \simeq 0$ になります。この「電位はグランドだが、電流の出入りはグランドとは違う」点を仮想接地(バーチャルグラウンド)と呼びます。

自己調整の様子を、あえて手順として追ってみましょう。いま $V_{in}$ が少しだけ正に動いたとします。すると $R_{in}$ を通って $-$ 端子に向かう電流が増え、$-$ 端子の電位がわずかに持ち上がろうとします。$V_-$ が上がると $V_+ – V_- < 0$ になるので、出力 $V_{out} = A(V_+ - V_-)$ は大きく負に振れます。負に振れた出力は $R_f$ を通じて $-$ 端子から電流を引き抜き、持ち上がろうとした $V_-$ を押し戻します。この押し戻しは、$V_-$ がほぼ 0 に戻るまで続きます。結果として、$R_{in}$ から流れ込む電流と $R_f$ から引き抜かれる電流が釣り合う点で落ち着く — これが反転増幅回路の平衡状態です。

この押し戻しの過程を、開ループ利得 $A_0=10^5$・支配極 10 Hz のオペアンプで数値的に追ってみたのが次の図です($R_{in}=10$ kΩ、$R_f=100$ kΩ、$t=2$ µs で 1 V のステップを加えています)。

負帰還の自己調整。出力が動いて反転入力の電位を0Vへ押し戻す過程を上下2段で示した図

上段では出力が $-10$ V へ滑らかに向かい、理想の最終値 $-R_f/R_{in} \times V_{in} = -10$ V にぴたりと収束しています。下段(対数軸)が本題で、ステップの瞬間には $V_-$ が $R_f/(R_{in}+R_f) = 0.909$ V まで跳ね上がるものの、負帰還が働くにつれて 4 桁下の 100 µV まで押し戻されていることがわかります。この 100 µV は $|V_{out}|/A_0 = 10/10^5$ そのもので、「仮想短絡は最初から成り立っているのではなく、負帰還が時間をかけて作り出す状態」だと読み取れます。

もう一つの前提が「入力端子に電流が流れ込まない」ことです。理想オペアンプの入力インピーダンスは無限大とされ、実際の FET 入力オペアンプでもバイアス電流はピコアンペア級です。$R_{in}$ に流れる信号電流がマイクロアンペア級なら、6 桁の差があるので無視できます。

これで武器がそろいました。$V_- = 0$(仮想接地)と「入力電流ゼロ」、この 2 つを使って利得を導出しましょう。

理想オペアンプによる利得の導出

導出のゴールを先に宣言しておきます。理想オペアンプ($A \to \infty$、入力電流ゼロ)を仮定したとき、$V_{out}/V_{in} = -R_f/R_{in}$ が成り立つことを、節点方程式から示します。

反転入力端子のノードを考えます。このノードに接続されているのは 3 つです。$R_{in}$ を通って信号源から来る枝、$R_f$ を通って出力へ抜ける枝、そしてオペアンプの $-$ 入力端子です。キルヒホッフの電流則(KCL)より、ノードに流れ込む電流の総和はゼロです。ノードの電位を $V_-$ と書くと、

$$ \frac{V_{in} – V_-}{R_{in}} + \frac{V_{out} – V_-}{R_f} – I_- = 0 $$

ここで $I_-$ はオペアンプの $-$ 端子に流れ込む電流です。理想オペアンプでは $I_- = 0$ なので、第 3 項が消えます。

$$ \frac{V_{in} – V_-}{R_{in}} + \frac{V_{out} – V_-}{R_f} = 0 $$

次に仮想接地 $V_- = 0$ を代入します。これで式は一気に簡単になります。

$$ \frac{V_{in}}{R_{in}} + \frac{V_{out}}{R_f} = 0 $$

この式は物理的にとても読みやすい形です。左の項は「$R_{in}$ を通ってノードに流れ込む電流 $I_{in} = V_{in}/R_{in}$」、右の項は「$R_f$ を通って出力側からノードに流れ込む電流」です。入力端子が電流を吸わないので、$R_{in}$ から来た電流は行き場がなく、そっくりそのまま $R_f$ を通って出力へ抜けていくしかありません。これが反転増幅回路の物理的な核心です。

この「電流が素通りする」という主張は、波形を並べると一目で確認できます。$R_f=100$ kΩ、$R_{in}=10$ kΩ に振幅 1 V・1 kHz の正弦波を入れた場合です。

入力電流と帰還電流が完全に一致することを示す波形図。上段が入出力電圧、下段が2つの電流

上段は入力 1 V に対して出力が振幅 10 V・逆位相になっている様子で、利得 $-10$ がそのまま見えています。下段では $R_{in}$ を流れる電流 $V_{in}/R_{in}$(太い青線)と $R_f$ を流れる電流 $-V_{out}/R_f$(赤の破線)が完全に重なっており、ピーク値はどちらも 100 µA です。2 本が一致することこそ「$I_-=0$ とキルヒホッフ則」の帰結であり、利得 $-R_f/R_{in}$ が成り立つ理由そのものになっています。

両辺に $R_f$ を掛けて $V_{out}$ について解きます。

$$ V_{out} = -R_f \cdot \frac{V_{in}}{R_{in}} $$

したがって電圧利得は、

$$ \begin{equation} A_v \equiv \frac{V_{out}}{V_{in}} = -\frac{R_f}{R_{in}} \end{equation} $$

となり、目標の式が得られました。$R_f = 100$ kΩ、$R_{in} = 10$ kΩ なら $A_v = -10$ です。1 V の入力に対して $-10$ V が出ます。

この導出で使った仮定は「$V_- = 0$」と「$I_- = 0$」のたった 2 つで、オペアンプの中身は一切使っていません。だからこそ、オペアンプの品種を変えても利得は変わりませんし、温度が変わっても抵抗比が変わらない限り利得は動きません。逆に言えば、利得精度は抵抗の精度で決まります。$\pm 1$ % の抵抗を 2 本使えば、最悪ケースで利得は $\pm 2$ % ずれます。0.1 % の薄膜抵抗を使えば $\pm 0.2$ % に収まります。ここは「オペアンプを高いものに替える」のではなく「抵抗を良いものに替える」べき部分です。

なお、この結果は $R_f$ と $R_{in}$ を一般のインピーダンス $Z_f(s)$、$Z_{in}(s)$ に置き換えてもそのまま成立します。

$$ \frac{V_{out}(s)}{V_{in}(s)} = -\frac{Z_f(s)}{Z_{in}(s)} $$

$Z_f$ をコンデンサ $1/(sC)$ にすれば $-1/(sCR_{in})$ となって積分回路、$Z_{in}$ をコンデンサにすれば $-sCR_f$ となって微分回路、$Z_f$ に $R_f \parallel C_f$ を置けば一次のローパスフィルタです。反転増幅回路を理解することは、これら全部を一度に理解することでもあります。

ここまでは $A \to \infty$ という都合のよい仮定の上での話でした。しかし実際の汎用オペアンプの直流開ループ利得は $10^5$ 程度で、無限大ではありません。次に、この有限性がどれだけの誤差を生むのかを、正確に解いて確かめます。

有限開ループ利得 $A$ での正確解

理想化を外します。オペアンプの出力は差動入力に有限の利得 $A$ を掛けたものだとします。

$$ V_{out} = A (V_+ – V_-) $$

反転増幅回路では $V_+ = 0$ なので、

$$ V_{out} = -A V_- \quad \Longleftrightarrow \quad V_- = -\frac{V_{out}}{A} $$

$V_-$ はもうゼロではありません。出力が $-10$ V で $A = 10^5$ なら $V_- = +100\ \mu$V です。この 100 µV が誤差の源になります。

先ほどの節点方程式(入力電流ゼロは維持)に戻ります。

$$ \frac{V_{in} – V_-}{R_{in}} + \frac{V_{out} – V_-}{R_f} = 0 $$

ここに $V_- = -V_{out}/A$ を代入します。各項を丁寧に展開しましょう。

$$ \frac{V_{in} + V_{out}/A}{R_{in}} + \frac{V_{out} + V_{out}/A}{R_f} = 0 $$

$V_{out}$ を含む項を右辺にまとめるため、まず全部展開します。

$$ \frac{V_{in}}{R_{in}} + \frac{V_{out}}{A R_{in}} + \frac{V_{out}}{R_f} + \frac{V_{out}}{A R_f} = 0 $$

$V_{out}$ でくくると、

$$ V_{out}\left( \frac{1}{A R_{in}} + \frac{1}{R_f} + \frac{1}{A R_f} \right) = -\frac{V_{in}}{R_{in}} $$

両辺に $R_f$ を掛けて、括弧の中を無次元にします。

$$ V_{out}\left( \frac{R_f}{A R_{in}} + 1 + \frac{1}{A} \right) = -V_{in}\frac{R_f}{R_{in}} $$

括弧の中の $1/A$ を含む 2 項をまとめると $\frac{1}{A}\left(1 + \frac{R_f}{R_{in}}\right)$ になります。したがって、

$$ V_{out}\left[ 1 + \frac{1 + R_f/R_{in}}{A} \right] = -V_{in}\frac{R_f}{R_{in}} $$

両辺を括弧で割れば、有限利得での正確な閉ループ利得が得られます。

$$ \begin{equation} \frac{V_{out}}{V_{in}} = -\frac{R_f}{R_{in}} \cdot \frac{1}{1 + \dfrac{1 + R_f/R_{in}}{A}} \end{equation} $$

これが本記事で最も重要な式です。理想解 $-R_f/R_{in}$ に、$1/(1 + \varepsilon)$ という補正係数が掛かった形になっています。ここで

$$ \varepsilon = \frac{1 + R_f/R_{in}}{A} $$

です。$A \to \infty$ とすれば $\varepsilon \to 0$ となり、理想解に戻ることが確認できます。

ノイズゲインという主役

補正項の分子に現れた $1 + R_f/R_{in}$ に注目してください。これは信号利得 $R_f/R_{in}$ ではなく、それに 1 を足したものです。この量はノイズゲイン(noise gain)と呼ばれ、記号では $1/\beta$ と書かれます。$\beta$ は帰還率で、

$$ \beta = \frac{R_{in}}{R_{in} + R_f}, \qquad \frac{1}{\beta} = 1 + \frac{R_f}{R_{in}} $$

です。$\beta$ の意味は素直で、「出力 $V_{out}$ が $R_f$ と $R_{in}$ の分圧によって $-$ 端子へどれだけ戻ってくるか」という分圧比そのものです($V_{in}$ 側をグランドに落として見たときの分圧比になります)。

ここが反転増幅回路の一番の落とし穴です。信号利得は $R_f/R_{in}$ なのに、誤差・帯域・ノイズ・安定性を支配するのはノイズゲイン $1 + R_f/R_{in}$ です。この 2 つは利得が大きいときはほぼ同じですが、利得 1 倍($R_f = R_{in}$)のときは 1 倍と 2 倍で 2 倍違います。反転バッファ(利得 $-1$)が、非反転のボルテージフォロワ(利得 $+1$、ノイズゲイン 1)よりも帯域が半分になるのはこのためです。

ループ利得は $A\beta = A/(1 + R_f/R_{in})$ と書けるので、補正項は $\varepsilon = 1/(A\beta)$ です。つまり誤差はループ利得の逆数で決まります。負帰還理論の一般則「閉ループ特性の誤差はループ利得に反比例する」が、そのまま現れています。

信号利得とノイズゲインがどれだけ食い違うのかを、代表的な 3 つの設計について並べたのが次の図です。

信号利得とノイズゲインの比較棒グラフと、それぞれの-3dB帯域を比べた棒グラフ

左は信号利得(青)とノイズゲイン(赤)の比較です。$R_f/R_{in}=100$ では 100 と 101 でほとんど差がありませんが、$R_f/R_{in}=1$ では 1 と 2 で 2 倍も違います。右はその帰結で、GB積 1 MHz のオペアンプで利得 1 倍を作ると、反転構成の帯域は 500 kHz にとどまり、同じ信号利得を非反転で作った場合の 1000 kHz の半分しか出ません。利得が大きくなるほど両者の差は縮み、信号利得 100 では 9.9 kHz 対 10 kHz とほぼ同じになります。

利得誤差の見積もり

$\varepsilon \ll 1$ のとき $1/(1+\varepsilon) \simeq 1 – \varepsilon$ と近似できるので、相対利得誤差は

$$ \begin{equation} \frac{|A_v| – R_f/R_{in}}{R_f/R_{in}} \simeq -\varepsilon = -\frac{1 + R_f/R_{in}}{A} \end{equation} $$

となります。実測値は理想値より必ず小さくなる(絶対値が減る)点に注意してください。負帰還は「効きすぎない」ことはあっても「効きすぎる」ことはありません。

具体的な数値を入れてみます。$A = 10^5$($= 100$ dB)の汎用オペアンプを想定します。

$R_f$ $R_{in}$ 理想利得 ノイズゲイン $1/\beta$ 正確解 利得誤差
10 kΩ 10 kΩ $-1$ 2 $-0.99998$ $-0.0020$ %
100 kΩ 10 kΩ $-10$ 11 $-9.99890$ $-0.0110$ %
1 MΩ 10 kΩ $-100$ 101 $-99.8991$ $-0.1009$ %

利得を 10 倍ずつ上げると誤差もほぼ 10 倍になります。「閉ループ利得を上げるほど、開ループ利得の余裕(ループ利得)が減り、精度が落ちる」という関係が数値ではっきり見えます。

この関係を、開ループ利得 $A_0$ を横軸にとって俯瞰したのが次の図です。

利得誤差と開ループ利得の関係を両対数で示した図。4本の直線が信号利得ごとの誤差を表す

両対数プロットで 4 本すべてが傾き $-1$ の平行線になっているのは、誤差が $(1+G)/A_0$ という単純な反比例だからです。縦の破線($A_0=10^5$)との交点を読むと、利得 $-1$ で $0.0020$ %、$-10$ で $0.0110$ %、$-100$ で $0.1010$ %、$-1000$ で $1.0010$ % と、表の値がそのまま現れます。横の点線は 12 bit AD の 1 LSB(0.024 %)で、汎用オペアンプでこの線を下回れるのは利得 $-10$ までだと即座に判断できます。

この表から実務的な設計基準が引き出せます。たとえば「12 bit の AD コンバータ($1/4096 \simeq 0.024$ %)に対して、利得誤差を LSB 以下に抑えたい」なら、必要なループ利得は $A\beta > 4096$ です。利得 100 倍(ノイズゲイン 101)を作るなら $A > 4.1 \times 10^5$、つまり 112 dB 以上の直流開ループ利得が必要になります。汎用品では足りず、高精度オペアンプを選ぶ判断になります。

そして、ここに時間軸の話が入ってきません。上の議論はすべて直流での話です。実は $A$ は周波数とともに落ちるので、$\varepsilon$ は周波数とともに増大します。それが帯域の制限として現れるのですが、その前にもう一つ、反転構成に固有の弱点を片付けておきましょう。入力インピーダンスです。

入力インピーダンスという弱点

信号源から見て、この回路はどれくらい「重い」のでしょうか。入力インピーダンス $Z_{in}$ は、信号源が押し込む電圧に対して回路が吸う電流の比です。

$$ Z_{in} = \frac{V_{in}}{I_{in}}, \qquad I_{in} = \frac{V_{in} – V_-}{R_{in}} $$

理想オペアンプでは $V_- = 0$(仮想接地)なので、

$$ I_{in} = \frac{V_{in}}{R_{in}} \quad \Longrightarrow \quad Z_{in} = R_{in} $$

入力インピーダンスは $R_{in}$ そのものです。$R_f$ は一切効きません。仮想接地のおかげで、信号源から見ると「$R_{in}$ の先がグランドに落ちている」ようにしか見えないからです。

有限利得 $A$ でも同じ計算をしてみましょう。$V_- = -V_{out}/A$ で、$V_{out}$ は先ほど求めた正確解ですから、代入して整理すると(ミラー効果の視点で見た方が速いのですが)、$-$ 端子からグランドへ見えるインピーダンスは $R_f/(1+A)$ になり、

$$ Z_{in} = R_{in} + \frac{R_f}{1 + A} $$

となります。$R_f = 100$ kΩ、$A = 10^5$ なら第 2 項は 1 Ω で、$R_{in} = 10$ kΩ に対して 0.01 % です。実用上は $Z_{in} = R_{in}$ と考えて構いません。

なぜこれが弱点なのか

問題は、$R_{in}$ が利得も決めているという二重の役割です。利得を上げるには $R_f/R_{in}$ を大きくしたい。$R_f$ を上げるのには限度がある(後述)ので $R_{in}$ を下げたくなる。しかし $R_{in}$ を下げると入力インピーダンスも下がって、信号源に重い負荷をかけてしまいます。

信号源が内部抵抗 $R_s$ を持つ場合、実効的な入力抵抗は $R_s + R_{in}$ になり、利得は

$$ A_v = -\frac{R_f}{R_{in} + R_s} $$

に変わります。$R_s = 1$ kΩ のセンサに対して $R_{in} = 1$ kΩ、$R_f = 10$ kΩ で利得 $-10$ を狙うと、実際には $-10\text{k}/2\text{k} = -5$ になり、利得が半分になってしまいます。$R_{in} = 100$ kΩ、$R_f = 1$ MΩ にすれば $-1\text{M}/101\text{k} = -9.90$ で誤差 1 % に収まりますが、今度は抵抗値が大きすぎることによる別の問題(後述)が出てきます。

この劣化がどのくらいの $R_s/R_{in}$ から効いてくるのかを、連続的に描いたのが次の図です。

信号源抵抗と入力抵抗の比に対して実効利得が何%になるかを示した曲線

曲線は $R_{in}/(R_{in}+R_s)$ そのもので、$R_s/R_{in}$ が $0.01$($R_{in}=100R_s$)なら実効利得は設計値の 99.0 %、$0.1$ なら 90.9 %、$1$ なら 50 % まで落ちます。誤差 1 % 以内という実用的な目標を満たすには $R_{in}$ を信号源抵抗の 100 倍以上に取る必要がある、というのが図から読み取れる設計指針です。逆に言えば、$R_s$ が数十 kΩ もあるセンサに対して $R_{in}$ を数 MΩ にするのは現実的でないので、そもそも反転構成が向いていないと判断できます。

さらに厄介なのは、$R_s$ が温度や個体で変動する場合です。利得が信号源の内部抵抗に依存してしまうので、校正が効きません。

対して非反転増幅回路では、信号は直接 $+$ 端子に入ります。オペアンプの入力インピーダンスは $10^{9}$ Ω 級(FET 入力なら $10^{12}$ Ω 級)で、しかも負帰還によってさらにループ利得倍に持ち上げられるので、実質的に無限大とみなせます。高インピーダンス源には非反転、電流入力や位相反転が要るなら反転、というのが基本的な使い分けです。

反転構成をどうしても使いたい場合の常套手段は 2 つあります。第 1 は、前段にボルテージフォロワ(利得 1 の非反転バッファ)を置いてインピーダンス変換すること。部品は増えますが確実です。第 2 は、T 型帰還回路を使って、$R_{in}$ を大きく保ったまま高い利得を得ることです。

T型帰還回路

$R_f$ を 1 本の抵抗ではなく、$R_1$、$R_2$ を直列にしてその中点から $R_3$ でグランドに落とす T 字型にすると、等価的な帰還抵抗は

$$ R_{f,\text{eff}} = R_1 + R_2 + \frac{R_1 R_2}{R_3} $$

になります。$R_1 = R_2 = 10$ kΩ、$R_3 = 100$ Ω とすれば $R_{f,\text{eff}} = 10\text{k} + 10\text{k} + 1\text{M} = 1.02$ MΩ で、$R_{in} = 10$ kΩ に対して利得 $-102$ が作れます。1 MΩ の抵抗を使わずに 1 MΩ 相当が得られるわけです。

T型帰還回路の回路図。R1とR2の直列中点からR3でグランドに落とす構成

図のように、$R_f$ 1 本だった場所が $R_1$–$R_2$ の直列に置き換わり、その中点から $R_3$ が下りています。$R_3$ が中点の電位を強引にグランドへ引き下げるため、$R_2$ には $R_1$ を流れた電流よりずっと大きな電流が要求され、結果として出力が大きく振れる — これが等価帰還抵抗が跳ね上がる仕組みです。使う抵抗の最大値は 10 kΩ なので、浮遊容量やバイアス電流の問題を避けつつ利得 $-102$ が得られます。

ただし、うまい話には代償があります。この回路のノイズゲインは $1 + R_{f,\text{eff}}/R_{in}$ ではなく、$-$ 端子から見た分圧比で決まるので、信号利得の割にノイズゲインが跳ね上がります。結果としてオフセット電圧やノイズが余計に増幅され、帯域も狭くなります。「精度が欲しいなら素直に高抵抗を 1 本」「入力抵抗を確保したいだけなら T 型」と使い分けるのが定石です。

抵抗値の選び方

$R_{in}$、$R_f$ の絶対値は、上下から挟まれて決まります。

下限側の制約は出力電流です。$R_f$ が小さいと、出力は $V_{out}/R_f$ の電流を吐き出す必要があります。汎用オペアンプの出力電流は 20〜25 mA 程度なので、$V_{out} = 10$ V を出すなら $R_f > 10/0.02 = 500$ Ω が必要です。実際には歪みを抑えるため、もっと余裕を持って 1 kΩ 以上にします。$R_{in}$ の下限は前述の入力インピーダンス要求から来ます。

上限側の制約は 3 つあります。第 1 に熱雑音です。抵抗の雑音電圧密度は $\sqrt{4kTR}$ で、$R = 10$ kΩ なら 12.9 nV/$\sqrt{\text{Hz}}$、$R = 100$ kΩ なら 40.7 nV/$\sqrt{\text{Hz}}$ です。抵抗値を 10 倍にすると雑音は $\sqrt{10} \simeq 3.2$ 倍に増えます。第 2 にバイアス電流によるオフセットで、$R_f = 1$ MΩ に 100 nA のバイアス電流が流れれば 100 mV のオフセットが出ます(これはバイポーラ入力なら深刻、FET 入力ならほぼ無視できます)。第 3 に浮遊容量で、$R_f$ が大きいと基板の数 pF と作る極が帯域内に入り、位相余裕を食って発振します。

実務的には、$R_{in}$、$R_f$ ともに 1 kΩ 〜 100 kΩ の範囲に収めるのが無難な出発点です。

ここまでは直流の話でした。次に、この回路が「どこまで速い信号についてこられるか」を、開ループ利得の周波数特性から導きます。

帯域幅 — GB積による制限

汎用オペアンプの開ループ利得は、直流では $10^5$ もあるのに、周波数を上げるとみるみる落ちていきます。数十 Hz から $-20$ dB/dec で下がり続け、1 MHz 付近で 1 倍(0 dB)になる — これが典型的な姿です。この「わざと 1 つの極で素直に落としてある」設計を内部位相補償といい、どんな帰還をかけても発振しないようにするための工夫です。

この振る舞いは、単一極(一次遅れ)でよく近似できます。

$$ \begin{equation} A(s) = \frac{A_0}{1 + s/\omega_1} \end{equation} $$

ここで $A_0$ は直流開ループ利得、$\omega_1$ は開ループの $-3$ dB 角周波数(支配極)です。$\omega \gg \omega_1$ の領域では $|A(j\omega)| \simeq A_0 \omega_1 / \omega$ となり、利得と周波数の積が一定になります。この一定値が利得帯域幅積(GB積、gain-bandwidth product)です。

$$ \text{GB} = A_0 f_1 = f_u $$

$f_u$ はユニティゲイン周波数($|A| = 1$ となる周波数)です。$A_0 = 10^5$、$f_u = 1$ MHz なら $f_1 = 10$ Hz で、データシートの「オープンループ利得 100 dB、GB積 1 MHz」という記述はこの意味です。

閉ループ伝達関数の導出

有限利得の正確解(式 3)で、$A$ を $A(s)$ に置き換えます。

$$ H(s) = \frac{V_{out}(s)}{V_{in}(s)} = -\frac{G}{1 + \dfrac{1/\beta}{A(s)}}, \qquad G \equiv \frac{R_f}{R_{in}},\ \ \frac{1}{\beta} = 1 + G $$

$A(s) = A_0/(1 + s/\omega_1)$ を代入します。

$$ H(s) = -\frac{G}{1 + \dfrac{(1+G)(1 + s/\omega_1)}{A_0}} $$

分母を展開して整理します。

$$ H(s) = -\frac{G}{1 + \dfrac{1+G}{A_0} + \dfrac{(1+G)s}{A_0 \omega_1}} $$

第 1 項と第 2 項をまとめて $K \equiv 1 + (1+G)/A_0$ とおき、分母全体を $K$ でくくると、

$$ H(s) = -\frac{G/K}{1 + \dfrac{(1+G)}{K A_0 \omega_1} s} $$

これは一次遅れの標準形 $H_0/(1 + s/\omega_c)$ そのものです。直流利得は $H_0 = -G/K$ で、これは式 3 の直流での正確解と一致します。閉ループの $-3$ dB 角周波数は $s$ の係数の逆数として、

$$ \omega_c = \frac{K A_0 \omega_1}{1 + G} $$

$A_0 \omega_1 = \omega_u$(GB積の角周波数表現)を使い、$K \simeq 1$($A_0 \gg 1+G$ のとき)とすれば、

$$ \begin{equation} f_{-3\text{dB}} = \frac{f_u}{1 + R_f/R_{in}} = f_u \beta = \frac{\text{GB}}{\text{ノイズゲイン}} \end{equation} $$

帯域を決めるのは信号利得ではなくノイズゲインです。 ここでも $1+G$ が主役として現れました。

反転構成が損をする理由

非反転増幅回路の場合、信号利得もノイズゲインもどちらも $1 + R_f/R_{in}$ なので、閉ループ利得と帯域の積はちょうど GB積になります。「利得 10 倍なら帯域 100 kHz」という素朴な暗算が成り立ちます。

ところが反転構成では、信号利得が $G$ でノイズゲインが $1+G$ なので、

$$ |H_0| \times f_{-3\text{dB}} = G \times \frac{f_u}{1+G} = f_u \cdot \frac{G}{1+G} < f_u $$

となり、閉ループのGB積は必ず $f_u$ より小さくなります。$G = 10$ なら $10/11 = 0.909$ 倍、$G = 1$ なら $1/2 = 0.5$ 倍です。特に利得 $-1$ の反転バッファは、GB積 1 MHz のオペアンプでも帯域が 500 kHz しか取れません。高速な位相反転が必要な場面では、この 2 倍の損は無視できない差になります。

数値で並べておきます($f_u = 1$ MHz)。

$R_f/R_{in}$ 信号利得 ノイズゲイン $f_{-3\text{dB}}$ 閉ループGB積
1 $-1$ 2 500 kHz 0.50 MHz
10 $-10$ 11 90.9 kHz 0.91 MHz
100 $-100$ 101 9.90 kHz 0.99 MHz

利得が大きいほど「損」の割合は小さくなり、$G \gg 1$ では非反転と実質的に変わらなくなります。

周波数ごとの利得誤差

もう一つ、この式には隠れた実務的示唆があります。誤差 $\varepsilon(f) = 1/(A(j\omega)\beta)$ は周波数とともに増えるので、$-3$ dB 帯域のずっと手前でも利得は理想値からずれ始めます。たとえば $f = f_{-3\text{dB}}/10$ では $|A\beta| = 10$ しかなく、利得誤差は約 10 % に達します。「$0.1$ % 精度で増幅したい信号帯域」を確保するには、$-3$ dB 帯域ではなく ループ利得が 1000 以上ある周波数範囲 で設計する必要があります。これは $f_{-3\text{dB}}$ の 1/1000 です。精度と速度は、思っているよりずっと厳しくトレードオフします。

ここまでは小信号(線形)の話でした。しかし実際に大きな信号を速く振ろうとすると、線形理論が破れる別の壁にぶつかります。スルーレートです。

スルーレート制限と大信号帯域

オーディオアンプで小さな音は忠実に再生できるのに、大音量にすると急に歪む — こういう現象があります。これは利得や帯域とは別のメカニズム、スルーレート(slew rate, SR)による制限です。

オペアンプの内部では、入力段の差動対が出力する電流で位相補償容量 $C_c$ を充電しています。差動対が供給できる電流には上限(テール電流 $I_{tail}$)があるので、$C_c$ の充電速度にも上限があり、

$$ \text{SR} = \frac{I_{tail}}{C_c} $$

という有限値になります。汎用オペアンプなら 0.5〜1 V/µs、高速品なら数百〜数千 V/µs です。出力電圧はこれより速く変化できません。

$$ \left| \frac{dV_{out}}{dt} \right| \le \text{SR} $$

小信号応答とスルーレート制限の切り分け

閉ループが一次遅れなら、時定数は $\tau = 1/(2\pi f_{-3\text{dB}})$ です。振幅 $V_{step}$ のステップに対する出力は $V_{out}(t) = V_{step}(1 – e^{-t/\tau})$ で、初期スロープは

$$ \left. \frac{dV_{out}}{dt} \right|_{t=0} = \frac{V_{step}}{\tau} $$

です。この初期スロープが SR を超えていなければ、応答は素直な指数関数になり、10–90 % 立ち上がり時間は

$$ t_r = \tau \ln 9 \simeq 2.2\tau = \frac{0.35}{f_{-3\text{dB}}} $$

という教科書どおりの式にしたがいます。逆に $V_{step}/\tau > \text{SR}$ なら、出力は途中まで一定傾き SR の直線で立ち上がり(三角波状)、線形応答に追いつけません。判定条件は $V_{step} > \text{SR} \cdot \tau$ です。

具体例で確かめましょう。GB積 1 MHz、SR $= 1$ V/µs のオペアンプで $G = 10$(ノイズゲイン 11)の反転増幅回路を組みます。$f_{-3\text{dB}} = 90.9$ kHz なので $\tau = 1/(2\pi \times 90.9\text{k}) = 1.75\ \mu$s、境界の出力振幅は $\text{SR} \cdot \tau = 1.75$ V です。

  • 出力 1 V のステップ: 初期スロープ $1/1.75 = 0.57$ V/µs $<$ SR → 線形。$t_r \simeq 2.2 \times 1.75 = 3.85\ \mu$s
  • 出力 5 V のステップ: 初期スロープ $5/1.75 = 2.86$ V/µs $>$ SR → スルー制限。立ち上がりは約 4.9 µs に伸びる

小信号なら振幅を変えても立ち上がり時間は変わらない(線形系の性質)のに、大信号では振幅に比例して遅くなる — この違いが切り分けの決め手です。オシロで振幅を半分にして立ち上がり時間が変わらなければ線形、半分になればスルー制限、と現場で判断できます。

フルパワー帯域

正弦波 $V_{out}(t) = V_p \sin(2\pi f t)$ の最大スロープは $2\pi f V_p$ です。これが SR を超えない条件から、振幅 $V_p$ を歪みなく出せる最高周波数(フルパワー帯域)が決まります。

$$ \begin{equation} f_{FP} = \frac{\text{SR}}{2\pi V_p} \end{equation} $$

SR $= 1$ V/µs で $V_p = 5$ V なら $f_{FP} = 10^6/(2\pi \times 5) = 31.8$ kHz です。小信号帯域は 90.9 kHz あるのに、5 V 振幅では 31.8 kHz までしか使えません。データシートの GB積だけを見て「100 kHz まで使える」と判断すると失敗します。 必要な出力振幅を決めてから、SR の要求値を $\text{SR} \ge 2\pi f_{max} V_p$ で計算するのが正しい順序です。

なお、スルーレート制限は非線形現象なので、周波数特性としては現れず高調波歪みとして観測されます。正弦波を入れたのに三角波が出てくる、というのがスルー制限の典型的な波形です。

スルーレート制限による正弦波の三角波化と、フルパワー帯域が出力振幅で下がる様子を並べた図

左は SR $=1$ V/µs のオペアンプに 100 kHz の正弦波を出させたときの規格化波形です。振幅 1 V なら必要スロープは $2\pi \times 10^5 \times 1 = 0.63$ V/µs で SR 以内なので理想正弦波(破線)にぴたりと重なりますが、振幅 5 V では必要スロープが 3.1 V/µs となり、出力は頂点まで届かない三角波にひずんでいます。右のグラフは $f_{FP} = \text{SR}/(2\pi V_p)$ の直線群で、SR $=1$ V/µs・$V_p=5$ V の点が 31.8 kHz にあり、同じ回路の小信号帯域 90.9 kHz(黒の破線)を大きく下回ることが読み取れます。必要な振幅を決めずに帯域だけ見て部品を選ぶと危険だ、という主張がこの 1 枚に収まっています。

これで理論はそろいました。次に、これらの予測が本当に成り立つかを Python で確かめます。

Python実装

ここまで導いた 3 つの主張 — (1) 閉ループ特性は一次遅れになり直流利得は式 3 で与えられる、(2) $-3$ dB 帯域はノイズゲインで GB積を割った値になる、(3) 立ち上がり時間は小信号なら $2.2\tau$、大信号ではスルーレートで決まる — を、順に検証していきます。

一次極モデルによるボード線図

まず、開ループ利得を一次遅れでモデル化し、閉ループ伝達関数

$$ H(j\omega) = -\frac{G\,A(j\omega)}{1 + G + A(j\omega)} $$

を数値的に評価します。この形は、節点方程式を $A$ を残したまま整理し直したもので、式 3 と等価です(分母分子を $A$ で割ると式 3 に戻ります)。

import numpy as np
import matplotlib, matplotlib.pyplot as plt

# 日本語フォント設定
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

A0 = 1e5        # 直流開ループ利得 (100 dB)
fu = 1e6        # ユニティゲイン周波数 = GB積 [Hz]
f1 = fu / A0    # 開ループの支配極 (10 Hz)

def A_open(f):
    """一次極モデルの開ループ利得"""
    return A0 / (1 + 1j * f / f1)

def H_closed(f, G):
    """反転増幅回路の閉ループ伝達関数 (G = Rf/Rin)"""
    A = A_open(f)
    return -G * A / (1 + G + A)

f = np.logspace(0, 7, 3000)

plt.figure(figsize=(9, 6))
plt.semilogx(f, 20*np.log10(np.abs(A_open(f))), "k--", lw=1.5,
             label="開ループ利得 $A$ (GB積 1 MHz)")
for G, c in [(1, "tab:blue"), (10, "tab:orange"), (100, "tab:green")]:
    plt.semilogx(f, 20*np.log10(np.abs(H_closed(f, G))), color=c, lw=2,
                 label=f"閉ループ 利得 $-{G}$ (ノイズゲイン {1+G})")
    plt.axhline(20*np.log10(G) - 3, color=c, ls=":", lw=0.8)
plt.xlabel("周波数 [Hz]"); plt.ylabel("利得 [dB]")
plt.title("反転増幅回路の周波数特性 — 閉ループ利得を上げるほど帯域は狭くなる")
plt.ylim(-20, 110); plt.grid(True, which="both", alpha=0.3); plt.legend()
plt.tight_layout(); plt.show()

開ループ利得と3種類の閉ループ利得を重ねたボード線図

このボード線図から 3 つのことが読み取れます。第 1 に、各閉ループ曲線は低域で平坦(それぞれ 0 dB、20 dB、40 dB)で、ある周波数から $-20$ dB/dec で折れ曲がり、開ループ利得の直線に沿って落ちていきます。閉ループ特性は「開ループ利得の天井」を超えられないのです。第 2 に、折れ点($-3$ dB 点、点線)は利得が高いほど低い周波数にあり、利得 $-1$ で約 500 kHz、$-10$ で約 91 kHz、$-100$ で約 9.9 kHz です。第 3 に、利得 $-1$ の曲線の折れ点が 1 MHz ではなく 500 kHz である点に注目してください。これが「ノイズゲイン 2 で GB積を割る」という反転構成特有の損失そのものです。

$-3$ dB帯域の実測と理論式の照合

上のグラフを目で読むだけでは不正確なので、数値的に $-3$ dB 点を求め、理論式 $f_u/(1+G)$ と突き合わせます。ついでに直流利得の実測値を式 3 と比較し、利得誤差も確認します。

import numpy as np

f = np.logspace(-1, 7, 200001)   # 細かいグリッドで -3dB 点を探索

print(f"{'G':>6} {'DC利得(実測)':>14} {'DC利得(式3)':>14} {'誤差[%]':>9} "
      f"{'f-3dB実測[Hz]':>14} {'fu/(1+G)[Hz]':>14} {'閉ループGB[Hz]':>15}")
for G in [1, 10, 100, 1000]:
    mag = np.abs(H_closed(f, G))
    dc = mag[0]                                   # 直流利得
    idx = np.argmax(mag < dc / np.sqrt(2))        # -3dB を最初に下回る点
    f3 = f[idx]
    exact = G / (1 + (1 + G) / A0)                # 式3 の絶対値
    err = (dc - G) / G * 100                      # 理想値 G に対する誤差
    print(f"{G:>6} {dc:>14.5f} {exact:>14.5f} {err:>9.4f} "
          f"{f3:>14.1f} {fu/(1+G):>14.1f} {dc*f3:>15.1f}")

出力は次のようになります($A_0 = 10^5$、$f_u = 1$ MHz)。

     G    DC利得(実測)     DC利得(式3)    誤差[%]   f-3dB実測[Hz]   fu/(1+G)[Hz]    閉ループGB[Hz]
     1        0.99998        0.99998    -0.0020       500034.5       500000.0        500024.5
    10        9.99890        9.99890    -0.0110        90924.3        90909.1        909143.1
   100       99.89910       99.89910    -0.1009         9911.1         9901.0        990105.8
  1000      990.08920      990.08921    -0.9911         1009.1          999.0        999066.3

数値から 3 点を確認できます。第 1 に、直流利得の実測値は式 3 の予測と小数点以下 5 桁まで一致しており、有限利得の解析が正しいことが裏付けられます。第 2 に、利得誤差は $-0.0020$ % → $-0.0110$ % → $-0.1009$ % → $-0.9911$ % と、ノイズゲインと開ループ利得の比 $(1+G)/A_0$ にきれいに比例して増えています。利得 1000 倍では約 1 % もずれるので、この用途に $A_0 = 10^5$ のオペアンプを選ぶのは不適切だと即座に判断できます。第 3 に、閉ループGB積(最右列)は $G/(1+G)$ 倍だけ $f_u$ より小さくなっており、$G=1$ で 500 kHz(半分)、$G=100$ で 990 kHz(99 %)と予測どおりです。

$-3$ dB 帯域の実測値にも注目してください。$G = 1 \sim 100$ では $f_u/(1+G)$ と 0.1 % 程度で一致しますが、$G = 1000$ だけ実測 1009.1 Hz に対し簡易式は 999.0 Hz と、1 % ほどずれています。これは導出の最後で $K = 1 + (1+G)/A_0 \simeq 1$ と切り捨てたせいです。$K$ を戻した厳密式 $f_{-3\text{dB}} = K f_u/(1+G)$ で計算すると $1.01001 \times 999.0 = 1009.0$ Hz となり、実測とぴたりと合います。利得誤差が無視できないほど大きい領域では、帯域の簡易式も同じ割合だけずれる — 誤差も帯域も同じ $K$ に支配されていることの現れで、両者が独立な仕様ではないことを示しています。

この対応関係を、$G$ を 1 から 1000 まで振ってグラフにすると次のようになります。

-3dB帯域の数値実測と理論式の一致、および閉ループGB積の目減りを示した2枚組の図

左は $-3$ dB 帯域で、数値計算で求めた点(赤丸)が簡易式 $f_u/(1+G)$ の直線にほぼ乗り、$G=1000$ でだけわずかに上へ外れます。そのずれを埋めるのが厳密式 $K f_u/(1+G)$(緑の破線)で、両者の差は $K-1=(1+G)/A_0$ すなわち利得誤差と同じ量です。右は閉ループGB積で、$G=1$ で 0.50 MHz、$G=10$ で 0.91 MHz、$G=100$ で 0.99 MHz と、理論値 $G/(1+G)\times f_u$ に沿ってオペアンプの GB積 1 MHz へ漸近していきます。反転構成の「損」は低利得ほど大きい、という結論が視覚的に確認できます。

ステップ応答: 立ち上がり時間とスルーレート制限の切り分け

最後に時間領域です。閉ループを一次遅れ、かつ出力の変化率に上限 SR を課したモデルで数値積分します。

$$ \frac{dV_{out}}{dt} = \text{clip}\left( \frac{-G V_{in} – V_{out}}{\tau},\ -\text{SR},\ +\text{SR} \right) $$

このモデルは、スルーレート制限を「積分器の充電電流の飽和」として表現した実用的な近似です。

import numpy as np
import matplotlib.pyplot as plt

fu, SR_default = 1e6, 1.0e6   # GB積 1 MHz, スルーレート 1 V/us = 1e6 V/s

def step_response(G, Vin, SR, T=4e-5, N=400001):
    """一次遅れ+スルーレート制限のステップ応答"""
    tau = (1 + G) / (2 * np.pi * fu)      # τ = 1/(2π f-3dB)
    t = np.linspace(0, T, N); dt = t[1] - t[0]
    v = np.zeros(N); target = -G * Vin
    for k in range(N - 1):
        d = np.clip((target - v[k]) / tau, -SR, SR)
        v[k+1] = v[k] + d * dt
    return t, v, tau

def rise_time(t, v):
    """10-90% 立ち上がり時間"""
    a = np.abs(v); final = a[-1]
    i10 = np.argmax(a >= 0.1 * final); i90 = np.argmax(a >= 0.9 * final)
    return t[i90] - t[i10]

この関数を使って、同じ利得 $G = 10$ のまま入力振幅だけを変え、応答を規格化して重ねてみます。線形系なら規格化波形は完全に重なるはずです。

plt.figure(figsize=(9, 6))
for Vin, c in [(0.01, "tab:blue"), (0.1, "tab:orange"), (0.5, "tab:green")]:
    t, v, tau = step_response(10, Vin, SR_default)
    tr = rise_time(t, v)
    plt.plot(t*1e6, v/v[-1], color=c, lw=2,      # 最終値で割るので 0→1 に立ち上がる
             label=f"出力振幅 {abs(10*Vin):.1f} V : $t_r$={tr*1e6:.2f} μs")
# スルーレート制限のない理想の一次遅れ(比較用)
t, v_ref, tau = step_response(10, 0.5, 1e9)
plt.plot(t*1e6, v_ref/v_ref[-1], "k--", lw=1.2,
         label=f"スルー制限なし(線形): $2.2\\tau$={2.2*tau*1e6:.2f} μs")
plt.xlim(0, 15); plt.ylim(-0.05, 1.12)
plt.xlabel("時間 [μs]"); plt.ylabel("出力(最終値で規格化)")
plt.title("ステップ応答 — 大振幅ではスルーレートが立ち上がりを支配する")
plt.grid(alpha=0.3); plt.legend(loc="lower right")
plt.tight_layout(); plt.show()

出力振幅を変えたステップ応答を規格化して重ねた図。5Vだけ序盤が直線になる

このグラフから、線形とスルー制限の境目がはっきり見えます。出力 0.1 V と 1.0 V の波形は完全に重なり(青が橙の下に完全に隠れており、さらに黒の破線=スルー制限なしの理想応答とも一致しています)、立ち上がり時間はどちらも 3.85 µs で、理論値 $2.2\tau = 2.2 \times 1.75 = 3.85$ µs と一致します。ところが出力 5 V では波形が重ならず、序盤が直線的(一定傾き)になり、立ち上がり時間は 4.94 µs に伸びています。判定条件 $V_{step} > \text{SR}\cdot\tau = 1.75$ V と照らすと、5 V だけが条件を満たしており、予測どおりです。「振幅を変えても規格化波形が重なるか」がスルー制限を見分ける実験手順そのものである、という点が実務上の収穫です。

もう一段、SR を変えたときの立ち上がり時間の振る舞いも見ておきましょう。

import numpy as np
import matplotlib.pyplot as plt

Vouts = np.array([0.1, 0.3, 1.0, 2.0, 5.0, 10.0])   # 出力振幅 [V]
plt.figure(figsize=(9, 6))
for SR_v, c in [(0.5e6, "tab:red"), (1.0e6, "tab:orange"), (10e6, "tab:blue")]:
    trs = [rise_time(*step_response(10, Vo/10, SR_v, T=1e-4, N=1000001)[:2])
           for Vo in Vouts]
    plt.loglog(Vouts, np.array(trs)*1e6, "o-", color=c, lw=2,
               label=f"SR = {SR_v/1e6:.1f} V/μs")
tau = 11 / (2*np.pi*fu)
plt.axhline(2.2*tau*1e6, color="k", ls="--", lw=1.2,
            label=f"小信号の限界 $2.2\\tau$ = {2.2*tau*1e6:.2f} μs")
plt.xlabel("出力ステップ振幅 [V]"); plt.ylabel("10–90% 立ち上がり時間 [μs]")
plt.title("立ち上がり時間の支配要因 — 小振幅は帯域、大振幅はスルーレート")
plt.grid(True, which="both", alpha=0.3); plt.legend()
plt.tight_layout(); plt.show()

出力振幅に対する立ち上がり時間を3種類のスルーレートで比較した両対数プロット

この両対数プロットは、2 つの領域がはっきり分かれる様子を示します。左側(小振幅)では、どの SR でも立ち上がり時間は $2.2\tau = 3.85$ µs の水平線に張り付きます。振幅に依存しない — 線形系の特徴です。右側(大振幅)では、曲線が傾き 1 の直線に漸近します。これは $t_r \simeq 0.8 V_{step}/\text{SR}$(10–90 % を SR 一定で駆け抜ける時間)で、振幅に比例するからです。折れ点の位置は $V_{step} = \text{SR}\cdot\tau$ にあり、SR が 20 倍(0.5 → 10 V/µs)になれば折れ点も 20 倍の振幅まで右へ動きます。「速いオペアンプ」を選ぶとは、必要な出力振幅において折れ点の左側に居られるように SR を選ぶことだと、この図が教えてくれます。

実務的な設計手順

ここまでの式を、実際に回路を組むときの順序に並べ替えておきます。

手順1: 必要な利得と入力インピーダンスから $R_{in}$ を決める。 信号源の内部抵抗 $R_s$ に対して $R_{in} \ge 100 R_s$ を目安にすれば、利得誤差は 1 % 以下に収まります。$R_s$ が数十 kΩ 以上なら、反転構成は諦めて非反転にするかバッファを前置します。

手順2: $R_f = |A_v| R_{in}$ で帰還抵抗を決める。 結果が 1 MΩ を超えるようなら、浮遊容量とバイアス電流の問題が出るので、T 型帰還か 2 段構成(たとえば $-10$ を 2 段で $+100$)を検討します。

手順3: ノイズゲイン $1/\beta = 1 + R_f/R_{in}$ を計算する。 これが精度・帯域・安定性のすべてを支配します。

手順4: 直流精度を確認する。 必要な利得精度 $\delta$ に対して $A_0 > (1/\beta)/\delta$ が必要です。0.01 % 精度でノイズゲイン 11 なら $A_0 > 1.1 \times 10^5$(101 dB)です。

手順5: 帯域を確認する。 $f_{-3\text{dB}} = \text{GB}/(1/\beta)$。ただし「精度を保った帯域」はこれよりずっと狭く、$\delta$ 精度が必要なら $f_{-3\text{dB}} \cdot \delta$ 程度までです。

手順6: スルーレートを確認する。 必要な最大出力振幅 $V_p$ と最高周波数 $f_{max}$ から $\text{SR} \ge 2\pi f_{max} V_p$。ここは GB積とは独立に効くので、必ず別途チェックします。

手順7: バイアス電流補償抵抗を入れる。 バイポーラ入力オペアンプでは、$+$ 端子とグランドの間に $R_p = R_{in} \parallel R_f$ を挿入すると、両入力のバイアス電流が作るオフセットが相殺されます。残るのはオフセット電流(両入力の差)による分だけで、1 桁以上小さくなります。FET 入力ならバイアス電流が pA 級なので不要で、むしろ $R_p$ の熱雑音が邪魔になるため直結します。

手順8: 位相補償を検討する。 $-$ 端子には、オペアンプの入力容量 $C_{in}$(数 pF)と基板の浮遊容量が付きます。これが $R_{in} \parallel R_f$ と作る極が帰還路に入り、位相余裕を削ってピーキングや発振を招きます。対策は $R_f$ に並列に数 pF の $C_f$ を入れることです。$R_f C_f = (R_{in}\parallel R_f) C_{in}$ となるように選ぶと、帰還路の極とゼロが相殺し、平坦な特性が得られます。副作用として帯域は $1/(2\pi R_f C_f)$ に制限されます。

これらを押さえておけば、反転増幅回路の設計は「抵抗 2 本を決めるだけ」の作業から、「精度・帯域・雑音・安定性の 4 つを同時に満たす最適化」へと格上げされます。

まとめ

本記事では、反転増幅回路を仮想短絡の成立条件から出発して設計式として整理しました。

  • 仮想短絡は負帰還の帰結 — オペアンプの性質ではなく、「負帰還がかかっていて出力が飽和していない」状態の性質です。$|V_+ – V_-| = |V_{out}|/A$ が小さいから成り立ちます
  • 理想解は $V_{out}/V_{in} = -R_f/R_{in}$ — 仮想接地 $V_-=0$ と入力電流ゼロだけから、節点方程式で 3 行で導けます。$R_{in}$ を流れた電流が行き場なく $R_f$ へ抜ける、という電流の連続性が本質です
  • 有限利得の正確解は $-\dfrac{R_f}{R_{in}} \cdot \dfrac{1}{1 + (1+R_f/R_{in})/A}$ — 利得誤差は $\simeq -(1+R_f/R_{in})/A = -1/(A\beta)$ で、ループ利得の逆数です。利得 100 倍・$A_0=10^5$ で $-0.10$ %、利得 1000 倍で $-0.99$ %
  • ノイズゲイン $1+R_f/R_{in}$ が真の主役 — 信号利得 $R_f/R_{in}$ ではなく、これが精度・帯域・雑音・安定性を支配します
  • 入力インピーダンスは $R_{in}$ そのもの — 仮想接地ゆえに $R_f$ は効きません。信号源抵抗 $R_s$ があると利得は $-R_f/(R_{in}+R_s)$ になり、$R_s$ が無視できない場合は非反転構成かバッファ前置に切り替えます
  • 帯域は $f_{-3\text{dB}} = \text{GB}/(1+R_f/R_{in})$ — 一次極モデルから導けます。反転構成の閉ループGB積は $G/(1+G)$ 倍だけ損をし、利得 $-1$ では GB積の半分(1 MHz → 500 kHz)しか出ません
  • スルーレートは帯域とは独立の壁 — 判定は $V_{step} > \text{SR}\cdot\tau$。フルパワー帯域 $f_{FP} = \text{SR}/(2\pi V_p)$ は小信号帯域よりずっと低いことがあり、SR $=1$ V/µs・$V_p=5$ V では 31.8 kHz にすぎません

反転増幅回路は、$Z_f$ と $Z_{in}$ を一般のインピーダンスに置き換えることで、加算回路・積分回路・微分回路・アクティブフィルタ・トランスインピーダンスアンプへと一直線につながります。ここで身につけた「ノイズゲインで考える」という視点は、それらすべてに共通する設計の軸になります。

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