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?

SAR-ADCと熱雑音の関係

Posted at

1. SAR-ADCの分解能とLSB

逐次比較型AD変換器(SAR-ADC)は二分探索で量子化を行い、分解能 $N$ ビットのときの最小ステップ(LSB)は

$$
\Delta = \frac{V_{FS}}{2^N}
$$

  • $V_{FS}$:入力フルスケール電圧
  • $N$:ビット数

例: $V_{FS} = 1,\text{V}, N=15$

$$
\Delta = \frac{1}{2^{15}} \approx 30 ,\mu \text{V}
$$


2. 熱雑音(kT/Cノイズ)

サンプル&ホールド回路のコンデンサ $C$ に生じる熱雑音の平均二乗値は

$$
v_{n,\text{rms}}^2 = \frac{kT}{C}
$$

  • $k = 1.38 \times 10^{-23}, \text{J/K}$(ボルツマン定数)
  • $T \approx 300,\text{K}$(室温)
  • $C$:ホールドコンデンサ容量

したがって実効雑音は

$$
v_{n,\text{rms}} = \sqrt{\frac{kT}{C}}
$$

例: $C = 1,\text{pF}$ の場合

$$
v_{n,\text{rms}} \approx 64 ,\mu \text{V}
$$


3. 量子化雑音と比較条件

理想量子化器の雑音は一様分布するため、その標準偏差は

$$
\sigma_q = \frac{\Delta}{\sqrt{12}}
$$

よって、高分解能ADCとして成立する条件は

$$
v_{n,\text{rms}} < \frac{\Delta}{\sqrt{12}}
$$


4. 境界ビット数の導出

上の式に $\Delta = V_{FS} / 2^N$ を代入すると、

$$
\sqrt{\frac{kT}{C}} < \frac{V_{FS}}{2^N \sqrt{12}}
$$

整理して、

$$
2^N < \frac{V_{FS} \cdot \sqrt{12}}{\sqrt{kT/C}}
$$

両辺の $\log_2$ を取ると、

$$
N_{\text{max}} = \log_2 \left( \frac{V_{FS} \cdot \sqrt{12}}{\sqrt{kT/C}} \right)
$$

これが 熱雑音に埋もれない最大ビット数 を与える一般式。


5. 数値例

  • $V_{FS} = 1.0 ,\text{V}$
  • $C = 1.0 ,\text{pF}$
  • $T = 300 ,\text{K}$

の場合:

  1. 熱雑音

$$
v_{n,\text{rms}} \approx 64 ,\mu \text{V}
$$

  1. 量子化雑音(15ビット)

$$
\Delta = 30 ,\mu \text{V}, \quad \sigma_q \approx 8.7 ,\mu \text{V}
$$

→ 結果:

$$
64 ,\mu \text{V} \gg 8.7 ,\mu \text{V}
$$

つまり、15ビットではLSBが熱雑音に完全に埋もれる
この条件から逆算すると、 $N_{\text{max}} \approx 12$ ビット程度が限界。


6. 結論

  • SAR-ADCはビット数が増えるとLSBが指数関数的に小さくなる。
  • 一方、熱雑音は $\sqrt{kT/C}$ によって下限が決まり、簡単には減らせない。
  • よって、ある閾値(約12〜13ビット、容量や条件による)を超えると 物理的にLSBが熱雑音に埋もれてしまう
  • これが「SAR-ADC単独では高分解能化が難しい」と言われる理由。

import numpy as np

# ========================
# Parameters / パラメータ
# ========================
k = 1.38e-23     # Boltzmann constant [J/K]
T = 300          # Temperature [K]
C = 1e-12        # Sampling capacitor [F]
V_FS = 1.0       # Full-scale voltage [V]

# ========================
# Thermal noise / 熱雑音
# ========================
v_n_rms = np.sqrt(k * T / C)

# ========================
# Max bit resolution / 境界ビット数
# ========================
N_max = np.log2(V_FS * np.sqrt(12) / v_n_rms)

# ========================
# Example: N=15
# ========================
N = 15
Delta = V_FS / (2**N)
sigma_q = Delta / np.sqrt(12)

# ========================
# Print results / 結果表示
# ========================
print("=== SAR-ADC Noise Calculation ===")
print(f"Full-scale voltage V_FS = {V_FS} V")
print(f"Sampling capacitor C = {C:.2e} F")
print(f"Temperature T = {T} K")
print(f"Thermal noise (rms) = {v_n_rms*1e6:.2f} µV")
print(f"Boundary bit resolution N_max ≈ {N_max:.2f} bits")
print("--- Check N=15 ---")
print(f"LSB (Δ) = {Delta*1e6:.2f} µV")
print(f"Quantization noise σ_q = {sigma_q*1e6:.2f} µV")
if v_n_rms < sigma_q:
    print("→ Thermal noise is below quantization noise (OK).")
else:
    print("→ Thermal noise dominates (LSB buried).")
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?