────────────────────────────────
前提と記号
VDD=2.5 V, CL=10 pF, 目標GB=5 MHz, SR>10 V/µs, PM≈60°, KN′=120 µA/V^2, KP′=25 µA/V^2, |VTN|=|VTP|≈0.5 V, λN=0.06 V^-1, λP=0.08 V^-1, L=0.5 µm(最小長)
I5=差動尾電流, I6=2段目電流
Cc=補償容量, gmx=トランスコンダクタンス, rox=出力抵抗
W/Lは各MOSのアスペクト比
小信号の基本
GB = gm1 / (2π Cc)
SR = I5 / Cc (Miller補償で上昇縁は主に2段目電流で決まるが、設計テンプレートではCcに注入される尾電流で規定)
PM≈60°を満たす十分条件として右半平面零点 z≈gm6/Cc を高周波へ追いやる(gm6を大きく)。経験則 gm6 ≈ 8〜12·gm1 → ここでは gm6≈10·gm1
────────────────────────────────
Step 1:Ccの下限
理由
・Ccは負荷CLをMillerで分割し、主極を1段目出力ノードに押し下げることで一意の支配極を作る
・Ccが小さすぎると2段目の極とRHP零点がGB付近に来てPMが悪化
経験式
Cc ≥ 0.2·CL
この設計では CC_min = 0.2·10 pF = 2 pF → 余裕をみて Cc=3 pF
────────────────────────────────
Step 2:SRからI5を決定
原理
SR = Icharging / Cc
差動全電流がCcに流れる最悪ケースで Icharging≈I5
式
I5 = SR·Cc
数値
I5 = (10 V/µs)·(3 pF) = 30 µA
意味
・SR仕様を満たす最小尾電流。I5を増やせばSR↑だが消費電力↑
────────────────────────────────
Step 3:ミラーM3,M4の(W/L)
目的
・ICMR(max)でM3,M4が飽和し続けるようVov確保
・ダイオード接続側VGSをICMRで成立させる
式(長チャネル近似)
I5 = (1/2)·KP′·(W/L)3·(VDD − Vin(max) − |VTP| − |VTN|)^2
よって
(W/L)3 = (W/L)4 = I5 / [KP′·(Vマージン)^2]
数値
Vマージン = 2.5 − 2.0 − 0.65 + 0.35 ≈ 0.2 V
(W/L)3=(30e-6)/(25e-6·0.2^2)≈30
意味
・大きなW/Lで小Vov(=VDSsat)を得てICMR上端を拡大
・M3,M4はro↑でAv1↑にも効く
────────────────────────────────
Step 4:gm1とM1,M2の(W/L)
原理
GB = gm1/(2πCc) → gm1 = 2π·GB·Cc
式
(W/L)1=(W/L)2 = gm1^2 / (2·KN′·I1) かつ I1≈I5/2
数値
gm1 = 2π·5e6·3e-12 ≈ 94.25 µS
(W/L)1=(94.25e-6)^2 / (2·120e-6·15e-6) ≈ 3
意味
・gm1を直接GBで規定→帯域が仕様通りに決まる
・W/Lが大きすぎるとCin↑でノイズ↑、小さすぎるとVov↑でICMR下端が狭まる
────────────────────────────────
Step 5:M5のVDSsatと(W/L)
目的
・ICMR(min)で差動対を飽和させるVDS5(sat)確保
式
I5 = (1/2)·KN′·(W/L)5·(VDS5(sat))^2
→ (W/L)5 = 2·I5/(KN′·VDS5(sat)^2)
数値
VDS5(sat) ~ 0.31 V と置くと (W/L)5 ≈ 6
意味
・VDS5(sat)が小さいほどICMR下端が広がるがミスマッチ感度↑
────────────────────────────────
Step 6:M6の(W/L)(DCバランスと零点制御)
理由
・RHP零点 z≈gm6/Cc を高域へ(z ≥ 10·GBが経験則)
・PM≈60°の十分条件 gm6 ≈ 10·gm1
式
(W/L)6 = (gm6/gm4)·(W/L)4
数値
gm6=~10·gm1=~942.5 µS, gm4≈150 µS, (W/L)4=30 → (W/L)6≈190
意味
・gm6を大きくすると z↑、2段目極 p2≈gm6/(2π·Cnode2) も↑→安定化
・ただし大き過ぎると消費電流↑、位相余裕過大でGBW劣化
────────────────────────────────
Step 7:I6の決定(小信号式)
式
I6 = gm6^2 / (2·KP′·(W/L)6)
数値
I6 ≈ (942.5e-6)^2 / (2·25e-6·188.5) ≈ 95 µA
意味
・gm6と(W/L)6が決まればI6が一意→電力見積り可能
────────────────────────────────
Step 8:M7の(W/L)
目的
・2段目の定電流負荷が飽和し出力スイングを制約しないよう設計
近似スケーリング
(W/L)7 ≈ (I6/I5)·(W/L)5
数値
(W/L)7 ≈ (95/30)·6 ≈ 20
チェック
Vout(min) ≈ VDS7(sat) = sqrt(2·I6/(KP′·(W/L)7)) ≈ 0.28 V
────────────────────────────────
Step 9:利得と電力の検証・反復
総利得近似(長チャネル, λ支配)
Av ≈ Av1·Av2
Av1 ≈ gm1·(ro1 || ro3)
Av2 ≈ gm6·(ro6 || ro7)
ro ≈ 1/(λ·ID)
より簡約形
Av ≈ (gm1/λN·I1) · (gm6/ (λP·I6 + λN·I6)) ≈ O(3000 V/V) 以上
電力
Pdiss = VDD·(I5 + I6) ≈ 2.5·(30µA+95µA) ≈ 0.3125 mW
PM確認
・z_RHP = gm6/Cc ≈ 942.5e-6 / 3e-12 ≈ 3.14e8 rad/s ≈ 50 MHz
・10·GB(rad/s) ≈ 2π·50e6 ≈ 3.14e8 rad/s → z ≥ 10·GB を満足
・p2 ≈ gm6 / (2π·Cnode2). Cnode2 はCgd6, Cdb6, Cc反映。zとp2が十分高域→PM≈60°
────────────────────────────────
ICMRと出力スイングの整合
ICMR(min) ≈ VGS1(min)+VDS5(sat)
ICMR(max) ≈ VDD − |VTP| − VDS3(sat)
数値例でおおむね 1.25〜2.0 V を満たす
出力スイング
Vout(min) ≈ VDS7(sat) ≈ 0.28 V
Vout(max) ≈ VDD − VDS6(sat) ≈ 2.5 − 0.2〜0.3 ≈ 2.2 V
────────────────────────────────
安定性の物理直観
・Ccが作る主極 p1 ≈ 1/(R1·Cc) がGBより十分低い位置に来るようR1=gain node抵抗を大きく
・gm6↑でRHP零点 z=gm6/Cc↑、2段目極 p2≈gm6/(2πCnode2)↑
・条件 z ≥ 10·GB, p2 ≥ 2.2·GB → PM≈60°
────────────────────────────────
ノイズ・CMFB・実務上の注意
熱雑音
en,1^2 ≈ 4kTγ/gm1, 出力雑音はAv2で増幅。gm1↑で入力換算雑音↓
CMFB
差動版では出力共通モード固定用にCMFB必須。単出力版はバイアスで共通モード設定
ミスマッチ
入力対のσ(Vos) ∝ 1/√(WL)。W/L1を極端に小さくしない
レイアウト
差動対共心, ミラー対称, クリティカル配線のマッチング長合わせ
RHP零点の打消し
Rz直列(ESR)で左半平面零点生成も可。ただし本設計はgm6で高域に逃がす方針
────────────────────────────────
最終チェック一覧
Cc=3 pF
I5=30 µA, (W/L)3=(W/L)4≈30
gm1≈94 µS, (W/L)1=(W/L)2≈3
(W/L)5≈6
gm6≈943 µS, (W/L)6≈190, I6≈95 µA
(W/L)7≈20
GB=5 MHz, PM≈60°, SR≈10 V/µs, Pdiss≈0.31 mW
Vout範囲≈0.28〜2.2 V, ICMR≈仕様内
Av>3000 V/V
import math
# ==============================
# パラメータ設定 / Parameter setup
# ==============================
VDD = 2.5 # [V] Supply voltage
CL = 10e-12 # [F] Load capacitance
GB = 5e6 # [Hz] Target gain-bandwidth
SR = 10e6 # [V/s] Slew rate
PM = 60 # [deg] Phase margin target (approx.)
KNp = 120e-6 # [A/V^2] nMOS process transconductance parameter
KPp = 25e-6 # [A/V^2] pMOS process transconductance parameter
VT = 0.5 # [V] Threshold voltage (magnitude)
lamN = 0.06 # [1/V] nMOS channel-length modulation
lamP = 0.08 # [1/V] pMOS channel-length modulation
L = 0.5e-6 # [m] Minimum channel length
# ==============================
# Step 1: 補償容量Cc / Compensation capacitance
# ==============================
Cc_min = 0.2 * CL
Cc = 3e-12 # chosen with margin
print(f"Cc = {Cc*1e12:.2f} pF")
# ==============================
# Step 2: SRから尾電流I5算出 / Tail current from SR
# ==============================
I5 = SR * Cc
print(f"I5 = {I5*1e6:.2f} µA")
# ==============================
# Step 3: M3,M4 (ミラーデバイス)のW/L
# ==============================
V_margin = 0.2 # [V]
WL_3 = I5 / (KPp * V_margin**2)
print(f"(W/L)3,4 = {WL_3:.2f}")
# ==============================
# Step 4: gm1, M1,M2 (差動対)
# ==============================
gm1 = 2 * math.pi * GB * Cc
I1 = I5 / 2
WL_1 = gm1**2 / (2 * KNp * I1)
print(f"gm1 = {gm1*1e6:.2f} µS, (W/L)1,2 = {WL_1:.2f}")
# ==============================
# Step 5: M5 (尾トランジスタ)
# ==============================
VDS5_sat = 0.31 # [V]
WL_5 = 2 * I5 / (KNp * VDS5_sat**2)
print(f"(W/L)5 = {WL_5:.2f}")
# ==============================
# Step 6: M6 (2段目トランジスタ)
# ==============================
gm6 = 10 * gm1
gm4 = math.sqrt(2 * KPp * WL_3 * I5)
WL_6 = (gm6 / gm4) * WL_3
print(f"gm6 = {gm6*1e6:.2f} µS, (W/L)6 = {WL_6:.2f}")
# ==============================
# Step 7: M6電流I6算出 / Second stage current
# ==============================
I6 = gm6**2 / (2 * KPp * WL_6)
print(f"I6 = {I6*1e6:.2f} µA")
# ==============================
# Step 8: M7 (定電流負荷)
# ==============================
WL_7 = (I6 / I5) * WL_5
VDS7_sat = math.sqrt(2 * I6 / (KPp * WL_7))
print(f"(W/L)7 = {WL_7:.2f}, VDS7(sat) = {VDS7_sat:.2f} V")
# ==============================
# Step 9: 総合利得と消費電力 / Gain and Power
# ==============================
ro1 = 1 / (lamN * I1)
ro3 = 1 / (lamP * I5)
ro6 = 1 / (lamP * I6)
ro7 = 1 / (lamN * I6)
Av1 = gm1 * (ro1 * ro3 / (ro1 + ro3))
Av2 = gm6 * (ro6 * ro7 / (ro6 + ro7))
Av_total = Av1 * Av2
Pdiss = VDD * (I5 + I6)
print(f"Av ≈ {Av_total:.1f} V/V")
print(f"Power Dissipation = {Pdiss*1e3:.3f} mW")
# ==============================
# 安定性チェック / Stability check
# ==============================
z_RHP = gm6 / Cc
GB_rad = 2 * math.pi * GB
print(f"RHP zero = {z_RHP/(2*math.pi):.2f} Hz")
print(f"z/GB ratio = {z_RHP/GB_rad:.1f} (should ≥ 10)")
───────────────────────────────
二段オペアンプ(ミラー補償+ヌル抵抗)設計まとめ
【目的】
ミラー補償容量 Cc により発生する右半平面ゼロ(RHP zero)が位相余裕を悪化させる。
→ 補償容量直列にヌル抵抗 Rz を挿入し、ゼロを左半平面(LHP)に移動。
→ 安定化と位相マージン ≈ 60° の確保。
───────────────────────────────
【基本式】
極・零点:
p₁ = -gm₁ / (A_v * Cc)
p₂ = -gm₆ / CL
z₁ = -1 / (Rz * Cc - Cc / gm₆)
補償条件(z₁ ≈ p₂):
Rz = (1/gm₆) * (CL + Cc) / Cc
───────────────────────────────
【M8 による Rz 実現】
アクティブ抵抗としての動作式:
Rz = 1 / [K′_P8 * (VSG8 - |VTP|)]
M8, M9, M10, M11 のサイズ比関係:
VSG11 = VSG6
(W/L)₁₁ = (I₁₀ / I₆) * (W₆ / L₆)
導出式:
(W/L)₈ = (Cc / (CL + Cc)) * √[(S₁₀ S₆ I₆) / I₁₀]
───────────────────────────────
【設計例】
条件:
Cc = 3 pF
CL = 10 pF
I₆ = 95 µA
S₆ = 190
I₁₀ = I₉ = I₁₁ = 15 µA
計算:
S₁₁ = (I₁₁ / I₆) * S₆ = 30
(W/L)₉ = (I₁₀ / I₅) * (W/L)₅ = 3
(W/L)₈ = 0.23 * √(1 * 190 * 95 / 15) ≈ 8
───────────────────────────────
【Rz とゼロ位置】
VSG10 = √(2I₁₀ / (K′_P S₁₀)) + |VTP| = 1.595 V
Rz = 1 / [25×8×(1.595 - 0.7)] = 4.56 kΩ
零点位置:
z₁ = -1 / (Rz * Cc) = -94.9×10⁶ rad/s
p₂ = -gm₆ / CL = -95×10⁶ rad/s
→ z₁ ≈ p₂(LHPで打消し)
───────────────────────────────
【デバイス寸法まとめ】
| 素子 | (W/L) | 電流 [µA] | 役割 |
|---|---|---|---|
| M₈ | 8 | 0 | Nulling resistor |
| M₉ | 3 | 15 | Bias mirror |
| M₁₀ | 1 | 15 | Bias reference |
| M₁₁ | 30 | 15 | Mirror bias driver |
W₈=4µm, W₉=1.5µm, W₁₀=0.5µm, W₁₁=15µm(L=0.5µm)
───────────────────────────────
【開ループ利得計算】
パラメータ:
gm₁ = 94 µS
gm₆ = 950 µS
λN = 0.06 V⁻¹
λP = 0.08 V⁻¹
I₁ = 15 µA
I₆ = 95 µA
出力抵抗:
ro₁ = 1 / (λN·I₁) = 1.11 MΩ
ro₃ = 1 / (λP·I₁) = 0.833 MΩ
ro₆ = 1 / (λP·I₆) = 0.132 MΩ
ro₇ = 1 / (λN·I₆) = 0.175 MΩ
ro13 = ro₁ // ro₃ = 0.476 MΩ
ro67 = ro₆ // ro₇ = 0.0752 MΩ
各段の利得:
Av₁ = gm₁·ro13 = 44.9
Av₂ = gm₆·ro67 = 71.4
Av_total = Av₁·Av₂ = 3.2×10³ ≈ 70 dB
───────────────────────────────
【最終結果】
| 項目 | 値 |
|---|---|
| GBW | 5 MHz |
| PM | 約60° |
| SR | 10 V/µs |
| Av | 約3.2×10³ (70 dB) |
| Rz | 4.56 kΩ |
| z₁ | ≈ p₂ = 95×10⁶ rad/s |
| 消費電力 | ≈ 0.31 mW (VDD=2.5 V時) |
───────────────────────────────
【まとめ】
- ヌル抵抗によりRHPゼロをLHPへ移動 → 位相余裕改善。
- M8をアクティブ抵抗としてRz ≈ 4.56 kΩを生成。
- 零点 z₁ と第2極 p₂ が一致し、安定化を実現。
- 開ループ利得 ≈ 70 dB、GBW = 5 MHz、低電力動作。
import math
# ==========================
# 定数設定 / Parameter setup
# ==========================
Cc = 3e-12 # [F] Miller compensation capacitor
CL = 10e-12 # [F] Load capacitance
gm1 = 94e-6 # [S]
gm6 = 950e-6 # [S]
I1 = 15e-6 # [A]
I6 = 95e-6 # [A]
VTP = 0.7 # [V]
Kp = 25e-6 # [A/V^2]
WL8 = 8 # (W/L) ratio of M8
lamN = 0.06 # [1/V]
lamP = 0.08 # [1/V]
# ==========================
# 1. ヌル抵抗 Rz の計算 / Nulling resistor calculation
# ==========================
VSG10 = math.sqrt(2 * 15e-6 / (Kp * 1)) + VTP # assuming S10=1
Rz = 1 / (Kp * WL8 * (VSG10 - VTP))
print(f"VSG10 = {VSG10:.3f} V")
print(f"Rz = {Rz/1e3:.2f} kΩ")
# ==========================
# 2. 零点と第2極 / Zero and pole positions
# ==========================
z1 = -1 / (Rz * Cc)
p2 = -gm6 / CL
print(f"z1 = {z1/1e6:.1f}×10⁶ rad/s")
print(f"p2 = {p2/1e6:.1f}×10⁶ rad/s")
print(f"→ z1 ≈ p2 (LHP cancellation achieved)")
# ==========================
# 3. 出力抵抗と利得 / Output resistances and gain
# ==========================
ro1 = 1 / (lamN * I1)
ro3 = 1 / (lamP * I1)
ro6 = 1 / (lamP * I6)
ro7 = 1 / (lamN * I6)
# 並列合成 / Parallel combination
ro13 = (ro1 * ro3) / (ro1 + ro3)
ro67 = (ro6 * ro7) / (ro6 + ro7)
Av1 = gm1 * ro13
Av2 = gm6 * ro67
Av_total = Av1 * Av2
print(f"ro13 = {ro13/1e6:.3f} MΩ, ro67 = {ro67/1e6:.3f} MΩ")
print(f"Av1 = {Av1:.1f}, Av2 = {Av2:.1f}")
print(f"Av_total = {Av_total:.1f} ≈ {20*math.log10(Av_total):.1f} dB")
# ==========================
# 4. 電力と帯域の確認 / Power and bandwidth summary
# ==========================
VDD = 2.5
Pdiss = VDD * (I1 + I6)
GBW = 5e6
SR = 10e6
print(f"Power Dissipation = {Pdiss*1e3:.3f} mW")
print(f"GBW = {GBW/1e6:.1f} MHz, SR = {SR/1e6:.1f} V/µs")
print("Phase Margin ≈ 60°, stable operation achieved.")

