ADC 의 실제 한계 — ENOB 와 지터

한 줄 요약 — 12비트 ADC 가 12비트를 주는 일은 없습니다. 양자화·지터·잡음·왜곡이 제곱합으로 모여 실효 비트를 깎고, 어느 것이 지배하는지는 신호 주파수가 정합니다.


비트 수는 사양이 아니라 상한입니다

데이터시트 첫 줄의 “16-bit” 는 분해능분해능 resolutionADC 가 구분할 수 있는 가장 작은 전압 차이로, 비트 수와 기준전압으로 정해집니다.1 LSB=Vref/2n1\,\mathrm{LSB} = V_{ref}/2^n자세히 보기 →(코드가 몇 개인가)이지 정확도가 아닙니다. 실제로 쓸 수 있는 비트는 SNDR 에서 거꾸로 계산합니다.

ENOB=SNDR−1.766.02\boxed{\mathrm{ENOB} = \frac{\mathrm{SNDR} - 1.76}{6.02}}
기호
ENOB유효 비트 수effective number of bitsbit
SNDR신호 대 잡음·왜곡비signal-to-noise-and-distortion ratiodB
SNDR=−10log⁡10 ⁣(10−SNR/10+10−THD/10)\mathrm{SNDR} = -10\log_{10}\!\left(10^{-\mathrm{SNR}/10} + 10^{-\mathrm{THD}/10}\right)
기호
SNDR신호 대 잡음·왜곡비signal-to-noise-and-distortion ratiodB
SNR신호 대 잡음비signal-to-noise ratiodB
THD전고조파 왜곡total harmonic distortiondB

SNR 은 잡음만, SNDR 은 왜곡까지 합친 것입니다. 왜곡이 있으면 신호가 아니면서 신호와 상관된 것이 섞이므로 측정에는 잡음과 똑같이 해롭습니다.

$6.02n + 1.76$ 이 어디서 나오는가

양자화 잡음양자화 잡음 quantization noise연속인 값을 계단으로 끊으면서 생기는 오차로, ADC 가 낼 수 있는 SNR 의 상한을 정합니다.SNR=6.02n+1.76 dB\mathrm{SNR} = 6.02n + 1.76\ \mathrm{dB}자세히 보기 →은 −½ LSB ~ +½ LSB 사이에 고르게 퍼져 있다고 봅니다. 균등분포의 분산은 Δ2/12\Delta^2/12 이므로

vq,rms=Δ12,Δ=VFS2nv_{q,rms} = \frac{\Delta}{\sqrt{12}}, \qquad \Delta = \frac{V_{FS}}{2^n}
기호
n비트 수 또는 개수number of bits or count
V_FS전압 (FS)voltage (FS)V
v_q,rms전압 (순시값) (q, 실효값)instantaneous voltage (q, rms)V

풀스케일 정현파의 실효값은 VFS/(22)V_{FS}/(2\sqrt2) 이므로

SNR=20log⁡10VFS/(22)VFS/(2n12)=20log⁡10(2n128)\mathrm{SNR} = 20\log_{10}\frac{V_{FS}/(2\sqrt2)}{V_{FS}/(2^n\sqrt{12})} = 20\log_{10}\left(2^n\sqrt{\frac{12}{8}}\right)
기호
n비트 수 또는 개수number of bits or count
SNR신호 대 잡음비signal-to-noise ratiodB
V_FS전압 (FS)voltage (FS)V
=n⋅20log⁡102+20log⁡101.5=6.02n+1.76 dB= n \cdot 20\log_{10}2 + 20\log_{10}\sqrt{1.5} = 6.02n + 1.76\ \text{dB}
기호
n비트 수 또는 개수number of bits or count

1.76 dB 는 1.5\sqrt{1.5} 입니다 — 정현파의 파고율과 균등분포 분산에서 나온 상수이지 마법의 숫자가 아닙니다.


★ 지터 — 고주파에서 모든 것을 지배합니다

샘플링 시각이 tjt_j 만큼 흔들리면, 신호가 그동안 움직인 만큼이 오차가 됩니다.

v(t)=Asin⁡(2πft)⇒dvdt∣max⁡=2πfAv(t) = A\sin(2\pi f t) \quad\Rightarrow\quad \frac{dv}{dt}\bigg|_{\max} = 2\pi f A
기호
A이득gain
d거리 또는 두께distance or thicknessm
f주파수frequencyHz
t시간times
v전압 (순시값)instantaneous voltageV
Δvrms=2πfA⋅tj,rms\Delta v_{rms} = 2\pi f A \cdot t_{j,rms}
기호
A이득gain
f주파수frequencyHz
t_j,rms시간 (j, 실효값)time (j, rms)s
v_rms실효값 전압 (순시값)rms instantaneous voltageV

풀스케일 정현파(A=VFS/2A = V_{FS}/2, 실효값 A/2A/\sqrt2)와 견주면 진폭이 약분됩니다.

SNRjitter=−20log⁡10(2πftj,rms)\boxed{\mathrm{SNR}_{jitter} = -20\log_{10}(2\pi f t_{j,rms})}
기호
f주파수frequencyHz
SNR신호 대 잡음비signal-to-noise ratiodB
t_j,rms시간 (j, 실효값)time (j, rms)s

진폭이 사라졌습니다. 신호가 크든 작든 지터의 상대적 해악은 같고, 주파수에만 비례합니다.

신호 주파수tjt_j = 10 pstjt_j = 1 pstjt_j = 100 fs
1 kHz144 dB164 dB184 dB
100 kHz104 dB124 dB144 dB
1 MHz84 dB104 dB124 dB
10 MHz64 dB84 dB104 dB
100 MHz44 dB64 dB84 dB

핵심: 저주파 측정에서 지터는 아무 문제가 아니고, 고주파에서는 그것만이 문제입니다. 전극 측정(5 kHz)에서 10 ps 지터는 130 dB — 12비트(74 dB) 근처에도 못 옵니다. 그런데 10 MHz 를 재려면 1 ps 이하가 필요합니다.

주파수 하나로 갈립니다. 지터가 12비트(74 dB)를 깎기 시작하는 주파수는

f=12πtj⋅1074/20=12πtj⋅5012f = \frac{1}{2\pi t_j \cdot 10^{74/20}} = \frac{1}{2\pi t_j \cdot 5012}
기호
f주파수frequencyHz
t_j지터jitters

tjt_j = 10 ps 면 3.2 MHz 입니다. 그 아래면 신경 쓸 필요가 없습니다.


오차를 합치는 법

전부 독립이므로 제곱합(RSS) 으로 모입니다.

SNDR=−10log⁡10 ⁣(10−SNRq/10+10−SNRj/10+10−SNRn/10+10−THD/10)\mathrm{SNDR} = -10\log_{10}\!\left( 10^{-\mathrm{SNR}_q/10} + 10^{-\mathrm{SNR}_j/10} + 10^{-\mathrm{SNR}_{n}/10} + 10^{-\mathrm{THD}/10}\right)
기호
SNDR신호 대 잡음·왜곡비signal-to-noise-and-distortion ratiodB
SNR신호 대 잡음비signal-to-noise ratiodB
THD전고조파 왜곡total harmonic distortiondB
항정하는 것
양자화비트 수 — 바꿀 수 없음
지터클럭 품질 × 신호 주파수
열잡음앞단 회로 + ADC 입력 잡음
왜곡 (THD)드라이버 선형성, 기준전압 안정도

하나가 다른 것보다 6 dB 이상 나쁘면 그것만 보면 됩니다. 나머지는 반올림 오차 수준입니다.


ΔΣ 는 왜 다른가 — 노이즈 셰이핑

일반 ADC 는 양자화 잡음을 대역 전체에 고르게 뿌립니다. 오버샘플링오버샘플링 oversampling필요한 것보다 빠르게 샘플링해 평균 내면 분해능이 올라가고 안티에일리어싱 필터가 쉬워집니다.Δn=12log⁡2(OSR)\Delta n = \tfrac{1}{2}\log_2(\mathrm{OSR})자세히 보기 → 하면 그중 관심 대역에 떨어지는 몫만 줄어 OSR 4배당 1비트 를 법니다.

ΔΣ 는 여기에 하나를 더합니다. 루프가 양자화 잡음을 고주파 쪽으로 밀어냅니다.

Δn=(2L+1)2log⁡2(OSR)−12log⁡2π2L2L+1\Delta n = \frac{(2L+1)}{2}\log_2(\mathrm{OSR}) - \tfrac12\log_2\frac{\pi^{2L}}{2L+1}
기호
L인덕턴스inductanceH
n비트 수 또는 개수number of bits or count

LL 은 변조기 차수입니다. 앞 항만 보면 충분합니다.

차수 LLOSR 2배당 얻는 비트OSR 64 에서
0 (단순 오버샘플링)0.53 비트
11.59 비트
22.515 비트
33.521 비트

그래서 ΔΣ 가 24비트를 광고할 수 있습니다 — 비교기는 1비트인데 루프와 디지털 필터가 나머지를 만듭니다. 대가는 속도와 지연입니다. OSR 64 면 샘플링을 64배 빠르게 돌려야 하고, 디지털 필터의 군지연이 수십~수백 샘플입니다.

💡 다채널 스캔에는 ΔΣ 가 불리합니다. 채널을 바꾸면 디지털 필터를 다시 채워야 해서 정착이 오래 걸립니다. 채널마다 ΔΣ 를 하나씩 두거나, SAR 을 씁니다 (16-04).


계산 예제 — 이 시스템의 ENOB 는 얼마인가

시스템: 16비트 SAR ADC, 신호 10 kHz, 클럭 지터 50 ps, 앞단 입력환산잡음 3 µVrms, 풀스케일 ±2.5 V(5 Vpp), THD −95 dB.

1) 양자화

SNRq=6.02×16+1.76=98.1 dB\mathrm{SNR}_q = 6.02 \times 16 + 1.76 = 98.1\ \text{dB}
기호
SNR신호 대 잡음비signal-to-noise ratiodB

2) 지터

SNRj=−20log⁡10(2π⋅104⋅50×10−12)=−20log⁡10(3.14×10−6)=110 dB\mathrm{SNR}_j = -20\log_{10}(2\pi \cdot 10^4 \cdot 50\times10^{-12}) = -20\log_{10}(3.14\times10^{-6}) = 110\ \text{dB}
기호
SNR신호 대 잡음비signal-to-noise ratiodB

3) 앞단 잡음 — 풀스케일 정현파 실효값 5/(22)=1.775/(2\sqrt2) = 1.77 V

SNRn=20log⁡101.773×10−6=115.4 dB\mathrm{SNR}_n = 20\log_{10}\frac{1.77}{3\times10^{-6}} = 115.4\ \text{dB}
기호
SNR신호 대 잡음비signal-to-noise ratiodB

4) 합치기

SNDR=−10log⁡10 ⁣(10−9.81+10−11.0+10−11.54+10−9.5)\mathrm{SNDR} = -10\log_{10}\!\left(10^{-9.81} + 10^{-11.0} + 10^{-11.54} + 10^{-9.5}\right)
기호
SNDR신호 대 잡음·왜곡비signal-to-noise-and-distortion ratiodB
=−10log⁡10(1.55×10−10+1.0×10−11+2.9×10−12+3.16×10−10)= -10\log_{10}(1.55\times10^{-10} + 1.0\times10^{-11} + 2.9\times10^{-12} + 3.16\times10^{-10}) =−10log⁡10(4.84×10−10)=93.2 dB= -10\log_{10}(4.84\times10^{-10}) = 93.2\ \text{dB} ENOB=93.2−1.766.02=15.2 비트\mathrm{ENOB} = \frac{93.2 - 1.76}{6.02} = \mathbf{15.2\ \text{비트}}
기호
ENOB유효 비트 수effective number of bitsbit

16비트를 샀는데 15.2비트를 씁니다. 그리고 가장 큰 항이 THD(−95 dB) 입니다 — 잡음이 아니라 왜곡이 지배합니다.

설계 판단: 여기서 ADC 를 18비트로 바꿔 봐야 15.4비트밖에 안 됩니다. 개선하려면 드라이버의 선형성을 손봐야 합니다 — 기준전압 버퍼를 튼튼하게, 드라이버를 더 선형인 것으로, 풀스케일을 덜 쓰기. 어느 항이 지배하는지 계산하지 않으면 엉뚱한 곳에 돈을 씁니다.


시뮬레이션으로 확인

ADC 드라이버의 선형성 회로도RISO22ΩADC 드라이버 격리VSRG1kΩCADC1nFADC 입력VP2.5VVN-2.5VRF1kΩU1OPA140VCCVCCVEEVEEINFBOUTADCGND
ADC 드라이버의 선형성워크벤치에서 열기 →
# examples/10-mcu-interfacing/adc-driver-thd.yaml
meta:
  name: ADC 드라이버의 선형성
  lesson: docs/10-mcu-interfacing/07-adc-limits.md
  note: 진폭을 0.5 / 2 / 4.9 Vpp 로 바꿔 가며 출력이 레일에 가까워질 때 어떻게 되는지 본다
components:
  - {ref: VP, type: vdc, value: 2.5}
  - {ref: VN, type: vdc, value: -2.5}
  - {ref: VS, type: vsin, params: {offset: 0, amp: 1, freq: 10k}}
  - {ref: U1, type: opamp, model: OPA140}
  - {ref: RG, type: r, value: 1k}
  - {ref: RF, type: r, value: 1k}
  - {ref: RISO, type: r, value: 22, label: ADC 드라이버 격리}
  - {ref: CADC, type: c, value: 1n, label: ADC 입력}
nets:
  VCC: [VP.p, U1.'v+']
  VEE: [VN.p, U1.'v-']
  IN: [VS.p, U1.'in+']
  FB: [U1.'in-', RG.1, RF.1]
  OUT: [U1.out, RF.2, RISO.1]
  ADC: [RISO.2, CADC.1]
  GND: [VP.n, VN.n, VS.n, RG.2, CADC.2]
analyses:
  - {type: tran, tstep: 1u, tstop: 500u}

amp 를 2.45 로 올려 레일에 가까워지면 파형 꼭대기가 눌리는 것이 보입니다. 그 눌림이 곧 THD 이고 위 계산의 −95 dB 항입니다.


⚖️ 부품 트레이드오프 — 무엇을 사면 ENOB 가 오르는가

선택✅ 좋아지는 것⚠️ 나빠지는 것
비트 수 큰 ADC양자화 항만다른 항이 지배하면 아무 효과 없음, 가격
좋은 클럭 (저지터)고주파에서 크게저주파에서는 무의미, 가격
저잡음 드라이버잡음 항전류·면적
오버샘플링잡음·양자화 항데이터량, 대역 제한
풀스케일을 덜 씀THD↓SNR 이 그만큼 나빠짐 — 상쇄되기 쉬움
ΔΣ 로 바꿈저주파에서 압도적지연, 다채널 스캔에 불리

🔌 실제 쓰임새

  • 데이터시트 비교 — “16-bit” 끼리 견주지 말고 관심 주파수에서의 SNDR 을 봅니다
  • 클럭 고르기 — 신호가 100 kHz 아래면 MCU 내부 클럭으로 충분합니다
  • 노이즈 예산 마지막 칸 — reference/noise-budget 의 ADC 항이 이 계산입니다
  • 왜 12비트로 충분한가 — 앞단 잡음이 12비트 LSB 보다 크면 16비트는 낭비입니다

⚠️ 이상과 실제의 차이

이상실제
16비트면 16비트ENOB 는 늘 그보다 1~3비트 낮습니다
양자화 잡음이 백색신호가 정적이면 코드에 갇혀 디더가 필요합니다
지터는 클럭만의 문제전원 잡음이 클럭 버퍼를 통해 지터로 바뀝니다
오버샘플링은 항상 이득잡음이 이미 LSB 보다 작으면 평균 내도 안 늘어납니다
ENOB 가 주파수와 무관지터 때문에 주파수가 오르면 떨어집니다 — 데이터시트의 SNDR vs 주파수 곡선을 보세요

연습문제

문제 1. 12비트 ADC 로 1 MHz 신호를 잽니다. 지터가 양자화 잡음보다 나빠지지 않으려면 클럭 지터는 얼마 이하여야 합니까?

연습 10-07 — ADC 입력이 12비트까지 차는 데 걸리는 시간 회로도RSRC1kΩ소스 임피던스VS센서 출력CS10pF샘플 커패시터VC샘플 창SW1SW_MUX샘플 스위치 (R_ON 100 Ω)SRCMUXHOLDCTLGND
연습 10-07 — ADC 입력이 12비트까지 차는 데 걸리는 시간워크벤치에서 열기 →
풀이

12비트 양자화 SNR:

SNRq=6.02×12+1.76=74 dB\mathrm{SNR}_q = 6.02 \times 12 + 1.76 = 74\ \text{dB}
기호
SNR신호 대 잡음비signal-to-noise ratiodB

지터 SNR 이 74 dB 이상이어야 하므로

−20log⁡10(2πftj)≥74⇒2πftj≤10−74/20=2.0×10−4-20\log_{10}(2\pi f t_j) \ge 74 \quad\Rightarrow\quad 2\pi f t_j \le 10^{-74/20} = 2.0\times10^{-4}
기호
f주파수frequencyHz
t_j지터jitters
tj≤2.0×10−42π×106=3.2×10−11=32 pst_j \le \frac{2.0\times10^{-4}}{2\pi \times 10^6} = 3.2\times10^{-11} = \mathbf{32\ \text{ps}}
기호
t_j지터jitters

32 ps. 웬만한 크리스털 오실레이터가 만족합니다. 그런데 같은 계산을 10 MHz 신호에 하면 3.2 ps, 100 MHz 면 320 fs — 저지터 클럭이 비싸지는 지점이 여기입니다.

문제 2. SNR 이 80 dB, THD 가 −80 dB 입니다. SNDR 과 ENOB 는?

exercises/10-07-sndr-enob.yaml
풀이

둘이 같은 크기이므로 전력이 두 배 → 3 dB 나빠집니다.

SNDR=−10log⁡10(10−8+10−8)=−10log⁡10(2×10−8)=77 dB\mathrm{SNDR} = -10\log_{10}(10^{-8} + 10^{-8}) = -10\log_{10}(2\times10^{-8}) = 77\ \text{dB}
기호
SNDR신호 대 잡음·왜곡비signal-to-noise-and-distortion ratiodB
ENOB=77−1.766.02=12.5 비트\mathrm{ENOB} = \frac{77 - 1.76}{6.02} = \mathbf{12.5\ \text{비트}}
기호
ENOB유효 비트 수effective number of bitsbit

둘 중 하나만 고쳐서는 3 dB 도 못 법니다. 잡음을 −∞ 로 만들어도 SNDR 은 80 dB 라 ENOB 는 13.0 — 0.5비트만 올라갑니다. 비슷한 크기의 항이 둘이면 둘 다 손봐야 합니다.

문제 3. 2차 ΔΣ 로 OSR 128 을 쓰면 몇 비트를 법니까? 1비트 비교기로 시작해도 됩니까?

exercises/10-07-delta-sigma.yaml
풀이 Δn≈2L+12log⁡2(OSR)=52log⁡2128=2.5×7=17.5 비트\Delta n \approx \frac{2L+1}{2}\log_2(\mathrm{OSR}) = \frac{5}{2}\log_2 128 = 2.5 \times 7 = 17.5\ \text{비트}
기호
L인덕턴스inductanceH
n비트 수 또는 개수number of bits or count

보정항을 빼면 실제로는 15~16비트쯤입니다.

1비트로 시작해도 됩니다. 1 + 16 = 17비트 수준이 나옵니다 — ΔΣ 오디오 ADC 가 정확히 이 구조입니다.

⚠️ 대가: 샘플링을 128배 빠르게 돌려야 하고, 디지털 데시메이션 필터의 군지연이 수백 샘플입니다. 신호 대역 20 kHz 면 실제 클럭은 5.1 MHz 이고 지연은 수 ms 입니다. 실시간 제어 루프 안에는 못 넣습니다.


이전 ← 06 통신의 전기적 관점 | 다음 → 08 DAC — 구조와 글리치