0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CMOS2段階アンプ

Last updated at Posted at 2025-02-15

62B05991-2034-4845-B623-9FF6D9579A3B.jpeg

import math

# 定数の設定(更新後の値)
gm1 = 94.25e-6  # gm1 の値 (S)
gm6 = 942.5e-6  # gm6 の値 (S)
VA2 = 20   # VA2 の値 (V)
VA4 = 30   # VA4 の値 (V)
VA6 = 20   # VA6 の値 (V)
VA7 = 30   # VA7 の値 (V)
I5 = 25e-6   # I5 の値 (A)
I6 = 242e-6  # I6 の値 (A)
VDD = 1.8   # 電源電圧 (V)
VGS8 = 0.7  # ゲート-ソース電圧 (V)
I = 100e-6  # 電流 (A)
VIC_min = 0.35  # 最小 VIC (V)
VIC_max = 0.95  # 最大 VIC (V)
VSS = -1.5  # 負電源電圧 (V)
Veff = 0.2  # 有効電圧 (V)
Cc = 1e-12  # 補償コンデンサ (F) (仮値)
CL = 1e-12  # 負荷容量 (F) (仮値)
ID = 100e-6 # ドレイン電流 (A)
VDS = 0.7   # ドレイン-ソース電圧 (V)
μCox = 50e-6 # しきい値電圧係数 (A/V^2) (仮値)

# 利得 A1 と A2 の計算
A1 = (-2 * gm1) / ((1 / VA2 + 1 / VA4) * I5)
A2 = (-2 * gm6) / ((1 / VA6 + 1 / VA7) * I6)

# A1 * A2 の計算
A_product = A1 * A2

# デシベルへの変換
A_product_dB = 20 * math.log10(abs(A_product))

# 抵抗 R の計算
R = (VDD - VGS8) / I

# W/L の計算
W_L = (2 * I) / (μCox * Veff**2)

# 電流2 の計算
I2 = (gm1**2) / (2 * μCox * W_L)

# スルーレート (SR) の計算
SR = I5 / Cc

# ゲイン帯域幅 (GB) の計算
GB = gm1 / Cc

# gd の計算
gd = ID / (VA2 + VDS)

# β の計算
beta = μCox * W_L

# 2×電流 ÷ β の計算
value_2I_div_beta = (2 * I) / beta

# z1 の計算
z1 = gm1 / Cc

# gds1 と gds2 の計算
gds1 = (1 / VA2) + (1 / VA4)
gds2 = (1 / VA6) + (1 / VA7)

# P1 と P2 の計算
P1 = (-gds1 * gds2) / (gm6 * Cc)
P2 = (-gm6) / CL

# 計算結果の表示
print("A1 =", A1)
print("A2 =", A2)
print("A1 * A2 =", A_product)
print("A1 * A2 in dB =", A_product_dB)
print("R =", R)
print("W/L =", W_L)
print("I2 =", I2)
print("SR =", SR)
print("GB =", GB)
print("gd =", gd)
print("β =", beta)
print("2×電流 ÷ β =", value_2I_div_beta)
print("z1 =", z1)
print("gds1 =", gds1)
print("gds2 =", gds2)
print("P1 =", P1)
print("P2 =", P2)



# 定数の設定
L = 0.18e-6  # チャネル長 (m)
VA = 20  # アーリー電圧 (V)
ID = 100e-6  # ドレイン電流 (A)
VDS = 1.2  # ドレイン-ソース電圧 (V)

# チャネル長変調係数の計算
lambda_value = 1 / VA
ro = (VA + VDS) / ID  # 出力インピーダンス

# 結果の表示
print("チャネル長変調係数 λ =", lambda_value)
print("出力インピーダンス ro =", ro)
import math

# 定数の設定
ID = 100e-6  # ドレイン電流 (A)
Veff = 0.2   # 有効電圧 V_eff (V)
μCox = 50e-6 # しきい値電圧係数 (A/V^2)
W_L = 100    # W/L 比

# 相互コンダクタンス gm の計算
gm1 = (2 * ID) / Veff  # 基本式 g_m = 2 * I_D / Veff
gm2 = math.sqrt(2 * μCox * W_L * ID)  # g_m = sqrt(2 * μCox * W/L * I_D)

# 結果の表示
print("gm1 (2*ID/Veff) =", gm1)
print("gm2 (sqrt(2μCox(W/L)ID)) =", gm2)

import math

# Given values
GBW = 30e6  # Gain-Bandwidth in Hz (30 MHz)
C_C = 0.8e-12  # Capacitance in Farads (0.8 pF)
SR = 20e6  # Slew rate in V/s (20 x 10^6 V/s)

# g_m1 calculation (Transconductance)
g_m1 = GBW * C_C * 2 * math.pi
print(f"g_m1 = {g_m1:.2e} S")  # Transconductance in Siemens

# I_5 calculation (Current)
I_5 = SR * C_C
print(f"I_5 = {I_5:.2e} A")  # Current in Amperes




import math

# 定数の設定
w = 1e-6  # w = 1μ (1 μm) 変換後の値(メートル単位)
l = 0.2e-6  # l = 0.2μ (0.2 μm) 変換後の値(メートル単位)
I = 20e-6  # I = 20μA (20 μA) 変換後の値(アンペア単位)
Vds = 0.5  # Vds = 0.5V
Veff = 0.1  # Veff = 0.1V
gds = 5.77e-6  # gds = 5.77μS (5.77 μS) 変換後の値(S単位)
gm = 0.4e-3  # gm = 0.4mS (0.4 mS) 変換後の値(S単位)

# 電源電圧の設定
Vdd = 3.0  # Vdd = 3.0V

# 望まれる20dBの電圧増幅
dB = 20  # 20 dB
voltage_gain = 10 ** (dB / 20)  # dBから電圧増幅に変換

# その倍の増幅
double_voltage_gain = 2 * voltage_gain

# 入力信号(例:0.1Vを入力と仮定)
Vin = 0.1  # 入力信号(仮定)

# 出力電圧の計算
Vout = Vin * voltage_gain

# 出力電圧が電源電圧を超えないように制限
if Vout > Vdd:
    Vout = Vdd  # 出力電圧は電源電圧に制限

# その倍の出力電圧(同様に制限)
Vout_double = Vin * double_voltage_gain
if Vout_double > Vdd:
    Vout_double = Vdd  # 出力電圧は電源電圧に制限

# ダミーデータ: スルーレート(SR)、利得帯域幅(GBW)、負荷容量(C_L)、マルチ、フィンガー
SR = 1e6  # スルーレート (V/秒)
GBW = 10e6  # 利得帯域幅 (Hz)
CL = 2e-12  # 負荷容量 (F)
multi = 2  # マルチ(トランジスタの数)
finger = 2  # フィンガー(フィンガー数)

# スルーレート、利得帯域幅、負荷容量、マルチ、フィンガーを表示
print(f"20dBに対応する電圧増幅: {voltage_gain:.3f}")
print(f"その倍に変換した電圧増幅: {double_voltage_gain:.3f}")
print(f"入力信号 {Vin}V の出力電圧: {Vout:.3f}V (電源電圧 {Vdd}V を超えないように制限)")
print(f"入力信号 {Vin}V のその倍の出力電圧: {Vout_double:.3f}V (電源電圧 {Vdd}V を超えないように制限)")

# スルーレート、利得帯域幅、負荷容量、マルチ、フィンガーのダミーデータを表示
print(f"スルーレート (SR): {SR} V/秒")
print(f"利得帯域幅 (GBW): {GBW} Hz")
print(f"負荷容量 (C_L): {CL} F")
print(f"マルチ (Multi): {multi}")
print(f"フィンガー (Finger): {finger}")

# 与えられた値
mu_Cox = 8.65e-5  # μCox (A/V^2)
I_D = 0.5e-6  # ドレイン電流 (A)
V_ov = 0.1  # オーバードライブ電圧 (V)
L = 2.6e-6  # 最小長さ L (m)

# アスペクト比 W/L の計算
aspect_ratio = (2 * I_D) / (mu_Cox * V_ov**2)

# アスペクト比 W/L の自然数化
aspect_ratio_rounded = round(aspect_ratio)

# W を計算
W = aspect_ratio_rounded * L  # W (m)

# 結果を表示
print("アスペクト比 (W/L) の計算結果:", aspect_ratio)
print("アスペクト比 (W/L) の自然数:", aspect_ratio_rounded)
print("W の値 (m):", W)
print("W の値 (μm):", W * 1e6)  # μm単位で表示

実験メモに使えるテンプレート

=============================

Date: 2025/02/19
Time: 14:30
Title: Two-Stage Amplifier Parameters
File Name: Two-Stage Amplifier Experiment Results

=============================


Input Parameters


PMOS Transistor M1

This section describes the electrical characteristics of the PMOS transistor M1 used in the two-stage amplifier.

  • Width (w) = 1μm (1e-6 m)
    • The width of a single transistor finger. Determines the current-driving capability.
  • Length (l) = 0.2μm (0.2e-6 m)
    • The channel length, which affects gain, speed, and short-channel effects.
  • Multi (M) = 1
    • The number of parallel transistor groups. Since ( M = 1 ), no additional parallel instances exist.
  • Finger (Nf) = 2
    • The number of fingers used in the layout. Increasing ( N_f ) helps reduce parasitic effects and improves current distribution.
  • Total Effective Width (( W_{\text{eff}} )) = ( M \times N_f \times w ) = ( 1 \times 2 \times 1\mu m = 2\mu m )
    • The total effective width of the transistor, impacting transconductance (( g_m )) and current capability.
  • Current (( I_D )) = 20μA (20e-6 A)
    • The drain current flowing through the transistor during operation.
  • Drain-Source Voltage (( V_{DS} )) = 0.5V
    • The voltage difference between the drain and source terminals, determining the operating region.
  • Effective Voltage (( V_{\text{eff}} )) = 0.1V
    • Also known as the overdrive voltage ((V_{GS} - V_{TH})), which controls transconductance efficiency.
  • Output Conductance (( g_{ds} )) = 5.77μS (5.77e-6 S)
    • Represents the small-signal output conductance, affecting gain and stability.
  • Transconductance (( g_m )) = 0.4mS (0.4e-3 S)
    • A key parameter indicating how effectively the gate voltage controls the drain current, crucial for amplifier gain.

(Additional supplementary information regarding the used parameters is separately provided.)



Output Results



Considerations on Simulation Results and Next Steps


  • Point 1:

  • Point 2:

  • Point 3:

  • Issues and Improvement Measures


Fixed Parameters


(Additional supplementary information regarding the used parameters is separately provided.)



image.png

import math

# 定数の設定
Cc = 0.3e-12  # キャパシタンス Cc (ファラッド単位)
SR = 150e-6  # スルーレート SR (V/s)
omega = 2 * math.pi * 1e6  # ω (角周波数) 例: 1MHzと仮定
beta_n = 2e-4  # n型のβ
ID = 1e-3  # ドレイン電流 (A)
Veff = 0.7  # 有効電圧 (V)

# I5の計算
I5 = Cc * SR

# gm1の計算
gm1 = omega * Cc

# gm6の計算
gm6 = 10 * gm1

# gmと電流とVeffからアスペクト比(W/L)の計算
aspect_ratio = (gm1**2) / (2 * beta_n * ID)

# 結果を表示
print(f"I5 (差動テイル電流): {I5:.3e} A")
print(f"gm1: {gm1:.3e} S")
print(f"gm6: {gm6:.3e} S")
print(f"アスペクト比 (W/L): {aspect_ratio:.3e}")

image.png



def print_equation_results(ID, Veff, λn=None, λp=None, λ=None):
    # Equation 1: gm = 2ID / Veff
    gm = 2 * ID / Veff
    print(f"gm = 2ID / Veff = {gm:.3f}")
    
    # Equation 2: 2 / (Veff * (1/λn + 1/λp)) (only if λn and λp are provided)
    if λn is not None and λp is not None:
        result2 = 2 / (Veff * (1 / λn + 1 / λp))
        print(f"2 / (Veff * (1 / λn + 1 / λp)) = {result2:.3f}")
    else:
        print("λn and λp must be provided for Equation 2.")
    
    # Equation 3: 2 * (1 / (Veff * λ)) (only if λ is provided)
    if λ is not None:
        result3 = 2 * (1 / (Veff * λ))
        print(f"2 * (1 / (Veff * λ)) = {result3:.3f}")
    else:
        print("λ must be provided for Equation 3.")

# Example usage:
ID = 0.5  # Example current ID in Amps
Veff = 1.0  # Example Veff in Volts
λn = 0.01  # Example λn
λp = 0.01  # Example λp
λ = 0.01  # Example λ

print_equation_results(ID, Veff, λn, λp, λ)

IMG_8253.jpeg

# パラメータの定義
C = 0.3e-12  # 容量 (F)
slew_rate = 150e-6  # スルーレート (V/s)
I5 = C * slew_rate  # I5の計算

channel_modulation_lambda = 0.1  # チャネル変調 λ
gm1 = 380e-6  # トランスコンダクタンス (S)

# カレントミラーの比率より
I7 = 20 * I5  # I7の計算

# 最終式の計算
result = 10 * ((gm1) ** 2) / ((I5 / 2) * (0.1 + 0.1) * I7 * (0.1 + 0.1))

# 結果を表示
print("I5 =", I5)
print("I7 =", I7)
print("Result =", result)
0
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?