はじめに
本ドリルは、アナログCMOS回路設計の基礎である 共通ソース回路・動作領域・小信号解析 を題材にしたプログラミング課題集です。
従来、MOSFETの電流電圧特性や動作領域の理解は紙と鉛筆による数式展開に頼ることが多く、直感的な理解に時間がかかりました。
ここでは Python を用いて式を関数化し、入力電圧や出力電圧の変化を数値的・視覚的に確認できるようにしています。さらに、生成AI(ChatGPTなど) を活用して式の意味やコードの改善点を質問することで、効率的に知識を深められるよう工夫しています。
学習の流れは以下のとおりです。
MOSFET の基本式を理解する
Python で関数を実装する
グラフ描画で動作特性を可視化する
生成AI に質問し、コードや式の解釈を確認する
この方法により、式の暗記にとどまらず、数値計算・視覚化・AIとの対話による理解深化 を通じて、アナログ回路設計に必要な直感を身につけることを目指します。
チャプター2MOSFET動作解析と応用
問題 1: しきい値電圧の計算
使う式: Vth = ΦMS + 2ΦF + Qdep / Cox
(1) ΦMS, ΦF, Qdep, Cox を入力として Vth を計算する関数を作成せよ。
(2) 基板ドーピング濃度 Nsub を変化させたとき Vth がどのように変化するかをシミュレーションし、グラフ化せよ。
パラメータ: ΦMS [V], ΦF [V], Qdep [C/m²], Cox [F/m²]
数値例: ΦMS = 0.2, ΦF = 0.3, Qdep = 5e-8, Cox = 2e-3
問題 2: ドリフト電流の計算
使う式: I = Qd * v
(1) Qd と v を入力として I を返す関数を作成せよ。
(2) Qd = 2e-7, v = 5e4 の場合の I を求めよ。
パラメータ: Qd [C/m], v [m/s], I [A]
問題 3: チャネル電荷密度
使う式: Qd = W * Cox * (Vgs - Vth)
(1) Vgs, Vth, W, Cox を入力として Qd を計算する関数を作成せよ。
(2) Vgs を 0.5〜1.2 V まで変化させ Qd をプロットせよ。
パラメータ: W [m], Cox [F/m²], Vgs [V], Vth [V]
数値例: Vth = 0.3, W = 10e-6, Cox = 2e-3
問題 4: チャネル位置依存の電荷密度
使う式: Qd(x) = W * Cox * [ (Vgs - V(x)) - Vth ]
(1) V(x) を横軸とした Qd(x) のグラフを描け。
(2) Vgs = 1.0, Vth = 0.3, V(x) = 0.2, W = 10e-6, Cox = 2e-3 のとき Qd(x) を計算せよ。
問題 5: ドレイン電流式と動作領域判定
使う式:
トライオード領域: Id = μnCox (W/L) [ (Vgs - Vth) Vds - (1/2)Vds² ]
飽和領域: Id = (1/2) μnCox (W/L) (Vgs - Vth)²
(1) MOSFET の動作領域を判定する関数を作成せよ。
(2) 各領域の Id を計算する関数を作成せよ。
条件:
カットオフ Vgs <= Vth → Id = 0
トライオード Vgs > Vth かつ Vds < Vgs - Vth
飽和 Vgs > Vth かつ Vds >= Vgs - Vth
パラメータ: μn [m²/Vs], Cox [F/m²], W [m], L [m], Vgs [V], Vds [V], Vth [V]
数値例: μnCox = 50e-6, W/L = 10, Vth = 0.3
問題 6: I–V 特性のプロット
使う式: 問題5の Id 式
(1) Vgs = 0.5, 0.7, 1.0 の場合について Id–Vds 特性を計算しグラフを描け。
(2) 飽和電流 Idsat = (1/2) μnCox (W/L)(Vgs - Vth)² を水平線として追加し比較せよ。
問題 7: パラメータ変化の影響
使う式: 問題5の Id 式
(1) Vth を 0.3 → 0.4 に変更したとき Id–Vds の変化を考察せよ。
(2) μnCox を 50e-6 → 100e-6 に変更したとき Id の変化をシミュレーションせよ。
問題 8: gm と ro の計算
使う式:
gm = μnCox (W/L)(Vgs - Vth)
ro = 1 / (λ Id)
(1) gm を計算する関数を作成せよ。
(2) ro を計算する関数を作成せよ。
(3) gm·ro を計算し増幅率に与える影響を考察せよ。
数値例: Vgs = 1.0, Vth = 0.3, μnCox = 50e-6, W/L = 20, Id = 200e-6, λ = 0.02
問題 9: サブスレッショルド領域
使う式: Id = I0 * exp( Vgs / (nVT) )
(1) I0, n, VT を入力として Id を計算する関数を作成せよ。
(2) Vgs を 0〜0.3 V で変化させ Id をプロットし強反転領域と比較せよ。
数値例: I0 = 1e-9, n = 1.5, VT = 0.026
問題 10: FinFET の有効チャネル幅
使う式: Heff = Wf + 2Hf, Heff_total = N(Wf + 2Hf)
(1) Wf, Hf を入力として Heff を計算する関数を作成せよ。
(2) N 本のフィンを並列接続した場合 Heff_total をシミュレーションせよ。
(3) L, Vgs, Vth を変化させたときの Id をグラフ化せよ。
数値例: Wf = 8e-9, Hf = 40e-9, N = 4, L = 20e-9, μnCox = 100e-6, Vgs = 0.9, Vth = 0.4
問題 11: サブスレッショルド電流のシミュレーション
使う式: Id = I0 * exp( Vgs / (nVT) )
Vgs を 0〜0.3 V で変化させたときの Id を計算し、グラフでプロットせよ。
数値例: I0 = 1e-9, n = 1.5, VT = 0.026
問題 12: 小信号出力抵抗 ro の計算
使う式: ro = 1 / (λ Id)
Id, λ を入力として ro を計算する関数を作成せよ。
数値例: Id = 200e-6, λ = 0.02
問題 13: gm·ro の計算
使う式:
gm = μnCox (W/L)(Vgs - Vth)
ro = 1 / (λ Id)
gm·ro を計算する関数を作成し、回路の増幅率を考察せよ。
数値例: Vgs = 1.0, Vth = 0.3, μnCox = 50e-6, W/L = 20, Id = 200e-6, λ = 0.02
問題 14: FinFET の有効幅
使う式: Heff = Wf + 2Hf
Wf, Hf を入力として Heff を計算する関数を作成せよ。
数値例: Wf = 8e-9, Hf = 40e-9
問題 15: 多フィン構造
使う式: Heff_total = N(Wf + 2Hf)
Wf, Hf, N を入力として Heff_total を計算する関数を作成せよ。
数値例: Wf = 6e-9, Hf = 40e-9, N = 4
問題 16: FinFET 飽和電流
使う式: Id = (1/2) μnCox (Heff/L)(Vgs - Vth)²
Heff, L, μnCox, Vgs, Vth を入力として Id を計算する関数を作成せよ。
数値例: μnCox = 100e-6, L = 20e-9, Wf = 10e-9, Hf = 50e-9, Vgs = 0.9, Vth = 0.4
問題 17: FinFET のアスペクト比
使う式: AR = Hf / Wf
Wf, Hf を入力として AR を計算する関数を作成せよ。
数値例: Wf = 5e-9, Hf = 45e-9
問題 18: ボディ効果のしきい値電圧
使う式: Vth = Vth0 + γ(√(2ΦF + VSB) - √(2ΦF))
Vth0, γ, ΦF, VSB を入力として Vth を計算する関数を作成せよ。
数値例: Vth0 = 0.3, γ = 0.4, ΦF = 0.3, VSB = 0.7
問題 19: チャネル長変調を含む電流式
使う式: Id ≈ (1/2) μnCox (W/L)(Vgs - Vth)²(1 + λVds)
Vgs, Vth, μnCox, W/L, λ, Vds を入力として Id を計算する関数を作成せよ。
数値例: λ = 0.05, Vgs = 1.0, Vth = 0.3, Vds = 2.0, μnCox = 50e-6, W/L = 20
問題 20: チャネル長の影響
使う式: Id ∝ (W/L)(Vgs - Vth)²(1 + λVds)
L を変化させたときの Id–Vds 特性をシミュレーションし、グラフで比較せよ。
数値例: W/L = 10, Vgs = 1.0, Vth = 0.3, μnCox = 50e-6, λ = 0.02
問題 21: 線形領域(トライオード領域)の電流式
使う式: Id ≈ μnCox (W/L)(Vgs - Vth) Vds
(1) この式が有効となる条件を説明せよ。
(2) Vgs = 1.2, Vth = 0.4, μnCox = 50e-6, W/L = 10, Vds = 0.1 のとき Id を計算せよ。
問題 22: 抵抗モデル
使う式: Rlin = 1 / [ μnCox (W/L)(Vgs - Vth) ]
(1) Rlin が Vgs に依存する理由を説明せよ。
(2) Vgs = 1.2, Vth = 0.4, μnCox = 50e-6, W/L = 10 のとき Rlin を計算せよ。
問題 23: 飽和領域の電流式
使う式: Id = (1/2) μnCox (W/L)(Vgs - Vth)²
(1) なぜ Id が Vds に依存しなくなるのかを説明せよ。
(2) Vgs = 1.0, Vth = 0.3, μnCox = 50e-6, W/L = 20 のとき Id を計算せよ。
問題 24: 飽和領域境界電圧 Vdsat
使う式: Vdsat = 2 Id / [ μnCox (W/L)(Vgs - Vth) ] + Vth
(1) この式を導出する際の前提を説明せよ。
(2) 問題23の条件で Vdsat を計算せよ。
問題 25: PMOS の電流式
使う式:
Id = - μpCox (W/L)[ (Vsg - |Vtp|)Vsd - (1/2)Vsd² ]
Id = (1/2) μpCox (W/L)(Vsg - |Vtp|)²
(1) NMOS の電流式と比較して符号の違いを説明せよ。
(2) Vsg = 1.2, Vtp = -0.4, μpCox = 25e-6, W/L = 20, Vsd = 0.5 のとき Id を計算せよ。
問題 26: トランスコンダクタンスの定義
使う式: gm = ∂Id / ∂Vgs | (Vds一定)
(1) この式の物理的意味を説明せよ。
(2) gm の単位を答えよ。
問題 27: 飽和領域における gm
使う式:
gm = μnCox (W/L)(Vgs - Vth)
gm = √( 2 μnCox (W/L) Id )
(1) 2つの式が等価であることを示せ。
(2) Vgs = 1.0, Vth = 0.3, μnCox = 50e-6, W/L = 20 のとき gm を計算せよ。
問題 28: トライオード領域における gm
使う式: gm = μnCox (W/L) Vds
(1) gm が Vds に比例する理由を説明せよ。
(2) Vds = 0.1, μnCox = 50e-6, W/L = 10 のとき gm を計算せよ。
問題 29: ボディ効果によるしきい値電圧
使う式: Vth = Vth0 + γ(√(2ΦF + VSB) - √(2ΦF))
(1) VSB が大きくなると Vth はどう変化するかを説明せよ。
(2) Vth0 = 0.3, γ = 0.4, ΦF = 0.3, VSB = 0.6 のとき Vth を計算せよ。
問題 30: 応用課題 – gm·ro による回路増幅率
使う式: gm = μnCox (W/L)(Vgs - Vth), ro = 1/(λ Id), 増幅率 ≈ gm·ro
(1) gm が大きいと増幅率がどう変化するかを説明せよ。
(2) Vgs = 1.0, Vth = 0.3, μnCox = 50e-6, W/L = 20, Id = 200e-6, λ = 0.02 のとき gm, ro, gm·ro を計算せよ。
問題 31: 有効チャネル幅 Heff
式: Heff = Wf + 2Hf
(1) Wf = 8 nm, Hf = 40 nm のとき Heff を計算せよ。
(2) Heff を 2 倍にすると理想的には Id はどうなるか。
問題 32: 飽和電流 Id の計算
式: Id = (1/2) μnCox (Heff/L)(Vgs - Vth)²
(1) μnCox = 100e-6 A/V², L = 20 nm, Wf = 10 nm, Hf = 50 nm, Vgs = 0.9 V, Vth = 0.4 V のとき Id を計算せよ。
(2) Hf を 2 倍にした場合 Id はどう変化するか。
問題 33: アスペクト比 AR
式: AR = Hf / Wf
(1) Wf = 5 nm, Hf = 45 nm のとき AR を求めよ。
(2) AR が大きいとき短チャネル効果に対する耐性はどうなるか。
問題 34: 多フィン構造
式: Heff_total = N(Wf + 2Hf)
(1) Wf = 6 nm, Hf = 40 nm, N = 4 のとき Heff_total を求めよ。
(2) N を増やすことと Wf を増やすことの設計上の違いを説明せよ。
問題 35: スケーリング則の影響
式: Id ∝ (Heff/L)(Vgs - Vth)²
(1) L を 2 倍にした場合 Id はどう変化するか。
(2) (Vgs - Vth) を半分にした場合 Id はどう変化するか。
問題 36: 短チャネル効果と DIBL
式: ΔVth ≈ - η Vds (η: DIBL 係数)
(1) 短チャネル効果が大きいと Vth はどう変化するか。
(2) η = 0.1, Vds = 1.0 V のとき ΔVth を計算せよ。
問題 37: 出力抵抗 ro
式: ro = 1 / (λ Id)
(1) λ が大きいと ro はどうなるか。
(2) Id = 200 μA, λ = 0.02 V^-1 のとき ro を求めよ。
問題 38: gm と ro の増幅率
式: gm = μnCox (Heff/L)(Vgs - Vth), ro = 1 / (λ Id), 増幅率 ≈ gm·ro
(1) gm が大きいと増幅率はどう変化するか。
(2) μnCox = 50e-6, Wf = 10 nm, Hf = 40 nm, L = 20 nm, Vgs = 1.0, Vth = 0.3, Id = 200 μA, λ = 0.02 のとき gm·ro を計算せよ。
問題 39: Body Effect のしきい値電圧
式: Vth = Vth0 + γ(√(2ΦF + VSB) - √(2ΦF))
(1) VSB が増加すると Vth はどう変化するか。
(2) Vth0 = 0.3, γ = 0.4, ΦF = 0.3, VSB = 0.7 のとき Vth を計算せよ。
問題 40: gmb の計算
式: gmb = (γ / (2√(2ΦF + VSB))) gm
(1) gmb の物理的意味を説明せよ。
(2) gm = 2 mA/V, γ = 0.4, ΦF = 0.3, VSB = 0.7 のとき gmb を計算せよ。
チャプター3共通ソース・ソースフォロワ・カスコード回路の数値解析演習
問題 1: 共通ソース回路の出力電圧(トライオード領域)
式:
Vout = VDD − RD · μnCox (W/L)(Vin − VTH) Vout
(1) この式を Python 関数として実装せよ。
入力: Vin, VTH, VDD, RD, μnCox, W, L
出力: Vout
(2) Vin を 0.3〜1.2 V の範囲で変化させ、対応する Vout を計算しグラフを描け。
パラメータ:
VDD = 1.8 V, RD = 10 kΩ, μnCox = 50e−6 A/V², W/L = 10, VTH = 0.4 V
問題 2: 共通ソース回路の小信号電圧利得
式:
gm = μnCox (W/L)(Vin − VTH)
Av = −gm · RD
(1) gm を計算する関数を作成せよ。
(2) Av を計算する関数を作成せよ。
(3) Vin を 0.4〜1.2 V の範囲で変化させたときの Av のグラフを描け。
パラメータ:
RD = 10 kΩ, μnCox = 50e−6 A/V², W/L = 10, VTH = 0.4 V
問題 3: 飽和領域のドレイン電流
式:
Id = (1/2) μnCox (W/L)(Vin − VTH)²
(1) Id を計算する関数を作成せよ。
(2) Vin を 0.3〜1.2 V の範囲で変化させ、Id をプロットせよ。
パラメータ:
μnCox = 50e−6 A/V², W/L = 10, VTH = 0.4 V
問題 4: 動作領域の判定
条件:
カットオフ: Vin ≤ VTH → Id = 0
トライオード: Vin > VTH かつ VDS < Vin − VTH
飽和: Vin > VTH かつ VDS ≥ Vin − VTH
式:
トライオード領域: Id = μnCox (W/L)[(Vin − VTH)VDS − (1/2)VDS²]
飽和領域: Id = (1/2) μnCox (W/L)(Vin − VTH)²
(1) 任意の Vin, VDS を入力して動作領域を判定せよ。
(2) 判定結果に応じて Id を計算せよ。
パラメータ:
Vin = 0.3〜1.2 V, VDS = 0〜1.2 V, VTH = 0.4 V, μnCox = 50e−6 A/V², W/L = 10
問題 5: パラメータ依存性のシミュレーション
式:
トライオード領域: Id = μnCox (W/L)[(Vin − VTH)VDS − (1/2)VDS²]
飽和領域: Id = (1/2) μnCox (W/L)(Vin − VTH)²
(1) VTH を 0.3 V から 0.4 V に変更したとき、Id–VDS 特性がどう変化するかシミュレーションせよ。
(2) μnCox を 50e−6 A/V² から 100e−6 A/V² に変更したとき、Id の大きさがどのように変化するか計算し説明せよ。
パラメータ:
VDD = 1.8 V, VDS = 0〜1.2 V, W/L = 10, RD = 10 kΩ, Vin = 0.3〜1.2 V
問題 6: 出力抵抗を含む小信号電圧利得
式:
Av = −gm (ro || RD)
(1) Av を計算する Python 関数を作成せよ。
入力: gm, ro, RD
(2) ro = 20 kΩ, RD = 10 kΩ, gm = 2 mA/V のとき Av を計算せよ。
(3) ro を 10 kΩ〜100 kΩ の範囲で変化させ、Av をプロットせよ。
問題 7: 内部利得(Intrinsic Gain)
式:
Av = −gm · ro
(1) gm, ro を入力として Av を返す関数を作成せよ。
(2) gm = 2 mA/V, ro = 20 kΩ の場合の Av を計算せよ。
(3) gm を 1〜5 mA/V の範囲で変化させ、ro = 20 kΩ として Av をシミュレーションし、グラフ化せよ。
問題 8: 電流源バイアス回路
式:
gm = μnCox (W/L)(Vin − VTH)
Av = −gm · ro
(1) gm を計算する関数を作成せよ。
パラメータ: Vin = 0.6 V, VTH = 0.4 V, μnCox = 50e−6 A/V², W/L = 10
(2) ro = 20 kΩ のとき Av を求めよ。
(3) 電流源 I1 を増加させると gm も増加する。このとき Av がどのように変化するか考察せよ。
問題 9: バルク端子接地時の電圧利得
式:
gm = μnCox (W/L)(Vin − VTH)
Av = −gm · RD
(1) gm を計算せよ。
パラメータ: Vin = 0.8 V, VTH = 0.4 V, μnCox = 50e−6 A/V², W/L = 20
(2) RD = 15 kΩ の場合の Av を計算せよ。
(3) バルク効果を無視した場合と比較して、利得がどのように変化するか説明せよ。
問題 10: ダイオード接続負荷のインピーダンス
式:
Zeq = 1 / (gm + gmb)
(1) gm, gmb を入力として Zeq を計算する関数を作成せよ。
(2) gm = 1 mA/V, gmb = 0.2 mA/V の場合 Zeq を計算せよ。
(3) gmb = 0 の場合と比較してインピーダンスがどう変化するか説明せよ。
問題 11: ソース側インピーダンス
式:
RX = 1 / (gm + gmb)
(1) gm, gmb を入力として RX を計算する関数を作成せよ。
(2) gm = 2 mA/V, gmb = 0.5 mA/V の場合 RX を計算せよ。
(3) gmb がゼロの場合と比較して RX がどう変化するかを考察せよ。
問題 12: ダイオード接続負荷付き CS 回路の電圧利得
式:
Av = −gm1 / (gm2 + gmb2)
(1) gm1, gm2, gmb2 を入力として Av を返す関数を作成せよ。
(2) gm1 = 2e−3 A/V, gm2 = 1.5e−3 A/V, gmb2 = 0.2e−3 A/V の場合の Av を計算せよ。
(3) gmb2 = 0 の場合と比較して Av がどのように変化するかを考察せよ。
問題 13: トランジスタ寸法と利得の関係
式:
Av = −√((W/L)1 / (W/L)2) · 1 / (1 + η)
η = gmb2 / gm2
(1) (W/L)1, (W/L)2, gm2, gmb2 を入力として Av を計算する関数を作成せよ。
(2) (W/L)1 = 20, (W/L)2 = 40, gm2 = 2e−3 A/V, gmb2 = 0.2e−3 A/V の場合 Av を計算せよ。
(3) η を 0〜0.5 の範囲で変化させたときの Av をシミュレーションし、グラフを描け。
問題 14: PMOS ダイオード接続負荷の場合
式:
Av = −μn(W/L)1 / μp(W/L)2
(1) μn, μp, (W/L)1, (W/L)2 を入力として Av を返す関数を作成せよ。
(2) μn = 2e−3 A/V², μp = 1e−3 A/V², (W/L)1 = 10, (W/L)2 = 20 の場合 Av を計算せよ。
(3) μn/μp の比を 1〜5 の範囲で変化させたときの Av をシミュレーションし、グラフを描け。
問題 15: 電流分割時の利得
式:
Av = −gm1 / (8 gm2)
(1) gm1, gm2 を入力として Av を返す関数を作成せよ。
(2) gm1 = 2e−3 A/V, gm2 = 1e−3 A/V の場合の Av を計算せよ。
(3) gm1/gm2 の比を 1〜5 の範囲で変化させたときの Av の変化をシミュレーションし、グラフを描け。
問題 16: 電流源負荷付き CS 回路の電圧利得
式:
Av = −gm1 (ro1 || ro2)
(1) gm1, ro1, ro2 を入力として Av を返す関数を作成せよ。
(2) gm1 = 2e−3, ro1 = 20e3, ro2 = 30e3 の場合の Av を計算せよ。
(3) ro2 を 10e3 から 100e3 まで変化させたときの Av をプロットせよ。
問題 17: 出力電圧スイングの制約
式:
Vout,min = VGS2 − VTH2
(1) VGS2, VTH2 を入力として Vout,min を返す関数を作成せよ。
(2) VGS2 = 0.9, VTH2 = 0.3 の場合の Vout,min を計算せよ。
(3) VTH2 を 0.2〜0.6 の範囲で変化させたときの Vout,min をプロットせよ。
問題 18: アクティブ負荷付き CS 回路の電圧利得
式:
Av = −(gm1 + gm2)(ro1 || ro2)
(1) gm1, gm2, ro1, ro2 を入力として Av を返す関数を作成せよ。
(2) gm1 = 1.5e−3, gm2 = 1.0e−3, ro1 = 20e3, ro2 = 25e3 の場合の Av を計算せよ。
(3) gm2 を 0.5e−3〜3e−3 の範囲で変化させたときの Av をプロットせよ。
問題 19: トライオード領域負荷の抵抗値
式:
Rload = 1 / [ μnCox (W/L)(VDD − Vb − |VTHP|) ]
(1) μnCox, W/L, VDD, Vb, VTHP を入力として Rload を返す関数を作成せよ。
(2) μnCox = 50e−6, W/L = 20, VDD = 1.8, Vb = 0.6, VTHP = −0.4 の場合の Rload を計算せよ。
(3) Vb を 0.3〜1.0 の範囲で変化させたときの Rload をプロットせよ。
問題 20: ソース退化付き CS 回路の gm
式:
Gm = gm / (1 + gm Rs)
(1) gm, Rs を入力として Gm を返す関数を作成せよ。
(2) gm = 2e−3, Rs = 200 の場合の Gm を計算せよ。
(3) Rs を 0〜1e3 の範囲で変化させたときの Gm をプロットせよ。
問題 21: ソース退化付き CS 回路の電圧利得
式:
Av = −gm RD / (1 + gm Rs)
(1) gm, RD, Rs を入力として Av を返す関数を作成せよ。
(2) gm = 2 mA/V, RD = 10 kΩ, Rs = 500 Ω の場合 Av を計算せよ。
(3) Rs を 0〜1 kΩ まで変化させたときの Av をシミュレーションし、グラフ化せよ。
問題 22: 出力抵抗の増加効果
式:
Rout = [1 + (gm + gmb)Rs] ro + Rs
(1) gm, gmb, Rs, ro を入力として Rout を返す関数を作成せよ。
(2) gm = 2 mA/V, gmb = 0.5 mA/V, Rs = 500 Ω, ro = 20 kΩ の場合 Rout を計算せよ。
(3) Rs を増加させたとき Rout がどのように変化するかシミュレーションせよ。
問題 23: 電圧変化とソース抵抗の関係
式:
ΔVRS = ΔV · [ (1 / (gm + gmb)) || Rs ] / ( (1 / (gm + gmb)) + Rs )
(1) gm, gmb, Rs, ΔV を入力として ΔVRS を返す関数を作成せよ。
(2) gm = 2 mA/V, gmb = 0.5 mA/V, Rs = 200 Ω, ΔV = 0.1 V の場合 ΔVRS を計算せよ。
(3) Rs を変化させたときの ΔVRS の挙動をシミュレーションせよ。
問題 24: ダイオード接続負荷付き CS 回路の電圧利得(再考)
式:
Av = −RD / (1/gm1 + 1/gm2)
(1) gm1, gm2, RD を入力として Av を返す関数を作成せよ。
(2) gm1 = 2 mA/V, gm2 = 1.5 mA/V, RD = 10 kΩ の場合 Av を計算せよ。
(3) gm2 を変化させたときの Av の変化をシミュレーションせよ。
問題 25: 負の抵抗効果の解析
式:
Rout ≈ [(gm + gmb) ro Rs + ro] / [1 + (gm + gmb) Rs ro]
(1) gm, gmb, Rs, ro を入力として Rout を計算する関数を作成せよ。
(2) gm = 1.5 mA/V, gmb = 0.3 mA/V, Rs = 300 Ω, ro = 15 kΩ の場合 Rout を計算せよ。
(3) gm を増加させたとき Rout がどのように変化するかシミュレーションせよ。
問題 26: ソースフォロワの入力出力関係
式:
Vout ≈ Vin − VTH
(1) Vin, VTH を入力として Vout を返す関数を作成せよ。
(2) Vin = 1.2 V, VTH = 0.4 V の場合の Vout を計算せよ。
(3) Vin を 0〜2 V の範囲で変化させたときの Vout をプロットせよ。
問題 27: ソースフォロワの小信号利得(微分法アプローチ)
式:
Av = μnCox (W/L)(Vin − VTH − Vout) Rs / [1 + μnCox (W/L)(Vin − VTH − Vout) Rs (1+η)]
(1) Vin, VTH, μnCox, W/L, Rs, η を入力として Av を返す関数を作成せよ。
(2) μnCox = 50e−6 A/V², W/L = 20, Rs = 1 kΩ, η = 0.1, Vin = 1.0 V, VTH = 0.4 V の場合の Av を計算せよ。
(3) Vin を 0.5〜1.5 V まで変化させたときの Av の挙動をシミュレーションせよ。
問題 28: ソースフォロワのゲイン上限
式:
Av,max = 1 / (1 + η)
(1) η を入力として Av,max を返す関数を作成せよ。
(2) η = 0.1, 0.2, 0.3 の場合の Av,max を計算せよ。
(3) η を 0〜0.5 まで変化させたときの Av,max をプロットし、η が小さいほど Av が 1 に近づくことを確認せよ。
問題 29: 電圧バイアスと出力スイング
式:
Vout,max ≈ VDD − VTH
(1) VDD, VTH を入力として Vout,max を返す関数を作成せよ。
(2) VDD = 1.8 V, VTH = 0.4 V の場合の Vout,max を計算せよ。
(3) VTH を 0.3 V から 0.7 V まで変化させたときの Vout,max の変化をシミュレーションせよ。
問題 30: ソースフォロワの線形性評価
式:
E = Σ (Vout − k Vin)²
(1) Vin と Vout のデータ列、および比例係数 k を入力として E を返す関数を作成せよ。
(2) Vin を 0〜1 V の範囲で 0.1 V 刻み、VTH = 0.4 V のソースフォロワを仮定し、k = 0.8 の場合の E を計算せよ。
(3) k を最適化して E を最小化し、近似的な「線形ゲイン」を求めよ。
問題 1: 出力電圧の計算
共通ソース回路の出力電圧 Vout はトライオード領域で次の式で与えられる。
Vout = VDD - RD * μnCox * (W/L) * (Vin - VTH) * Vout
使う式:
Vout = VDD - RD * μnCox * (W/L) * (Vin - VTH) * Vout
(1) この式を Python 関数として実装せよ。入力: Vin, VTH, VDD, RD, μnCox, W, L。
(2) Vin を 0.3〜1.2 V の範囲で変化させ、対応する Vout を計算し、グラフを描け。
パラメータ:
VDD = 1.8 V
RD = 10 kΩ
μnCox = 50e-6 A/V²
W/L = 10
VTH = 0.4 V
問題 2: 電圧利得の計算
小信号電圧利得 Av は次式で与えられる。
Av = -gm * RD
ここで gm = μnCox * (W/L) * (Vin - VTH)
使う式:
gm = μnCox * (W/L) * (Vin - VTH)
Av = -gm * RD
(1) gm を計算する関数を作成せよ。
(2) Av を計算する関数を作成せよ。
(3) Vin を 0.4〜1.2 V の範囲で変化させたときの Av のグラフを描け。
パラメータ:
RD = 10 kΩ
μnCox = 50e-6 A/V²
W/L = 10
VTH = 0.4 V
問題 3: 飽和領域の電流
飽和領域におけるドレイン電流 Id は次式で表される。
Id = (1/2) * μnCox * (W/L) * (Vin - VTH)^2
使う式:
Id = (1/2) * μnCox * (W/L) * (Vin - VTH)^2
(1) Id を計算する関数を作成せよ。
(2) Vin を 0.3〜1.2 V の範囲で変化させ、Id をプロットせよ。
パラメータ:
μnCox = 50e-6 A/V²
W/L = 10
VTH = 0.4 V
問題 4: 動作領域判定
Vin, VDS, VTH を入力とし、次の条件で動作領域を判定する関数を作成せよ。
・カットオフ: Vin <= VTH → Id = 0
・トライオード: Vin > VTH かつ VDS < Vin - VTH
・飽和: Vin > VTH かつ VDS >= Vin - VTH
使う式:
トライオード領域: Id = μnCox * (W/L) * [ (Vin - VTH) * VDS - (1/2) * VDS^2 ]
飽和領域: Id = (1/2) * μnCox * (W/L) * (Vin - VTH)^2
(1) 任意の Vin, VDS を入力して動作領域を判定せよ。
(2) 判定結果に応じて Id を計算せよ。
パラメータ:
Vin = 0.3〜1.2 V
VDS = 0〜1.2 V
VTH = 0.4 V
μnCox = 50e-6 A/V²
W/L = 10
問題 5: パラメータ依存性のシミュレーション
(1) VTH を 0.3 V から 0.4 V に変更したとき、Id-VDS 特性がどう変化するかシミュレーションせよ。
(2) μnCox を 50e-6 A/V² から 100e-6 A/V² に変更したとき、Id の大きさがどのように変化するか計算し説明せよ。
使う式:
Id = μnCox * (W/L) * [ (Vin - VTH) * VDS - (1/2) * VDS^2 ] (トライオード領域)
Id = (1/2) * μnCox * (W/L) * (Vin - VTH)^2 (飽和領域)
パラメータ:
VDD = 1.8 V
VDS = 0〜1.2 V
W/L = 10
RD = 10 kΩ
Vin = 0.3〜1.2 V
問題 6: 出力抵抗を含む小信号電圧利得
共通ソース(CS)回路の小信号電圧利得 Av は次式で与えられる。
Av = -gm * (ro || RD)
ここで ro はトランジスタの出力抵抗、RD はドレイン抵抗、gm はトランスコンダクタンスである。
(1) Av を計算する Python 関数を作成せよ。入力: gm, ro, RD。
(2) ro = 20 kΩ, RD = 10 kΩ, gm = 2 mA/V のとき Av を計算せよ。
(3) ro を 10 kΩ から 100 kΩ の範囲で変化させ、Av をプロットせよ。
問題 7: 内部利得(Intrinsic Gain)
MOSFET の「内部利得(intrinsic gain)」は次式で与えられる。
Av = -gm * ro
これは負荷抵抗を含まない理想的な利得であり、MOSFET の素子性能を表す指標となる。
(1) gm, ro を入力として Av を返す Python 関数を作成せよ。
(2) gm = 2 mA/V, ro = 20 kΩ の場合の Av を計算せよ。
(3) gm を 1〜5 mA/V の範囲で変化させ、ro = 20 kΩ として Av をシミュレーションし、グラフ化せよ。
問題 8: 電流源バイアス回路
電流源でバイアスされた CS 回路において、小信号電圧利得は次式で表される。
Av = -gm * ro
(1) gm を以下の式から計算する関数を作成せよ。
gm = μnCox * (W/L) * (Vin - VTH)
パラメータ: Vin = 0.6 V, VTH = 0.4 V, μnCox = 50e-6 A/V², W/L = 10。
(2) ro = 20 kΩ としたときの Av を求めよ。
(3) 電流源 I1 を増加させた場合、Id が大きくなり、それに比例して gm も増加する。Av がどのように変化するか考察せよ。
問題 9: バルク端子接地時の電圧利得
MOSFET のバルク端子を接地した場合、利得は次式で表される。
Av = -gm * RD
(1) gm を以下の式から計算せよ。
gm = μnCox * (W/L) * (Vin - VTH)
パラメータ: Vin = 0.8 V, VTH = 0.4 V, μnCox = 50e-6 A/V², W/L = 20。
(2) RD = 15 kΩ の場合の Av を計算せよ。
(3) バルク効果を無視した場合と比較して、利得はどのように変化するか説明せよ。
問題 10: ダイオード接続負荷
ダイオード接続 MOSFET のインピーダンスは次式で表される。
Zeq = 1 / (gm + gmb)
ここで gmb はバルク効果によるトランスコンダクタンスである。
(1) gm, gmb を入力として Zeq を計算する関数を作成せよ。
(2) gm = 1 mA/V, gmb = 0.2 mA/V の場合の Zeq を計算せよ。
(3) gmb = 0 の場合と比較してインピーダンスがどう変化するか説明せよ。
問題 11: ソース側インピーダンス
MOSFET のソースから見たインピーダンス RX は次式で表される。
RX = 1 / (gm + gmb)
(1) gm, gmb を入力として RX を計算する関数を作成せよ。
(2) gm = 2 mA/V, gmb = 0.5 mA/V の場合 RX を計算せよ。
(3) gmb がゼロの場合と比較して RX がどう変化するかを考察せよ。
問題 12: ダイオード接続負荷付き CS 回路の電圧利得
ダイオード接続負荷を持つ共通ソース回路の小信号電圧利得は次式で表される。
Av = -gm1 / (gm2 + gmb2)
(1) gm1, gm2, gmb2 を入力として Av を返す関数を作成せよ。
(2) gm1 = 2e-3 A/V, gm2 = 1.5e-3 A/V, gmb2 = 0.2e-3 A/V の場合の Av を計算せよ。
(3) gmb2 = 0 の場合と比較して Av がどのように変化するかを考察せよ。
パラメータ:
gm1 = 2e-3 A/V, gm2 = 1.5e-3 A/V, gmb2 = 0.2e-3 A/V
問題 13: トランジスタ寸法と利得の関係
ダイオード接続負荷における電圧利得は次式で表される。
Av = -√((W/L)1 / (W/L)2) * 1 / (1 + η)
ここで η = gmb2 / gm2
(1) (W/L)1, (W/L)2, gm2, gmb2 を入力とし、Av を計算する関数を作成せよ。
(2) (W/L)1 = 20, (W/L)2 = 40, gm2 = 2e-3 A/V, gmb2 = 0.2e-3 A/V の場合の Av を計算せよ。
(3) η を 0〜0.5 の範囲で変化させたときの Av をシミュレーションし、グラフを描け。
パラメータ:
(W/L)1 = 20, (W/L)2 = 40, gm2 = 2e-3 A/V, gmb2 = 0.2e-3 A/V
問題 14: PMOS ダイオード接続負荷の場合
NMOS に対して PMOS がダイオード接続負荷として動作する場合、電圧利得は次式で表される。
Av = -μn(W/L)1 / μp(W/L)2
(1) μn, μp, (W/L)1, (W/L)2 を入力として Av を返す関数を作成せよ。
(2) μn = 2e-3 A/V², μp = 1e-3 A/V², (W/L)1 = 10, (W/L)2 = 20 の場合の Av を計算せよ。
(3) μn/μp の比を 1〜5 の範囲で変化させたときの Av をシミュレーションし、グラフを描け。
パラメータ:
μn = 2e-3 A/V², μp = 1e-3 A/V², (W/L)1 = 10, (W/L)2 = 20
問題 15: 電流分割時の利得
電流分割により |ID2| = I1/4 となる回路では、小信号電圧利得は次式で表される。
Av = -gm1 / (8 gm2)
(1) gm1, gm2 を入力として Av を返す関数を作成せよ。
(2) gm1 = 2e-3 A/V, gm2 = 1e-3 A/V の場合の Av を計算せよ。
(3) gm1/gm2 の比を 1〜5 の範囲で変化させたときの Av の変化をシミュレーションし、グラフを描け。
パラメータ:
gm1 = 2e-3 A/V, gm2 = 1e-3 A/V
問題 16: 電流源負荷付き CS 回路の電圧利得
Av = -gm1 (ro1 || ro2)
(1) gm1, ro1, ro2 を入力として Av を返す関数を作成せよ。
(2) gm1 = 2e-3, ro1 = 20e3, ro2 = 30e3 の場合の Av を計算せよ。
(3) ro2 を 10e3 から 100e3 まで変化させたときの Av をプロットせよ。
問題 17: 出力電圧スイングの制約
Vout,min = VGS2 - VTH2
(1) VGS2, VTH2 を入力として Vout,min を返す関数を作成せよ。
(2) VGS2 = 0.9, VTH2 = 0.3 の場合の Vout,min を計算せよ。
(3) VTH2 を 0.2〜0.6 の範囲で変化させたときの Vout,min をプロットせよ。
問題 18: アクティブ負荷付き CS 回路の電圧利得
Av = -(gm1 + gm2)(ro1 || ro2)
(1) gm1, gm2, ro1, ro2 を入力として Av を返す関数を作成せよ。
(2) gm1 = 1.5e-3, gm2 = 1.0e-3, ro1 = 20e3, ro2 = 25e3 の場合の Av を計算せよ。
(3) gm2 を 0.5e-3〜3e-3 の範囲で変化させたときの Av をプロットせよ。
問題 19: トライオード領域負荷の抵抗値
Rload = 1 / [ μnCox (W/L) (VDD - Vb - |VTHP|) ]
(1) μnCox, W/L, VDD, Vb, VTHP を入力として Rload を返す関数を作成せよ。
(2) μnCox = 50e-6, W/L = 20, VDD = 1.8, Vb = 0.6, VTHP = -0.4 の場合の Rload を計算せよ。
(3) Vb を 0.3〜1.0 の範囲で変化させたときの Rload をプロットせよ。
問題 20: ソース退化付き CS 回路の gm
Gm = gm / (1 + gm Rs)
(1) gm, Rs を入力として Gm を返す関数を作成せよ。
(2) gm = 2e-3, Rs = 200 の場合の Gm を計算せよ。
(3) Rs を 0〜1e3 の範囲で変化させたときの Gm をプロットせよ。
問題 21: ソース退化付き CS 回路の電圧利得
ソース抵抗 Rs を含む共通ソース回路の電圧利得は次式で表される。
Av = -gm RD / (1 + gm Rs)
(1) gm, RD, Rs を入力として Av を返す関数を作成せよ。
(2) gm = 2 mA/V, RD = 10 kΩ, Rs = 500 Ω の場合 Av を計算せよ。
(3) Rs を 0〜1 kΩ まで変化させたときの Av をシミュレーションし、グラフ化せよ。
問題 22: 出力抵抗の増加効果
ソース退化を導入した場合、出力抵抗 Rout は次式で表される。
Rout = [1 + (gm + gmb)Rs] ro + Rs
(1) gm, gmb, Rs, ro を入力として Rout を返す関数を作成せよ。
(2) gm = 2 mA/V, gmb = 0.5 mA/V, Rs = 500 Ω, ro = 20 kΩ の場合 Rout を計算せよ。
(3) Rs を増加させたとき Rout がどのように変化するかシミュレーションせよ。
問題 23: 電圧変化とソース抵抗の関係
ソース抵抗 Rs による電圧変化 ΔVRS は次式で表される。
ΔVRS = ΔV * [ (1 / (gm + gmb)) || Rs ] / ( (1 / (gm + gmb)) + Rs )
(1) gm, gmb, Rs, ΔV を入力として ΔVRS を返す関数を作成せよ。
(2) gm = 2 mA/V, gmb = 0.5 mA/V, Rs = 200 Ω, ΔV = 0.1 V の場合 ΔVRS を計算せよ。
(3) Rs を変化させたときの ΔVRS の挙動をシミュレーションせよ。
問題 24: ダイオード接続負荷付き CS 回路の電圧利得(再考)
Figure 3.28 のようにダイオード接続負荷を持つ場合、小信号電圧利得は次式で表される。
Av = -RD / (1/gm1 + 1/gm2)
(1) gm1, gm2, RD を入力として Av を返す関数を作成せよ。
(2) gm1 = 2 mA/V, gm2 = 1.5 mA/V, RD = 10 kΩ の場合 Av を計算せよ。
(3) gm2 を変化させたときの Av の変化をシミュレーションせよ。
問題 25: 負の抵抗効果の解析
ソース退化を持つ CS 回路では、特定条件下で負の抵抗効果が現れる。このときの等価抵抗 Rout は次式で近似できる。
問題 21: 理想電流源付き CS 回路の利得
Figure 3.33 の回路では理想電流源 Io が接続されている。このときの小信号電圧利得は次式で表される。
Av = -gm ro
(1) gm, ro を入力として Av を返す関数を作成せよ。
(2) gm = 2 mA/V, ro = 50 kΩ の場合の Av を計算せよ。
(3) Rs の値に依存しない理由を説明せよ。
問題 22: ソースフォロワの入力出力関係
ソースフォロワの出力電圧 Vout は次式で表される。
Vout = (1/2) μn Cox (W/L) (Vin - VTH - Vout)² Rs
(1) μnCox, W/L, Vin, VTH, Rs を入力とし、Vout を数値的に解くプログラムを作成せよ。
(2) μnCox = 50 μA/V², W/L = 20, Vin = 1.2 V, VTH = 0.6 V, Rs = 2 kΩ の場合の Vout を計算せよ。
(3) Vin を 0.6 V〜1.5 V まで変化させたときの Vout のシミュレーションを行え。
問題 23: 小信号電圧利得
ソースフォロワの小信号利得は次式で与えられる。
Av = gm Rs / (1 + (gm + gmb) Rs)
(1) gm, gmb, Rs を入力として Av を返す関数を作成せよ。
(2) gm = 3 mA/V, gmb = 0.6 mA/V, Rs = 1 kΩ の場合の Av を計算せよ。
(3) Rs を 0〜5 kΩ の範囲で変化させたときの Av の挙動をシミュレーションせよ。
問題 24: 入力依存の VTH の影響
ソースフォロワにおけるしきい値電圧 VTH は、バルク効果により次式で与えられる。
VTH = VTH0 + γ (√(2φF + VSB) - √(2φF))
(1) VTH0, γ, φF, VSB を入力として VTH を計算する関数を作成せよ。
(2) VTH0 = 0.6 V, γ = 0.4 V^0.5, φF = 0.3 V, VSB = 0.2 V の場合の VTH を計算せよ。
(3) VSB を 0〜0.6 V の範囲で変化させたときの VTH の挙動をシミュレーションせよ。
問題 25: ソースフォロワの利得の理論限界
小信号利得 Av は次式で与えられる。
Av = gm Rs / (1 + (gm + gmb) Rs)
(1) gmb を無視した場合、Rs → ∞ の極限で Av が 1 に近づくことを確認せよ。
(2) gmb が有限値を持つ場合、Av が 1/(1+η) に収束することを数値的にシミュレーションせよ(η = gmb/gm)。
(3) gmb がソースフォロワの出力忠実度に与える影響を考察せよ。
Rout ≈ (gm + gmb) ro Rs + ro / [1 + (gm + gmb) Rs ro]
(1) gm, gmb, Rs, ro を入力として Rout を計算する関数を作成せよ。
(2) gm = 1.5 mA/V, gmb = 0.3 mA/V, Rs = 300 Ω, ro = 15 kΩ の場合 Rout を計算せよ。
(3) gm を増加させたとき Rout がどのように変化するかシミュレーションせよ。
問題 26: ソースフォロワの入力出力関係
ソースフォロワの入力‐出力関係は近似的に次式で表される。
Vout ≈ Vin − VTH
(1) Vin, VTH を入力として Vout を返す関数を作成せよ。
(2) Vin = 1.2 V, VTH = 0.4 V の場合の Vout を計算せよ。
(3) Vin を 0〜2 V の範囲で変化させたときの Vout をプロットせよ。
問題 27: ソースフォロワの小信号利得(微分法アプローチ)
小信号利得は次式で与えられる。
Av = ∂Vout / ∂Vin = μnCox (W/L)(Vin − VTH − Vout) Rs / [1 + μnCox (W/L)(Vin − VTH − Vout) Rs (1+η)]
(1) Vin, VTH, μnCox, W/L, Rs, η を入力として Av を返す関数を作成せよ。
(2) μnCox = 50e-6 A/V², W/L = 20, Rs = 1 kΩ, η = 0.1, Vin = 1.0 V, VTH = 0.4 V の場合の Av を計算せよ。
(3) Vin を 0.5〜1.5 V まで変化させたときの Av の挙動をシミュレーションせよ。
問題 28: ソースフォロワのゲイン上限
ソースフォロワの理論上の最大ゲインは次式で表される。
Av,max = 1 / (1 + η)
(1) η を入力として Av,max を返す関数を作成せよ。
(2) η = 0.1, 0.2, 0.3 の場合の Av,max を計算せよ。
(3) η を 0〜0.5 まで変化させたときの Av,max をプロットし、η が小さいほど Av が 1 に近づくことを確認せよ。
問題 29: 電圧バイアスと出力スイング
ソースフォロワの出力スイングは Vin と VTH に依存し、近似的に
Vout,max ≈ VDD − VTH
で表される。
(1) VDD, VTH を入力として Vout,max を返す関数を作成せよ。
(2) VDD = 1.8 V, VTH = 0.4 V の場合の Vout,max を計算せよ。
(3) VTH を 0.3 V から 0.7 V まで変化させたときの Vout,max の変化をシミュレーションせよ。
問題 30: ソースフォロワの線形性評価
ソースフォロワは非線形性が強いため、入力に対する出力の歪みを評価する必要がある。入力 Vin に対して出力が
Vout = f(Vin)
となるとき、線形性は二乗誤差で次式により定量化できる。
E = Σ (Vout − k Vin)²
(1) Vin と Vout のデータ列、および比例係数 k を入力として E を返す関数を作成せよ。
(2) Vin を 0〜1 V の範囲で 0.1 V 刻み、VTH = 0.4 V のソースフォロワを仮定し、k = 0.8 の場合の E を計算せよ。
(3) k を最適化して E を最小化し、近似的な「線形ゲイン」を求めよ。
問題 31: コモンソース回路の電圧利得
コモンソース回路の小信号電圧利得は次式で表される。
Av = -gm * RD
(1) gm, RD を入力とし、Av を返す関数を作成せよ。
(2) gm = 2 mA/V, RD = 10 kΩ の場合の Av を計算せよ。
(3) RD を 1 kΩ から 20 kΩ まで変化させたときの利得をシミュレーションせよ。
問題 32: コモンゲート回路の入力インピーダンス
コモンゲート回路の入力インピーダンスは次式で表される。
Rin ≈ 1 / gm
(1) gm を入力として Rin を返す関数を作成せよ。
(2) gm = 5 mA/V のときの Rin を計算せよ。
(3) gm を 1 mA/V から 10 mA/V まで変化させたときの Rin をシミュレーションせよ。
問題 33: コモンドレイン回路(ソースフォロワ)の利得
ソースフォロワの電圧利得は次式で表される。
Av ≈ gm * RL / (1 + gm * RL)
(1) gm, RL を入力として Av を返す関数を作成せよ。
(2) gm = 2 mA/V, RL = 5 kΩ の場合の Av を計算せよ。
(3) RL を 1 kΩ から 20 kΩ まで変化させたときの利得をシミュレーションせよ。
問題 34: MOSFET 飽和条件の確認
MOSFET が飽和領域で動作する条件は次式で表される。
VDS ≥ VGS - VTH
(1) VDS, VGS, VTH を入力として飽和条件を判定する関数を作成せよ。
(2) VGS = 1.2 V, VTH = 0.4 V のとき、VDS = 0.5 V, 1.0 V の場合を判定せよ。
(3) VDS を 0 から 2 V まで変化させ、飽和条件を満たす範囲を可視化せよ。
問題 35: 出力抵抗の並列接続
出力抵抗は次式で表される。
Rout = (ro1 || ro2) = (ro1 * ro2) / (ro1 + ro2)
(1) ro1, ro2 を入力とし、Rout を返す関数を作成せよ。
(2) ro1 = 50 kΩ, ro2 = 100 kΩ の場合の Rout を計算せよ。
(3) ro2 を 10 kΩ から 200 kΩ まで変化させたときの Rout をシミュレーションせよ。
問題 36: コモンソース利得の一般式
有限の出力抵抗を考慮した電圧利得は次式で表される。
Av = -gm * (ro || RL)
(1) gm, ro, RL を入力として Av を返す関数を作成せよ。
(2) gm = 3 mA/V, ro = 40 kΩ, RL = 20 kΩ の場合の Av を計算せよ。
(3) ro を 10 kΩ から 100 kΩ まで変化させたときの利得をシミュレーションせよ。
問題 37: コモンゲート回路の電圧利得
コモンゲート回路の電圧利得は次式で表される。
Av = gm * RD
(1) gm, RD を入力として Av を返す関数を作成せよ。
(2) gm = 2.5 mA/V, RD = 8 kΩ の場合の Av を計算せよ。
(3) gm を 1 mA/V から 5 mA/V まで変化させたときの利得をシミュレーションせよ。
問題 38: コモンドレイン回路の出力抵抗
出力抵抗は次式で表される。
Rout ≈ 1 / (gm + gmb)
(1) gm, gmb を入力として Rout を返す関数を作成せよ。
(2) gm = 2 mA/V, gmb = 0.5 mA/V の場合の Rout を計算せよ。
(3) gmb を 0 から 2 mA/V まで変化させたときの Rout をシミュレーションせよ。
問題 39: レベルシフト回路
入力と出力の関係は次式で表される。
Vout = Vin - Vov
(1) Vin, Vov を入力として Vout を返す関数を作成せよ。
(2) Vin = 1.2 V, Vov = 0.3 V の場合の Vout を計算せよ。
(3) Vov を 0.1 V から 0.5 V まで変化させたときの出力をシミュレーションせよ。
問題 40: カスコード回路の出力抵抗
カスコード回路の出力抵抗は次式で表される。
Rout ≈ (gm2 * ro2) * ro1
(1) gm2, ro2, ro1 を入力として Rout を返す関数を作成せよ。
(2) gm2 = 5 mA/V, ro2 = 50 kΩ, ro1 = 30 kΩ の場合の Rout を計算せよ。
(3) gm2 を 1 mA/V から 10 mA/V まで変化させたときの Rout をシミュレーションせよ。
問題 41: テレスコピックカスコード回路の出力抵抗
テレスコピックカスコード回路の出力抵抗は次式で表される。
Rout ≈ (gm2 * ro2) * (gm4 * ro4) * ro1
(1) gm2, ro2, gm4, ro4, ro1 を入力として Rout を返す関数を作成せよ。
(2) gm2 = 4 mA/V, ro2 = 40 kΩ, gm4 = 5 mA/V, ro4 = 50 kΩ, ro1 = 20 kΩ の場合の Rout を計算せよ。
(3) gm4 を 1 mA/V から 10 mA/V まで変化させたときの Rout をシミュレーションせよ。
問題 42: テレスコピックカスコードの電圧利得
電圧利得は次式で表される。
Av = gm1 * Rout
(1) gm1, Rout を入力として Av を返す関数を作成せよ。
(2) gm1 = 3 mA/V, Rout = 500 kΩ の場合の Av を計算せよ。
(3) gm1 を 1 mA/V から 5 mA/V まで変化させたときの Av をシミュレーションせよ。
問題 43: フォールデッドカスコードの出力抵抗
フォールデッドカスコードの出力抵抗は次式で表される。
Rout ≈ (gm3 * ro3) * ro1
(1) gm3, ro3, ro1 を入力として Rout を返す関数を作成せよ。
(2) gm3 = 6 mA/V, ro3 = 60 kΩ, ro1 = 25 kΩ の場合の Rout を計算せよ。
(3) gm3 を 1 mA/V から 12 mA/V まで変化させたときの Rout をシミュレーションせよ。
問題 44: フォールデッドカスコードの電圧利得
電圧利得は次式で表される。
Av = gm1 * Rout
(1) gm1, Rout を入力として Av を返す関数を作成せよ。
(2) gm1 = 2.5 mA/V, Rout = 300 kΩ の場合の Av を計算せよ。
(3) Rout を 50 kΩ から 600 kΩ まで変化させたときの Av をシミュレーションせよ。
問題 45: カスコード回路の電圧スイング制約
テレスコピックカスコードの最大出力電圧スイングは次式で表される。
Vout,max ≈ VDD - VDSsat - |VTH|
(1) VDD, VDSsat, VTH を入力として Vout,max を返す関数を作成せよ。
(2) VDD = 1.8 V, VDSsat = 0.2 V, VTH = 0.4 V の場合の Vout,max を計算せよ。
(3) VDSsat を 0.1 V から 0.5 V まで変化させたときの Vout,max をシミュレーションせよ。
問題 46: カスコード回路の利得帯域幅積 (GBW)
利得帯域幅積は次式で表される。
GBW = gm / (2π CL)
(1) gm, CL を入力として GBW を返す関数を作成せよ。
(2) gm = 5 mA/V, CL = 2 pF の場合の GBW を計算せよ。
(3) CL を 1 pF から 10 pF まで変化させたときの GBW をシミュレーションせよ。
問題 47: カスコード回路のノイズ電圧
入力換算ノイズ電圧は次式で表される。
Vn² = 4 kT γ / gm
(1) gm を入力として Vn を返す関数を作成せよ。
(2) gm = 4 mA/V の場合の Vn を計算せよ(kTγ = 1.6×10⁻²⁰ J とする)。
(3) gm を 1 mA/V から 10 mA/V まで変化させたときの Vn をシミュレーションせよ。
問題 48: カスコード回路の入力インピーダンス
入力インピーダンスは次式で表される。
Rin ≈ 1 / gm
(1) gm を入力として Rin を返す関数を作成せよ。
(2) gm = 3 mA/V の場合の Rin を計算せよ。
(3) gm を 0.5 mA/V から 6 mA/V まで変化させたときの Rin をシミュレーションせよ。
問題 49: 出力抵抗と利得の関係
電圧利得は次式で表される。
Av = gm * Rout
(1) gm, Rout を入力として Av を返す関数を作成せよ。
(2) gm = 2 mA/V, Rout = 200 kΩ の場合の Av を計算せよ。
(3) Rout を 50 kΩ から 400 kΩ まで変化させたときの Av をシミュレーションせよ。
問題 50: カスコード増幅器の最適化
増幅器の利得を高めるために、gm と Rout を調整する。利得は次式で表される。
Av = gm * Rout
(1) gm, Rout を入力として Av を計算する関数を作成せよ。
(2) gm = 2 mA/V のとき、Rout を最適化して Av が最大となる条件を探索せよ。
(3) gm を 1 mA/V から 10 mA/V まで変化させたときの Av の最大値をシミュレーションせよ。
チャプター4MOSFET差動対
問題 1: 差動対の基本式
MOSFET差動対において、ドレイン電流の差は次式で表される。
I_D1 - I_D2 = μ_n * Cox * (W/L) * V_in_diff
(1) 上式をPythonで関数化せよ。
(2) μ_nCox(W/L) = 200 μA/V^2 のとき、V_in_diff を -0.5 V から +0.5 V まで変化させ、I_D1 - I_D2 をプロットせよ。
問題 2: 共通モード入力範囲
共通モード入力範囲 (CMRR制約) は次式で表される。
V_GS1 + (V_GS3 - V_TH3) ≤ V_in,CM ≤ min[ V_DD - (R_D * I_SS / 2) + V_TH , V_DD ]
(1) 上式をPython関数として実装せよ。
(2) V_DD = 3.3 V, R_D = 10 kΩ, I_SS = 0.5 mA, V_TH = 0.6 V のとき、共通モード入力範囲を数値的に求めよ。
問題 3: 小信号利得
小信号利得は次式で近似できる。
|A_v| = ( μ_n * Cox * (W/L) * I_SS ) * R_D
(1) Pythonで関数化せよ。
(2) μ_nCox(W/L) = 200 μA/V^2, I_SS = 0.5 mA, R_D = 10 kΩ のとき、小信号利得を計算せよ。
問題 4: 入力差動電圧と出力電流の関係
入力差動電圧 ΔV_in が小さい場合、ドレイン電流差は近似的に次式で表される。
I_D1 - I_D2 ≈ g_m * ΔV_in
(1) g_m をパラメータとしてPython関数化せよ。
(2) g_m = 2 mA/V のとき、ΔV_in を -50 mV から +50 mV に変化させたときの電流差を計算・プロットせよ。
問題 5: 出力電圧スイング制約
差動増幅器の出力電圧スイングは以下で制限される。
V_out,max = V_DD - V_DSsat
V_out,min = V_SS + V_DSsat
(1) Python関数を作成せよ。
(2) V_DD = 3.3 V, V_SS = 0 V, V_DSsat = 0.2 V のとき、出力電圧スイング範囲を計算せよ。
問題 6: 差動利得と共通モード除去比 (CMRR)
CMRRは次式で定義される。
CMRR = A_diff / A_CM
(1) Pythonで関数化せよ。
(2) A_diff = 100, A_CM = 0.5 のとき、CMRRを(dB単位)で求めよ。
問題 7: 出力抵抗を考慮した小信号利得
差動増幅器の利得は次式で近似される。
A_v = g_m * (r_o || R_D)
(1) Python関数を作成せよ。
(2) g_m = 2 mA/V, r_o = 50 kΩ, R_D = 10 kΩ のとき、利得を計算せよ。
問題 8: 差動入力と出力電流の非線形特性
大信号動作では次式が成り立つ。
I_D1 = I_SS / 2 * (1 + tanh( (κ * V_in_diff) / (2 * V_T) ))
I_D2 = I_SS - I_D1
(1) Pythonで関数化せよ。
(2) I_SS = 0.5 mA, κ = 1, V_T = 25 mV のとき、V_in_diff を -0.1 V ~ +0.1 V に変化させたときの I_D1, I_D2 をプロットせよ。
問題 9: 入力オフセット電圧の影響
入力オフセット電圧 V_os がある場合、実効入力は
V_in,eff = V_in_diff + V_os
(1) Pythonで関数を作成せよ。
(2) V_os = 5 mV のとき、V_in_diff を -20 mV ~ +20 mV に変化させた場合の出力電流差を計算せよ。
問題 10: 差動増幅器の周波数応答
利得は次式で周波数依存性を持つ。
A_v(f) = A_0 / sqrt(1 + (f/f_c)^2)
(1) Python関数を作成せよ。
(2) A_0 = 100, f_c = 1 MHz のとき、f = 1 kHz ~ 100 MHz の範囲で利得をプロットせよ。
チャプター5カレントミラー
問題 1: MOSFETのバイアス電流
式
I_ref ≈ (1/2) μn Cox (W/L) * ( (R2 / (R1 + R2)) VDD - VTH )²
(1) Python関数を作成せよ。
(2) VDD=1.8 V, R1=5 kΩ, R2=5 kΩ, μnCox(W/L)=100 μA/V², VTH=0.4 V のとき I_ref を計算せよ。
問題 2: カレントミラーの出力電流
式
I_out = ( (W/L)2 / (W/L)1 ) * I_ref
(1) Python関数を作成せよ。
(2) I_ref = 50 μA, (W/L)1 = 10, (W/L)2 = 20 のとき I_out を計算せよ。
問題 3: チャンネル長変調を考慮したカレントミラー
式
ID1 = (1/2) μn Cox (W/L) (VGS - VTH)² (1 + λVDS1)
ID2 = (1/2) μn Cox (W/L) (VGS - VTH)² (1 + λVDS2)
比率: ID2 / ID1 = (1 + λVDS2) / (1 + λVDS1)
(1) Python関数を作成せよ。
(2) λ=0.05 V⁻¹, VDS1=1.0 V, VDS2=1.2 V のとき誤差を求めよ。
問題 4: トランジスタOTAの利得
式
A_v = gm1 (ro1 || ro2) * ( (2 gm3 ro3 + 1) / (2 (gm3 ro3 + 1)) )
並列抵抗: ro1 || ro2 = (ro1 * ro2) / (ro1 + ro2)
(1) Python関数を作成せよ。
(2) gm1=1 mA/V, gm3=0.8 mA/V, ro1=20 kΩ, ro2=30 kΩ, ro3=25 kΩ のとき Av を計算せよ。
問題 5: CMRRの計算
式
CMRR = |ADM / ACM|
ADM = gm1,2 (ro1,2 || ro3,4)
ACM = (1 + 2 gm1,2 RSS)⁻¹
(1) Python関数を作成せよ。
(2) gm1,2=1 mA/V, ro1,2=20 kΩ, ro3,4=30 kΩ, RSS=10 kΩ のとき CMRR を計算せよ。
問題 6: カスコードカレントミラーの出力抵抗
式
Rout ≈ (gm2 ro2) ro1
(1) Python関数を作成せよ。
(2) gm2=2 mA/V, ro2=50 kΩ, ro1=40 kΩ のとき Rout を計算せよ。
問題 7: 電流源誤差の評価
式
ΔI_D = gm * Vin_diff
(1) Vin_diff を -50 mV ~ +50 mV の範囲で変化させ ΔI_D をプロットせよ。
(2) gm=1 mA/V の場合を計算せよ。
問題 8: 出力電圧スイング制約
式
Vout,min = VDS(sat) + VDS_margin
(1) Python関数を作成せよ。
(2) VDS(sat)=0.2 V, VDS_margin=0.1 V のとき Vout,min を計算せよ。
問題 9: 電流源の温度依存性
式
I(T) ≈ μn(T) Cox (W/L) (VGS - VTH(T))²
μn(T) = μ0 (T0 / T)
VTH(T) = VTH0 - kT (T - T0)
(1) Python関数を作成せよ。
(2) μ0=300 μA/V², T0=300 K, VTH0=0.5 V, kT=1 mV/K, W/L=10, Vin=1 V の場合、T=250〜350 Kで I をプロットせよ。
問題 10: CMRR改善のシミュレーション
式
CMRR = gm1,2 (ro1,2 || ro3,4) * (1 + 2 gm1,2 RSS)
(1) RSS を 1 kΩ から 50 kΩ の範囲で変化させ CMRR を計算・プロットせよ。
(2) gm1,2=1 mA/V, ro1,2=20 kΩ, ro3,4=30 kΩ を用いる。