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?

基準電源・電流源・レギュレータの設計

Posted at

3.1 基準電源(Reference Voltage Source)

(1) 基準電圧生成

V_REF1 = V_TNE + |V_TND| * sqrt( μ_nD * (W1/L1) / ( μ_nE * (W2/L2) ) )
  • V_TNE : エンハンスメント型MOSのしきい値電圧 [V]
  • V_TND : ディプレッション型MOSのしきい値電圧 [V]
  • μ_n : キャリア移動度 [cm²/V·s]
  • W/L : トランジスタのチャネル幅長比

解説:
2種類のMOSを組み合わせ、V_Tの差を基準電圧として抽出する。
μ・W/L比により電流バランスが決まり、基準電圧が安定化する。


(2) 温度係数

∂V_REF1/∂T = (∂V_TNE/∂T) + (∂|V_TND|/∂T) * sqrt( μ_nD*(W1/L1) / ( μ_nE*(W2/L2) ) )

解説:
しきい値電圧の温度依存性(負傾向)と移動度補正(正傾向)が打ち消し合うように設計する。
温度ドリフト最小化が目的。


(3) トリミング条件(Trim Resistor)

R_tr = R1 * (1/V_IN - 1)    [V_REF1V0 < 1V]
R_tr = R1 * (V_IN / 1 - 1)  [V_REF1V0 > 1V]

数値例:

R1 = 216kΩ, V_IN = 0.7V → R_tr = 92.6kΩ
R1 = 216kΩ, V_IN = 1.2V → R_tr = 43.2kΩ

解説:
チップ製造ばらつきに対し、R_trを変更して1V基準を補正する。


(4) トリミング抵抗構成

R_tr = r * (2^n - 1)

例:r = 422Ω, n = 8 → R_tr = 107.6kΩ
→ ±0.5% 調整可能。


3.2 基準電流源(Reference Current Source)

(1) 基本式

I_REF = ΔV_GS / R_X

意味: ΔV_GS(2素子間のV_GS差)を抵抗で変換して一定電流を生成。


(2) トランジスタ電流式

I1 = 0.5 * μ_nD * C_ox * (W1/L1) * (V_GS1 - V_TND)^2
I2 = 0.5 * μ_nE * C_ox * (W2/L2) * (V_GS2 - V_TNE)^2

(3) カレントミラー比

I1/I2 = [ μ_nD * (W1/L1) * (V_GS1 - V_TND)^2 ] / [ μ_nE * (W2/L2) * (V_GS2 - V_TNE)^2 ]

解説:
ミラー構成で電流比を制御。
ΔV_GSとサイズ比によりI_REFを規定。


(4) トリミング設計

ΔV_GS = 60mV ±20mV
R_X = ±25%
→ 誤差範囲:I_REF ±66%
→ トリミング補正後:I_REF = 2μA ±12.5%

(5) 抵抗値例

R1 = 13.5kΩ
r = 1.688kΩ
R_X = R1 + R_tr = 53.4kΩ → R_tr = 39.9kΩ
トリミング段数 n = 5 → R_tr = 52.3kΩ

3.3 レギュレータ回路(Voltage Regulator VBI)

(1) ポール・ゼロ周波数

ω_P,FB = 1 / ( C_F * (r_oH // r_oL) )
ω_P,VBI = 1 / ( C_L * (R_L // R_o) )
ω_P,L = 1 / ( C_P * (R1 // R2) )
|ω_Z,L| = 1 / ( C_P * R2 )
ω_Z,ESR = 1 / ( C_L * R_ESR )

単位: [rad/s]
解説: ループの極と零点を配置し、安定性を確保。


(2) 動作条件例

V* = 5V
C_L = 1μF
R_ESR = 10mΩ〜1Ω
I_REG1 = 0〜1mA

(3) 出力段条件

I_d ≤ 1.5mA(外部+内部負荷)
→ 設計上は I_d ≈ 3mA として安全余裕を確保
V_FB1 = 1V

(4) 動作領域の確認

V_P = V_REF1V0 - V_TN1 = 1.0V - 0.35V = 0.65V
V_DS6 = V* - V_BI = 4.7V - 4.0V = 0.7V
→ M6 は非飽和領域 (V_DS6 < V_TP,H)

3.4 位相補償と安定性

ポール配置の考え方:

  1. P点(高域ポール)を十分高く設定
  2. 出力ポールとESRゼロを分離
  3. 位相余裕を45〜60°確保

ループゲイン測定:
帰還点Rを開放して測定。ボード線図で確認。


設計パラメータまとめ

V_REF1V0 = 1.000V ±0.5%
I_REF = 2μA ±12.5%
V_BI = 4.0V
I_REG1_max = 1mA
Phase Margin ≥ 45°

まとめ(定性的説明)

  1. 基準電圧源
     しきい値電圧の差を用いて温度安定な電圧を生成。
  2. 基準電流源
     ΔV_GSを抵抗変換し、カレントミラーで複製。
  3. レギュレータ
     多段帰還で安定化し、トリミングと位相補償で高精度化。
  4. 設計目的
     製造ばらつき・温度変動・外部負荷変化に対し安定な基準を供給する。
# ===============================================================
# Program Name: reference_voltage_current_regulator_analysis.py
# Creation Date: 20251030
# Overview: Compute and plot reference voltage, current, and regulator stability
# Usage: Run to calculate V_REF, I_REF, pole-zero frequencies, and plot Bode gain-phase
# ===============================================================

import numpy as np
import matplotlib.pyplot as plt

# ==== Constants ====
mu_nD = 450e-4           # electron mobility [m^2/V·s]
mu_nE = 500e-4
W1, L1 = 10e-6, 2e-6     # transistor 1 size [m]
W2, L2 = 8e-6, 2e-6      # transistor 2 size [m]
V_TNE = 0.7              # threshold voltage enhancement [V]
V_TND = -0.4             # threshold voltage depletion [V]

# ==== Reference Voltage ====
V_REF1 = V_TNE + abs(V_TND) * np.sqrt(mu_nD * (W1/L1) / (mu_nE * (W2/L2)))
print("Reference Voltage V_REF1 =", V_REF1, "[V]")

# ==== Temperature Coefficient (symbolic form approximated) ====
dV_TNE_dT = -2e-3   # [V/°C]
dV_TND_dT =  1.5e-3 # [V/°C]
temp_coeff = dV_TNE_dT + dV_TND_dT * np.sqrt(mu_nD*(W1/L1)/(mu_nE*(W2/L2)))
print("Temperature Coefficient dV_REF1/dT =", temp_coeff, "[V/°C]")

# ==== Trim resistor examples ====
R1 = 216e3
V_IN1, V_IN2 = 0.7, 1.2
R_tr_low  = R1 * (1/V_IN1 - 1)
R_tr_high = R1 * (V_IN2 / 1 - 1)
print("\nTrim resistor for <1V:", R_tr_low, "[Ω]")
print("Trim resistor for >1V:", R_tr_high, "[Ω]")

# ==== Reference Current ====
delta_VGS = 60e-3  # [V]
R_X = 53.4e3       # [Ω]
I_REF = delta_VGS / R_X
print("\nReference Current I_REF =", I_REF, "[A]")

# ==== Current Mirror Ratio ====
V_GS1, V_GS2 = 0.9, 0.8
I_ratio = (mu_nD*(W1/L1)*(V_GS1 - V_TND)**2) / (mu_nE*(W2/L2)*(V_GS2 - V_TNE)**2)
print("Current mirror ratio I1/I2 =", I_ratio)

# ==== Regulator Parameters ====
C_F = 5e-12         # [F]
C_L = 1e-6          # [F]
C_P = 10e-12        # [F]
R1 = 100e3
R2 = 100e3
R_L = 1e3
R_o = 50e3
r_oH = 80e3
r_oL = 50e3
R_ESR = 0.1

omega_P_FB  = 1 / (C_F * ((r_oH * r_oL) / (r_oH + r_oL)))
omega_P_VBI = 1 / (C_L * ((R_L * R_o) / (R_L + R_o)))
omega_P_L   = 1 / (C_P * ((R1 * R2) / (R1 + R2)))
omega_Z_L   = 1 / (C_P * R2)
omega_Z_ESR = 1 / (C_L * R_ESR)

print("\nPole-Zero Frequencies [rad/s]:")
print("ω_P,FB =", omega_P_FB)
print("ω_P,VBI =", omega_P_VBI)
print("ω_P,L =", omega_P_L)
print("|ω_Z,L| =", omega_Z_L)
print("ω_Z,ESR =", omega_Z_ESR)

# ==== Frequency Response (Bode plot model) ====
freq = np.logspace(3, 8, 1000)
s = 1j * 2 * np.pi * freq

# Simplified loop gain model: one dominant pole + ESR zero
A0 = 80          # DC gain
omega_p = omega_P_VBI
omega_z = omega_Z_ESR
H = A0 * (1 + s/omega_z) / (1 + s/omega_p)

mag = 20 * np.log10(abs(H))
phase = np.angle(H, deg=True)

# ==== Plot ====
plt.figure(figsize=(8, 6))
plt.subplot(2,1,1)
plt.semilogx(freq, mag)
plt.title("Regulator Loop Gain (Bode Plot)")
plt.ylabel("Magnitude [dB]")
plt.grid(True, which="both")

plt.subplot(2,1,2)
plt.semilogx(freq, phase)
plt.xlabel("Frequency [Hz]")
plt.ylabel("Phase [deg]")
plt.grid(True, which="both")

plt.tight_layout()
plt.show()

# ==== Summary ====
print("\n--- Summary ---")
print(f"V_REF1 = {V_REF1:.3f} V")
print(f"I_REF = {I_REF*1e6:.2f} μA")
print(f"dV_REF1/dT = {temp_coeff*1e3:.3f} mV/°C")
print(f"Phase Margin target ≥ 45°")

このコードは以下を計算・可視化する:

  • 基準電圧 V_REF1 と温度係数
  • トリミング抵抗 R_tr の設計例
  • 基準電流 I_REF とカレントミラー比
  • レギュレータの極・零点 (ω_P, ω_Z)
  • ボード線図(利得・位相)matplotlib で描画
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?