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()