0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Pythonで学ぶ演算増幅器(オペアンプ)設計コンテスト

Last updated at Posted at 2025-10-28

2024

【1】NMOSのW/L決定式
この式は、トランジスタが飽和領域で流す電流I_Dを設定電圧条件から決めるもの。

W/L = 2*I_D / (mu_n*C_OX*(V_GS - V_T)^2)
  • I_D : ドレイン電流 [A](設計したい動作点)
  • mu_n*C_OX : プロセス定数 [A/V^2](移動度×酸化膜容量)
  • (V_GS - V_T) : オーバードライブ電圧 [V]

数値代入:

W/L = 2*(0.5e-6) / (8.65e-5*(0.1)^2)
W/L ≈ 1.15

→ NMOSの幅Wと長さLの比は約1.15。低電流・低電圧動作の典型。


【2】PMOSのW/L補正
PMOSは移動度mu_pが小さいため、同じ電流を流すにはNMOSより広いWが必要。

(W/L)_p = (mu_n/mu_p)*(W/L)_n
(W/L)_p ≈ 3*1.15
(W/L)_p ≈ 3.45

→ 約3倍ワイドなPMOSでNMOSとのドライブバランスを取る。


【3】応答特性(ステップ応答)

整定時間T_S:出力が最終値の±5%に入るまでの時間
スルーレートSR:出力電圧の最大変化速度

|V_out(t) - V_final|/|V_final| ≤ 0.05
T_S(rise) = 154e-6
T_S(fall) = 104e-6

SR = ΔV_out/Δt
SR_rise = +1.73 V/μs
SR_fall = -1.42 V/μs

→ 上昇応答の方が遅い(|SR_fall| < |SR_rise|)。
これはPMOSの駆動能力がNMOSより低い(mu_p < mu_n)ため。


【4】設計上の意味

  • NMOSは高速で電流ドライブ強い。
  • PMOSは移動度が低く遅い。
  • バランスを取るためW/L比を調整する。
  • 消費電力と応答速度はトレードオフ。



# --- Import libraries ---
import numpy as np

# =====================================================
# 【1】基本パラメータ設定 / Parameter definitions
# =====================================================
I_D = 0.5e-6        # [A] NMOS drain current
mu_nCox = 8.65e-5   # [A/V^2] NMOS mobility × oxide capacitance
Vov = 0.1           # [V] Overdrive voltage (V_GS - V_T)
mu_ratio = 3.0      # μn/μp ratio (PMOS mobility ≈ μn/3)

# =====================================================
# 【2】NMOSとPMOSのW/L比を計算 / W/L ratio calculation
# =====================================================
W_L_n = 2 * I_D / (mu_nCox * Vov**2)
W_L_p = mu_ratio * W_L_n

# =====================================================
# 【3】ステップ応答パラメータ / Step response
# =====================================================
T_S_rise = 154e-6   # [s] Settling time (rise)
T_S_fall = 104e-6   # [s] Settling time (fall)
SR_rise = 1.73      # [V/μs] Slew rate (rise)
SR_fall = -1.42     # [V/μs] Slew rate (fall)

# =====================================================
# 【4】結果出力 / Output results
# =====================================================
print("=== NMOS/PMOS W/L Calculation ===")
print(f"NMOS: W/L = 2*I_D / (μ_n*C_OX*(V_GS - V_T)^2) = {W_L_n:.3f}")
print(f"PMOS: (W/L)_p = (μ_n/μ_p)*(W/L)_n = {W_L_p:.3f}")

print("\n=== Step Response Characteristics ===")
print("|V_out(t) - V_final|/|V_final| ≤ 0.05")
print(f"T_S (rise) = {T_S_rise:.2e} s")
print(f"T_S (fall) = {T_S_fall:.2e} s")
print(f"SR (rise) = {SR_rise} V/μs")
print(f"SR (fall) = {SR_fall} V/μs")

# =====================================================
# 【5】設計上の解釈 / Design interpretation
# =====================================================
if abs(SR_fall) < abs(SR_rise):
    slower = "PMOS (falling edge)"
else:
    slower = "NMOS (rising edge)"

print("\n=== Interpretation ===")
print(f"Slower transition: {slower}")
print("NMOS drives faster due to higher mobility (μ_n > μ_p).")
print("PMOS requires ~3× wider W/L for current balance.")
print("Trade-off: increasing W/L improves speed but increases power and area.")

2023

【1】同相利得 (A_cm)

A_cm = voc / vic ≈ - RL / (2*RSS)

→ カスコード電流源でテール電流を高インピーダンス化
→ 出力抵抗を上げるためにチャネル長 L を大きく設計

【2】素子サイズ設計

・チャネル長 L を大きくする
・MOSFET の並列数を増やす
→ 素子サイズを大きくしておくと差動入力電圧の微調整が容易

【3】位相補償付きソース接地回路

v2/v1 = G(jω) = -gm5*rds5 * (1 + j*ω*Cc*(Rc - 1/gm5)) / (1 + j*ω*Cc*(Rc + rds))

位相特性:
∠G(jω) = tan^-1(ω*Cc*(Rc - 1/gm5)) - tan^-1(ω*Cc*(Rc + rds))

進み補償条件:
ω*Cc*(Rc - 1/gm5) > 0
→ Rc > 1/gm5

【4】シミュレーション結果と出力抵抗計算

A0_sim = 45.7 dB
ro_sim = 3.62e-3 Ω

出力抵抗計算式:
ro = (1 + β*A0_sim) / (1/ro_sim - 1/(R1 + R2) - β*A0_sim / RL)

結果:
ro = 3.5243e-1 Ω

# --- Dependencies ---
import numpy as np

# --- Parameters (一元管理 / centralized) ---
# [1] Common-mode gain A_cm ≈ -RL/(2*RSS)
RL   = 10e3     # [Ω] load resistor
RSS  = 200e3    # [Ω] tail/source resistor

# [2] Phase-compensated common-source: G(jw) = -gm5*rds5 * (1 + j*w*Cc*(Rc - 1/gm5)) / (1 + j*w*Cc*(Rc + rds))
gm5  = 2e-3     # [S]
rds5 = 50e3     # [Ω]
Cc   = 10e-12   # [F]
Rc   = 2e3      # [Ω]
rds  = 20e3     # [Ω]

# [3] Output resistance computation:
# ro = (1 + β*A0_sim_lin) / ( 1/ro_sim - 1/(R1 + R2) - β*A0_sim_lin/RL )
A0_sim_db = 45.7     # [dB] simulated DC gain (voltage, in dB)
ro_sim    = 3.62e-3  # [Ω] simulated output impedance
R1, R2    = 10e3, 10e3  # [Ω] feedback divider
beta      = R1/(R1+R2)  # feedback factor β = R1/(R1+R2) for series-shunt voltage feedback

# --- Computations ---
# [1] A_cm
A_cm = -RL/(2*RSS)

# [2] Phase compensation transfer and phase lead condition
# Lead condition: Rc > 1/gm5
lead_condition = Rc > (1.0/gm5)

def G_jw(w):
    # Numerator and denominator (complex)
    num = -gm5*rds5 * (1.0 + 1j*w*Cc*(Rc - 1.0/gm5))
    den = (1.0 + 1j*w*Cc*(Rc + rds))
    return num/den

def phase_deg(w):
    Gjw = G_jw(w)
    return np.degrees(np.angle(Gjw))

# [3] ro computation (convert dB→linear correctly: 20*log10|A|)
A0_sim_lin = 10**(A0_sim_db/20.0)
den = (1.0/ro_sim) - (1.0/(R1+R2)) - (beta*A0_sim_lin/RL)
ro = (1.0 + beta*A0_sim_lin)/den

# --- Report ---
print("=== Common-Mode Gain (A_cm) ===")
print(f"A_cm ≈ {A_cm:.6f}")

print("\n=== Phase Compensation ===")
print(f"Lead condition Rc > 1/gm5 : {lead_condition}  (Rc={Rc:.3e} Ω, 1/gm5={(1.0/gm5):.3e} Ω)")
# Example phase at two rad/s points
for w in [1e3, 1e6, 1e9]:
    print(f"phase[G(jw)] @ w={w:.1e} rad/s : {phase_deg(w):.2f} deg")

print("\n=== Output Resistance (ro) ===")
print(f"A0_sim_db = {A0_sim_db:.2f} dB  ->  A0_sim_lin = {A0_sim_lin:.3e}")
print(f"ro_sim = {ro_sim:.3e} Ω,  R1={R1:.3e} Ω,  R2={R2:.3e} Ω,  RL={RL:.3e} Ω,  β={beta:.3f}")
print(f"ro (corrected) = {ro:.6e} Ω")

2022

【1】電源電圧設定式(Power Supply Voltage Design)

V_SG15 = V_OD + V_TP
V_DS(19,20) = 2*V_OD
V_PS = V_DD - V_SS = V_TP + 3*V_OD

数値例:

V_OD = 0.2 [V]
V_TP = 0.37 [V]
V_PS = 0.37 + 3*0.2 = 0.97 [V]

→ 電源電圧約1 Vで動作可能。


【2】利得測定式(Measured DC Gain)

A = (V_out(max) - V_out(min)) / (V_in(max) - V_in(min))

例:

A = (1.28 - (-1.5)) / (0.14 - (-0.14)) ≈ 9.93

※ ±0.1 V入力時では A ≈ 9.03


【3】出力抵抗と利得の関係式(Output Resistance Reduction by Gain)

出力抵抗を利得A倍だけ低下させる
ro_eff = ro / (1 + A)

→ 高利得アンプにより出力抵抗を低下可能。


【4】入力コモンモード電圧範囲(Input Common-Mode Voltage Range)

V_DSat5 + V_Tn + V_DSat7 < V_CM < V_DD - V_DSat3 - |V_Tp| + V_Tn

→ レールトゥレール入力動作を確保するための条件。


【5】総括(設計上の意図)

・V_PSを最小化して低電圧動作を実現
・Aを大きくしてroを低減
・V_CM範囲を広げてRail-to-Rail入力を確保

# =========================
# Import
# =========================
import math

# =========================
# [1] 電源電圧設定式 Power Supply Voltage Design
# =========================
V_OD = 0.2       # [V] overdrive voltage
V_TP = 0.37      # [V] PMOS threshold magnitude
V_DD = 1.0       # [V]
V_SS = 0.0       # [V]

V_SG15 = V_OD + V_TP
V_DS_19_20 = 2 * V_OD
V_PS = V_TP + 3 * V_OD
V_PS_check = V_DD - V_SS

# =========================
# [2] 利得測定式 Measured DC Gain
# =========================
Vout_max = 1.28
Vout_min = -1.50
Vin_max  = 0.14
Vin_min  = -0.14
A_meas = (Vout_max - Vout_min) / (Vin_max - Vin_min)
A_pm = (1.28 - (-1.5)) / (0.2)  # ±0.1V入力時参考計算

# =========================
# [3] 出力抵抗と利得の関係 Output Resistance Reduction by Gain
# =========================
ro = 1.0     # [Ω] nominal output resistance
ro_eff = ro / (1 + A_meas)

# =========================
# [4] 入力コモンモード範囲 Input Common-Mode Voltage Range
# =========================
V_DSat5 = 0.10
V_Tn = 0.40
V_DSat7 = 0.10
V_DSat3 = 0.10
V_Tp_abs = 0.37

V_CM_min = V_DSat5 + V_Tn + V_DSat7
V_CM_max = V_DD - V_DSat3 - V_Tp_abs + V_Tn
V_CM_check = 0.6
within_range = (V_CM_min < V_CM_check < V_CM_max)

# =========================
# [5] 結果出力 Results
# =========================
print("=== [1] Power Supply Voltage ===")
print(f"V_SG15 = V_OD + V_TP = {V_SG15:.3f} V")
print(f"V_DS(19,20) = 2*V_OD = {V_DS_19_20:.3f} V")
print(f"V_PS = V_TP + 3*V_OD = {V_PS:.3f} V")
print(f"V_PS_check (V_DD - V_SS) = {V_PS_check:.3f} V")
print("→ 約1Vで動作可能\n")

print("=== [2] Measured DC Gain ===")
print(f"A_meas = (Vout_max - Vout_min)/(Vin_max - Vin_min) = {A_meas:.2f}")
print(f"A_pm (±0.1V入力時参考) = {A_pm:.2f}\n")

print("=== [3] Output Resistance Reduction ===")
print(f"ro_eff = ro/(1 + A) = {ro_eff:.4f} Ω (ro={ro:.2f} Ω, A={A_meas:.2f})")
print("→ 高利得アンプにより出力抵抗を低下可能\n")

print("=== [4] Input Common-Mode Voltage Range ===")
print(f"V_CM_min = {V_CM_min:.3f} V")
print(f"V_CM_max = {V_CM_max:.3f} V")
print(f"Check V_CM={V_CM_check:.2f} V → within range? {within_range}")
print("→ Rail-to-Rail入力動作条件確認\n")

print("=== [5] 設計上の意図 Summary ===")
print("・V_PS最小化で低電圧動作実現")
print("・高利得Aで出力抵抗roを低減")
print("・広いV_CM範囲でRail-to-Rail入力を確保")

2021

【1】スーパーソースフォロワの出力抵抗

r_out ≈ 1 / (g_M1 * g_M2 * r_o1)

スーパーソースフォロワ(SSF)では、2段のソースフォロワ構成によりソース抵抗の影響を抑え、出力インピーダンスを大幅に低下させる。
M1が入力トランジスタ、M2が電流バッファとして働くため、r_outは両トランジスタのgmとM1の出力抵抗ro1の積の逆数で表される。

負帰還をかけた場合は、ループ利得Aによってさらに低下する。

r_out ≈ 1 / (A * g_M1 * g_M2 * r_o1)

Aは帰還ループの利得であり、Aが大きいほど出力抵抗は小さくなる。


【2】直流利得の計算式

A_O = ((R_L + r_O) / R_L) * A_Osim

シミュレーションで得た直流利得A_Osimを、実際の負荷抵抗R_Lと内部出力抵抗r_Oを考慮して補正する式。
R_Lが小さいほど利得は低下し、理論値との差が出る。

出力抵抗r_Oの修正式は以下の通り。

r_O = (1 + β * A_Osim) / (1/r_Osim - 1/(R1 + R2) - β * A_Osim / R_L)

ここでβは帰還係数、r_Osimはシミュレーション上の出力抵抗。
帰還を考慮した実効出力抵抗を求める。


【3】スーパーソースフォロワ(別回路)の出力抵抗

R_out ≈ 1 / (g_m16 * g_m18 * r_o16)

M16とM18によるダブルソースフォロワ構成。
r_o16はM16の出力抵抗。2段目のgmが追加されるため、単段フォロワよりもさらに小さい出力抵抗が得られる。


【4】入力換算雑音(熱雑音+1/fノイズ)

V_n^2 = 4*k*T*γ*(2/g_m1,2 + 2*g_m5,6/(g_m1,2^2))
       + 2*K_N/((W*L)_1,2 * c_ox * f)
       + 2*K_P/((W*L)_5,6 * c_ox * f) * (g_m5,6^2 / g_m1,2^2)

熱雑音項と1/fノイズ項の合計。
第1項が熱雑音(kTγに比例)、第2・第3項がNMOS・PMOSの1/fノイズ。
入力段トランジスタ(g_m1,2)が大きいほど雑音電圧は小さくなる。

簡略化した形:

V_n^2 = 2 * { (8*k*T)/(3*g_m1) * (1 + g_m3/g_m1) }

入力ペアが対称(g_m1=g_m2, g_m3=g_m4)の場合の近似式。


【5】AB級入力段の電流式

I_9 = (β_9/2) * (V_inm - V_inp + V_B - V_TH9)^2
I_10 = (β_10/2) * (V_inp - V_inm + V_B - V_TH10)^2

入力信号の差電圧によって動的に電流が変化するAB級入力段のモデル。
V_Bはバイアス電圧、βはトランジスタの電流係数(μCoxW/L)。
この式により、入力信号の正負に応じてI_9とI_10が交互に増減し、低消費電力で大信号入力に対応する。

2020

【1】スーパーソースフォロワ(SSF)の出力抵抗

r_out = 1 / (1/r_o2 + g_m2 + g_m1*g_m2*r_o1) ≈ 1 / (g_m1*g_m2*r_o1)

M1とM2を直列に用いたソースフォロワ構成では、出力インピーダンスは複数項の並列和で決まる。
r_o2はM2の出力抵抗、g_m2はM2のトランスコンダクタンス、g_m1g_m2r_o1項はM1の増幅作用を反映している。
高gmデバイスを使うほどr_outは小さくなり、出力段が低インピーダンス化する。
近似的には高次項1/(g_m1g_m2r_o1)が支配的となるため、これを採用する。

負帰還アンプを組み合わせた場合の出力抵抗はさらに低下する。

r_out ≈ 1 / (A*g_m1*g_m2*r_o1)

Aは帰還アンプの電圧利得。
負帰還により見かけの出力抵抗がA倍だけ減少し、高ドライブ能力を実現できる。


【2】入力換算雑音
入力差動ペア(M2, M3)と負荷トランジスタ(M4, M5)に起因する雑音は、熱雑音とフリッカ雑音の和で表される。

熱雑音:

V_n^2(thermal) = 5*k_B*T*γ*(1/g_m2,3)*(1 + g_m4,5/g_m2,3)*Δf

k_Bはボルツマン定数、Tは絶対温度、γはチャネル雑音係数。
入力ペアのトランスコンダクタンスg_m2,3を大きくすると、熱雑音が減少する。
また、負荷側g_m4,5の寄与も比較的小さいため、入力段設計が支配的。

フリッカ雑音(1/fノイズ):

V_n^2(flicker) = (2*k_p)/(C_ox*W_2,3*L_2,3)
                 * (1 + (K_n*μ_n*L_2,3^2)/(K_p*μ_p*L_4,5^2))
                 * (Δf/f)

k_p, k_nはデバイスのフリッカ係数、μはキャリア移動度。
入力デバイスの面積(WL)を大きく取ることで1/f雑音は低減する。
PMOS負荷よりもNMOS入力の寄与が大きい傾向がある。


【3】時定数(τ)

τ = 1 / ((1 + R_2/(R_1 + R_2)) * ω_0 * A_0)

回路の3dB帯域ω_0と閉ループ利得A_0により時定数が決まる式。
R_1, R_2は帰還分圧抵抗で、R_2/(R_1 + R_2)が帰還率を示す。
閉ループ利得A_0が大きいほどτは小さくなり、応答が高速化する。

2019

【1】スーパーソースフォロワ(SSF)の出力抵抗

R_out ≈ 1 / (g_m3 * g_m4 * r_o3)

M3が信号バッファ、M4が電流駆動段として働く。
M3とM4のトランスコンダクタンスg_m3、g_m4が大きく、またM3の出力抵抗r_o3が高いほど出力インピーダンスは小さくなる。
この構成では電流駆動力が強く、高負荷容量でも電圧降下を抑制できる。

負帰還を併用する場合は、利得Aが加わり出力抵抗がさらに下がる。

R_out ≈ 1 / (A * g_m3 * g_m4 * r_o3)

Aは帰還アンプの電圧利得であり、A倍の出力抵抗低減効果が得られる。


【2】スルーレート(SR)の評価式

SR = 1.8 / (T2 - T1)   [V/μs]

T1, T2は出力電圧が+900 mVと−900 mVに到達した時刻。
出力が1.8 V振幅で変化する時間差(T2−T1)を測定し、スルーレートを算出する。
例:

SR = 1.8 / (102.4 - 100.1) = 1.8 / 2.3 ≈ 0.783 [V/μs]

SRが大きいほど高速応答であり、大信号の過渡応答性能を示す。


【3】同相入力範囲の評価

Error Rate = 1 - |V_out - V_OS| / (0.5 * V_in) < 0.05

出力のオフセット誤差を入力信号に対して正規化し、誤差が5%以下であることを基準とする。

同相入力範囲は電源範囲(V_DD - V_SS)に対する入力振幅の割合で表される。

同相入力範囲 = 0.5 * (V_inmax - V_inmin) / (V_DD - V_SS) * 100

例:

0.5 * (3.000 - 2.782) / (V_DD - V_SS) * 100 = 96.4 [%]

これは入力段がレールトゥレール近くまで動作できることを示す。

2018

【1】FVF(フィードバック・ボルテージ・フォロワ)の出力抵抗

r_out ≈ 1 / (g_m0 * g_m2 * (r_o1 // r_o0))

FVFは、ソースフォロワに負帰還を加えて出力インピーダンスを低下させた構成。
出力抵抗は、ドライバトランジスタM0と制御トランジスタM2のトランスコンダクタンスの積、および内部出力抵抗(r_o1, r_o0)の並列合成に反比例する。
r_o1 // r_o0 は並列合成抵抗を表し、上段・下段トランジスタの同時影響を示す。
g_mが大きいほどr_outは低下し、出力段がより理想的な電圧源に近づく。


【2】SSF(スーパーソースフォロワ)の出力抵抗

r_out ≈ 1 / (g_m0 * g_m3 * (r_o1 // r_o0))
または
R_out ≈ 1 / (g_m1 * g_m3 * r_o1)

SSFは、通常のソースフォロワに電流ブースト経路を追加した構造。
M0(またはM1)が入力を受け、M3がバッファ動作する。
二段構成によるトランスコンダクタンスの積(g_m1*g_m3)が有効に働き、単段フォロワより出力抵抗が小さくなる。
結果として、低出力インピーダンスかつ大電流駆動が可能。
r_outはg_mやr_oに反比例するため、強い駆動デバイスと高出力抵抗を組み合わせる設計が望ましい。


【3】カスコード化FVFの出力抵抗

r_out ≈ 1 / (g_m0 * g_m2 * (g_m3*r_o3*r_o1 // g_m4*r_o4*r_o5))

カスコード化FVFは、従来のFVFにカスコードトランジスタ(M3, M4)を挿入し、内部抵抗をさらに増大させる方式。
各カスコード段の利得(g_m3r_o3, g_m4r_o4)が乗算されるため、r_outが劇的に低下する。
r_o1, r_o5 はカスコード接続されるデバイスの出力抵抗であり、並列合成部は上段・下段経路の合成効果を表す。
この構成により、ミラー効果を抑制しつつ高ドライブ能力を保持できる。


【4】SSF+負帰還アンプの出力抵抗

R_out ≈ 1 / (A * g_m1 * g_m3 * r_o1)

Aは負帰還アンプの電圧利得。
負帰還ループによってループゲインAg_m1g_m3*r_o1が有効となり、出力抵抗はA倍低下する。
この原理により、微小信号動作域で極めて低い出力インピーダンスを実現できる。
設計上はAを過剰に大きくしすぎると発振の危険があるため、位相補償を併用することが多い。


【5】入力換算雑音の式(熱雑音+フリッカ雑音)

V_n,in,total^2 =
5*k_B*T*γ*(1/g_m4,5)*(1 + g_m9,10/g_m4,5)*Δf
+ (2*k_p)/(C_ox*W_4,5*L_4,5)
  * (1 + (K_n*μ_n*L_4,5^2)/(K_p*μ_p*L_9,10^2))
  * (Δf/f)

熱雑音項(第1項)は主に入力差動ペアM4, M5のトランスコンダクタンスに依存し、g_m4,5を大きく取るほど低雑音化できる。
g_m9,10/g_m4,5 は負荷側トランジスタの寄与を示す補正係数。
Δf は解析帯域幅、k_BTγ はチャネル熱雑音定数。

第2項のフリッカ雑音(1/fノイズ)は低周波で支配的。
W, L はトランジスタ面積であり、大面積デバイスほど雑音が減少する。
K_n, K_p はNMOS・PMOSの1/fノイズ定数、μ_n, μ_p はキャリア移動度。

総じて、熱雑音は高周波で支配的、フリッカ雑音は低周波で支配的。
入力段のgmを高め、トランジスタ面積を大きくとることで両者を抑制できる。

2017

【1】スーパーソースフォロワの出力抵抗

R_out ≈ 1 / (g_m1 * g_m4 * r_o1)

M1が入力バッファ、M4が出力段(電流駆動)として動作する。
出力抵抗は入力段と出力段のトランスコンダクタンス(g_m1, g_m4)の積、および入力側トランジスタの出力抵抗r_o1に反比例する。
2段の電流変換効果により、単純なソースフォロワよりも低い出力インピーダンスを実現できる。
一般的に、g_mやr_oを増加させることでR_outをさらに低下させることが可能。


【2】カスコード化スーパーソースフォロワの出力抵抗

R_out ≈ 1 / (g_m4 * (g_m1 * r_o1)^2)

カスコード構成では、M1上にカスコードトランジスタを重ねることで内部抵抗が乗算される。
(g_m1 * r_o1)²の項は「カスコード利得効果」を示し、単段SSFよりも出力抵抗を1桁以上低下させる。
M4のg_m4はドライブ能力を支配し、カスコード段全体の安定性と帯域にも影響する。
この構成により、負荷容量が大きい回路でも高速応答が維持できる。


【3】しきい値電圧ばらつき(ΔV_T)

ΔV_T = (1 / (C_ox * sqrt(L * W))) * sqrt( (V_eff / L) * sqrt(μ / (2 * C_ox * I_ds)) )

トランジスタのしきい値電圧V_Tのばらつきを表す式。
C_oxは酸化膜容量密度、LとWはチャネル寸法、μはキャリア移動度、I_dsは動作電流。
C_oxおよびデバイス面積(LW)が大きいほどΔV_Tは小さくなる。
つまり、素子サイズを拡大すると統計的なばらつきが抑えられる。
また、V_effやI_dsは動作点に依存し、高電流動作ほどばらつきの影響が軽減される傾向を示す。


2016

【1】入力換算雑音の低減

V_n,in,total^2 = 5*k_B*T*γ*(1/g_m6,7)*(1 + g_m10,11/g_m6,7)*Δf
               + (2*k_B*W_6,7*L_6,7)/(C_ox*W_10,11*L_10,11)
                 * (1 + (K_n,p*I_d^2)/(K_p*μ_p*L_10,11))
                 * (Δf/f)

第1項は熱雑音、第2項はフリッカ雑音。
熱雑音を抑えるには入力段M6,7のg_mを大きく(W/Lを増加)、負荷側M10,11のLを短くしてg_m10,11/g_m6,7を小さくする。
フリッカ雑音を抑えるにはM6,7の面積(WL)を拡大し、M10,11のLを長くして1/fノイズ成分を減らす。
これにより、入力換算雑音全体が低減する。


【2】MOSトランジスタのV_GS設計条件

飽和条件: V_DS ≥ V_th
トランスコンダクタンス: g_m = 2*I_d / (V_GS - V_th)

トランジスタを飽和領域で動作させるためにはV_DSがしきい値以上必要。
オーバードライブ電圧(V_GS - V_th)を適切に設定することで、目標電流I_dと必要なg_mを決定する。
設計例として、NMOSでV_GS - V_th ≈ 0.1 V、PMOSでV_SG - V_th ≈ 0.13 Vを使用。
V_ovが大きいと速度は上がるが、消費電力と入力換算雑音も増加するため、最適点を選ぶ。


【3】出力抵抗の理解と制御

ソースフォロワ: R_out ≈ 1 / g_m1
スーパーソースフォロワ: R_out ≈ 1 / (g_m1 * g_m4 * r_o1)
負帰還SSF: R_out ≈ 1 / (A_2 * g_m1 * r_o1)

通常のソースフォロワは単段の電流帰還で出力抵抗を低減。
スーパーソースフォロワ(SSF)は2段のトランスコンダクタンス積により出力抵抗をさらに低下。
さらに負帰還アンプを加えるとループ利得A_2によってR_outがA_2倍低下する。
出力インピーダンスを下げることで、大きな負荷容量を高速に駆動可能。


【4】出力抵抗の上昇と低下の物理的考察

  • カスコード構成では、上段トランジスタが信号変化を抑え、出力電流変動を減らすためZ_outが上昇。
  • ダイオード接続では、ゲート・ドレイン間の帰還で出力電流が補償され、Z_outが低下。
  • Z_outの増減は、信号電流の変化量ΔI_outと電圧変化ΔV_outの比に支配される。

【5】全体設計方針まとめ

  • ノイズ低減: 入力段の面積拡大(WL↑)、g_m↑、負荷L↑。
  • 出力低抵抗化: SSF構成・負帰還ループ活用。
  • 速度と消費電力の最適化: V_ovとI_dのバランス設計。
    これらを組み合わせることで、CMOSアンプの低雑音・低出力抵抗・高帯域設計を実現できる。

2015

① レギュレーテッドカスコード(Regulated Cascode)

目的:出力抵抗を増加させることで高ゲイン化。

基本構造

M1:メイントランジスタ
M2:カスコードトランジスタ
アンプA:M2のゲート電圧を制御

出力抵抗

Rout ≈ A (gm2 * ro2) * ro1

ここで

  • gm2:M2のトランスコンダクタンス
  • ro1, ro2:各MOSFETの出力抵抗
  • A:補助アンプの利得

特徴

  • 出力抵抗がアンプの利得A倍だけ増加。
  • ゲインブースト付きカスコードとして広く使用。

② メインアンプ(出力段:Regulated Cascode型 Source Follower)

出力抵抗モデル

Rup = Ro67
Rdown = A5 (gm69 * Ro69) * Ro68
Rout = Rup || Rdown ≈ Ro67
A = gm67 * Rout ≈ gm67 * Ro67

意味

  • 上側(Rup)はPMOS負荷、下側(Rdown)はNMOSカスコード。
  • ゲインブーストにより実効的なRoutを高める。

③ FVF(Flipped Voltage Follower)

目的:低出力インピーダンスの電圧フォロワを実現。
構造

M1:入力トランジスタ
M2:ソースフォロワ補助
M3:バイアス制御

出力抵抗

Rout ≈ 1 / (gm1 * gm2 * ro1)

電圧利得

Av ≈ 1

特徴

  • 出力電圧範囲が広く、低電圧動作に適する。
  • 電流経路が少なく、消費電力を抑えられる。

④ SSF(Super Source Follower)

構造

M1, M2, M3 の3段構成

出力抵抗

Rout ≈ 1 / (gm0 * gm3 * (ro1 || ro0))

特徴

  • さらに低い出力抵抗。
  • FVFとほぼ同等だが、電流パスが1本多く消費電力は増加。

⑤ フォールデッドカスコード型FVF(Folded Cascode FVF)

発展形

折り返し構造 + カスコード化

出力抵抗

Rout ≈ 1 / [ gm0 * gm8 * gm3 * ro3 * ro1 * (1 / (gm4 * ro4 * ro5)) ]

または簡略形:

Rout ≈ 1 / [ gm0 * gm8 * (gm3 * ro3 * ro1 // gm4 * ro4 * ro5) ]

利点

  • 出力抵抗を大幅に増加(高ゲイン)
  • 電圧余裕を減らさずに出力段を強化可能

⑥ FVFとSSFの消費電力比較

電圧範囲

FVF: VDD - Vds > Vout > 2Vds
SSF: VDD - Vds > Vout > Vgs + Vds

→ FVFの方が低電圧動作に有利。


# ============================================
# MOS出力段の出力抵抗モデル比較スクリプト
# Regulated Cascode / FVF / SSF / Folded FVF
# ============================================

import numpy as np
import pandas as pd

# パラメータ設定(例)
gm1, gm2, gm3, gm4, gm8 = 2e-3, 1.5e-3, 1.2e-3, 1.0e-3, 0.8e-3   # トランスコンダクタンス [S]
ro1, ro2, ro3, ro4, ro5, ro8 = 50e3, 60e3, 40e3, 35e3, 30e3, 45e3 # 出力抵抗 [Ω]
A = 40  # 補助アンプの利得

# ============================================
# 各回路の出力抵抗モデル式
# ============================================

# ① Regulated Cascode
Rout_RegCas = A * (gm2 * ro2) * ro1

# ② FVF
Rout_FVF = 1 / (gm1 * gm2 * ro1)

# ③ SSF
Rout_SSF = 1 / (gm1 * gm3 * (ro1 * ro2 / (ro1 + ro2)))

# ④ Folded Cascode FVF(近似形)
Rout_Folded = 1 / (gm1 * gm8 * (gm3 * ro3 * ro1 * ro4 * ro5))

# 結果をまとめ
data = {
    "回路": ["Regulated Cascode", "FVF", "SSF", "Folded FVF"],
    "出力抵抗 Rout [Ω]": [Rout_RegCas, Rout_FVF, Rout_SSF, Rout_Folded],
}
df = pd.DataFrame(data)

# ============================================
# 表示
# ============================================
print("=== MOS出力段の出力抵抗比較 ===")
print(df.to_string(index=False))

# 出力抵抗を対数スケールで比較
import matplotlib.pyplot as plt

plt.figure(figsize=(8,4))
plt.bar(df["回路"], df["出力抵抗 Rout [Ω]"])
plt.yscale("log")
plt.ylabel("出力抵抗 Rout [Ω] (対数スケール)")
plt.title("出力段トポロジ別 出力抵抗比較")
plt.grid(True, which="both", linestyle="--", alpha=0.5)
plt.show()
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?