MOSFETアンプの設計メモ

アナログ回路設計におけるMOSFETの基礎について概説します。

まず、MOSFETが飽和領域で動作している場合、Veff（有効ゲート電圧）を0.2Vと仮定します。チャネル長Lを0.2μmに固定し、VGS- ID特性およびVGS- gm特性を考察します。この時、MOSFETのしきい値電圧Vthが0.45Vであるため、VGSはVeff + Vthであり、具体的には0.65Vとなります。この条件下では、トランスコンダクタンスgmが飽和値の70%に到達しています。

Veffをさらに高くすると、gmの増加は頭打ちとなり、結果として過剰な電力消費が発生するリスクがあります。一方で、Veffを小さくすると、電流を一定に保つためにはチャネル幅Wを大きく設定する必要が生じます。これにより寄生容量が増加し、周波数特性の劣化を招く可能性があります。

次に、MOSFETの静的特性からμCox、しきい値電圧Vth、アーリー電圧VA（VA = 1/λ）などのパラメータを導き出し、DC特性を用いて動作点を決定します。この際、WとLの選定は、これら静的特性を基に慎重に行う必要があります。

設計段階では、プロセス、電圧、温度（PVT）変動に対する最悪条件（worst-case PVT conditions）を含むすべての条件を考慮したシミュレーションが重要です。これには、レイアウト設計、LPE抽出、モンテカルロシミュレーションといった解析手法が含まれます。

MOSFET設計における留意点として以下が挙げられます：
1. コーナー解析によって自ずとチャネル長Lの値が確定します。
2. 動作点を安定させるためには、動作電圧差も一定に保つ必要があります。

また、以下のような設計原則が重要です：
- トポロジー全体でWとLの比率を維持しつつ両者を大きくすると、アーリー電圧が変化します。
- Wだけを大きくすると、トランスコンダクタンスgmが増加します。この際、Wを効果的に増加させる手段としては、複数のMOSFETを並列に配置することが挙げられます。
- MOSFETのフィンガー数は通常偶数に設定し、奇数にはしません。寄生容量の影響を防ぐため、ダミートランジスタを配置することも重要です。
- カレントミラー構成では、WとLはべき乗則に従ってスケーリングされます。

ユニティゲイン周波数は、以下の式で表されます：
\[ \omega = \frac{gm1}{Cc} \]
ここで、gm1はトランスコンダクタンス、Ccは補償容量を意味します。

### トランジスタのキャラクタライズ
MOSFETのキャラクタライズは、一般的にSPICEなどの回路シミュレータを使用して実施されます。MOSFETの特性はチャネル長Lによって大きく異なるため、キャラクタライズは各チャネル長ごとに行うことが基本です。特にアナログ回路設計においては、信頼性を考慮し、最小チャネル長より10〜15%程度長くすることが推奨されます。チャネル長が短すぎると、ホットキャリア効果によって信頼性が低下し、デバイス寿命が短くなる可能性があるためです。

今回の設計では、0.18μm CMOSプロセスを使用し、アナログ回路用の最小チャネル長を0.2μmと設定しています。さらに、高利得を必要とする回路には、チャネル長0.4μmのMOSFETを使用する場合もあります。

はじめてのアナログ電子回路 実用回路編 (KS理工学専門書) | 松澤 昭
より
![IMG_6472.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3759109/7d1e1609-070f-635d-f792-3ef05515526b.jpeg)
![IMG_6473.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3759109/20c7ff55-a1e0-2f1a-0a5a-75823c92af00.jpeg)
![IMG_6474.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3759109/e2ee9329-aa5b-db90-8f8f-6c6d76d241c3.jpeg)
![IMG_6475.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3759109/13ec450f-6820-1c89-743b-e243304eba34.jpeg)

https://kobaweb.ei.st.gunma-u.ac.jp/lecture/motozawa-sensei_20220704_r1.pdf

```

# 必要なライブラリをインポート
import numpy as np

# 使用パラメータの設定
mu = 0.05  # キャリア移動度 (m^2/V·s)
Cox = 3e-4  # 酸化膜容量 (F/m^2)
W = 10e-6  # チャネル幅 (m)
L = 1e-6  # チャネル長 (m)
Vth = 0.7  # しきい値電圧 (V)
Vgs = 1.5  # ゲート・ソース間電圧 (V)
Vds = 1  # ドレイン・ソース間電圧 (V)
lam = 0.02  # チャネル長変調パラメータ (V^-1)
eta = 0.1
N = 1.5
V_T = 0.026  # 熱電圧 (V)
k_B = 1.38e-23  # ボルツマン定数 (J/K)
T = 300  # 温度 (K)
gamma = 2/3
K = 1e-24

# Id特性（非飽和領域、飽和領域、弱反転領域）
Id_non_sat = mu * Cox * (W / L) * ((Vgs - Vth) - 0.5 * Vds) * Vds  # 非飽和領域
Id_sat = mu * Cox * (W / (2 * L)) * (Vgs - Vth)**2 * (1 + lam * Vds)  # 飽和領域
Id_weak_inv = mu * Cox * (W / L) * np.exp((Vgs - Vth + eta * Vds) / (N * V_T)) * (1 - np.exp(-Vds / V_T))  # 弱反転領域

# 飽和時の gm
gm1 = mu * Cox * (W / L) * (Vgs - Vth)
gm2 = 2 * Id_sat / (Vgs - Vth)
gm3 = np.sqrt(2 * mu * Cox * (W / L) * Id_sat)

# 飽和時の Vgs
Vgs_sat = np.sqrt(Id_sat / (mu * Cox * (W / (2 * L)))) + Vth

# オーバードライブ電圧
Vov = Id_sat / (mu * Cox * (W / L))

# 出力抵抗 ro
ro = 1 / (lam * Id_sat)

# 飽和時の入力換算ノイズ (熱ノイズ)
vn_thermal_noise = 4 * k_B * T * gamma * (1 / gm1)

# 飽和時の入力換算ノイズ (フリッカノイズ)
vn_flicker_noise = K / (mu * Cox * W * L) * (1 / 1)  # f = 1Hzで計算

# 結果を表示
Id_non_sat, Id_sat, Id_weak_inv, gm1, gm2, gm3, Vgs_sat, Vov, ro, vn_thermal_noise, vn_flicker_noise
```