0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

MOSFET の資料置場

Last updated at Posted at 2024-04-03

image.png
FETの説明図
image.png
Behzad Razavi本のシンボル
バックゲート(B)は省略される

image.png

image.png
動作点はドレインソース間電圧の負荷直線を引くことで求めることができる

image.png
線形領域と飽和領域の区別をつけよう
image.png
CMOS基板の上にNMOSとPMOS両方製造できる

image.png
大信号と小信号に分解できる
入力の交流波形から小信号等価回路を作成するとき
コンデンサは短絡、直流電圧源は短絡、直流電流源は開放

image.png

チャネル変調効果とVGS入力、ID出力特性の式

def calculate_current(W, L, VGS, Vth, VDS, mobility, oxide_capacitance, lambda_param):
    electron_mobility = mobility
    gate_oxide_capacitance = oxide_capacitance
    voltage = 0.5 * electron_mobility * gate_oxide_capacitance * (W/L) * (VGS - Vth)**2
    current = voltage * (1 + lambda_param * VDS)
    return current

# 入力値の設定
W = 10    # チャネル幅(Width)
L = 5     # チャネル長(Length)
VGS = 3   # ゲートからソースへの電圧(Gate-to-Source Voltage)
Vth = 1   # 閾値電圧(Threshold Voltage)
VDS = 4   # ドレインからソースへの電圧(Drain-to-Source Voltage)
mobility = 100   # 電子の移動度(Electron Mobility)
oxide_capacitance = 1.5   # 単位あたりのゲート酸化膜容量(Gate Oxide Capacitance)
lambda_param = 0.01   # ラムダパラメータ(Lambda Parameter)

# 電流の計算
ID = calculate_current(W, L, VGS, Vth, VDS, mobility, oxide_capacitance, lambda_param)
print("ID =", ID)

線形領域 三極管領域

def calculate_triode_region(mu, Cox, W_L, VGS, Vth, VDS):
    term1 = mu * Cox * W_L
    term2 = (VGS - Vth) * VDS - ((VDS)**2) / 2
    return term1 * term2

# パラメータを設定
mu = 100e-4  # 電子の移動度(例として100e-4を使用)
Cox = 1e-6   # 単位あたりのゲート酸化膜容量(例として1e-6を使用)
W_L = 10     # W/L比(例として10を使用)
VGS = 5      # ゲート-ソース電圧(例として5を使用)
Vth = 1      # 閾値電圧(例として1を使用)
VDS = 3      # ドレイン-ソース電圧(例として3を使用)

# 三極管の領域を計算
triode_region = calculate_triode_region(mu, Cox, W_L, VGS, Vth, VDS)
print("三極管の領域:", triode_region)

基板バイアス効果とミラー回路

import math

def calculate_VGS(ID, electron_mobility, gate_oxide_capacitance_per_unit_area, W_over_L, Vth):
    VGS = math.sqrt(ID / (0.5 * electron_mobility * gate_oxide_capacitance_per_unit_area * (W_over_L))) + Vth
    return VGS

# 例として値を代入して計算する
ID = 0.1  # IDの値
electron_mobility = 0.1  # 電子の移動度
gate_oxide_capacitance_per_unit_area = 0.5  # 単位あたりのゲート酸化膜容量
W_over_L = 2  # W/L
Vth = 0.5  # 閾値電圧

result = calculate_VGS(ID, electron_mobility, gate_oxide_capacitance_per_unit_area, W_over_L, Vth)
print("VGS =", result)

相互コンダクタンスgm=IDをVGSで微分した式

# 電子の移動度 (μ)
mobility = 0.1  # 例として 0.1 とします (適切な値に置き換えてください)

# 単位あたりのゲート酸化膜容量 (Cox)
gate_capacitance_per_unit_area = 1.5e-6  # 例として 1.5e-6 F/m^2 とします (適切な値に置き換えてください)

# W/L
w_over_l = 5  # 例として 5 とします (適切な値に置き換えてください)

# VGS - Vth
vgs_minus_vth = 0.8  # 例として 0.8 V とします (適切な値に置き換えてください)

# 電子の移動度 × 単位あたりのゲート酸化膜容量 × (W/L) × (VGS - Vth)
gm = mobility * gate_capacitance_per_unit_area * w_over_l * vgs_minus_vth

print("計算結果 (gm):", gm)

チャネル変調効果がある場合のVGSとID

import numpy as np
import matplotlib.pyplot as plt

# パラメータの設定
mu_n = 100e-4  # 電子の移動度 [m^2/Vs]
C_ox = 10e-6   # 酸化膜容量 [F/m^2]
W = 10e-6      # チャネルの幅 [m]
L = 1e-6       # チャネルの長さ [m]
V_TH = 0.5     # しきい値電圧 [V]
lambda_ = 0.02 # チャネル長変調係数 [1/V]

# VGSの設定
VGS = 1.0 # ゲート-ソース電圧 [V]

# VDSの範囲を設定
VDS_values = np.linspace(0, 2, 100) # VDSの範囲 [V]

# チャネル変調効果がある場合のIDを計算
ID_with_channel_modulation = 0.5 * mu_n * C_ox * W/L * (VGS - V_TH)**2 * (1 + lambda_ * VDS_values)

# グラフの描画
plt.plot(VDS_values, ID_with_channel_modulation, label='With Channel Modulation', color='blue')
plt.xlabel('VDS [V]')
plt.ylabel('ID [A]')
plt.title('ID vs VDS with Channel Modulation')
plt.legend()
plt.grid(True)
plt.show()

コンデンサを入れたソース接地増幅回路
(1/(1+sC1R1))×(-gm×抵抗)× (1/(1+sC2R2))


import numpy as np
import matplotlib.pyplot as plt
from scipy import signal

# パラメータの設定
gm = 0.1  # トランジスタのトランスコンダクタンス
R1 = 10e3  # 抵抗1
C1 = 100e-9  # コンデンサ1
R2 = 5e3  # 抵抗2
C2 = 50e-9  # コンデンサ2

# 伝達関数の分子と分母の係数を計算
numerator = [1]
denominator = [1, (1/(C1*R1)), -gm*R1, (gm*R1/(C2*R2)), 0]

# 伝達関数を作成
sys = signal.TransferFunction(numerator, denominator)

# 周波数応答を計算
w, mag, phase = signal.bode(sys)

# グラフのプロット
plt.figure()
plt.semilogx(w, mag)  # ゲインのプロット
plt.title('Frequency Response')
plt.xlabel('Frequency [rad/s]')
plt.ylabel('Gain [dB]')
plt.grid(True)

plt.figure()
plt.semilogx(w, phase)  # 位相のプロット
plt.title('Phase Response')
plt.xlabel('Frequency [rad/s]')
plt.ylabel('Phase [degrees]')
plt.grid(True)

plt.show()
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?