ADC 의 실제 한계 — ENOB 와 지터
한 줄 요약 — 12비트 ADC 가 12비트를 주는 일은 없습니다. 양자화·지터·잡음·왜곡이 제곱합으로 모여 실효 비트를 깎고, 어느 것이 지배하는지는 신호 주파수가 정합니다.
비트 수는 사양이 아니라 상한입니다
데이터시트 첫 줄의 “16-bit” 는 분해능분해능 resolutionADC 가 구분할 수 있는 가장 작은 전압 차이로, 비트 수와 기준전압으로 정해집니다.자세히 보기 →(코드가 몇 개인가)이지 정확도가 아닙니다. 실제로 쓸 수 있는 비트는 SNDR 에서 거꾸로 계산합니다.
ENOB유효 비트 수effective number of bitsbitSNDR신호 대 잡음·왜곡비signal-to-noise-and-distortion ratiodBSNDR신호 대 잡음·왜곡비signal-to-noise-and-distortion ratiodBSNR신호 대 잡음비signal-to-noise ratiodBTHD전고조파 왜곡total harmonic distortiondBSNR 은 잡음만, SNDR 은 왜곡까지 합친 것입니다. 왜곡이 있으면 신호가 아니면서 신호와 상관된 것이 섞이므로 측정에는 잡음과 똑같이 해롭습니다.
$6.02n + 1.76$ 이 어디서 나오는가
양자화 잡음양자화 잡음 quantization noise연속인 값을 계단으로 끊으면서 생기는 오차로, ADC 가 낼 수 있는 SNR 의 상한을 정합니다.자세히 보기 →은 −½ LSB ~ +½ LSB 사이에 고르게 퍼져 있다고 봅니다. 균등분포의 분산은 이므로
n비트 수 또는 개수number of bits or countV_FS전압 (FS)voltage (FS)Vv_q,rms전압 (순시값) (q, 실효값)instantaneous voltage (q, rms)V풀스케일 정현파의 실효값은 이므로
n비트 수 또는 개수number of bits or countSNR신호 대 잡음비signal-to-noise ratiodBV_FS전압 (FS)voltage (FS)Vn비트 수 또는 개수number of bits or count1.76 dB 는 입니다 — 정현파의 파고율과 균등분포 분산에서 나온 상수이지 마법의 숫자가 아닙니다.
★ 지터 — 고주파에서 모든 것을 지배합니다
샘플링 시각이 만큼 흔들리면, 신호가 그동안 움직인 만큼이 오차가 됩니다.
A이득gaind거리 또는 두께distance or thicknessmf주파수frequencyHzt시간timesv전압 (순시값)instantaneous voltageVA이득gainf주파수frequencyHzt_j,rms시간 (j, 실효값)time (j, rms)sv_rms실효값 전압 (순시값)rms instantaneous voltageV풀스케일 정현파(, 실효값 )와 견주면 진폭이 약분됩니다.
f주파수frequencyHzSNR신호 대 잡음비signal-to-noise ratiodBt_j,rms시간 (j, 실효값)time (j, rms)s진폭이 사라졌습니다. 신호가 크든 작든 지터의 상대적 해악은 같고, 주파수에만 비례합니다.
| 신호 주파수 | = 10 ps | = 1 ps | = 100 fs |
|---|---|---|---|
| 1 kHz | 144 dB | 164 dB | 184 dB |
| 100 kHz | 104 dB | 124 dB | 144 dB |
| 1 MHz | 84 dB | 104 dB | 124 dB |
| 10 MHz | 64 dB | 84 dB | 104 dB |
| 100 MHz | 44 dB | 64 dB | 84 dB |
핵심: 저주파 측정에서 지터는 아무 문제가 아니고, 고주파에서는 그것만이 문제입니다. 전극 측정(5 kHz)에서 10 ps 지터는 130 dB — 12비트(74 dB) 근처에도 못 옵니다. 그런데 10 MHz 를 재려면 1 ps 이하가 필요합니다.
주파수 하나로 갈립니다. 지터가 12비트(74 dB)를 깎기 시작하는 주파수는
f주파수frequencyHzt_j지터jitters= 10 ps 면 3.2 MHz 입니다. 그 아래면 신경 쓸 필요가 없습니다.
오차를 합치는 법
전부 독립이므로 제곱합(RSS) 으로 모입니다.
SNDR신호 대 잡음·왜곡비signal-to-noise-and-distortion ratiodBSNR신호 대 잡음비signal-to-noise ratiodBTHD전고조파 왜곡total harmonic distortiondB| 항 | 정하는 것 |
|---|---|
| 양자화 | 비트 수 — 바꿀 수 없음 |
| 지터 | 클럭 품질 × 신호 주파수 |
| 열잡음 | 앞단 회로 + ADC 입력 잡음 |
| 왜곡 (THD) | 드라이버 선형성, 기준전압 안정도 |
하나가 다른 것보다 6 dB 이상 나쁘면 그것만 보면 됩니다. 나머지는 반올림 오차 수준입니다.
ΔΣ 는 왜 다른가 — 노이즈 셰이핑
일반 ADC 는 양자화 잡음을 대역 전체에 고르게 뿌립니다. 오버샘플링오버샘플링 oversampling필요한 것보다 빠르게 샘플링해 평균 내면 분해능이 올라가고 안티에일리어싱 필터가 쉬워집니다.자세히 보기 → 하면 그중 관심 대역에 떨어지는 몫만 줄어 OSR 4배당 1비트 를 법니다.
ΔΣ 는 여기에 하나를 더합니다. 루프가 양자화 잡음을 고주파 쪽으로 밀어냅니다.
L인덕턴스inductanceHn비트 수 또는 개수number of bits or count은 변조기 차수입니다. 앞 항만 보면 충분합니다.
| 차수 | OSR 2배당 얻는 비트 | OSR 64 에서 |
|---|---|---|
| 0 (단순 오버샘플링) | 0.5 | 3 비트 |
| 1 | 1.5 | 9 비트 |
| 2 | 2.5 | 15 비트 |
| 3 | 3.5 | 21 비트 |
그래서 ΔΣ 가 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) 양자화
SNR신호 대 잡음비signal-to-noise ratiodB2) 지터
SNR신호 대 잡음비signal-to-noise ratiodB3) 앞단 잡음 — 풀스케일 정현파 실효값 V
SNR신호 대 잡음비signal-to-noise ratiodB4) 합치기
SNDR신호 대 잡음·왜곡비signal-to-noise-and-distortion ratiodBENOB유효 비트 수effective number of bitsbit16비트를 샀는데 15.2비트를 씁니다. 그리고 가장 큰 항이 THD(−95 dB) 입니다 — 잡음이 아니라 왜곡이 지배합니다.
설계 판단: 여기서 ADC 를 18비트로 바꿔 봐야 15.4비트밖에 안 됩니다. 개선하려면 드라이버의 선형성을 손봐야 합니다 — 기준전압 버퍼를 튼튼하게, 드라이버를 더 선형인 것으로, 풀스케일을 덜 쓰기. 어느 항이 지배하는지 계산하지 않으면 엉뚱한 곳에 돈을 씁니다.
시뮬레이션으로 확인
# 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 신호를 잽니다. 지터가 양자화 잡음보다 나빠지지 않으려면 클럭 지터는 얼마 이하여야 합니까?
풀이
12비트 양자화 SNR:
SNR신호 대 잡음비signal-to-noise ratiodB지터 SNR 이 74 dB 이상이어야 하므로
f주파수frequencyHzt_j지터jitterst_j지터jitters32 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신호 대 잡음·왜곡비signal-to-noise-and-distortion ratiodBENOB유효 비트 수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풀이
L인덕턴스inductanceHn비트 수 또는 개수number of bits or count보정항을 빼면 실제로는 15~16비트쯤입니다.
1비트로 시작해도 됩니다. 1 + 16 = 17비트 수준이 나옵니다 — ΔΣ 오디오 ADC 가 정확히 이 구조입니다.
⚠️ 대가: 샘플링을 128배 빠르게 돌려야 하고, 디지털 데시메이션 필터의 군지연이 수백 샘플입니다. 신호 대역 20 kHz 면 실제 클럭은 5.1 MHz 이고 지연은 수 ms 입니다. 실시간 제어 루프 안에는 못 넣습니다.
이전 ← 06 통신의 전기적 관점 | 다음 → 08 DAC — 구조와 글리치