Chapter 16

데이터 변환기: DAC와 ADC

센서가 내놓는 전압은 연속이고, 그것을 처리할 프로세서는 정수만 안다. 그 사이에 아날로그-디지털 변환기(ADC)와 반대 방향의 디지털-아날로그 변환기(DAC)가 있다. 변환기는 연속값을 유한한 계단으로 깎아 내는 순간 잡음을 하나 더 만든다. 그 위에 커패시터의 부정합, 비교기의 잡음과 망설임, 클록의 흔들림이 얹힌다. 이 장은 이 오차들을 하나씩 눈으로 보고, AB-1의 12비트 1 MS/s SAR ADC 예산을 세운다.

양자화: 계단과 잡음

N비트 변환기는 기준 전압 \(V_{\mathrm{REF}}\) 범위를 \(2^N\)개의 칸으로 나눈다. 칸 하나의 폭이 LSB(Least significant bit, \(\Delta\))다. 칸 안의 입력은 모두 같은 코드가 되므로 출력과 입력 사이에는 언제나 \(\pm\Delta/2\) 안의 오차가 남는다. 이 양자화 오차(Quantization error)는 입력을 천천히 쓸면 톱니 모양이고, 입력이 바쁘게 움직이면 거의 균일 분포의 잡음처럼 보인다.

$$\Delta = \frac{V_{\mathrm{REF}}}{2^N},\qquad e_{q,\mathrm{rms}} = \frac{\Delta}{\sqrt{12}},\qquad \mathrm{SNR}_{\max} = 20\log_{10}\frac{V_{\mathrm{REF}}/(2\sqrt2)}{\Delta/\sqrt{12}} = 6.02N + 1.76\ \mathrm{dB}$$
균일 분포 \([-\Delta/2, \Delta/2]\)의 분산이 \(\Delta^2/12\)다. 신호는 전체 범위를 꽉 채운 사인(진폭 \(V_{\mathrm{REF}}/2\), rms \(V_{\mathrm{REF}}/2\sqrt2\)). AB-1: 12비트, \(V_{\mathrm{REF}}\) = 1.2 V → \(\Delta\) ≈ 293 µV, \(e_{q,\mathrm{rms}}\) ≈ 84.6 µV, 이상 SNDR 74.0 dB

아래에서 비트 수를 바꿔 계단을 보고, 같은 신호를 FFT로 본다. 1비트를 더할 때마다 잡음 바닥이 6 dB씩 내려가는지, 입력을 줄이면 SNDR이 그만큼 깎이는지 확인한다.

SIMULATOR

계단, 톱니, 그리고 6 dB/비트

스펙트럼에 호버하면 값
FFT SNDR—
6.02N + 1.76 + 진폭(dBFS)—
SFDR—
ENOB—
LSB(1.2 V 기준)—
해볼 것: ① N = 3~4에서 오차가 입력을 따라 규칙적인 톱니가 되고 스펙트럼에 홀수 고조파 기둥이 선다. 이때는 "잡음"이라기보다 왜곡이다. ② N을 8 이상으로 올리면 오차가 무작위처럼 흩어지고 SNDR이 6.02N + 1.76 + 진폭(dBFS)을 0.2 dB 안팎으로 따른다. N = 12, −1 dBFS에서 약 73 dB. ③ 진폭을 −20 dBFS로 줄이면 SNDR도 20 dB 떨어진다. 작은 신호는 비트를 버린다. ④ N = 4에서 디더를 켜면 고조파가 사라지는 대신 잡음 바닥이 올라간다. (이상적 양자화기, 미드라이즈, 표본 4096개, 일관 표본화로 입력 주파수를 정해 창 함수 없이 FFT, 판정은 AN.sinad)

N이 작을 때 오차는 입력과 같은 주기로 반복되므로 잡음이 아니라 고조파가 된다. 균일 잡음 근사는 입력이 많은 코드를 지나가고 신호와 표본화 주파수가 서로 맞물리지 않을 때 성립한다. 디더를 넣으면 오차가 입력과 상관을 잃어 고조파가 잡음 바닥으로 녹는다. 실제 12비트 변환기는 열잡음이 이미 디더 노릇을 한다.

잡음 바닥이 FFT 점 수에 따라 내려가 보이는 것에 주의한다. 전체 양자화 잡음 전력은 그대로이고, 점이 많을수록 그 전력이 더 많은 빈으로 나뉠 뿐이다. 빈 하나의 높이는 \(\mathrm{SNR} + 10\log_{10}(M/2)\)만큼 신호 아래에 있다(M = FFT 점 수). 4096점이면 33 dB가 더해진다.

ENOB는 "실효 비트 수"다. 측정한 SNDR을 이상 공식에 거꾸로 넣은 값 \(\mathrm{ENOB} = (\mathrm{SNDR} - 1.76)/6.02\)이다. 12비트 ADC가 SNDR 65 dB를 내면 ENOB 10.5비트다. 열잡음, 왜곡, 지터가 모두 이 숫자 하나로 모인다.

DAC: 저항 열과 커패시터 배열

DAC는 코드를 전압으로 바꾼다. ADC의 대부분도 안에 DAC를 하나 품고 있다(SAR의 커패시터 배열, 파이프라인의 단마다 있는 DAC). 가장 단순한 것은 저항 열(Resistor string)이다. 같은 저항 \(2^N\)개를 직렬로 잇고 마디마다 탭을 뽑는다. 출력은 탭 위치에 따라 단조 증가할 수밖에 없지만, 12비트면 저항 4096개와 스위치 트리가 필요하다.

CMOS 변환기는 주로 커패시터를 쓴다. 커패시터는 정적 전류를 먹지 않고 공정에서 비(ratio)가 잘 맞는다. 이진 가중(Binary-weighted) 배열은 \(C, 2C, 4C, \dots, 2^{N-1}C\)를 두고 비트마다 하나씩 바닥판을 \(V_{\mathrm{REF}}\) 또는 GND에 잇는다. 위판에 모인 전하가 코드에 비례하는 전압을 만든다.

$$V_{\mathrm{DAC}} = V_{\mathrm{REF}}\,\frac{\sum_k b_k\,C_k}{C_{\mathrm{tot}}},\qquad C_k = 2^k C_u(1+\epsilon),\qquad \sigma_{\mathrm{DNL,MSB}} \approx \sqrt{2^N}\,\sigma_u,\quad \sigma_{\mathrm{INL,mid}} \approx \tfrac12\sqrt{2^N}\,\sigma_u$$
\(C_u\) 단위 커패시터, \(\epsilon\) 단위마다의 무작위 상대 오차(표준 편차 \(\sigma_u\)). 큰 커패시터는 단위 \(2^k\)개를 모아 만든다. MSB 전환(0111…1 → 1000…0)에서는 \(2^{N-1}\)개를 끄고 \(2^{N-1}\)개를 켜므로 \(2^N\)개의 오차가 한꺼번에 계단 하나에 실린다. 12비트, \(\sigma_u\) = 0.5% → \(\sigma_{\mathrm{DNL,MSB}}\) ≈ 0.32 LSB, \(\sigma_{\mathrm{INL}}\) ≈ 0.16 LSB(LSB 단위)

계단 하나하나의 높이가 1 LSB에서 얼마나 벗어났는지가 DNL(Differential nonlinearity), 계단을 쌓은 곡선이 직선에서 얼마나 벗어났는지가 INL(Integral nonlinearity)이다. DNL이 −1 LSB면 계단 하나가 사라진다(ADC에서는 그 코드가 나오지 않는 누락 코드(Missing code)). 아래에서 단위 커패시터 부정합을 키우며 이진 배열과 온도계 배열을 비교한다.

SIMULATOR

단위 커패시터 부정합 → DNL·INL

DNL·INL 그래프에 호버하면 그 코드의 켜진 단위 칸
최대 |DNL|—
최대 |INL|—
가장 큰 전환의 σ(이론)—
단조성—
해볼 것: ① 이진 8비트, σu 1.5%에서 DNL이 코드 128(MSB 전환)과 64, 192에서 크게 튄다. 새 칩을 여러 번 눌러도 튀는 자리는 같다. ② 온도계로 바꾸면 DNL은 모든 코드에서 σu 수준으로 작고, 출력이 거꾸로 내려가는 일이 없다(단조). INL은 비슷하다. 같은 단위 칸을 쓰므로 누적 오차는 같다. ③ σu를 5%로 올리고 10비트로 바꾸면 이진 배열에서 DNL ≤ −1(계단 사라짐)이나 음의 계단(비단조)이 나온다. 분할(상위 3비트 온도계 + 하위 이진)은 그 사이의 절충이다. (단위 칸마다 독립 가우시안 오차, 끝점 기준 LSB, 기생 커패시턴스·스위치 오차 무시, 왼쪽 배열은 오차를 색 농도로 표시)

이진 배열의 약점은 MSB 전환이다. 코드가 1 늘 뿐인데 커패시터 절반이 꺼지고 나머지 절반이 켜진다. 작은 상대 오차도 \(2^{N-1}\)개 단위만큼 커져 계단 하나에 몰린다. 온도계 코드(Thermometer code) 배열은 코드가 1 늘 때 단위 하나만 새로 켠다. 이미 켜진 것은 그대로이므로 DNL이 작고 출력은 언제나 단조다. 대신 \(2^N - 1\)개의 단위를 따로 제어하는 디코더가 필요하다. 그래서 실제 설계는 상위 몇 비트만 온도계로 나누는 분할(Segmented) 구조를 쓴다.

INL은 구조로 줄지 않는다. 같은 단위 칸을 같은 개수만큼 쓰면 코드 c의 출력은 결국 단위 c개의 합이라서 누적 오차의 크기는 구조와 무관하다. INL을 줄이는 길은 단위 정합 자체를 좋게 하는 것(면적 \(\propto 1/\sigma_u^2\), 공통 중심 배치, 12장)이나 교정이다. 온도계 구조는 DNL과 단조성을 산다.

비교기: 작은 차이를 0과 1로

모든 ADC의 끝에는 비교기(Comparator)가 있다. 두 전압 중 어느 쪽이 큰지를 정해 논리 레벨 0 또는 1로 내놓는다. 12비트 SAR에서는 마지막 비트를 정할 때 두 입력의 차이가 1 LSB(293 µV)보다 작다. 이 차이를 1.8 V 논리 레벨까지 키우는 데 연산 증폭기를 쓰면 너무 느리다. 대신 양의 피드백으로 스스로 갈라지는 래치(Latch, 재생 회로)를 쓴다.

교차 결합된 두 인버터는 처음 차이 \(v_0\)를 지수 함수로 키운다. 시상수는 출력 마디 커패시턴스와 인버터의 \(g_m\)이 정한다. 래치 앞에 이득 \(A\)의 프리앰프(Preamplifier)를 두면 처음 차이가 \(A\)배로 커지고 래치의 오프셋과 킥백이 입력에서 \(A\)배 작아 보인다.

$$v_{\mathrm{out}}(t) = A\,v_{\mathrm{in}}\,e^{t/\tau},\qquad \tau = \frac{C}{g_m},\qquad t_{\mathrm{dec}} = \tau\ln\frac{V_{\mathrm{th}}}{A\,|v_{\mathrm{in}}|}$$
\(C\) 래치 출력 마디 커패시턴스(약 20 fF), \(g_m\) 래치 인버터 상호 컨덕턴스(약 400 µS) → \(\tau\) ≈ 50 ps. \(V_{\mathrm{th}}\) 논리 문턱(약 0.45 V, 차동). 입력이 10배 작아지면 결정 시간이 \(\tau\ln 10\) ≈ 2.3τ씩 늘 뿐이다

문제는 입력이 0에 아주 가까울 때다. 주어진 시간 \(T\) 안에 문턱에 닿지 못하면 출력이 0도 1도 아닌 준안정(Metastability) 상태로 남는다. 그런 입력의 폭은 \(T\)에 대해 지수적으로 좁아진다. 또 입력 환산 잡음 때문에 같은 입력에 대해서도 결정이 흔들린다. 아래에서 둘을 함께 본다.

SIMULATOR

래치 재생, 준안정, 비교기 잡음

τ = C/gm—
결정 시간(잡음 없이)—
"1"로 결정한 비율—
준안정 입력 창(T = 1 ns)—
마지막 비트 준안정 확률—
해볼 것: ① Δv를 1 mV에서 10 µV로 줄이면 결정 시간이 약 4.6τ 늘어난다. 출력 곡선은 같은 모양으로 오른쪽으로 밀릴 뿐이다. ② gm을 50 µS로 낮추면 τ가 400 ps가 되어 작은 입력이 1 ns 안에 문턱(점선)에 닿지 못한다. 회색 곡선이 준안정이다. ③ Δv를 0 근처에 두고 "100번 비교"를 누르면 같은 입력인데도 0과 1이 섞여 나온다. 아래 확률 그래프의 점이 erf 곡선(폭 σ) 위에 앉는다. 이 곡선의 폭으로 비교기 잡음을 잰다. (프리앰프 이득 A = 10 순간 증폭, 래치는 출력 ±0.9 V에서 tanh로 포화하는 1차 재생 모델, 잡음은 입력 환산 가우시안, 판정 시각 T = 1 ns, 준안정 확률은 12비트 LSB(293 µV) 안에서 입력이 균일하다고 본 값)

결정 시간은 입력의 로그에 비례하므로 래치는 아무리 작은 입력도 "결국은" 정한다. 그러나 정해진 시간 \(T\) 안에 못 정할 확률은 \(e^{-T/\tau}\)에 비례해 떨어진다. τ가 50 ps이고 T가 1 ns면 지수가 20이라 준안정 창은 입력에서 0.1 nV 수준이다. AB-1처럼 비트당 수십 ns를 주는 SAR에서는 사실상 문제가 되지 않지만, GHz 플래시 변환기에서는 τ가 설계를 정한다.

비교기 잡음은 오프셋과 다르다. 오프셋은 모든 비교에 같은 쪽으로 더해져 전체 전달 곡선을 옮길 뿐이지만(SAR에서는 이득 오차·오프셋으로 끝난다), 잡음은 비교마다 달라 SNDR을 직접 깎는다. 입력 쌍의 \(g_m\)을 키우고 적분 시간을 늘리면 줄지만 전력과 시간이 든다. AB-1에서는 입력 환산 잡음을 약 100 µV rms(0.34 LSB) 이하로 잡는다.

플래시와 파이프라인: 병렬로 빠르게

가장 빠른 ADC는 모든 문턱에 비교기를 하나씩 두는 플래시(Flash) 구조다. N비트에 비교기 \(2^N - 1\)개가 저항 열의 탭과 입력을 동시에 비교한다. 입력보다 낮은 탭의 비교기는 모두 1, 높은 탭은 모두 0이라 출력은 온도계 코드이고, 인코더가 1과 0의 경계를 이진 코드로 바꾼다. 한 클록에 변환이 끝나지만 비트 하나마다 비교기 수와 전력, 입력 커패시턴스가 2배가 된다. 그래서 플래시는 6~8비트 이하에서 쓴다.

SIMULATOR

플래시 ADC: 온도계 코드와 버블

입력 막대(Vin)를 위아래로 끈다
비교기 수 2ᴺ−1—
출력 코드—
이상 코드—
버블—
전 범위 최대 오차—
해볼 것: ① 오프셋 0에서 입력을 끌면 온도계 코드가 한 칸씩 차오르고 출력 코드가 이상 코드와 같다. ② σ를 0.6 LSB 이상으로 올리고 입력을 천천히 끌면, 이웃한 비교기 문턱의 순서가 뒤집힌 곳에서 1 사이에 0이 낀 버블이 생긴다. ③ 경계 검출 인코더는 버블이 생기면 경계 두 개의 코드를 OR로 합쳐 엉뚱한 코드(반짝이 오류)를 낸다. "1 세기"로 바꾸면 오차가 1 LSB 남짓으로 줄어든다. (이상적 저항 열, 비교기 문턱에 가우시안 오프셋, 잡음 없음, 전 범위 오차는 입력 1000점 스윕)

버블은 비교기 오프셋이나 타이밍 차이 때문에 이웃한 문턱의 판정 순서가 뒤집혀 생긴다. "1 다음 0"인 자리를 찾는 단순한 인코더는 경계가 여럿이면 크게 틀린다. 그래서 세 이웃을 보고 다수결을 하거나 1의 개수를 세는 인코더를 쓴다. 비교기 오프셋을 LSB보다 충분히 작게 하는 것도 기본이다. 비트가 늘면 LSB가 작아져 오프셋 요구가 급격히 어려워진다.

파이프라인: 조금씩 정하고 잔차를 넘긴다

파이프라인(Pipeline) ADC는 일을 단(stage)으로 나눈다. 각 단은 거친 서브 ADC로 몇 비트를 정하고, 그 값을 DAC로 되돌려 입력에서 뺀 뒤, 남은 잔차(Residue)를 2배(1비트/단) 키워 다음 단에 넘긴다. 단마다 표본-유지가 있으므로 모든 단이 동시에 다른 표본을 처리해 처리율은 한 단의 속도와 같다. 지연(latency)만 단 수만큼 늘어난다.

Vin S/H 서브 ADC 1.5비트 서브 DAC −1, 0, +1 Σ + − ×2 잔차 다음 단 디지털 보정: D = Σ dᵢ·2⁻ⁱ (겹치는 비트를 더한다) Vres = 2·Vin − d·VREF
파이프라인 한 단. 서브 ADC가 정한 값 d를 서브 DAC가 되돌려 빼고, 남은 잔차를 2배 키운다. 1.5비트/단은 비교기 둘(문턱 ±VREF/4)로 d ∈ {−1, 0, +1}을 정한다. 단마다 1비트 남짓을 겹쳐 정하므로 비교기가 틀려도 다음 단이 바로잡는다.

1비트/단은 문턱 하나로 입력이 0보다 큰지만 정한다. 비교기 오프셋으로 문턱이 조금만 어긋나도 잔차가 \(\pm V_{\mathrm{REF}}\) 범위를 벗어나 다음 단을 포화시키고, 그 오차는 영영 되돌릴 수 없다. 1.5비트/단(1.5-bit/stage, RSD)은 문턱을 \(\pm V_{\mathrm{REF}}/4\) 두 개로 두고 출력을 −1, 0, +1 세 값으로 정한다. 전체 입력 범위 \(\pm V_{\mathrm{REF}}\)에서 이상 잔차는 다음 단의 \(\pm V_{\mathrm{REF}}\) 범위 안에 머문다. 문턱 양쪽의 잔차가 \(\pm V_{\mathrm{REF}}/2\)로 뛰므로 비교기 문턱에 여유가 생기고, 비교기 오프셋이 \(V_{\mathrm{REF}}/4\)보다 작으면 그 오차는 다음 단 결과와 겹쳐 더해지면서(디지털 보정) 사라진다.

SIMULATOR

파이프라인 잔차와 1.5비트/단 보정

1단 그래프에서 입력 점을 좌우로 끈다
단별 결정 d₁…d₄—
출력 코드(8비트)—
이 입력의 오차—
전 범위 최대 오차—
해볼 것: ① 1.5비트/단, 오프셋 0.1 VREF에서 1단 잔차 곡선의 꺾이는 자리가 옮겨 가지만 잔차는 여전히 ±VREF 안에 있고 전 범위 오차는 ±1 LSB 안이다. ② 1비트/단으로 바꾸면 같은 오프셋으로 잔차가 위아래 칸을 넘어 빨갛게 잘리고, 아래 오차 그래프에 수십 LSB짜리 구멍이 생긴다. ③ 1.5비트/단에서도 오프셋을 ±0.25 VREF 너머로 밀면 보정 범위를 넘어 무너진다. ④ 이득을 1.95로 바꾸면 보정으로도 못 고치는 톱니 오차가 남는다. 잔차 증폭기의 정확도는 OTA 이득이 정한다. (4단 + 4비트 이상적 백엔드 = 8비트, 오프셋은 1단 비교기에만, 2단 이후는 이상적, 범위 VREF = 1로 정규화)

디지털 보정은 비교기 정확도를 거의 공짜로 풀어 준다. 그러나 잔차 증폭기의 이득과 DAC 정확도는 보정하지 못한다. 2배 이득이 0.1%만 틀려도 그 단 아래 비트들이 그만큼 어긋난다. 그래서 파이프라인의 1단 OTA는 높은 이득과 빠른 정착을 동시에 요구받고, 전력 대부분이 여기에 들어간다(9장, 15장).

정적 시험: 코드 밀도 히스토그램

ADC의 DNL과 INL은 어떻게 재는가. 문턱 4096개를 하나씩 찾아 전압을 재는 것은 느리고 잡음에 약하다. 대신 분포를 아는 입력을 수만 번 넣고 코드마다 몇 번 나왔는지 센다. 이것이 코드 밀도 시험(Code density test, Histogram test)이다. 느린 램프를 넣으면 이상적인 ADC는 모든 코드가 같은 횟수로 나온다. 계단이 넓은 코드는 더 많이, 좁은 코드는 덜 나온다.

$$\mathrm{DNL}(k) = \frac{H(k)}{H_{\mathrm{ideal}}(k)} - 1,\qquad \mathrm{INL}(k) = \sum_{j\(H(k)\) 코드 k의 측정 횟수. 램프 입력이면 \(H_{\mathrm{ideal}}\)은 모든 코드에서 같다. 사인 입력이면 양 끝 코드가 많이 나오는 역사인(arcsine) 분포라, 누적 히스토그램에서 문턱을 \(T_k = -A\cos(\pi\,CH_{k}/N_{\mathrm{tot}})\)로 되살린다. 참 코드 폭이 0이면 DNL = −1이고 해당 코드는 나오지 않는다. 유한한 표본에서 \(H(k) = 0\)인 것만으로는 매우 좁은 코드와 누락 코드를 구별할 수 없다

아래 8비트 SAR ADC는 앞 절의 이진 가중 커패시터 DAC를 품고 있다. 같은 부정합이 어떻게 히스토그램의 들쭉날쭉으로 나타나는지, 표본이 쌓이며 측정 DNL이 참값에 다가가는 모습을 본다.

SIMULATOR

히스토그램이 DNL·INL·누락 코드를 보여 준다

호버하면 코드별 값
표본 수—
측정 최대 |DNL|—
측정 최대 |INL|—
누락 코드—
참값과의 차(rms)—
해볼 것: ① 램프로 쌓기 시작하면 초반에는 표본 잡음 때문에 DNL이 들쭉날쭉하다가, 코드당 수백 개가 쌓이면 회색 참값 위에 내려앉는다. 측정 오차는 \(1/\sqrt{H}\)로 준다. ② σu를 6% 이상으로 올리고 새 칩을 몇 번 누르면 코드 127/128 근처에 빨간 누락 코드(DNL = −1)가 생긴다. 그 이웃 코드는 넓어져 DNL이 +1을 넘는다. ③ 사인으로 바꾸면 원시 히스토그램은 양 끝이 높은 그릇 모양이지만, 역사인 보정을 거친 DNL은 램프와 같은 모양으로 나온다. 사인은 순수한 신호를 만들기 쉬워 실제 시험에서 많이 쓴다. (8비트 SAR, 이진 가중 DAC의 단위 칸 오차 σu, 비교기 잡음·오프셋 없음, 램프는 범위의 −1~+1% 밖까지 균일, 사인은 진폭 1.02배로 약간 넘치게, 회색 참값은 SAR 결정 문턱의 교집합으로 구한 정확한 코드 폭)

SAR ADC에서 DAC의 큰 계단 오차는 그대로 ADC의 넓은 코드·좁은 코드가 된다. DAC의 MSB 커패시터가 나머지 합보다 작으면 DAC 계단이 아래로 접히고, SAR 결정 경로 중 일부의 입력 구간이 사라져 해당 출력 코드가 나오지 않는다. 입력마다 변환 결과는 하나씩 나오지만, 출력 코드가 그 값을 건너뛰는 것이다. 반대로 MSB가 크면 넓은 코드가 생긴다. 누락 코드는 측정 시스템이 그 코드를 영원히 못 본다는 뜻이라 제어 루프에서 특히 해롭다. 그래서 사양서에는 "누락 코드 없음(No missing codes)"이 따로 적힌다.

동적 성능: SNDR, SFDR, ENOB와 지터

DNL·INL은 느린 입력에서의 정확도다. 입력이 빨라지면 새 오차가 보인다. 가장 근본적인 것은 표본화 시각의 흔들림, 지터(Aperture jitter)다. 사인 \(A\sin 2\pi f t\)의 기울기는 최대 \(2\pi f A\)이므로 시각이 \(\delta t\) 틀리면 전압이 \(2\pi f A\,\delta t\)만큼 틀린다. 이 오차는 신호 진폭에 비례하므로 진폭을 키워도 SNR이 나아지지 않는다.

$$\mathrm{SNR}_{\mathrm{jitter}} = -20\log_{10}\left(2\pi f_{\mathrm{in}}\,\sigma_t\right)$$
\(\sigma_t\) 표본화 시각의 rms 지터(s), \(f_{\mathrm{in}}\) 입력 주파수(Hz). \(f_{\mathrm{in}}\) = 500 kHz, \(\sigma_t\) = 100 ps → 70 dB. 같은 지터로 100 MHz 입력이면 24 dB. 입력 주파수가 10배 오르면 20 dB가 깎인다

또 하나는 INL이 만드는 왜곡이다. 전달 곡선이 활처럼 휘면(짝수 차) 2차 고조파가, S자로 휘면(홀수 차) 3차 고조파가 선다. 가장 큰 스퍼와 신호의 비가 SFDR(Spurious-free dynamic range)이다. 아래에서 입력 주파수와 지터, INL 모양을 바꿔 스펙트럼과 주파수 스윕을 함께 본다.

SIMULATOR

입력 주파수가 오르면 무엇이 무너지나

스윕 그래프를 누르면 그 주파수로
SNDR—
SFDR—
ENOB—
지터 한계 −20log(2πfσt)—
THD—
해볼 것: ① 기본값(σt 100 ps, INL 1 LSB)에서 낮은 주파수 SNDR은 INL과 잡음이 정하고 약 68~70 dB다. 주파수를 올리면 지터 선(점선)에 닿는 수백 kHz부터 SNDR이 꺾인다. ② σt를 10 ps로 줄이면 500 kHz까지 평평하다. 1 ns로 키우면 수십 kHz부터 무너진다. ③ INL을 3 LSB로 올리면 SFDR이 먼저 떨어지고, 활 모양은 2차, S자는 3차 고조파가 선다. SNDR은 잡음이 크면 덜 민감하다. (12비트, 1 MS/s, −0.5 dBFS 사인, 비교기 잡음 0.34 LSB rms, INL은 전달 곡선에 더한 2차·3차 곡선, 지터는 표본마다 독립 가우시안, 4096점 일관 표본화 FFT, 스윕은 12개 주파수를 각각 FFT)

스윕 그래프는 ADC 데이터시트의 "SNDR vs 입력 주파수"와 같은 모양이다. 낮은 주파수에서는 양자화·열잡음·INL이 만든 평탄한 구간이 있고, 높은 주파수에서는 지터나 표본-유지의 대역 제한이 기울기를 만든다. 나이퀴스트 주파수(fs/2)까지 SNDR을 유지하는 것이 좋은 ADC다. AB-1처럼 입력 대역이 10 kHz인데 1 MS/s로 표본화하면 지터 요구는 느슨하다. 지터 예산의 실제 크기는 클록을 만드는 PLL에서 다시 따진다(18장).

SNR과 SNDR을 섞지 않는다. SNR은 고조파를 뺀 잡음만, SNDR(SINAD)은 잡음과 왜곡을 모두 넣는다. THD는 고조파만이다. ENOB는 SNDR로 정한다. 데이터시트의 SNR만 보고 ENOB를 계산하면 왜곡을 빠뜨린다.

구조 고르기: 해상도–속도 지도와 FoM

지금까지 본 구조들은 해상도와 속도를 서로 다르게 맞바꾼다. 플래시는 한 클록에 끝나지만 비트마다 비교기가 2배다. 파이프라인은 단을 늘려 해상도를 얻고 처리율을 유지한다. SAR는 비교기 하나로 N번 물어 전력은 작지만 클록이 N배 이상 빨라야 한다. ΔΣ(17장)는 속도를 해상도로 바꾼다. 같은 일을 얼마나 적은 에너지로 하는가를 비교하는 숫자가 Walden FoM(Figure of merit)이다.

$$\mathrm{FoM}_W = \frac{P}{2^{\mathrm{ENOB}}\cdot f_s}\ \ [\mathrm{J/conv\text{-}step}],\qquad \mathrm{FoM}_S = \mathrm{SNDR} + 10\log_{10}\frac{\mathrm{BW}}{P}\ \ [\mathrm{dB}]$$
\(P\) 소비 전력(W), \(f_s\) 표본화 속도(S/s), \(\mathrm{BW}\) SNDR을 평가한 신호 대역폭(Hz). Schreier 식에서 BW = fs/2는 나이퀴스트 변환기에만 해당한다. 오버샘플링 변환기는 BW = fs/(2·OSR)를 사용한다. Walden FoM은 "실효 코드 한 칸을 한 번 변환하는 에너지"다. 최신 SAR ADC는 약 수 fJ/step, 무난한 설계는 수십~수백 fJ/step. Schreier FoM은 열잡음이 지배하는 고해상도 변환기 비교에 쓰며 약 170~185 dB가 최상위권이다

아래 지도에서 구조별 영역(정성적인 대략의 범위)을 보고, 설계점을 끌어 FoM을 계산한다. Schreier FoM은 신호 대역 BW = fs/(2·OSR)로 계산한다. 나이퀴스트 ADC는 OSR = 1, ΔΣ 등 오버샘플링 ADC는 실제 OSR을 입력한다. AB-1의 목표점(12비트 1 MS/s, ENOB 10.5)이 어느 영역에 들어가는지 확인한다.

SIMULATOR

해상도–속도 지도와 FoM 계산기

설계점(◆)을 끈다
설계점—
Walden FoM—
Schreier FoM—
이 자리의 구조—
10 fJ/step이면 전력—
해볼 것: ① "AB-1 목표점으로"를 누르면 1 MS/s, ENOB 10.5가 SAR 영역 안에 있고, 100 µW라면 Walden FoM은 약 69 fJ/step이다. ② 설계점을 위로 1비트 끌면(같은 전력) FoM이 2배 좋아진다. 열잡음이 지배하면 1비트당 전력이 4배 드는 것이 현실이라 고해상도에서는 Schreier FoM이 더 공정하다. ③ 같은 fs·ENOB·전력에서 OSR을 1 → 128로 올리면 신호 대역이 128배 좁아져 Schreier FoM은 약 21.1 dB 내려간다. Walden 값은 이 지도에서 raw fs 기준이라 그대로다. ④ 설계점을 오른쪽 위(1 GS/s, 12비트)로 끌면 어떤 단일 구조로도 쉽지 않은 자리다. 시간 인터리빙이나 파이프라인-SAR 혼합이 쓰인다. (영역은 문헌 경향을 단순화한 정성적 그림, 경계는 기술 세대마다 움직인다. FoM 기준선 수 fJ/step은 대략값)

AB-1의 12비트 1 MS/s는 SAR가 가장 잘하는 자리다. 비교기 하나와 커패시터 배열 하나로 정적 전류 없이 만들 수 있고, 커패시터 배열이 표본-유지까지 겸한다. 남은 일은 SAR가 어떻게 이진 탐색을 하는지, 그리고 클록과 커패시터, 비교기에 예산을 나누는 것이다.

SAR ADC: 이진 탐색으로 12비트

축차 비교형(Successive approximation register, SAR) ADC는 스무고개를 한다. "입력이 범위의 절반보다 큰가?" 답에 따라 MSB를 정하고, 남은 절반 범위에서 다시 묻는다. N번 물으면 N비트가 정해진다. 질문에 쓰는 기준 전압은 DAC가 만들고, 비교는 비교기 하나가 한다. CMOS에서는 이진 가중 커패시터 배열이 DAC와 표본-유지를 동시에 맡는 전하 재분배(Charge redistribution) 구조를 쓴다.

위판 Vx (공통 마디) S0(표본화 때 Vcm) 2048C 1024C · · · 2C C C(더미) VREF GND Vin 바닥판 스위치: 표본화 때 모두 Vin, 변환 중에는 비트마다 VREF 또는 GND −+ Vcm SAR 논리 b11 … b0 비트 결정 → 스위치
전하 재분배 SAR ADC. 표본화 때 바닥판은 모두 Vin, 위판은 Vcm에 묶여 \(-C_{\mathrm{tot}}V_{\mathrm{in}}\)의 전하를 담는다. 위판을 띄운 뒤 비트를 시험할 때마다 그 커패시터의 바닥판을 VREF로 올리면 위판 전압은 \(V_x = V_{\mathrm{cm}} - V_{\mathrm{in}} + V_{\mathrm{DAC}}\)가 된다. 비교기는 \(V_x\)가 Vcm보다 큰지, 곧 \(V_{\mathrm{DAC}} > V_{\mathrm{in}}\)인지 묻는다. 더미 C는 전체를 \(2^N C\)로 맞춘다.

아래 종합 시뮬레이터에서 입력 전압을 끌어 놓고 "한 단계"를 눌러 본다. MSB부터 커패시터 하나의 바닥판이 VREF로 올라가고, 비교기가 DAC 전압이 입력을 넘었다고 하면 다시 GND로 돌아간다. DAC 전압은 매 단계 남은 거리의 절반씩 입력에 다가간다. 아래 타이밍도는 AB-1의 1 MS/s를 16 MHz 클록 16사이클로 나눈 모습이다.

SIMULATOR

SAR ADC 이진 탐색: AB-1 12비트 1 MS/s

왼쪽 Vin 막대를 끌어 입력을 정한다
"한 단계"를 누르면 이번 비트에서 무엇을 시험하는지 여기에 적힌다.
입력 Vin—
출력 코드—
VDAC—
남은 오차—
변환 시간(16 MHz)—
해볼 것: ① 12비트에서 "한 단계"를 열두 번 누르며 위 그래프의 VDAC 계단이 입력을 중심으로 좁아지고, 아래 로그 그래프의 남은 오차가 단계마다 절반(직선)으로 줄어 마지막에 1 LSB 아래로 들어가는 것을 본다. ② 비교기 잡음을 1 LSB로 올리고 입력을 바꿔 가며 여러 번 돌리면, 초반 비트는 대개 맞지만 오차가 LSB 근처인 마지막 비트들이 흔들린다. 드물게 큰 비트에서 틀리면 이후 단계로는 되돌릴 수 없다(중복 없는 SAR). ③ DAC 부정합을 2%로 올리면 결정은 모두 "옳은데" 최종 코드 오차가 1 LSB를 넘게 남는다. DAC 기준 자체가 틀렸기 때문이다. (이상적 표본화, VREF = 1.2 V, 단위 커패시터 독립 가우시안 오차, 비교기 잡음은 결정마다 독립, DAC 정착·킥백·기생 무시, 타이밍은 표본화 3 + 비트 12 + 출력 1 = 16사이클)

SAR는 비교기 하나로 끝나는 대신 시간을 쓴다. N비트에 비교 N번이 필요하고, 그 앞에 표본화 시간이 있다. 표본화는 커패시터 배열 전체(입력 쪽에서 보면 \(C_{\mathrm{tot}}\))를 12비트 정확도까지 충전해야 하므로 비트 한 번보다 길게 잡는다. AB-1은 1 µs를 16사이클로 나눠 표본화 3, 비트 결정 12, 출력·리셋 1로 쓴다. 클록은 16 MHz, 한 사이클 62.5 ns다.

$$f_{\mathrm{clk}} \ge (N + n_{\mathrm{track}} + n_{\mathrm{extra}})\,f_s = 16 \times 1\ \mathrm{MS/s} = 16\ \mathrm{MHz},\qquad e^{-t_{\mathrm{set}}/\tau_{\mathrm{DAC}}} \le \frac{1}{2^{N+1}}\ \Rightarrow\ t_{\mathrm{set}} \ge (N+1)\ln 2\,\tau_{\mathrm{DAC}} \approx 9\,\tau_{\mathrm{DAC}}$$
MSB 시험 때 DAC는 \(V_{\mathrm{REF}}/2\)만큼 움직이고, 비교 전에 오차가 ½ LSB 아래로 정착해야 한다. 한 사이클 62.5 ns 중 약 40 ns를 정착에 주면 \(\tau_{\mathrm{DAC}}\) ≤ 약 4.4 ns(스위치 Ron × 배열 커패시턴스). 나머지 약 20 ns는 비교기 몫이다. τ = 50 ps 래치에는 넉넉하다

비트마다 비교기 잡음과 DAC 정착 오차가 끼어들 수 있다. 위에서 본 것처럼 이진 탐색은 한 번 틀린 결정을 되돌리지 못한다. 그래서 고속 SAR는 파이프라인의 1.5비트처럼 일부러 비트를 겹치게(radix < 2, 중복 비트) 설계해 앞 결정의 실수를 뒤 단계가 흡수하게 한다. AB-1처럼 클록 여유가 있으면 비트 하나를 더 쓰는 중복을 넣을 수도 있다.

TARGET AB-1타깃 파일 · 16장

12비트 1 MS/s SAR: LSB 293 µV, 이상 74 dB, 예산을 나눠 ENOB 약 11.1 → 목표 10.5를 넘긴다

기준 1.2 V를 4096칸으로 나누면 LSB ≈ 293 µV, 양자화 잡음 84.6 µV rms, 꽉 찬 사인(0.424 V rms)의 이상 SNDR은 74.0 dB다. 목표 ENOB 10.5는 SNDR 65.0 dB, 곧 잡음과 왜곡의 합을 약 239 µV rms 아래로 묶는다는 뜻이다. 이 예산을 넷으로 나눈다. 양자화 84.6 µV, 표본화 kT/C(배열 전체 1 pF) 64 µV, 비교기 입력 환산 잡음 100 µV(0.34 LSB), DAC 부정합(단위 σu 0.5% → σINL ≈ 0.16 LSB) 약 47 µV. 제곱합은 약 153 µV로 SNDR 약 68.8 dB, ENOB 약 11.1이다. 남는 몫(약 184 µV)은 표본화 지터에 줄 수 있는데, 500 kHz 꽉 찬 입력에서 σt 약 140 ps까지 들어간다. DNL은 MSB 전환에서 σ ≈ 64σu ≈ 0.32 LSB이므로 3σ 기준의 누락 코드 방지 설계 여유를 만족한다. 다만 가우시안 꼬리는 3σ 밖에도 있어 모든 칩의 누락 코드 없음을 보장하지 않는다. 전체 코드·공정 코너와 통계적 수율을 검증해야 한다. 클록은 표본화 3 + 비트 12 + 1 = 16사이클로 16 MHz, 비트당 62.5 ns에서 DAC 정착 τ ≤ 약 4.4 ns, 래치 τ ≈ 50 ps.

이 장에서 정한 것구조는 전하 재분배 SAR, 비교기 하나(프리앰프 + 래치, 입력 잡음 ≤ 100 µV rms). DAC는 단위 정합 σu ≤ 0.5%(공통 중심 배치), 배열 전체 약 1 pF로 kT/C 64 µV. 클록 16 MHz, 1 µs = 16사이클. 예산 합 ENOB 약 11.1로 목표 10.5에 약 0.6비트 여유.
아직 남은 문제온도 채널은 16비트가 필요하다. 이 구조로 16비트를 얻으려면 LSB 18 µV, 단위 정합 σu 약 0.1%(같은 정합 계수라면 면적 약 25배)가 필요해 교정 없이는 무척 어렵다. 신호가 8 kHz로 느리다는 점을 해상도로 바꿀 수는 없을까? 또 16 MHz 클록의 지터는 실제로 얼마인가?
다음 단계17장 오버샘플링과 ΔΣ 변환기에서 1비트 변조기와 잡음 성형으로 16비트에 도전한다.

핵심 정리

  1. 양자화 오차는 ±½ LSB 안의 톱니이고, 입력이 충분히 바쁘면 rms \(\Delta/\sqrt{12}\)의 백색 잡음처럼 보인다. 이상 SNDR = 6.02N + 1.76 dB(12비트 74.0 dB). ENOB = (SNDR − 1.76)/6.02.
  2. 비트 수가 작거나 입력이 표본화와 맞물리면 양자화 오차는 고조파가 된다. 디더나 열잡음이 그것을 잡음으로 바꾼다.
  3. 이진 가중 커패시터 DAC는 MSB 전환에서 \(2^N\)개 단위 오차가 한 계단에 몰려 DNL이 가장 크다(σ ≈ \(\sqrt{2^N}\sigma_u\)). 온도계 코드는 DNL을 줄이고 단조성을 보장하지만 INL은 단위 정합이 정한다.
  4. 래치 비교기는 차이를 \(e^{t/\tau}\), \(\tau = C/g_m\)로 키운다. 결정 시간은 입력의 로그에 비례하고, 정해진 시간 안의 준안정 확률은 \(e^{-T/\tau}\)로 준다. 비교기 잡음은 오프셋과 달리 SNDR을 깎는다.
  5. 플래시는 \(2^N-1\)개 비교기로 한 클록에 변환하고 버블에 약하다. 파이프라인은 단마다 잔차를 2배 키워 넘기고, 1.5비트/단 디지털 보정이 비교기 오프셋을 \(V_{\mathrm{REF}}/4\)까지 견딘다.
  6. 코드 밀도 히스토그램으로 DNL·INL·누락 코드를 잰다. 사인 입력은 역사인 보정을 한다.
  7. 지터는 \(\mathrm{SNR} = -20\log(2\pi f_{\mathrm{in}}\sigma_t)\)로 높은 주파수부터 SNDR을 무너뜨린다. INL은 고조파를 세워 SFDR을 깎는다.
  8. AB-1 SAR: 양자화 85 + kT/C 64 + 비교기 100 + 부정합 47 µV → 약 153 µV, ENOB 약 11.1. σu ≤ 0.5%, 클록 16 MHz(16사이클/변환).

확인 퀴즈

1. 이상적인 10비트 ADC에 −6 dBFS(전 범위의 절반 진폭) 사인을 넣었다. 기대되는 SNDR은 대략?

꽉 찬 사인이면 6.02 × 10 + 1.76 = 61.96 dB다. 진폭이 절반이면 신호 전력이 6 dB 줄고 양자화 잡음은 그대로이므로 약 56 dB다. 작은 신호는 그만큼 비트를 버린다(ENOB 약 9).

2. 이진 가중 커패시터 DAC에서 DNL이 가장 크게 튀기 쉬운 코드 전환은?

MSB 전환에서는 하위 커패시터 전부(\(2^{N-1}-1\)개 단위)가 꺼지고 MSB(\(2^{N-1}\)개 단위)가 켜진다. 두 묶음의 무작위 오차가 한 계단에 모두 실려 σ ≈ \(\sqrt{2^N}\sigma_u\)가 된다. 온도계 구조는 단위 하나만 바꾸므로 이런 튐이 없다.

3. 100 MHz 사인을 받는 ADC의 표본화 클록 지터가 1 ps rms다. 지터만으로 정해지는 SNR 한계는 대략?

\(2\pi f\sigma_t = 2\pi \times 10^8 \times 10^{-12} = 6.28\times10^{-4}\), \(-20\log_{10}(6.28\times10^{-4}) \approx 64\) dB. 입력 주파수가 10배면 20 dB가 깎이므로, 같은 클록으로 10 MHz 입력이면 84 dB다.

4. 1.5비트/단 파이프라인이 1비트/단보다 나은 점으로 가장 알맞은 것은?

문턱을 ±VREF/4에 두면 비교기 오프셋이 VREF/4보다 작은 동안 잔차가 다음 단의 전체 범위 ±VREF 안에 있어 겹친 비트를 더하는 보정으로 바로잡힌다. 이득 오차와 DAC 오차는 보정하지 못하고, 비교기는 단마다 둘이다.

5. 12비트 SAR ADC를 2 MS/s로 돌리려 한다. 표본화 3사이클, 비트 결정 12사이클, 출력 1사이클을 쓴다면 필요한 클록과 비트당 시간은?

변환당 16사이클 × 2 MS/s = 32 MHz, 한 사이클 31.25 ns다. 이 안에 DAC가 ½ LSB까지 정착(약 9τ)하고 비교기가 결정해야 하므로 τDAC ≤ 약 2 ns로 AB-1(1 MS/s)보다 두 배 빡빡하다.