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?

Pipelined-SAR ADC

Posted at

【1】基本構造と動作原理

Pipelined-SAR ADC は、SAR ADCの逐次比較アルゴリズム
Pipeline ADCの段階変換構造を組み合わせたアーキテクチャである。

動作は次のように段階的に進行する。

  1. 第1段SARで上位ビットを決定
  2. DACで対応電圧を生成
  3. 残差信号(誤差分)を増幅して次段へ伝達
  4. 第2段SARで残差を変換し、下位ビットを得る
  5. 最後にデジタル合成(Recombination)を行い最終出力を得る

ブロック構造:

Vin → [Stage1 SAR ADC] → [Residue Amplifier] → [Stage2 SAR ADC] → [Digital Recombiner] → Dout

【2】数式モデルの説明

(1) 第1段変換(Stage 1)

最初に入力電圧をサンプリングする:

Vin1 = Vin

SAR回路が上位ビットを決定し、DAC出力を生成する:

V_DAC1 = Σ ( b_k * Vref / 2^k ) , k = 1 ~ n1

第1段での残差は次式で与えられる:

V_res1 = G1 * ( Vin - V_DAC1 )

ここで G1 は残差アンプの利得である。
これにより、次段へ伝達する信号が生成される。


(2) 第2段変換(Stage 2)

次段SAR ADCは、この残差を新たな入力として扱う:

Vin2 = V_res1

同様に、下位ビットに対応するDAC出力を生成:

V_DAC2 = Σ ( b'_k * Vref / 2^k ) , k = 1 ~ n2

残差信号は:

V_res2 = G2 * ( V_res1 - V_DAC2 )

(3) 出力再構成(Digital Recombination)

各段の結果をビット加算により統合する:

Dout = D1 * 2^(n2) + D2

複数段がある場合は一般化して:

Dout = D1 * 2^(n2 + n3 + ... + nN)
      + D2 * 2^(n3 + ... + nN)
      + ...
      + DN

これにより、逐次変換の並列化と高スループット化が可能となる。


【3】残差増幅の設計理論

(1) Switched-Cap型(理想モデル)

キャパシタ比で残差を生成する:

V_res = ( Cs / Cf ) * ( Vin - V_DAC )

ただし、オペアンプを要するため低VDDでは非効率。


(2) Inverter-Based Amplifier(FinFET向け)

オペアンプの代わりにインバータを用いて利得を得る。

小信号利得:

Av = gm * ro

スルーレート特性:

dVout/dt = gm * ( Vin - V_DAC ) / CL

この構成は 0.6–0.8 V 程度でも十分に動作し、
FinFETの高gm特性を生かせる。


(3) Ring-Amp構成(GAA/CFET向け)

複数インバータ段と帰還制御によりOpAmp動作を模倣。

伝達関数:

H(s) = A0 / ( 1 + s/p1 )

出力電圧:

Vout = A_ring * ( Vin - V_DAC )

OpAmpを用いずに高速・高線形性を確保することができ、
GAA世代の低電圧環境でも有効。


【4】誤差・ノイズ解析

ADC性能を支配する要素は以下の通り。

量子化誤差:

Vq = V_FS / 2^N

アンプ誤差の段階伝搬:

E_total = Σ ( E_amp_i / Π G_i )

熱雑音(kT/Cノイズ):

Vn^2 = kT / Cs

比較器ジッタ(遅延ばらつき):

σ_t ≈ Vn / ( slew_rate )

→ FinFET/GAAではslew rate低下によりジッタ抑制が設計課題。


【5】性能評価式

実効分解能(ENOB):

ENOB = ( SNDR - 1.76 ) / 6.02

Walden FoM(電力効率):

FoM_W = P / ( 2^ENOB * fs )

Schreier FoM(性能効率):

FoM_S = SNDR + 10 * log10( fs / P )

【6】最終統合モデル

段階的な残差生成とビット結合を統一的に表す:

V_res_i = G_i * ( Vin_i - V_DAC_i )
Dout = Σ ( D_i * 2^(N_i) )


# --- Library installation ---
# !pip install numpy matplotlib

# --- Import libraries ---
import numpy as np
import matplotlib.pyplot as plt

# --- Parameters (all centralized) ---
Vref = 1.0           # Reference voltage [V]
n1 = 3               # Stage1 bits
n2 = 5               # Stage2 bits
G1 = 2.0             # Residue amplifier gain
fs = 100             # Sampling points

# --- Input signal (ramp) ---
Vin = np.linspace(0, Vref, fs)

# --- Stage1 Quantization ---
LSB1 = Vref / (2**n1)
D1 = np.floor(Vin / LSB1)
V_DAC1 = D1 * LSB1
V_res1 = G1 * (Vin - V_DAC1)

# --- Stage2 Quantization ---
LSB2 = Vref / (2**n2)
V_res1_clip = np.clip(V_res1, 0, Vref)  # limit range
D2 = np.floor(V_res1_clip / LSB2)
V_DAC2 = D2 * LSB2

# --- Final digital recombination ---
Dout = D1 * (2**n2) + D2
Vout = Dout * (Vref / (2**(n1 + n2)))

# --- Plot results ---
plt.figure(figsize=(10,6))
plt.plot(Vin, Vin, 'k--', label='Ideal transfer (Vin=Vout)')
plt.plot(Vin, Vout, 'b', label='Pipelined-SAR Output')
plt.plot(Vin, V_DAC1, 'r--', alpha=0.6, label='Stage1 DAC Output')
plt.plot(Vin, V_res1, 'g:', alpha=0.7, label='Residue Voltage')

plt.title('Pipelined-SAR ADC Behavior (2-stage)')
plt.xlabel('Input Voltage Vin [V]')
plt.ylabel('Output / Residue Voltage [V]')
plt.legend()
plt.grid(True)
plt.show()

日本語+英語コメント概要

  • Stage 1 (上位ビット変換): V_DAC1 = D1 * LSB1
    → SARが上位ビットを決定。
  • Residue Amplifier (残差生成): V_res1 = G1 * (Vin - V_DAC1)
    → 残差を増幅して第2段に渡す。
  • Stage 2 (下位ビット変換): D2 = floor(V_res1 / LSB2)
  • Digital Recombination (出力合成):
    Vout = Dout * (Vref / 2^(n1 + n2))

可視化結果

  • 青線:最終出力の量子化特性
  • 緑点線:残差電圧(次段SAR入力)
  • 赤点線:第1段DAC出力
  • 黒点線:理想的なVin=Vout線

このプロットにより、逐次比較+段階残差増幅の流れを直感的に確認できる。

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?