心電図を測定するとき、人体に貼り付けた2つの電極はどちらも同じ電源ノイズ(50 Hz / 60 Hz のハム雑音)を拾います。しかし、心臓が発する微弱な電気信号はわずか数 mV であり、ノイズに埋もれてしまいそうです。どうすれば、2つの電極が共通に受けるノイズを消し去りつつ、電極間のわずかな電位差だけを正確に増幅できるのでしょうか。その答えが差動増幅回路(Differential Amplifier)です。
差動増幅回路は「2つの入力信号の差だけを増幅し、両方に共通する信号はできるだけ増幅しない」回路です。この性質は、電子回路設計において極めて強力な武器になります。
- 計測・センサ信号処理 — 温度センサ、ひずみゲージ、心電図計など、微弱な差動信号をノイズから分離して増幅する計装アンプの中核が差動増幅です
- オペアンプの入力段 — あらゆるオペアンプのICチップ内部を覗くと、最初段に差動増幅回路が配置されています。オペアンプの「2つの入力の差を増幅する」という基本動作は、まさに差動増幅に由来します
- 高速ディジタル通信 — USB、HDMI、イーサネットなどの差動伝送路(差動ペア)の受信端では、差動増幅器がコモンモードノイズを除去しながら信号を復元します
本記事の内容
- 差動増幅回路の基本概念 — 差動信号と同相信号の分解
- 差動利得 $A_d$ と同相利得 $A_c$ の定義と導出
- 同相除去比 CMRR の意味と設計上の重要性
- BJT差動対の小信号解析(半回路法)
- テール電流源の役割 — なぜ同相利得が抑えられるのか
- カレントミラー負荷による差動利得の向上
- MOSFET差動対への拡張
- オペアンプの入力段としての差動増幅
- Pythonによる差動・同相利得の周波数応答とCMRRの可視化
前提知識
この記事を読む前に、以下の記事を読んでおくと理解が深まります。
- バイポーラトランジスタの動作原理 — BJTの基本特性と小信号等価回路
- FET・MOSFETの動作原理 — MOSFETの基本特性と小信号パラメータ
差動増幅回路とは — 2つの入力の差を拾うしくみ
天秤のアナロジー
差動増幅回路を直感的に理解するには、天秤(てんびん)を思い浮かべるとわかりやすいでしょう。天秤の両方の皿に同じ重さの錘(おもり)を置いても、腕は傾きません。しかし、片方の皿にわずかでも多くの錘を置くと、その差に応じて腕が傾きます。ここで「両方に共通して加わる錘」がコモンモード信号(同相信号)に、「両方の差」がディファレンシャル信号(差動信号)に対応します。天秤が検出するのは常に「差」だけであり、共通に加わる量は無視されます。差動増幅回路もまさにこの原理で動作します。
差動信号と同相信号の分解
差動増幅回路には2つの入力 $V_1$ と $V_2$ があります。任意の入力の組み合わせは、次のように「差動成分」と「同相成分」に分解できます。
差動入力信号 $V_d$ は、2つの入力の差として定義されます。
$$ V_d = V_1 – V_2 $$
同相入力信号 $V_c$ は、2つの入力の平均です。
$$ V_c = \frac{V_1 + V_2}{2} $$
この定義から逆に、元の入力を差動・同相成分で表すことができます。
$$ V_1 = V_c + \frac{V_d}{2}, \quad V_2 = V_c – \frac{V_d}{2} $$
この分解が持つ工学的な意味は深いです。環境ノイズ(電源のリプル、電磁誘導による雑音など)は2本の入力線に同じように乗るため、同相成分 $V_c$ に含まれます。一方、測定したい本来の信号は2つの電極間の差に現れるので、差動成分 $V_d$ に含まれます。もし回路が差動成分だけを増幅して同相成分を完全に排除できれば、ノイズに埋もれた微弱信号を取り出せるのです。
では、「差動成分だけを増幅する」とはどういうことか、もう少し定量的に見ていきましょう。
差動利得と同相利得
2つの利得の定義
差動増幅回路の出力 $V_{\text{out}}$ は、差動入力 $V_d$ と同相入力 $V_c$ の両方に応答します。線形回路の重ね合わせの原理から、出力は次のように書けます。
$$ V_{\text{out}} = A_d \, V_d + A_c \, V_c $$
ここで、$A_d$ が差動利得(Differential Gain)、$A_c$ が同相利得(Common-mode Gain)です。
差動利得 $A_d$ は、同相入力がゼロ($V_c = 0$)のときの入力差に対する出力の比です。
$$ A_d = \frac{V_{\text{out}}}{V_d} \bigg|_{V_c=0} $$
同相利得 $A_c$ は、差動入力がゼロ($V_d = 0$、つまり $V_1 = V_2$)のときの共通入力に対する出力の比です。
$$ A_c = \frac{V_{\text{out}}}{V_c} \bigg|_{V_d=0} $$
理想的な差動増幅回路では $A_d$ はできるだけ大きく、$A_c$ はゼロであってほしいわけです。もし $A_c = 0$ ならば、いくら大きなノイズが同相成分として入力されても、出力にはまったく現れません。
理想と現実のギャップ
現実のトランジスタ回路では、完全な対称性を実現することは不可能です。製造プロセスのばらつき、温度勾配、配線レイアウトの非対称性などにより、$A_c$ は厳密にはゼロになりません。そこで、差動利得と同相利得の比を用いて「どれだけ同相成分を排除できるか」を定量的に表す指標が必要になります。
同相除去比 CMRR — 差動増幅回路の品質指標
CMRRの定義
同相除去比(Common-Mode Rejection Ratio, CMRR)は、差動利得 $A_d$ と同相利得 $A_c$ の比の絶対値として定義されます。
$$ \text{CMRR} = \left| \frac{A_d}{A_c} \right| $$
CMRRの値が大きいほど、回路は同相信号(ノイズ)をよく排除できることを意味します。CMRRは非常に大きな値になることが多いため、デシベル(dB)で表すのが一般的です。
$$ \text{CMRR}_{\text{dB}} = 20 \log_{10} \left| \frac{A_d}{A_c} \right| \quad [\text{dB}] $$
CMRRの数値感覚
CMRRの値がどの程度なら十分なのか、具体的な数値感覚を持つことが大切です。
| CMRR (dB) | $|A_d/A_c|$ | 意味 |
|---|---|---|
| 40 dB | 100 | 同相信号が1/100に抑えられる。最低限のレベル |
| 60 dB | 1,000 | 一般的なオペアンプの最低水準 |
| 80 dB | 10,000 | 汎用オペアンプの典型値 |
| 100 dB | 100,000 | 計装アンプ級。精密計測に必要 |
| 120 dB | 1,000,000 | 高精度計装アンプ。生体信号計測に使用 |
例えば、心電図計測では心臓の信号が約 1 mV、電源ノイズの同相電圧が 1 V 程度です。信号対ノイズ比を確保するには、同相成分を信号の1/10 以下、つまり 0.1 mV 以下に抑える必要があります。1 V の同相入力を 0.1 mV に減衰させるには $A_c / A_d \leq 10^{-4}$、すなわち CMRR $\geq$ 80 dB が最低でも必要ということになります。実際の心電計では 100 dB 以上の CMRR を持つ計装アンプが使われます。
CMRRの重要性がわかったところで、次は具体的な回路でこれらの利得がどう決まるのか、BJT(バイポーラトランジスタ)による差動対を解析していきましょう。
BJT差動対の基本構成
回路構成
BJT差動対は、差動増幅回路の最も基本的な実装です。2つの同一特性のNPNトランジスタ $Q_1$ と $Q_2$ のエミッタを共通に接続し、そのエミッタ共通ノードからテール電流 $I_{EE}$ を引き込む電流源(またはテール抵抗 $R_{EE}$)を配置します。
- $Q_1$ のベースに入力 $V_1$、$Q_2$ のベースに入力 $V_2$ を接続
- $Q_1$ のコレクタに負荷抵抗 $R_{C1}$、$Q_2$ のコレクタに負荷抵抗 $R_{C2}$ を接続(理想的には $R_{C1} = R_{C2} = R_C$)
- エミッタ共通ノードから電流源 $I_{EE}$(またはテール抵抗 $R_{EE}$ 経由で $-V_{EE}$ に接続)
対称性を仮定すると、差動入力がゼロ($V_1 = V_2$)のとき、テール電流 $I_{EE}$ は2つのトランジスタに均等に分配されます。
$$ I_{C1} = I_{C2} = \frac{I_{EE}}{2} $$
各トランジスタのコレクタ電圧は $V_{CC} – R_C \cdot I_{EE}/2$ となり、出力の差(差動出力)はゼロです。
差動入力に対する応答の直感
今、入力に差動信号を加えるとしましょう。$V_1$ をわずかに上げ、$V_2$ を同じ量だけ下げます。すると、$Q_1$ のベース-エミッタ間電圧 $V_{BE1}$ が増加して $Q_1$ の電流が増え、逆に $Q_2$ の $V_{BE2}$ が減少して $Q_2$ の電流が減ります。テール電流源が理想的ならば全電流 $I_{EE}$ は一定なので、$Q_1$ で増えた分だけ $Q_2$ で減ります。これはまさに天秤の動きそのものです。
$Q_1$ のコレクタ電流が増えると $R_{C1}$ での電圧降下が増えて $V_{C1}$ が下がり、$Q_2$ のコレクタ電流が減ると $V_{C2}$ が上がります。差動出力 $V_{C2} – V_{C1}$ は入力差 $V_1 – V_2$ に比例して変化し、これが差動増幅の基本メカニズムです。
大信号伝達特性
差動対の大信号特性を定量的に理解するために、トランジスタの指数則を使って解析しましょう。BJTのコレクタ電流は次式で記述されます(活性領域、$\alpha \approx 1$ と近似)。
$$ I_{C} = I_S \exp\left(\frac{V_{BE}}{V_T}\right) $$
ここで $I_S$ は飽和電流、$V_T = kT/q \approx 26\,\text{mV}$(室温)は熱電圧です。
2つのトランジスタの電流比を取ると、共通のエミッタ電位 $V_E$ が消去されます。
$$ \frac{I_{C1}}{I_{C2}} = \frac{I_S \exp(V_{BE1}/V_T)}{I_S \exp(V_{BE2}/V_T)} = \exp\left(\frac{V_{BE1} – V_{BE2}}{V_T}\right) $$
ここで $V_{BE1} – V_{BE2} = V_1 – V_2 = V_d$(両トランジスタのエミッタが共通なので)を代入すると、
$$ \frac{I_{C1}}{I_{C2}} = \exp\left(\frac{V_d}{V_T}\right) $$
また、テール電流の拘束条件 $I_{C1} + I_{C2} = I_{EE}$ を使って連立方程式を解くと、各コレクタ電流が差動入力の関数として求まります。
$I_{C2}$ について解くために、まず上の電流比の式から $I_{C1} = I_{C2} \exp(V_d / V_T)$ と書き、拘束条件に代入します。
$$ I_{C2} \exp\left(\frac{V_d}{V_T}\right) + I_{C2} = I_{EE} $$
$I_{C2}$ でくくると、
$$ I_{C2} = \frac{I_{EE}}{1 + \exp(V_d / V_T)} $$
同様に $I_{C1}$ を求めると、
$$ I_{C1} = \frac{I_{EE}}{1 + \exp(-V_d / V_T)} $$
これらの式を双曲線正接関数($\tanh$)を使って書き直すと、見通しがよくなります。差動出力電流を $\Delta I_C = I_{C1} – I_{C2}$ と定義すると、
$$ \Delta I_C = I_{C1} – I_{C2} = I_{EE} \tanh\left(\frac{V_d}{2V_T}\right) $$
この $\tanh$ 特性が差動対の大信号伝達特性です。$V_d$ が小さい領域($|V_d| \ll V_T$)では $\tanh(x) \approx x$ なので線形的に増幅されますが、$|V_d|$ が $4V_T \approx 100\,\text{mV}$ を超えると、テール電流がほぼ片方のトランジスタに偏り、出力が飽和します。
この大信号特性から2つの重要な知見が得られます。第一に、差動対の線形入力範囲は約 $\pm 2V_T \approx \pm 52\,\text{mV}$ と非常に狭いこと。第二に、テール電流 $I_{EE}$ が出力振幅の上限を決めること。これらの特性は、後で述べるMOSFET差動対と比較する際に重要になります。
大信号特性を踏まえたうえで、次に小信号領域での利得を定量的に導出しましょう。回路解析を効率化する「半回路法」と呼ばれる強力なテクニックを紹介します。
BJT差動対の小信号解析 — 半回路法
半回路法とは
差動対の小信号解析を行うとき、回路の対称性を最大限に活用する方法が半回路法(Half-circuit Analysis)です。差動入力と同相入力のそれぞれについて、対称性を利用して回路を「半分」に分割し、片側だけを解析します。
直感的には、差動対は天秤の「支点」であるエミッタ共通ノードを境に左右対称です。差動信号を加えると、エミッタ共通ノードの電位は動きません(対称性から、一方が上がる分だけ他方が下がるので、平均は変わらない)。したがって、エミッタ共通ノードを仮想接地(AC ground)とみなして、回路を左右に切り離すことができます。
一方、同相信号を加えると、両方の入力が同じ方向に同じ量だけ変化するので、エミッタ共通ノードの電位が変動します。この場合、エミッタ共通ノードはテール電流源(またはテール抵抗 $R_{EE}$)を通じてグラウンドに接続されているとみなし、片側のトランジスタだけを解析します。
差動利得の導出
差動入力のみが加わる場合を考えます。$V_1 = +v_d/2$、$V_2 = -v_d/2$ とすると、対称性からエミッタ共通ノードは仮想接地になります。
片側の半回路は、エミッタ接地増幅回路と同じ形になります。$Q_1$ に着目すると、小信号等価回路において、ベース入力が $v_d/2$、エミッタが接地、コレクタ負荷が $R_C$ です。
BJTの小信号パラメータを導入しましょう。トランスコンダクタンス $g_m$ は、動作点のコレクタ電流 $I_C = I_{EE}/2$ から次のように求まります。
$$ g_m = \frac{I_C}{V_T} = \frac{I_{EE}}{2V_T} $$
小信号入力抵抗 $r_\pi$ は、
$$ r_\pi = \frac{\beta}{g_m} = \frac{2\beta V_T}{I_{EE}} $$
ここで $\beta$ はトランジスタの電流増幅率です。
半回路の出力電圧($Q_1$ のコレクタ)は次のようになります。
$$ v_{o1} = -g_m \frac{v_d}{2} \cdot R_C $$
対称性から $Q_2$ 側は符号が逆になります。
$$ v_{o2} = +g_m \frac{v_d}{2} \cdot R_C $$
差動出力 $v_{od} = v_{o2} – v_{o1}$ を計算すると、
$$ v_{od} = v_{o2} – v_{o1} = g_m \frac{v_d}{2} \cdot R_C – \left(-g_m \frac{v_d}{2} \cdot R_C\right) = g_m R_C \, v_d $$
したがって、差動利得は、
$$ \boxed{A_d = \frac{v_{od}}{v_d} = g_m R_C} $$
この結果は明快です。差動利得は単一のエミッタ接地増幅回路の利得 $g_m R_C$ と等しくなります。差動出力を取ることで、半回路の利得が2倍になるのではないかと思うかもしれませんが、入力も $v_d/2$ ずつに分割されるため、ちょうど $g_m R_C$ になります。
もし片側出力(シングルエンド出力)だけを取り出す場合は、差動利得は半分の $g_m R_C / 2$ になることに注意してください。
同相利得の導出
次に、同相入力のみが加わる場合を考えます。$V_1 = V_2 = v_c$ とすると、対称性から回路は完全に左右対称に動作します。つまり、$I_{C1}$ と $I_{C2}$ は同じ量だけ変化しようとします。
ここでテール電流源の役割が重要になります。理想的な電流源(出力インピーダンス無限大)なら、テール電流は一定に保たれます。すると、両方のトランジスタが同じ量だけ電流を増やそうとしても、テール電流は変わらないので、結局どちらの電流も変化しません。つまり、理想電流源の場合 $A_c = 0$ です。
しかし、現実にはテール電流源の出力インピーダンスは有限($R_{EE}$)です。同相入力によってエミッタ共通ノードの電位が変動し、テール電流がわずかに変化します。この変化が同相利得を生み出します。
半回路で解析しましょう。同相入力の場合、対称性から2つのトランジスタは同じ電流変化をするので、テール抵抗 $R_{EE}$ には変化電流の合計が流れます。片側のトランジスタから見ると、エミッタに接続されている等価抵抗は $2R_{EE}$ です(もう一方のトランジスタ側にも同じ電流が流れるため、電流源を2つのトランジスタで共有する形になる)。
片側の半回路はエミッタに $2R_{EE}$ が付いたエミッタ接地回路になります。ここで $g_m \cdot 2R_{EE} \gg 1$ と仮定すると(通常成立する)、片側の出力は次のように近似できます。
$$ v_{o1} = v_{o2} \approx -\frac{R_C}{2R_{EE}} \, v_c $$
差動出力を取る場合、$v_{od} = v_{o2} – v_{o1} = 0$ となります(両方同じ値なので差はゼロ)。しかし、シングルエンド出力(片側のコレクタからグラウンドへの出力)を取る場合は、
$$ A_c = \frac{v_{o1}}{v_c} \approx -\frac{R_C}{2R_{EE}} $$
となります。この結果から、同相利得を小さくするには $R_{EE}$ をできるだけ大きくする、つまりテール電流源の出力インピーダンスを高くすればよいことがわかります。
CMRR の式
シングルエンド出力の場合のCMRRを求めましょう。差動利得 $A_d = g_m R_C / 2$(シングルエンド)、同相利得 $A_c = -R_C/(2R_{EE})$ より、
$$ \text{CMRR} = \left|\frac{A_d}{A_c}\right| = \frac{g_m R_C / 2}{R_C / (2R_{EE})} = g_m R_{EE} $$
$$ \boxed{\text{CMRR} = g_m R_{EE}} $$
この結果は非常にシンプルで、かつ設計指針として強力です。CMRRを高くするには、$g_m$ を大きくする(バイアス電流を増やす)か、$R_{EE}$ を大きくする(テール電流源の出力インピーダンスを高くする)かのいずれかです。
差動出力を取る場合は、原理的に $A_c = 0$ なので CMRR は無限大になります。ただし、これは回路が完全に対称であるという仮定のもとでの結果です。現実のトランジスタのミスマッチ($g_{m1} \neq g_{m2}$、$R_{C1} \neq R_{C2}$)があると、差動出力でもゼロにはならない同相成分が漏れ出します。
ここまでの解析で、テール電流源の出力インピーダンスが CMRR を支配することがわかりました。では、どうすれば高い出力インピーダンスのテール電流源を実現できるのでしょうか。次のセクションでは、テール電流源の設計について掘り下げます。
テール電流源の役割と設計
なぜテール電流源が必要か
差動対にとって、テール電流源は「天秤の支点を固定する」役割を果たします。もしテール電流源の代わりに単なる抵抗 $R_{EE}$ を使うと、出力インピーダンスはその抵抗値 $R_{EE}$ そのものになります。大きな $R_{EE}$ を使えば同相利得は下がりますが、$R_{EE}$ が大きいと必要な電源電圧 $V_{EE}$ も大きくなるため、実用上の限界があります。
例えば、$I_{EE} = 1\,\text{mA}$、$R_{EE} = 100\,\text{k}\Omega$ とすると、$R_{EE}$ での電圧降下は $100\,\text{V}$ にもなり、これは現実的ではありません。
トランジスタ電流源
この問題を解決するのが、トランジスタを使った能動電流源です。BJTで構成した電流源の小信号出力インピーダンスは $r_o$(アーリー抵抗)で、典型的には $50\,\text{k}\Omega$〜$500\,\text{k}\Omega$ です。わずか数Vのバイアス電圧で、抵抗では実現できないほどの高インピーダンスが得られます。
BJTの出力インピーダンスは、アーリー電圧 $V_A$ を用いて次のように表せます。
$$ r_o = \frac{V_A + V_{CE}}{I_C} \approx \frac{V_A}{I_C} $$
$V_A = 100\,\text{V}$、$I_C = 1\,\text{mA}$ ならば $r_o = 100\,\text{k}\Omega$ です。
カスコード電流源
さらに高いインピーダンスが必要な場合は、カスコード構成のテール電流源を使います。カスコード電流源の出力インピーダンスは次のようになります。
$$ R_{\text{out,cascode}} \approx g_m r_o^2 $$
典型的な値で $g_m = 40\,\text{mA/V}$、$r_o = 100\,\text{k}\Omega$ とすると、$R_{\text{out,cascode}} \approx 400\,\text{M}\Omega$ に達します。これにより、CMRRは劇的に改善されます。
テール電流源の高インピーダンス化がCMRR向上に直結することを確認しました。しかし、差動利得そのものを高くする方法はないのでしょうか。次に、コレクタ側の負荷を工夫して差動利得を大幅に向上させるカレントミラー負荷について解説します。
カレントミラー負荷 — 差動利得を飛躍的に高める
抵抗負荷の限界
先ほどの解析では、$Q_1$、$Q_2$ のコレクタ負荷として抵抗 $R_C$ を使いました。差動利得は $A_d = g_m R_C$ でした。$A_d$ を大きくするには $R_C$ を大きくしたいのですが、抵抗での電圧降下 $R_C \cdot I_C$ が大きくなると、トランジスタの動作点が飽和領域に押しやられてしまいます。
電源電圧 $V_{CC}$ の制約のもとで、$R_C$ を大きくするには $I_C$ を下げなければなりませんが、$I_C$ を下げると $g_m = I_C/V_T$ も下がるため、$g_m R_C$ 全体としてはそれほど大きくなりません。
カレントミラーを負荷に使う発想
この限界を打破するのが、カレントミラー(Current Mirror)をコレクタ負荷として使う方法です。カレントミラーは能動負荷として機能し、非常に高い出力インピーダンスを持ちます。
具体的な構成を説明しましょう。PNPトランジスタ $Q_3$ と $Q_4$ でカレントミラーを構成し、$Q_3$ を $Q_1$ のコレクタに、$Q_4$ を $Q_2$ のコレクタに接続します。$Q_3$ はダイオード接続(ベースとコレクタを短絡)してミラーの基準側とし、$Q_4$ がミラー出力側になります。
動作原理
差動信号が入力されると、$Q_1$ の電流が $\Delta i$ だけ増え、$Q_2$ の電流が $\Delta i$ だけ減ります。ダイオード接続された $Q_3$ は $Q_1$ の電流増加 $\Delta i$ を受け入れ、カレントミラーにより $Q_4$ も同じ $\Delta i$ だけ電流を増やそうとします。
ところが、$Q_2$ の電流は $\Delta i$ だけ減っています。$Q_4$ が押し込もうとする電流と $Q_2$ が引き込む電流の不一致分 $2\Delta i$ が、出力ノード($Q_2$ と $Q_4$ の接続点)に現れます。この電流 $2\Delta i$ が出力インピーダンスに流れて大きな出力電圧を生み出します。
つまり、カレントミラー負荷は差動の電流変化を1つの出力ノードに集約する役割を果たすのです。これにより、シングルエンド出力でも差動出力と同等の利得が得られます。
カレントミラー負荷付き差動利得
出力ノードにおける等価抵抗は、$Q_2$ の出力抵抗 $r_{o2}$ と $Q_4$ の出力抵抗 $r_{o4}$ の並列接続です。
$$ R_{\text{out}} = r_{o2} \| r_{o4} = \frac{r_{o2} \cdot r_{o4}}{r_{o2} + r_{o4}} $$
差動利得は次のようになります。
$$ \boxed{A_d = g_m (r_{o2} \| r_{o4})} $$
$r_{o2} = r_{o4} = r_o$ と仮定すると、$A_d = g_m r_o / 2$ です。$g_m = 40\,\text{mA/V}$、$r_o = 100\,\text{k}\Omega$ ならば $A_d = 2{,}000$(66 dB)にもなります。抵抗負荷では $R_C = 10\,\text{k}\Omega$ でも $A_d = 400$ 程度でしたから、大幅な改善です。
この高い利得こそ、オペアンプの入力段が差動対+カレントミラー負荷を採用する理由です。ここで、BJTの差動対だけでなく、MOSFET差動対についても理解しておくことが重要です。現代のCMOSオペアンプではMOSFET差動対が主流だからです。
MOSFET差動対
MOSFETとBJTの違い
MOSFETの差動対は、BJT差動対とトポロジーは同一ですが、デバイス特性の違いから利得の式が変わります。最大の違いは、BJTの $I_C$-$V_{BE}$ 特性が指数関数なのに対し、MOSFETのドレイン電流 $I_D$ はゲート-ソース間電圧 $V_{GS}$ の2乗に比例する(飽和領域で)ことです。
$$ I_D = \frac{1}{2} \mu_n C_{ox} \frac{W}{L} (V_{GS} – V_{th})^2 = \frac{1}{2} k_n (V_{GS} – V_{th})^2 $$
ここで $k_n = \mu_n C_{ox} W/L$ はトランスコンダクタンスパラメータ、$V_{th}$ はしきい値電圧です。
MOSFETのトランスコンダクタンス
MOSFETのトランスコンダクタンスは、
$$ g_m = \frac{\partial I_D}{\partial V_{GS}} = k_n (V_{GS} – V_{th}) = \sqrt{2 k_n I_D} $$
BJTの $g_m = I_C/V_T$ と比較すると、同じバイアス電流でMOSFETの $g_m$ はBJTよりも通常小さくなります。例えば、$I_D = 0.5\,\text{mA}$ のとき、BJTなら $g_m = 0.5/0.026 \approx 19.2\,\text{mA/V}$ ですが、MOSFETでは $k_n$ やオーバードライブ電圧 $V_{GS} – V_{th}$ の値に依存し、典型的には $g_m \approx 1$〜$5\,\text{mA/V}$ 程度になります。
MOSFET差動対の利得
差動利得の式の形はBJTと同じで、次のようになります。
抵抗負荷の場合:
$$ A_d = g_m R_D $$
カレントミラー負荷の場合:
$$ A_d = g_m (r_{o,n} \| r_{o,p}) $$
ここで $R_D$ はドレイン負荷抵抗、$r_{o,n}$ はNMOSの出力抵抗、$r_{o,p}$ はPMOS(カレントミラー負荷)の出力抵抗です。
MOSFET差動対の線形入力範囲
BJTの差動対は $\tanh$ 特性により線形入力範囲が $\pm 2V_T \approx \pm 52\,\text{mV}$ と狭いのに対し、MOSFET差動対は2乗特性のため、線形入力範囲が広くなります。
MOSFET差動対の大信号伝達特性を導出しましょう。テール電流 $I_{SS}$ の拘束条件 $I_{D1} + I_{D2} = I_{SS}$ と、2乗則を用いると、
$$ \Delta I_D = I_{D1} – I_{D2} = \frac{k_n v_d}{2} \sqrt{\frac{4I_{SS}}{k_n} – v_d^2} $$
ただし $|v_d| \leq \sqrt{2I_{SS}/k_n} = \sqrt{2} (V_{GS} – V_{th})$ の範囲内に限ります。
オーバードライブ電圧 $V_{OV} = V_{GS} – V_{th}$ を大きく設定すれば、線形入力範囲を広げられます。例えば $V_{OV} = 0.3\,\text{V}$ ならば、線形範囲は $\pm V_{OV}/\sqrt{2} \approx \pm 0.21\,\text{V}$ 程度であり、BJTの4倍以上です。これはMOSFET差動対の利点の一つですが、その代償として $g_m$ が小さくなり、利得が低下します。
MOSFETの利点と設計のトレードオフ
MOSFET差動対の利点をまとめると、
- ゲート電流がゼロ — 入力バイアス電流が事実上ゼロなので、高インピーダンスセンサとの接続に適します
- 広い線形入力範囲 — オーバードライブ電圧の設定により調整可能
- CMOS集積化の容易さ — NMOSとPMOSを同一チップに集積でき、カレントミラー負荷も自然に構成できます
一方、BJT差動対の利点は、
- 高い $g_m$ — 同じバイアス電流で大きな利得が得られます
- $g_m$ のプロセス依存性が小さい — $g_m = I_C/V_T$ は物理定数と電流だけで決まり、トランジスタの寸法に依存しません
MOSFETとBJTの特性比較がわかったところで、いよいよ本記事の最終目標であるオペアンプとの接続について述べましょう。差動増幅回路がどのようにしてオペアンプの心臓部となるのかを見ていきます。
オペアンプの入力段としての差動増幅
オペアンプ内部の全体像
オペアンプのIC内部は、一般的に次の3段構成になっています。
- 入力段(差動増幅段) — 差動対 + カレントミラー負荷。高い入力インピーダンスとCMRR、大きな電圧利得を提供
- 中間段(利得段) — エミッタ接地(またはソース接地)増幅回路。さらなる電圧利得を追加
- 出力段 — プッシュプル回路(エミッタフォロワ)。低出力インピーダンスで負荷を駆動
この中で入力段は最も重要です。オペアンプの入力インピーダンス、入力オフセット電圧、入力バイアス電流、CMRR、入力雑音といった仕様は、ほぼすべて入力段の差動増幅回路の設計で決まります。
入力段の典型的な構成
汎用BJTオペアンプ(例えばLM741)の入力段は、NPN差動対 + PNPカレントミラー負荷という構成です。先ほど解析したカレントミラー負荷付き差動対がそのまま使われています。
CMOSオペアンプ(例えばLMC6482)では、PMOS差動対 + NMOSカレントミラー負荷という構成がよく使われます。PMOSを入力に使う理由は、入力同相範囲にグラウンドを含められること(NMOSでは困難)と、PMOSの $1/f$ 雑音がNMOSより小さいことです。
入力段が決めるオペアンプの仕様
差動増幅段の特性がオペアンプの性能指標に直結する関係を見てみましょう。
入力オフセット電圧 $V_{OS}$ は、差動対の2つのトランジスタのミスマッチに起因します。BJTの場合、$V_{OS}$ は飽和電流のミスマッチ $\Delta I_S / I_S$ と負荷抵抗のミスマッチ $\Delta R_C / R_C$ から生じます。
$$ V_{OS} = V_T \ln\left(\frac{I_{S1}}{I_{S2}}\right) + \frac{I_{EE}}{2} \Delta R_C \approx V_T \frac{\Delta I_S}{I_S} + \frac{I_{EE}}{2} \Delta R_C $$
集積回路では、隣接するトランジスタペアのマッチングが良好なため、$V_{OS}$ は典型的に 1〜5 mV 程度に抑えられます。
入力バイアス電流 $I_B$ は、BJT差動対の場合はベース電流 $I_C/\beta$ に等しくなります。$I_{EE} = 20\,\mu\text{A}$、$\beta = 200$ ならば $I_B = 50\,\text{nA}$ です。MOSFET入力のオペアンプでは、ゲート電流がほぼゼロなので $I_B$ は pA オーダーまで下がります。
CMRR は先に導出したとおり、差動対のCMRRとテール電流源のインピーダンスで決まります。入力段のCMRRが80 dB、中間段の同相排除効果と合わせて、オペアンプ全体のCMRRは80〜120 dB に達します。
差動増幅回路の理論的解析が一通り完了しました。次のセクションでは、ここまでの理論をPythonで実装し、差動利得・同相利得・CMRRの振る舞いを数値的に可視化して理解を深めましょう。
Pythonでの実装 — 利得とCMRRの可視化
大信号伝達特性の可視化
まず、BJT差動対とMOSFET差動対の大信号伝達特性を比較するコードを書きましょう。BJTの $\tanh$ 特性とMOSFETの2乗則特性を並べて描画することで、線形入力範囲の違いを視覚的に確認します。
import numpy as np
import matplotlib.pyplot as plt
# パラメータ設定
VT = 26e-3 # 熱電圧 (V)
IEE = 1e-3 # テール電流 (A)
kn = 2e-3 # MOSFET トランスコンダクタンスパラメータ (A/V^2)
Vov = 0.3 # MOSFET オーバードライブ電圧 (V)
# 差動入力電圧の範囲
vd = np.linspace(-0.5, 0.5, 1000)
# BJT差動対: tanh特性
delta_Ic_bjt = IEE * np.tanh(vd / (2 * VT))
# MOSFET差動対: 2乗特性
vd_max_mos = np.sqrt(2 * IEE / kn) # 最大差動入力
delta_Id_mos = np.zeros_like(vd)
mask = np.abs(vd) <= vd_max_mos
delta_Id_mos[mask] = (kn * vd[mask] / 2) * np.sqrt(4 * IEE / kn - vd[mask]**2)
delta_Id_mos[vd > vd_max_mos] = IEE
delta_Id_mos[vd < -vd_max_mos] = -IEE
# 正規化(IEEで割って比較しやすくする)
fig, ax = plt.subplots(figsize=(10, 6))
ax.plot(vd * 1e3, delta_Ic_bjt / IEE, 'b-', linewidth=2, label='BJT (tanh)')
ax.plot(vd * 1e3, delta_Id_mos / IEE, 'r--', linewidth=2, label='MOSFET (square-law)')
ax.axhline(y=0, color='gray', linewidth=0.5)
ax.axvline(x=0, color='gray', linewidth=0.5)
# 線形領域の表示
ax.axvspan(-2 * VT * 1e3, 2 * VT * 1e3, alpha=0.15, color='blue', label=f'BJT linear range (±{2*VT*1e3:.0f} mV)')
ax.axvspan(-Vov / np.sqrt(2) * 1e3, Vov / np.sqrt(2) * 1e3, alpha=0.10, color='red', label=f'MOSFET linear range (±{Vov/np.sqrt(2)*1e3:.0f} mV)')
ax.set_xlabel('Differential Input $v_d$ (mV)', fontsize=12)
ax.set_ylabel('$\\Delta I / I_{EE}$', fontsize=12)
ax.set_title('Large-Signal Transfer Characteristic of Differential Pair', fontsize=13)
ax.legend(fontsize=10, loc='lower right')
ax.set_xlim(-500, 500)
ax.set_ylim(-1.2, 1.2)
ax.grid(True, alpha=0.3)
plt.tight_layout()
plt.show()
上のグラフから、以下の重要な特徴が読み取れます。
- BJT差動対は急峻な遷移を持つ — 入力が $\pm 52\,\text{mV}$ を超えるとほぼ飽和に達します。これは $\tanh$ 関数の性質に由来し、BJTの指数的な $I_C$-$V_{BE}$ 特性を反映しています
- MOSFET差動対は緩やかに遷移する — 線形領域が $\pm 212\,\text{mV}$ と広く、飽和への移行もなめらかです。2乗特性の結果として、入力範囲の広さと低 $g_m$ のトレードオフが視覚的に確認できます
- どちらも最終的に $\pm I_{EE}$ で飽和する — テール電流の拘束により、差動電流の最大値はテール電流で制限されます
差動利得と同相利得の周波数応答
次に、差動利得と同相利得の周波数特性を計算し、CMRRが周波数によってどう変化するかを可視化します。ここでは、テール電流源の出力にパラサイティック容量 $C_{EE}$ が並列に存在する現実的なモデルを考えます。高周波では $C_{EE}$ のインピーダンスが下がるため、テール電流源の実効インピーダンスが低下し、同相利得が増加(CMRRが悪化)します。
import numpy as np
import matplotlib.pyplot as plt
# 回路パラメータ
gm = 20e-3 # トランスコンダクタンス (S) [BJT: IEE/(2*VT)]
RC = 10e-3 / gm # コレクタ負荷抵抗 = 500 Ω (Ad=gm*RC=10)
REE = 500e3 # テール電流源の出力抵抗 (Ω)
CEE = 2e-12 # テール電流源のパラサイティック容量 (F)
CL = 5e-12 # 負荷容量 (F)
# 周波数範囲
freq = np.logspace(0, 9, 2000) # 1 Hz ~ 1 GHz
omega = 2 * np.pi * freq
s = 1j * omega
# 差動利得 (シングルエンド): Ad = gm * RC / 2, 負荷容量で高域が減衰
# 差動モード: エミッタは仮想接地 → テール電流源は無関係
# 高域のポール: fp_d = 1 / (2*pi*RC*CL)
ZL_d = RC / (1 + s * RC * CL)
Ad = gm * ZL_d / 2
# 同相利得 (シングルエンド): Ac ≈ -RC / (2*ZEE)
# テール電流源のインピーダンス: ZEE = REE || (1/sCEE)
ZEE = REE / (1 + s * REE * CEE)
Ac = -RC / (2 * ZEE)
# CMRR = |Ad / Ac|
CMRR = np.abs(Ad / Ac)
fig, axes = plt.subplots(3, 1, figsize=(10, 12))
# 差動利得
axes[0].semilogx(freq, 20 * np.log10(np.abs(Ad)), 'b-', linewidth=2)
axes[0].set_ylabel('$|A_d|$ (dB)', fontsize=12)
axes[0].set_title('Differential Gain', fontsize=13)
axes[0].grid(True, which='both', alpha=0.3)
axes[0].set_xlim(1, 1e9)
# 同相利得
axes[1].semilogx(freq, 20 * np.log10(np.abs(Ac)), 'r-', linewidth=2)
axes[1].set_ylabel('$|A_c|$ (dB)', fontsize=12)
axes[1].set_title('Common-Mode Gain', fontsize=13)
axes[1].grid(True, which='both', alpha=0.3)
axes[1].set_xlim(1, 1e9)
# CMRR
axes[2].semilogx(freq, 20 * np.log10(CMRR), 'g-', linewidth=2)
axes[2].set_ylabel('CMRR (dB)', fontsize=12)
axes[2].set_xlabel('Frequency (Hz)', fontsize=12)
axes[2].set_title('Common-Mode Rejection Ratio', fontsize=13)
axes[2].grid(True, which='both', alpha=0.3)
axes[2].set_xlim(1, 1e9)
plt.tight_layout()
plt.show()
このグラフから、次の3つの重要なポイントが読み取れます。
- 差動利得は低周波でフラットで、高周波で減衰する — ポール周波数 $f_p = 1/(2\pi R_C C_L)$ を超えると $-20\,\text{dB/dec}$ で減衰します。これは負荷容量によるRC時定数に起因します
- 同相利得は低周波で非常に小さく、高周波で増加する — テール電流源のパラサイティック容量 $C_{EE}$ のインピーダンスが高周波で低下するため、$Z_{EE}$ が小さくなり、同相利得が増加します。ゼロ点は $f_z = 1/(2\pi R_{EE} C_{EE})$ にあります
- CMRRは低周波で最大値を取り、高周波で劣化する — 低周波では $\text{CMRR} \approx g_m R_{EE} = 10{,}000$(80 dB)ですが、高周波ではテール電流源の実効インピーダンス低下と差動利得の減衰の両方の影響で急速に悪化します
この「高周波でCMRRが劣化する」という特性は、高速信号処理回路の設計において極めて重要です。テール電流源のパラサイティック容量を最小化するレイアウト設計が、高周波CMRRの改善に直結します。
カレントミラー負荷の効果
最後に、抵抗負荷とカレントミラー負荷で差動利得がどれだけ異なるかを比較するコードを実装します。
import numpy as np
import matplotlib.pyplot as plt
# 回路パラメータ
IEE = 1e-3 # テール電流 (A)
VT = 26e-3 # 熱電圧 (V)
gm = IEE / (2 * VT) # トランスコンダクタンス ≈ 19.2 mA/V
VA = 100 # アーリー電圧 (V)
ro = VA / (IEE / 2) # 出力抵抗 = 200 kΩ
# ケース1: 抵抗負荷
RC_values = [1e3, 5e3, 10e3, 20e3] # コレクタ負荷抵抗
# ケース2: カレントミラー負荷
# Ad = gm * (ro_n || ro_p), ro_n = ro_p = ro と仮定
Ad_mirror = gm * (ro / 2) # = gm * ro / 2
# 利得の比較
fig, axes = plt.subplots(1, 2, figsize=(14, 5))
# 左: 抵抗負荷での差動利得
RC_range = np.logspace(2, 5, 500)
Ad_resistor = gm * RC_range
VCC = 5.0
# 飽和しない条件: RC * IC < VCC - VCE_sat (VCE_sat ≈ 0.3V)
IC = IEE / 2
RC_max = (VCC - 0.3) / IC # ≈ 9.4 kΩ
axes[0].loglog(RC_range / 1e3, Ad_resistor, 'b-', linewidth=2, label='$A_d = g_m R_C$')
axes[0].axvline(x=RC_max / 1e3, color='r', linestyle='--', linewidth=1.5,
label=f'$R_C$ max (saturation limit) = {RC_max/1e3:.1f} kΩ')
axes[0].axhline(y=Ad_mirror, color='g', linestyle='-.', linewidth=2,
label=f'Current mirror load: $A_d$ = {Ad_mirror:.0f}')
axes[0].set_xlabel('$R_C$ (kΩ)', fontsize=12)
axes[0].set_ylabel('$|A_d|$', fontsize=12)
axes[0].set_title('Differential Gain: Resistor vs Current Mirror Load', fontsize=12)
axes[0].legend(fontsize=10)
axes[0].grid(True, which='both', alpha=0.3)
axes[0].set_xlim(0.1, 100)
# 右: CMRRのテール電流源インピーダンス依存性
REE_range = np.logspace(3, 8, 500)
CMRR = gm * REE_range
CMRR_dB = 20 * np.log10(CMRR)
axes[1].semilogx(REE_range / 1e3, CMRR_dB, 'g-', linewidth=2)
axes[1].set_xlabel('$R_{EE}$ (kΩ)', fontsize=12)
axes[1].set_ylabel('CMRR (dB)', fontsize=12)
axes[1].set_title('CMRR vs Tail Current Source Impedance', fontsize=12)
axes[1].grid(True, which='both', alpha=0.3)
axes[1].set_xlim(1, 1e5)
# 典型的なテール電流源の種類を注釈
axes[1].axvline(x=10, color='orange', linestyle=':', linewidth=1.5)
axes[1].text(12, 35, 'Resistor\n(10 kΩ)', fontsize=9, color='orange')
axes[1].axvline(x=200, color='purple', linestyle=':', linewidth=1.5)
axes[1].text(250, 55, 'Simple\ncurrent\nmirror', fontsize=9, color='purple')
axes[1].axvline(x=100e3, color='brown', linestyle=':', linewidth=1.5)
axes[1].text(120e3, 75, 'Cascode\ncurrent\nsource', fontsize=9, color='brown')
plt.tight_layout()
plt.show()
上のグラフから、次の知見が得られます。
- 抵抗負荷では利得に実用上の上限がある — 左図で赤い破線が示すように、電源電圧によりコレクタ抵抗 $R_C$ には上限があります。$V_{CC} = 5\,\text{V}$、$I_C = 0.5\,\text{mA}$ のとき $R_C \leq 9.4\,\text{k}\Omega$、すなわち $A_d \leq 181$ 程度です。一方、カレントミラー負荷(緑の一点鎖線)なら $A_d \approx 1{,}920$ と桁違いの利得が得られます
- CMRRはテール電流源のインピーダンスに対してリニアに(dBスケールで直線的に)向上する — 右図のとおり、単純な抵抗(10 kΩ)では CMRR $\approx$ 46 dB にすぎませんが、シンプルなカレントミラー(200 kΩ)で 72 dB、カスコード電流源(100 MΩ)なら 126 dB に達します
- 利得とCMRRは独立に設計できる — 差動利得は負荷の選択(抵抗 vs カレントミラー)で、CMRRはテール電流源の種類で、それぞれ独立に最適化できます。この設計の自由度が差動増幅回路の強みです
総合シミュレーション — テール電流源による CMRR 改善の可視化
最後に、同相入力と差動入力を同時に加えたときの出力波形を比較するシミュレーションを行い、CMRRの違いが実際の波形にどう現れるかを確認します。
import numpy as np
import matplotlib.pyplot as plt
# 時間軸
fs = 100e3 # サンプリング周波数
t = np.linspace(0, 5e-3, int(fs * 5e-3))
# 入力信号
f_signal = 1e3 # 差動信号周波数 (1 kHz)
f_noise = 50 # 同相ノイズ周波数 (50 Hz 電源ノイズ)
Vd_amp = 1e-3 # 差動信号振幅 (1 mV)
Vc_amp = 1.0 # 同相ノイズ振幅 (1 V)
v_d = Vd_amp * np.sin(2 * np.pi * f_signal * t)
v_c = Vc_amp * np.sin(2 * np.pi * f_noise * t)
# 入力波形
v1 = v_c + v_d / 2
v2 = v_c - v_d / 2
# ケース1: 低CMRR (40 dB → Ad/Ac = 100)
Ad1 = 100
Ac1 = 1.0 # Ad/Ac = 100
v_out1 = Ad1 * v_d + Ac1 * v_c
# ケース2: 高CMRR (80 dB → Ad/Ac = 10000)
Ad2 = 100
Ac2 = 0.01 # Ad/Ac = 10000
v_out2 = Ad2 * v_d + Ac2 * v_c
# ケース3: 非常に高いCMRR (120 dB → Ad/Ac = 1000000)
Ad3 = 100
Ac3 = 1e-4 # Ad/Ac = 1000000
v_out3 = Ad3 * v_d + Ac3 * v_c
fig, axes = plt.subplots(4, 1, figsize=(12, 12))
# 入力波形
axes[0].plot(t * 1e3, v1 * 1e3, 'b-', linewidth=1, alpha=0.7, label='$V_1$')
axes[0].plot(t * 1e3, v2 * 1e3, 'r-', linewidth=1, alpha=0.7, label='$V_2$')
axes[0].set_ylabel('Input (mV)', fontsize=11)
axes[0].set_title('Input Signals: 1 mV differential (1 kHz) + 1 V common-mode (50 Hz)', fontsize=12)
axes[0].legend(fontsize=10)
axes[0].grid(True, alpha=0.3)
# CMRR = 40 dB
axes[1].plot(t * 1e3, v_out1 * 1e3, 'b-', linewidth=1.5)
axes[1].set_ylabel('Output (mV)', fontsize=11)
axes[1].set_title('Output: CMRR = 40 dB — Signal buried in noise', fontsize=12)
axes[1].grid(True, alpha=0.3)
# CMRR = 80 dB
axes[2].plot(t * 1e3, v_out2 * 1e3, 'g-', linewidth=1.5)
axes[2].set_ylabel('Output (mV)', fontsize=11)
axes[2].set_title('Output: CMRR = 80 dB — Signal visible, some noise remains', fontsize=12)
axes[2].grid(True, alpha=0.3)
# CMRR = 120 dB
axes[3].plot(t * 1e3, v_out3 * 1e3, 'r-', linewidth=1.5)
axes[3].set_ylabel('Output (mV)', fontsize=11)
axes[3].set_xlabel('Time (ms)', fontsize=11)
axes[3].set_title('Output: CMRR = 120 dB — Clean signal extraction', fontsize=12)
axes[3].grid(True, alpha=0.3)
plt.tight_layout()
plt.show()
この波形シミュレーションから、CMRRの実際的な意味が明確になります。
- CMRR = 40 dB の場合 — 1 mV の差動信号に対して同相ノイズが 1 V $\times$ 1.0 = 1 V もの出力となり、信号は完全にノイズに埋もれています。増幅された差動信号(100 mV)に対してノイズ成分が1 V と10倍も大きく、この回路では信号を取り出すことができません
- CMRR = 80 dB の場合 — 同相ノイズの出力寄与は $1\,\text{V} \times 0.01 = 10\,\text{mV}$ に抑えられ、増幅された差動信号 100 mV がはっきりと見えます。ただし、ノイズ成分もまだ無視できない大きさで残っています
- CMRR = 120 dB の場合 — 同相ノイズの出力寄与はわずか $1\,\text{V} \times 10^{-4} = 0.1\,\text{mV}$ となり、100 mV の信号に対してほぼ無視できます。クリーンな信号抽出が実現されています
この結果は、心電図のような生体信号計測で CMRR $\geq$ 100 dB が求められる理由を如実に示しています。
設計パラメータと性能のトレードオフ
ここまでの解析を踏まえて、差動増幅回路の設計において考慮すべきトレードオフを整理しておきましょう。
テール電流 $I_{EE}$ のトレードオフ
テール電流を増やすと $g_m$ が増えて差動利得が向上しますが、同時に消費電力が増え、トランジスタの動作点が変わります。また、BJT差動対では $g_m = I_{EE}/(2V_T)$ なので利得を上げやすいですが、MOSFET差動対では $g_m = \sqrt{2k_n I_{EE}/2}$ であり、$g_m$ の増加は $I_{EE}$ の平方根にしか比例しません。
| パラメータ | $I_{EE}$ 増加の効果 |
|---|---|
| $g_m$ (BJT) | 比例して増加 |
| $g_m$ (MOSFET) | $\sqrt{I_{EE}}$ で増加 |
| 差動利得 $A_d$ | $g_m$ に比例して増加 |
| 消費電力 | 比例して増加 |
| テール電流源の $r_o$ | $V_A/I_{EE}$ で反比例して減少 |
| CMRR (テール抵抗) | $g_m R_{EE}$ は変わらない($g_m$ 増加 vs 電圧制約で $R_{EE}$ 減少) |
オーバードライブ電圧のトレードオフ(MOSFET)
MOSFETの場合、オーバードライブ電圧 $V_{OV} = V_{GS} – V_{th}$ の選択も重要な設計パラメータです。
- $V_{OV}$ を大きくすると、線形入力範囲が広がるが、$g_m = 2I_D/V_{OV}$ が小さくなり、利得が低下する
- $V_{OV}$ を小さくすると、利得は上がるが、線形入力範囲が狭くなり、ノイズ耐性も劣化する
高精度計測用途では小さな $V_{OV}$(高利得を優先)、広帯域通信用途では大きな $V_{OV}$(広い線形範囲を優先)を選ぶのが一般的な設計指針です。
これらのトレードオフは、実際のオペアンプ設計でも同じく重要であり、入力段の設計がオペアンプ全体の性能を大きく左右する理由がここにあります。
まとめ
本記事では、差動増幅回路の動作原理から回路解析、そしてオペアンプの入力段としての役割までを体系的に解説しました。
- 差動増幅回路は「2つの入力の差だけを増幅する」回路であり、差動信号と同相信号を分離することでノイズ耐性を実現する
- 差動利得 $A_d$ と同相利得 $A_c$ の比が CMRR であり、これが差動増幅回路の品質を表す最重要指標である。$\text{CMRR} = g_m R_{EE}$ の関係から、テール電流源の出力インピーダンスがCMRRを支配する
- BJT差動対は半回路法で効率的に解析でき、差動利得 $A_d = g_m R_C$、シングルエンドCMRR $= g_m R_{EE}$ が導かれる。大信号特性は $\tanh$ 関数で記述され、線形入力範囲は $\pm 2V_T \approx \pm 52\,\text{mV}$
- カレントミラー負荷は差動電流を1つの出力ノードに集約し、$A_d = g_m(r_{o2} \| r_{o4})$ という高い利得を実現する。これがオペアンプの入力段で採用される理由である
- MOSFET差動対は入力電流がゼロ、線形入力範囲が広いという利点を持つが、同じバイアス電流では $g_m$ がBJTより小さい
- オペアンプの入力段は差動対+カレントミラー負荷で構成され、入力インピーダンス・オフセット電圧・CMRR・雑音特性といったオペアンプの主要仕様を決定づける
差動増幅回路の理論を理解したことで、オペアンプがなぜ「差動入力・高利得・高CMRR」を実現できるのかが明確になりました。次のステップとして、オペアンプを負帰還回路で使ったときの入出力特性や安定性について学ぶと、回路設計の実践力がさらに深まります。
次のステップとして、以下の記事も参考にしてください。
- オペアンプ(演算増幅器)の理論 — 理想オペアンプの仮定と各種応用回路の解析
- 帰還増幅回路の理論 — 負帰還の基本概念とループゲインの導出