MOSトランジスタはゲート電圧でドレイン電流を制御する電圧制御電流源として機能する。飽和領域ではドレイン電流はゲート電圧に対して二乗で増加し、電流源としての性質を示す。基本式は
Ids = (K/2) * (Vgs − Vth)² * (1 + λVds)
であり、ここでKはμCox(W/L)に等しい。μはキャリア移動度、Coxはゲート酸化膜容量、W/Lはトランジスタのアスペクト比を示す。λはチャネル長変調を表す。オーバードライブ電圧Vov = Vgs − Vthは動作領域を決め、電流値を決定する主要パラメータとなる。
小信号解析では、動作点周りの微小変化を線形化して扱う。ゲート‐ソース間電圧の変化に対するドレイン電流変化はトランスコンダクタンスgmで表され、
gm = ∂Ids/∂Vgs = K(VGS − Vth)(1 + λVds) ≈ √(2KIds)
となる。ドレイン‐ソース間電圧に対する電流変化はgdsで表され、これは有限の出力抵抗rds = 1/gdsを意味する。近似的にrds ≈ 1/(λIds)とおける。
小信号等価回路では、ドレイン端子にgmvgsの電流源とrdsの抵抗が並列に接続された形で表現される。このときの入出力関係は
ids = gm·vgs + vds/rds
である。入力インピーダンスはゲート絶縁によりほぼ無限大、出力インピーダンスはrdsとなる。トランジスタ単体の電圧増幅度は
Av = −gm·rds
であり、動作電流やチャネル長変調によって変化する。
基板がソースと異電位の場合、ボディ効果により追加の電流項gmbvbsが発生する。これにより実効的なgmが低下するが、基本式の形は同じである。高周波では寄生容量Cgs、Cgd、Cdsおよびゲート抵抗rgを含む2次系として振る舞い、ゲインは周波数上昇とともに減少する。
これらの関係を理解することで、ソース接地、ソースフォロア、カスコードなどの各回路における動作原理を統一的に説明できる。
# Program Name: mosfet_small_signal_analysis.py
# Creation Date: 20251103
# Overview: MOSFET large-signal and small-signal characteristic analysis (Ids, gm, rds, Av)
# Usage: Run in Google Colab or Python environment to visualize MOSFET current and gain behavior
# 必要ライブラリをインストール
!pip install numpy matplotlib
import numpy as np
import matplotlib.pyplot as plt
# =========================================================
# パラメータ設定(Parameter settings)
# =========================================================
mu = 200e-4 # キャリア移動度 [m^2/Vs]
Cox = 4e-3 # 酸化膜容量 [F/m^2]
W = 10e-6 # チャネル幅 [m]
L = 1e-6 # チャネル長 [m]
Vth = 0.7 # 閾値電圧 [V]
lam = 0.02 # チャネル長変調係数 [1/V]
Vds = 2.0 # ドレイン−ソース電圧 [V]
Vgs_range = np.linspace(0, 3, 200) # ゲート電圧範囲 [V]
# =========================================================
# 大信号解析(Large-signal characteristics)
# =========================================================
K = mu * Cox * (W / L)
Ids = 0.5 * K * np.maximum(Vgs_range - Vth, 0)**2 * (1 + lam * Vds)
Vov = np.maximum(Vgs_range - Vth, 0)
# =========================================================
# 小信号パラメータ(Small-signal parameters)
# =========================================================
gm = K * np.maximum(Vgs_range - Vth, 0) * (1 + lam * Vds)
Ids_oper = 0.5 * K * (2 - Vth)**2 * (1 + lam * Vds) # 動作点(例:Vgs=2V)
rds = 1 / (lam * Ids_oper)
Av = -gm * rds # 電圧増幅度近似
# =========================================================
# プロット(Plotting results)
# =========================================================
# Ids-Vgs 特性
plt.figure(figsize=(7,4))
plt.plot(Vgs_range, Ids*1e3)
plt.title("MOSFET Ids-Vgs Characteristic (Saturation)")
plt.xlabel("Vgs [V]")
plt.ylabel("Ids [mA]")
plt.grid(True)
plt.show()
# gm-Vgs 特性
plt.figure(figsize=(7,4))
plt.plot(Vgs_range, gm*1e6)
plt.title("Transconductance gm vs Vgs")
plt.xlabel("Vgs [V]")
plt.ylabel("gm [μS]")
plt.grid(True)
plt.show()
# 小信号モデルの例示
print("=== Small-Signal Parameters at Vgs = 2.0 V ===")
print(f"gm = {K*(2-Vth)*(1+lam*Vds):.3e} S")
print(f"rds = {rds:.3e} Ω")
print(f"Av = {Av[np.where(Vgs_range>=2.0)][0]:.2f}")
print("\nSmall-signal model: ids = gm*vgs + vds/rds")
print("Voltage gain: Av = -gm * rds")
# =========================================================
# 日本語・英語コメント概要
# =========================================================
# MOSトランジスタはゲート電圧で電流を制御するVCCSとして動作する。
# 飽和領域ではIds ∝ (Vgs − Vth)^2で近似される。
# 小信号解析ではgm, rdsを用い、Av = −gm·rdsで利得を算出。
# 高周波ではCgs, Cgd, Cdsが寄生し、ゲインは周波数依存となる。