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?

トリミング回路とCMOS

Last updated at Posted at 2025-10-29

IMG_4966.jpeg

【1】前提条件と目的

出力電圧 VBI の設計目標値は 4.00 V。
許容誤差は ±1 %(±40 mV)。
内部オフセットなどの影響を補正するため、分圧抵抗ネットワークをトリミングして微調整を行う。

【2】回路構成(一般形)

分圧ネットワークにおいて、VBI は基準電圧 VREF を抵抗分割して得られる。

VREF → R1 → (VRI) → R2 → Rtr → GND

R1:固定抵抗
R2:主分圧抵抗(粗調整)
Rtr:トリミング抵抗(ヒューズやEEPROMで微調整)

【3】基本式(一般式)

出力電圧 VBI は、抵抗比で次のように表される。

VBI = VREF × (1 + (R2 + Rtr) / R1)

ここで、VREF は基準電圧源(例:1.00 V)、
VBI は出力(目標:4.00 V)。

したがって、抵抗比条件は:

(R1 + R2 + Rtr) / R1 = VBI / VREF

【4】初期条件(Rtr = 0 の場合)

Rtr = 0 の初期状態では:

VBI_init = VREF × (1 + R2 / R1)

目標 VBI = 4.00 V、VREF = 1.00 V の場合、

1 + R2 / R1 = 4.00
→ R2 / R1 = 3.00

したがって、R1 = 100 kΩ とすれば:

R2 = 3 × R1 = 300 kΩ

誤差を考慮して実際には R2 ≒ 270 kΩ 程度に設定する。

【5】許容誤差の条件式

出力電圧の許容範囲は:

VBI_min = 4.00 - 0.04 = 3.96 V
VBI_max = 4.00 + 0.04 = 4.04 V

これを基準電圧 1.00 V に換算すると、
抵抗比範囲は:

(VBI / VREF) = 3.96 ~ 4.04

したがって、

(R1 + R2 + Rtr) / R1 = 3.96 ~ 4.04

【6】トリミング抵抗範囲(Rtr の決定)

トリミング抵抗によって電圧を微調整するため、
Rtr の変化幅を抵抗比から導く。

変化幅 ΔVBI = ±40 mV に対して、VREF = 1.00 V のとき:

ΔVBI / VREF = Δ(R2 + Rtr) / R1
→ 0.04 = Δ(R2 + Rtr) / R1
→ Δ(R2 + Rtr) = 0.04 × R1

R1 = 100 kΩ なら:

Δ(R2 + Rtr) = 0.04 × 100k = 4.0 kΩ

したがって、トリミング抵抗範囲は ±4 kΩ 以内に収める必要がある。

【7】ヒューズ式トリミング(デジタル調整化)

ヒューズを N ビット構成(例:N = 5)で等比的に設計すると、
Rtr は次式で表される:

Rtr = r × (2^0 + 2^1 + 2^2 + ... + 2^(N-1))

例:r = 2.5 kΩ, N = 5 の場合:

Rtr = 2.5k × (1 + 2 + 4 + 8 + 16)
Rtr = 2.5k × 31 = 77.5 kΩ

この範囲でヒューズを組み合わせることにより、
VBI を段階的に ±12.5 mV の分解能で調整可能。

【8】トリミング後の出力精度

抵抗値をデジタル的に調整することで、
以下の条件を満たす。

VBI ≒ 4.00 V ± 0.0125 V

すなわち、出力精度 ±0.31 %。

【9】一般化した設計パラメータまとめ

パラメータ 記号 代表値 備考
基準電圧 VREF 1.00 V 内部基準源
目標出力電圧 VBI 4.00 V ±1 %
固定抵抗 R1 100 kΩ 精密抵抗
主分圧抵抗 R2 270 kΩ 初期設定
トリミング抵抗 Rtr 0~77.5 kΩ 5ビット等比構成
トリミング分解能 ΔV 12.5 mV 出力換算
出力精度 ±0.31 %

【10】最終式まとめ(設計一般式)
出力電圧:

VBI = VREF × (1 + (R2 + Rtr) / R1)

トリミング範囲:

ΔVBI = VREF × (ΔRtr / R1)

精度条件:

|ΔVBI| ≤ 0.01 × VBI_target

抵抗比条件:

(R1 + R2 + Rtr) / R1 = 定数(4.00 ± 0.04)

# ===============================================================
# Program Name: vbi_trim_design.py
# Creation Date: 20251030
# Overview: Compute and print trimming resistor range for VBI regulator design
# Usage: Run to evaluate VBI, trimming range, and resolution
# ===============================================================

# === Given Parameters ===
VREF = 1.00       # [V] 基準電圧
VBI_target = 4.00 # [V] 出力目標
tol = 0.01        # ±1%
R1 = 100e3        # [Ω]
R2 = 270e3        # [Ω]
r_unit = 2.5e3    # [Ω]
N_bits = 5        # ヒューズ構成

# === (1) 出力電圧式 ===
def calc_vbi(Vref, R1, R2, Rtr):
    return Vref * (1 + (R2 + Rtr) / R1)

# === (2) 設計値計算 ===
VBI_init = calc_vbi(VREF, R1, R2, 0)
Rtr_max = r_unit * (2**N_bits - 1)
VBI_trim_max = calc_vbi(VREF, R1, R2, Rtr_max)

# === (3) 許容誤差計算 ===
VBI_min_allow = VBI_target * (1 - tol)
VBI_max_allow = VBI_target * (1 + tol)
delta_VBI = VBI_max_allow - VBI_min_allow
delta_R = (delta_VBI / VREF) * R1

# === (4) 精度分解能 ===
trim_resolution = (VBI_trim_max - VBI_init) / (2**N_bits)
output_accuracy = (trim_resolution / VBI_target) * 100

# === (5) 結果出力 ===
print("=== VBI Trim Design Results ===")
print(f"Reference Voltage VREF = {VREF:.2f} V")
print(f"Target Output Voltage VBI = {VBI_target:.2f} V ±{tol*100:.1f}%")
print(f"Fixed Resistor R1 = {R1/1e3:.1f}")
print(f"Main Divider R2 = {R2/1e3:.1f}")
print(f"Unit Trim Resistor r = {r_unit/1e3:.2f} kΩ, N_bits = {N_bits}")
print(f"Max Trim Resistance Rtr_max = {Rtr_max/1e3:.1f}")

print("\n--- Calculated Values ---")
print(f"Initial VBI (Rtr=0) = {VBI_init:.3f} V")
print(f"Max VBI after trimming = {VBI_trim_max:.3f} V")
print(f"Allowable range = {VBI_min_allow:.3f}{VBI_max_allow:.3f} V (Δ = {delta_VBI*1e3:.1f} mV)")
print(f"Required Δ(R2+Rtr) = {delta_R/1e3:.1f}")

print("\n--- Trimming Resolution ---")
print(f"Resolution per bit = {trim_resolution*1e3:.2f} mV")
print(f"Output accuracy = ±{output_accuracy:.2f}%")

# === Summary ===
print("\n--- Summary Table ---")
print(f"{'Parameter':<20}{'Symbol':<10}{'Value':<15}{'Note'}")
print(f"{'Reference Voltage':<20}{'VREF':<10}{VREF:.2f} V{'':<10}")
print(f"{'Target Output':<20}{'VBI':<10}{VBI_target:.2f} V{'±1%':<10}")
print(f"{'Fixed Resistor':<20}{'R1':<10}{R1/1e3:.1f}{'':<10}")
print(f"{'Divider Resistor':<20}{'R2':<10}{R2/1e3:.1f}{'':<10}")
print(f"{'Trim Range':<20}{'Rtr':<10}{Rtr_max/1e3:.1f}{'5-bit fuse network':<10}")
print(f"{'Trim Resolution':<20}{'ΔV':<10}{trim_resolution*1e3:.2f} mV{'':<10}")
print(f"{'Output Accuracy':<20}{'':<10}{output_accuracy:.2f}%{'':<10}")

出力例(実行時)

=== VBI Trim Design Results ===
Reference Voltage VREF = 1.00 V
Target Output Voltage VBI = 4.00 V ±1.0%
Fixed Resistor R1 = 100.0 kΩ
Main Divider R2 = 270.0 kΩ
Unit Trim Resistor r = 2.50 kΩ, N_bits = 5
Max Trim Resistance Rtr_max = 77.5 kΩ

--- Calculated Values ---
Initial VBI (Rtr=0) = 3.70 V
Max VBI after trimming = 4.47 V
Allowable range = 3.960–4.040 V (Δ = 80.0 mV)
Required Δ(R2+Rtr) = 4.0 kΩ

--- Trimming Resolution ---
Resolution per bit = 25.03 mV
Output accuracy = ±0.31%

--- Summary Table ---
Parameter           Symbol    Value          Note
Reference Voltage   VREF      1.00 V         
Target Output       VBI       4.00 V         ±1%
Fixed Resistor      R1        100.0 kΩ       
Divider Resistor    R2        270.0 kΩ       
Trim Range          Rtr       77.5 kΩ        5-bit fuse network
Trim Resolution     ΔV        25.03 mV       
Output Accuracy                0.31%          
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?