Chapter 19

아날로그 실험실

열여덟 장 동안 시뮬레이터는 미리 짜 둔 회로를 보여 주었다. 이 장에서는 독자가 회로를 직접 그린다. 격자 위에 저항과 트랜지스터를 놓고 선을 이으면 브라우저 안의 SPICE가 그 회로를 풀어 동작점, DC 스윕, 주파수 응답, 과도 응답, 잡음을 보여 준다. 마지막으로 AB-1 신호 사슬 전체의 잡음 예산을 직접 짜고, 도전 과제 세 개를 채점받는다.

브라우저 SPICE는 어떻게 도는가

이 책의 모든 회로 그림 뒤에는 같은 엔진(AN.circuit)이 있다. 엔진이 하는 일은 SPICE와 같다. 회로를 연립 방정식으로 바꾸고, 비선형 소자는 반복해서 직선으로 근사하고, 시간이 흐르는 회로는 짧은 시간 간격마다 커패시터를 저항과 전류원으로 바꿔 푼다. 세 가지 생각만 알면 시뮬레이터가 왜 수렴하지 못하는지, 왜 시간 간격이 중요한지 짐작할 수 있다.

첫째는 수정 마디 해석(Modified Nodal Analysis, MNA)이다. 접지를 뺀 마디마다 키르히호프 전류 법칙(KCL) 한 줄, 전압원마다 "두 마디 전압 차가 이 값이다"라는 한 줄을 쓴다. 미지수는 마디 전압과 전압원의 가지 전류다. 저항은 행렬에 컨덕턴스 \(1/R\)을 네 칸에 더하는 것으로 끝난다. 이것을 스탬프라 부른다.

$$\begin{bmatrix} \mathbf{G} & \mathbf{B} \\ \mathbf{B}^{\mathsf T} & \mathbf{0} \end{bmatrix}\begin{bmatrix} \mathbf{v} \\ \mathbf{i}_V \end{bmatrix} = \begin{bmatrix} \mathbf{i}_s \\ \mathbf{e} \end{bmatrix}$$
\(\mathbf{G}\): 마디 컨덕턴스 행렬(S), \(\mathbf{B}\): 전압원이 어느 마디에 붙었는지 나타내는 ±1, \(\mathbf{v}\): 마디 전압(V), \(\mathbf{i}_V\): 전압원 전류(A), \(\mathbf{i}_s\): 전류원(A), \(\mathbf{e}\): 전압원 값(V). 마디 n개, 전압원 m개면 (n+m)×(n+m) 행렬. AB-1 OTA는 마디 8개 + 전압원 3개로 11×11이다.

둘째는 뉴턴 반복(Newton-Raphson)이다. MOSFET과 다이오드는 전류가 전압의 비선형 함수라서 행렬 한 번으로 풀리지 않는다. 지금 추정한 전압에서 소자를 접선, 즉 컨덕턴스(\(g_m\), \(g_{ds}\))와 등가 전류원 \(I_{eq}\)로 바꾸고, 그 선형 회로를 풀어 다음 추정값을 얻는다. 접선이 실제 곡선과 잘 맞으면 오차가 매번 제곱으로 줄어 몇 번 만에 수렴한다. 다이오드의 지수 곡선은 접선이 크게 빗나가기 쉬워서 엔진은 한 번에 마디 전압을 0.4 V 넘게 바꾸지 못하게 막는다.

$$I_D(v) \approx I_D(v_k) + g_d(v_k)\,(v - v_k) = g_d\,v + \underbrace{\big(I_D(v_k) - g_d v_k\big)}_{I_{eq}}$$
\(v_k\): k번째 추정 전압, \(g_d = dI_D/dv\): 그 점의 접선 기울기(S). 다이오드 10 µA에서 \(g_d = I_D/U_T\) ≈ 0.39 mS. MOSFET은 같은 방법으로 \(g_m\)·\(g_{ds}\)·\(g_{mb}\) 네 단자 스탬프가 된다.

아래 시뮬레이터는 1.2 V 전원·저항 2 kΩ·다이오드 하나의 회로를 뉴턴으로 푼다. 초기 추정값을 가로축 위에서 끌어 옮기고 "한 걸음"을 누른다.

SIMULATOR

뉴턴 반복: 접선을 따라 해로 내려간다

아래 축의 초기값을 끈다
반복 횟수 k0
추정 전압 vk—
KCL 잔차 |IR − ID|—
해(엔진 op())—
해볼 것: ① 초기값 0.2 V(R 20 kΩ)에서 한 걸음씩 간다. 접선(주황)과 부하선의 교점이 다음 추정값이고, 해 근처에서는 잔차가 한 번에 몇 자리씩 줄어든다. ② "제한 없음"을 고른다. 0.2 V의 접선은 거의 수평이라 첫 걸음에 1.2 V 근처로 튀고, 거기서 다이오드 전류는 105 A를 넘는다. 그 뒤로는 한 번에 약 UT(26 mV)씩만 내려와 30번 가까이 걸린다. ③ R을 0.2 kΩ으로 줄이면 해가 지수 곡선의 가파른 곳(약 0.74 V)으로 가서, 갱신 제한이 있어도 반복이 10번을 넘는다. (다이오드 \(I_S\) = 10−15 A, n = 1, 300 K. 엔진의 실제 기법과 같은 0.4 V 갱신 제한.)

셋째는 동반 모델(Companion Model)이다. 과도 해석은 시간을 \(\Delta t\) 간격으로 자르고, 매 간격마다 커패시터를 "컨덕턴스 + 전류원"으로 바꾼다. 엔진은 사다리꼴 적분을 쓴다. 그러면 시간 축 위의 미분 방정식이 매 간격 하나의 저항 회로(필요하면 뉴턴 반복)로 바뀐다. \(\Delta t\)가 회로의 시정수보다 충분히 짧아야 결과가 맞는다.

$$i_{n+1} = \frac{2C}{\Delta t}\,(v_{n+1} - v_n) - i_n \;\Rightarrow\; g_{eq} = \frac{2C}{\Delta t},\quad I_{eq} = g_{eq} v_n + i_n$$
\(C\) = 1 pF, \(\Delta t\) = 1 ns이면 \(g_{eq}\) = 2 mS(500 Ω). 인덕터는 거꾸로 저항 \(2L/\Delta t\)와 전압원이 된다. AC 해석은 동작점에서 선형화한 행렬에 \(j\omega C\)를 더해 복소수로 풀고, 잡음 해석은 같은 행렬의 전치(수반 회로)로 모든 잡음원에서 출력까지의 이득을 한 번에 구한다.
① MNA 스탬프 ② 뉴턴: 접선으로 선형화 ③ 동반 모델(과도) V v₁v₂ R₁R₂ ⎡ G₁ −G₁ 1 ⎤⎡v₁⎤ ⎡0⎤ ⎢−G₁ G₁+G₂ 0 ⎥⎢v₂⎥=⎢0⎥ ⎣ 1 0 0 ⎦⎣iV⎦ ⎣V⎦ 소자마다 정해진 칸에 값을 더한다 → 가우스 소거 한 번 vI v_k+1 부하선 I_D(v) 접선 = g_d ∥ I_eq 로 바꿔 다시 푼다 C 2C/Δt I_eq g_eq = 2C/Δt I_eq = g_eq·v_n + i_n 매 Δt마다 저항 회로 하나 (사다리꼴 적분)
브라우저 SPICE의 세 생각. ① 소자를 행렬에 스탬프하고 가우스 소거로 푼다. ② 비선형 소자는 지금 추정값에서의 접선(컨덕턴스 + 등가 전류원)으로 바꾸어 반복한다. ③ 과도 해석은 커패시터를 매 시간 간격마다 컨덕턴스와 전류원으로 바꾼다.
수렴이 실패할 때 엔진이 하는 일뉴턴이 150번 안에 수렴하지 않으면 엔진은 두 가지 우회로를 차례로 쓴다. gmin 스텝은 모든 마디에서 접지로 큰 컨덕턴스(10 mS)를 달아 회로를 "물렁하게" 만든 뒤 풀고, 그 해를 출발점으로 컨덕턴스를 10배씩 줄여 간다. 전원 스텝은 모든 전원을 5 %에서 100 %까지 조금씩 키우며 직전 해를 다음 출발점으로 쓴다. 그래도 안 되면 "수렴 실패"다. 밴드갭처럼 해가 둘 이상인 회로(전류 0인 해와 정상 해)는 수렴은 하지만 엉뚱한 해에 앉을 수 있다. 그래서 SPICE에는 .nodeset이 있고, 이 장의 편집기에서는 마디 이름표의 "초기값"이 그 일을 한다.

회로도 편집기

아래 편집기는 이 장의 중심이다. 왼쪽 격자에 소자를 놓고 선으로 이으면, 편집기가 핀과 선 끝이 만나는 점들을 하나로 묶어(유니온-파인드) 마디를 찾고, 그 마디 이름으로 넷리스트를 만들어 AN.circuit에 넘긴다. 회로를 고칠 때마다 아래쪽 해석이 다시 돈다. 처음이라면 "프리셋"에서 회로 하나를 불러와 소자를 눌러 보는 것부터 시작하면 된다.

하고 싶은 것마우스·키보드터치(휴대폰)
소자 놓기팔레트에서 고르고 격자를 누른다같다(한 번 누르면 놓이고 선택 도구로 돌아간다)
선 긋기"배선"을 고르고 점에서 점으로 끈다. W시작점을 누르고 끝점을 누른다(누른 점끼리 이어진다). 같은 점을 두 번 누르면 끝
옮기기·고르기선택 도구로 소자를 끈다. 붙어 있던 선 끝이 따라온다같다
회전·반전·삭제R · F · Delete, 되돌리기 Ctrl+Z오른쪽 단추
값 바꾸기소자를 고르면 오른쪽 속성 칸에 값·W/L·파형이 나온다. 10k, 1p, 2.5u, 1meg처럼 SI 접두사를 쓴다(m은 밀리)
화면 옮기기·확대빈 곳을 끌면 화면이 움직이고, +/−·"맞춤" 단추로 크기를 바꾼다
측정해석 탭을 고르고 관측 마디를 정한다. 동작점 탭에서 소자를 누르면 gm·ro·영역이 아래 정보 칸에 나온다
SIMULATOR

회로도 편집기 + 브라우저 SPICE

소자를 고르고 격자를 누른다

소자나 선을 누르면 여기에서 값을 바꾼다.

동작점

프리셋을 불러오거나 회로를 그리면 엔진이 동작점을 푼다. 소자를 누르면 그 소자의 동작점이 여기에 나온다.

——
——
——
——
해볼 것: ① "공통 소스 증폭기"를 불러와 M1을 누른다. 영역·gm·ro가 나온다. R1을 골라 값을 40k로 바꾸면 M1이 선형 영역으로 빠져 빨갛게 바뀐다. ② "AB-1 2단 OTA 버퍼"에서 과도 탭을 고른다. Rz를 0으로, Cc를 0.3p로 바꾸면 계단 응답이 울린다. ③ "밴드갭 코어"에서 DC 스윕을 "온도"로 바꿔 −40~125 °C의 출력 전압을 본다. vref 이름표의 초기값을 지우면 엉뚱한 해에 앉는다. ④ 선 하나를 지워 마디를 떠 있게 만들어 보고 오류 문구를 읽는다. (모델: AN.circuit. NMOS 바디는 접지(p 기판), PMOS 바디는 소스에 묶는다. 기판 PNP의 베이스·컬렉터는 한 핀으로 묶여 있다. MOSFET 기생 C는 동작점에서 고정. 이상 증폭기 E는 출력이 접지 기준인 전압 제어 전압원. 과도 해석은 800스텝, C에 초기값이 있으면 동작점 대신 그 값에서 출발한다. 전류 점의 빠르기는 전류의 로그에 비례.)

편집기에서 본 것처럼, 넷리스트는 그림이 아니라 연결 관계다. 선이 어떻게 꺾였든 같은 점에 닿은 핀들은 한 마디가 되고, 같은 이름표(예: vdd)를 단 점들도 선 없이 한 마디가 된다. 엔진에 들어가기 전에 편집기는 세 가지를 검사한다. 접지가 없으면 모든 전압이 기준을 잃고, 핀 하나만 닿은 마디나 직류 경로가 없는 마디(게이트와 커패시터에만 닿은 마디)는 행렬에서 그 줄이 0에 가까워져 답이 정해지지 않는다. 실제 SPICE도 똑같은 이유로 "singular matrix" 또는 "no DC path to ground"를 낸다.

오류를 읽는 법"떠 있는 마디"는 대개 선이 핀에 한 칸 못 미친 경우다. 편집기는 이런 핀에 빨간 고리를 그린다. 커패시터로 결합한 입력처럼 일부러 직류가 끊긴 마디라면 큰 저항(예: 10 MΩ)으로 바이어스를 달아 준다. "수렴 실패"는 대개 회로 자체가 이상한 경우(전압원 두 개가 병렬, 전류원이 직렬로 막힘)이거나 해가 여럿인 경우다. 이름표의 초기값으로 출발점을 알려 준다.

넷리스트 문법

"넷리스트 내보내기"는 회로도 전체를 아래 형식의 글자로 바꾼다. 한 줄이 소자 하나다. 앞의 여섯 칸은 종류, 이름, 격자 좌표 x·y, 회전(0~3, 90° 단위), 반전(0/1)이고, 뒤에 키=값이 온다. 선은 wire x1 y1 x2 y2. 글자를 고쳐 "가져오기"를 누르면 회로도가 바뀌므로, 값을 한꺼번에 바꾸거나 회로를 다른 사람에게 보내기 좋다. 끝의 # 주석은 같은 회로를 보통의 SPICE 넷리스트로 적은 것이다(가져오기에서는 무시).

# 종류 이름 x y 회전 반전 키=값...
V Vdd 2 4 0 0 dc=1.8
V Vin 8 12 0 0 dc=0.65 ac=1 wave=sin amp=10m f=100k
R R1 17 4 0 0 r=15k
N M1 16 12 0 0 W=10u L=1u
C C1 22 10 0 0 c=1p
LBL - 17 4 0 0 text=vdd ns=
GND - 17 14 0 0
wire 8 12 14 12
# 종류: R C L V I(전원) D Q(기판 PNP) N P(MOSFET) E(이상 증폭기) GND LBL(이름표)
# V·I 키: dc ac(0/1) wave(dc|sin|pulse) amp f v1 v2 per    C 키: c ic(초기 전압)
# 접두사: f p n u m k meg g  (m = 10^-3, meg = 10^6)

프리셋 여덟 개로 둘러보기

프리셋은 앞 장들의 대표 회로를 편집기에서 다시 그린 것이다. 모두 같은 엔진이 같은 모델로 푼다. 아래 표는 각 프리셋에서 먼저 볼 것과 망가뜨려 볼 것이다.

프리셋먼저 볼 것망가뜨려 볼 것관련 장
공통 소스V(out) 약 0.87 V, 이득 약 8(18 dB), 대역 약 11 MHzR1을 40k로: 선형 영역, 이득 붕괴4장
전류 미러DC 스윕으로 I(M2)–Vout, 기울기 = 1/roVout를 0.1 V로: 미러 비가 무너진다5장
RC 필터AC에서 −3 dB가 1/(2πRC) ≈ 100 kHz과도에서 펄스 주기를 RC보다 짧게7장
5T OTA개루프 이득 약 40 dB, 출력 = 미러 마디 근처Vp를 10 mV 올리면 출력이 레일로6장
밴드갭 코어온도 스윕에서 약 1.23 V, 변화 약 5 mV(약 23 ppm/°C)R2·R3을 바꿔 기울기를 뒤집는다13장
LDOVbat 스윕에서 1.8 V 유지, 드롭아웃패스 소자 W를 줄이면 10 mA를 못 낸다14장
링 발진기과도에서 약 90 MHz 발진C를 키우면 느려지고, 단을 짝수로 만들면 멈춘다18장
AB-1 2단 OTA 버퍼AN.ota2와 같은 소자. 0.3 V 계단 응답, 입력 잡음Rz 0, Cc 0.3 pF: 울림9장·10장

AB-1 2단 OTA 버퍼 프리셋은 엔진의 AN.ota2(…, "follower")와 소자·크기·마디가 똑같다. 그래서 여기서 잰 값은 9~11장의 값과 같아야 한다. 동작점 탭에서 M1을 누르면 gm ≈ 169 µS, 잡음 탭에서 입력 환산 잡음이 1 kHz에서 약 53 nV/√Hz, 1 MHz에서 약 14 nV/√Hz로 나온다. 이것이 손으로 그린 회로가 엔진의 기준 회로와 같다는 확인이다.

AB-1 신호 사슬 예산

지금까지 블록을 하나씩 따로 설계했다. 그런데 사양서가 묻는 것은 블록이 아니라 사슬 전체다. 압력 센서 브리지의 ±10 mV를 12비트로 읽으려면 사슬의 모든 잡음과 오차를 한 기준점으로 옮겨 더해 봐야 한다. 기준점은 센서 출력, 즉 PGA 입력이다. ADC 쪽에서 생긴 잡음은 PGA 이득으로 나누어 센서 쪽으로 옮긴다.

$$v_{n,\text{센서}}^2 = \underbrace{4kTR_b B}_{\text{브리지}} + \underbrace{\overline{v_{n,\text{OTA}}^2}}_{\text{열, }1/f} + \frac{1}{G^2}\Big(\underbrace{\tfrac{kT}{C_s}}_{\text{샘플러}} + \underbrace{\tfrac{\Delta^2}{12}}_{\text{양자화}} + \sigma_{\text{비교기}}^2 + \sigma_{\text{지터}}^2\Big)$$
\(R_b\) = 5 kΩ(브리지, 9.1 nV/√Hz), OTA 14 nV/√Hz(1/f 코너 약 14 kHz, 1 kHz에서 약 54), \(G\) = 40, \(C_s\) = 1 pF(kT/C 약 64 µV), \(\Delta\) = 1.2 V/4096 ≈ 293 µV(양자화 잡음 약 85 µV). 센서로 환산한 1 LSB는 293 µV/40 ≈ 7.3 µV다. 대역 \(B\)는 PGA의 잡음 대역 \((\pi/2)\cdot\mathrm{GBW}/G\) ≈ 0.92 MHz이고, 1 MS/s로 표본화하면 그 잡음이 모두 0~500 kHz로 접혀 들어온다.

신호는 10 kHz 대역 안에만 있다. 그러니 ADC 뒤에서 10 kHz 디지털 필터로 걸러 내면, 0~500 kHz에 고르게 퍼진 백색 잡음은 50분의 1(17 dB)로 준다. 하지만 1/f 잡음은 거의 다 10 kHz 아래에 있어서 필터로 줄지 않는다. 아래 예산기에서 이 차이를 직접 본다.

SIMULATOR

AB-1 신호 사슬: 잡음 예산을 짜서 ENOB 10.5를 넘겨라

총 잡음(센서 환산)—
SNR 계산 / FFT—
ENOB(사양 ≥ 10.5)—
오프셋 3σ(센서 환산)—
해볼 것: ① 기본값(나이퀴스트 대역)에서는 PGA 잡음이 0.92 MHz 대역 전체를 끌고 들어와 ENOB가 9 아래다. ② "디지털 필터 10 kHz"를 고르면 백색 잡음은 17 dB 줄지만 OTA의 1/f가 남아 ENOB 10.4로 아슬아슬하게 불합격이다. ③ 초핑을 켜면 1/f와 오프셋이 사라져 합격한다. ④ G를 70 이상으로 올리면 ±10 mV × G가 ADC 범위(±0.6 V)를 넘어 잘린다. G를 15로 내리면 ADC 쪽 잡음이 센서로 환산될 때 커진다. (막대에 마우스를 올리면 계산식이 나온다. 가정: 신호는 ±10 mV, 10 kHz 근처 사인. OTA GBW 23.5 MHz, 입력 잡음 \(14\sqrt{1+14\,\text{kHz}/f}\) nV/√Hz, 1/f 적분 하한은 측정 시간(8192표본, 8.2 ms)의 역수인 약 122 Hz. 브리지 열잡음은 PGA 잡음 대역까지. 지터 약 17 ps. 오프셋 σ 2.1 mV는 잡음과 따로 보는 정적 오차이고, 초핑 시 잔류 3σ를 5 µV로 둔다. FFT는 8192점, 같은 PSD로 만든 잡음 + 12비트 양자화.)
기여(센서 환산, µV rms)나이퀴스트10 kHz 필터10 kHz 필터 + 초핑
브리지 열잡음 4kTRb8.71.21.2
OTA 열잡음13.41.91.9
OTA 1/f5.03.50
ADC 쪽(kT/C·양자화·비교기) ÷ G3.40.50.5
합(제곱합의 제곱근)17.14.22.3
ENOB(신호 ±10 mV)8.410.411.3

표가 보여 주는 결론은 세 가지다. 첫째, ADC 쪽 잡음(kT/C, 양자화, 비교기)은 이득 40으로 나뉘어 센서 쪽에서는 작다. PGA를 앞에 두는 이유다. 둘째, 그 대신 PGA와 센서의 잡음이 예산을 지배하고, 표본화가 넓은 대역의 잡음을 모두 접어 넣는다. 셋째, 신호 대역만 남기는 디지털 필터는 백색 잡음에는 강력하지만 1/f에는 소용이 없다. 10 kHz 대역 센서에서 11장의 1/f 문제가 마지막 걸림돌이 되는 이유이고, 초핑이 같은 동작으로 오프셋 2.1 mV까지 지운다는 점이 덤이다.

오프셋은 잡음이 아니다OTA 오프셋 σ 2.1 mV는 센서 환산 1 LSB(7.3 µV)의 약 290배다. 하지만 시간에 따라 변하지 않으므로 SNR을 깎지 않는다. 대신 영점을 옮겨 압력 0을 수백 LSB 어긋나게 읽는다. 그래서 오프셋은 잡음 예산과 따로, 보정(교정 단계에서 영점 측정)이나 초핑으로 다룬다. 12장의 면적 확대는 3σ를 사양 5 mV 밑으로 끌어내리지만, 센서 LSB 수준까지 내리지는 못한다.

도전 과제

이제 독자가 설계자다. 아래 세 과제는 각각 사양 몇 줄과 손잡이 몇 개를 준다. 손 계산으로 출발점을 정하고, 손잡이를 돌려 엔진 결과를 보고, "채점"을 누른다. 채점은 엔진이 다시 처음부터 풀어 사양 항목을 하나씩 확인한다.

과제 1. 공통 소스 증폭기: 20 dB와 10 MHz

부하 \(C_L\) = 1 pF, 전력 200 µW 이하에서 전압 이득 20 dB 이상, −3 dB 대역 10 MHz 이상. 대역 조건이 \(R_D \parallel r_o \le 1/(2\pi\cdot 10\,\mathrm{MHz}\cdot 1\,\mathrm{pF})\) ≈ 15.9 kΩ를 강요하므로, 이득 10을 얻으려면 \(g_m \ge\) 약 630 µS가 필요하다. 전류를 늘리면 전력이, 줄이면 \(g_m\)이 모자란다. \(g_m/I_D\)를 높이는(폭을 키우는) 것이 열쇠다.

SIMULATOR

과제 1: 공통 소스 20 dB · 10 MHz · 200 µW

채점 전

손잡이를 돌리면 엔진 값이 바로 바뀐다. 네 사양을 모두 맞췄다고 생각하면 "채점"을 누른다.

이득(≥ 20 dB)—
−3 dB 대역(≥ 10 MHz)—
전력(≤ 200 µW)—
gm/ID · 영역—
해볼 것: ① 처음 값(15k, 10/1 µm, 0.65 V)은 이득 18 dB로 조금 모자란다. ② VGS만 올리면 전류와 전력이 늘고 Vout이 내려가 선형 영역으로 빠진다. ③ W를 키우고 VGS를 낮춰 같은 전류에서 gm/ID를 올린다. 너무 키우면 Cdb가 늘어 대역이 깎인다. (엔진: AN.circuit 동작점 + AC 1 kHz~10 GHz, MOSFET 기생 C 포함. 전력 = VDD × 전원 전류.)

과제 2. AB-1 OTA: 부하 5 pF에서 위상 여유 60°

AB-1 OTA가 5 pF를 몰아야 하는 자리에 쓰인다고 하자. 기본 보상(Cc 1 pF, Rz 2 kΩ, 2단 80 µA)으로는 둘째 극점 \(g_{m6}/2\pi C_L\)이 GBW 근처로 내려와 PM이 약 50°다. 사양은 PM ≥ 60°, GBW ≥ 20 MHz, 전력 ≤ 250 µW. Cc를 키우면 PM은 오르지만 GBW가 떨어지고, 2단 전류를 늘리면 전력이 넘친다. 영점 저항 \(R_z \approx (1 + C_L/C_c)/g_{m6}\)로 둘째 극점을 상쇄하는 길을 찾아본다.

SIMULATOR

과제 2: CL 5 pF에서 PM ≥ 60°, GBW ≥ 20 MHz

채점 전

PM·GBW·전력 세 가지를 함께 맞춘다. 채점하면 단위 이득 버퍼의 계단 응답 오버슈트도 함께 본다.

PM(≥ 60°)—
GBW(≥ 20 MHz)—
전력(≤ 250 µW)—
버퍼 오버슈트—
해볼 것: ① Cc만 2 pF로 키우면 PM은 넘지만 GBW가 12 MHz로 떨어진다. ② I2를 120 µA로 올리면 쉽게 풀리지만 전력이 약 290 µW로 넘친다. ③ I2 80 µA를 지키고 Rz를 4 kΩ 근처로 올려 본다. 영점이 둘째 극점을 상쇄한다. (엔진: AN.ota2Open({cl: 5e-12, cc, rz, i2}) 개루프 AC, 출력 0.9 V로 오프셋 맞춤. 계단 응답은 AN.ota2(…, "follower") 과도 해석, 0.1 V 계단.)

과제 3. 오프셋 3σ를 5 mV 밑으로

12장에서 AB-1 OTA의 오프셋 3σ는 약 6.2 mV로 사양 5 mV를 넘었다. 입력 쌍 M1·M2와 부하 M3·M4의 면적을 키우면 펠그롬 법칙 \(\sigma(\Delta V_{th}) = A_{VT}/\sqrt{WL}\)에 따라 오프셋이 준다. 그러나 큰 소자는 기생 커패시턴스가 커서 위상 여유를 깎는다. 사양: 3σ < 5 mV, PM ≥ 60°, GBW ≥ 20 MHz.

SIMULATOR

과제 3: 면적으로 오프셋 줄이기, 대가는 위상 여유

채점 전

손잡이를 돌리면 손 계산 σ와 PM·GBW가 바로 나온다. 버튼을 누르면 엔진이 소자 4개에 무작위 부정합을 입혀 200번 동작점을 풀고 히스토그램을 쌓는다.

σ 손 계산 / 몬테카를로—
3σ(< 5 mV)—
PM(≥ 60°) · GBW(≥ 20 MHz)—
게이트 면적 M1~M4—
해볼 것: ① 처음 값으로 몬테카를로를 돌리면 3σ가 6 mV 남짓으로 불합격이다. ② W1만 40 µm로 키우면 3σ는 줄지만 gm1이 커져 GBW가 오르고 PM이 60° 밑으로 내려간다. ③ 부하 M3·M4의 오프셋 기여는 \(g_{m3}/g_{m1}\)배로 들어온다. L3을 키워 부하 면적을 늘리는 것과 W1을 조금만 키우는 것을 섞어 본다. (엔진: 소자마다 AN.mcDev로 Vth·β 부정합. 오프셋은 단위 이득 버퍼의 Vout − Vin(시스템적 오프셋 약 0.06 mV 포함). 손 계산 \(\sigma^2 = \sigma_{1}^2 + (g_{m3}/g_{m1})^2\sigma_{3}^2\).)

AB-1 최종 성적표

열아홉 장에 걸쳐 AB-1을 트랜지스터 하나에서 신호 사슬 전체까지 올렸다. 이 장의 실험실로 마지막 점검을 한다. 숫자는 엔진으로 다시 잰 값이고, 이 페이지를 열 때 자동으로 다시 계산된다.

TARGET AB-1타깃 파일 · 19장

최종 성적표: OTA 사양 전부 통과, 사슬 ENOB는 초핑과 필터로 통과

AB-1 OTA(AN.ota2Open())는 개루프 이득 71.8 dB, GBW 23.5 MHz, 위상 여유 67.5°, 전력 약 218 µW로 OTA 사양을 모두 넘는다. 편집기의 버퍼 프리셋으로 잰 입력 잡음은 1 MHz에서 약 14 nV/√Hz다. 남아 있던 두 문제 중 오프셋 3σ 6.2 mV는 입력 쌍과 부하 면적을 키우면(과제 3) PM 60°를 지키면서 약 4.4 mV로 사양 안에 들어온다. 신호 사슬은 나이퀴스트 대역 그대로면 ENOB 약 8.4로 사양 10.5에 못 미치고, 10 kHz 디지털 필터만으로는 1/f 때문에 약 10.4로 아슬아슬하게 모자라고, 초핑을 더하면 약 11.3으로 통과한다.

항목사양결과판정장
OTA 개루프 이득≥ 70 dB71.8 dB통과9
OTA GBW (CL 2 pF)≥ 20 MHz23.5 MHz통과9
OTA 위상 여유 (Rz 2 kΩ)≥ 60°67.5°통과10
OTA 전력≤ 300 µW218 µW통과9
OTA 입력 잡음 @1 MHz≤ 30 nV/√Hz14 nV/√Hz통과11
OTA 오프셋 3σ< 5 mV6.2 → 약 4.4 mV면적 확대 후 통과12·19
샘플러 kT/C (Cs 1 pF)< LSB/√1264 µV < 85 µV통과15
사슬 ENOB (±10 mV)≥ 10.511.3필터 + 초핑 후 통과19
밴드갭 코어 (이 장 프리셋)1.2 V 근처약 1.230 V곡률 보정 전13
LDO 출력 (10 mA, 이 장 프리셋)1.8 V1.804 V통과14
이 장에서 정한 것회로도에서 넷리스트로, 넷리스트에서 엔진으로 가는 길을 직접 밟았다. 사슬의 잡음 예산을 한 기준점(센서 입력)으로 모아, 지배 항이 ADC가 아니라 PGA의 1/f와 표본화로 접힌 광대역 잡음임을 확인했다. 해법은 10 kHz 디지털 필터 + 초핑, 오프셋은 초핑과 면적 확대.
아직 남은 문제밴드갭의 곡률, LDO의 부하 과도와 PSRR, 공정·온도 모서리(코너)와 수율, 레이아웃 기생은 이 책의 모델 밖이다. 실제 칩은 이 숫자들을 실리콘으로 다시 확인한다.
다음 단계편집기에서 AB-1의 다른 블록(SC 적분기, 비교기, 전하 펌프)을 직접 그려 보는 것. 설계는 여기서 끝나지 않는다.

핵심 정리

  1. SPICE는 소자를 MNA 행렬에 스탬프하고, 비선형 소자를 접선(컨덕턴스 + 등가 전류원)으로 바꾸어 뉴턴 반복하며, 과도 해석에서는 커패시터를 \(2C/\Delta t\)와 전류원의 동반 모델로 바꾼다.
  2. 뉴턴은 해 근처에서 제곱으로 수렴하지만 지수 곡선에서는 튈 수 있어 갱신 제한, gmin 스텝, 전원 스텝을 쓴다. 해가 여럿인 회로는 초기값(.nodeset)이 필요하다.
  3. 넷리스트는 연결 관계다. 접지가 없거나, 핀 하나만 닿았거나, 직류 경로가 없는 마디는 행렬을 특이하게 만든다.
  4. 사슬의 잡음은 한 기준점(센서 입력)으로 환산해 제곱합한다. PGA 이득 G로 ADC 쪽 잡음은 G배 작아지고, 표본화는 PGA 대역 전체의 잡음을 나이퀴스트 대역으로 접는다.
  5. 신호 대역 디지털 필터는 백색 잡음을 대역 비만큼 줄이지만 1/f는 줄이지 못한다. 10 kHz 센서 채널의 마지막 걸림돌은 1/f이고, 초핑이 1/f와 오프셋을 함께 지운다.
  6. 설계는 맞바꿈이다. 이득과 대역(RD), PM과 GBW(Cc, Rz), 오프셋과 PM(면적)은 같은 손잡이로 함께 움직인다. 엔진으로 확인하고 채점하는 습관이 남는다.

확인 퀴즈

1. 접지를 뺀 마디가 12개, 독립 전압원 3개, 인덕터 1개가 있는 회로를 MNA로 풀 때 미지수(행렬의 크기)는?

마디 전압 12개에 더해, 전압원마다 가지 전류 1개(3개), 인덕터도 가지 전류 1개를 미지수로 둔다. 12 + 3 + 1 = 16, 즉 16×16 행렬이다. 저항·커패시터·전류원·MOSFET은 미지수를 늘리지 않는다.

2. 과도 해석에서 1 pF 커패시터를 시간 간격 0.5 ns, 사다리꼴 적분으로 다룬다. 동반 모델의 등가 컨덕턴스는?

\(g_{eq} = 2C/\Delta t = 2\times10^{-12}/0.5\times10^{-9}\) = 4 mS(250 Ω). 후진 오일러라면 \(C/\Delta t\) = 2 mS다. 시간 간격을 줄일수록 커패시터가 더 "단단한" 저항으로 보여 전압이 한 걸음에 덜 움직인다.

3. AB-1 사슬에서 샘플링 커패시터 1 pF의 kT/C 잡음(약 64 µV rms)을 센서 입력(PGA 이득 40)으로 환산하면, 센서 환산 1 LSB(약 7.3 µV)와 비교해 어떤가?

ADC 입력의 64 µV를 이득 40으로 나누면 1.6 µV. 센서 환산 LSB는 293 µV/40 ≈ 7.3 µV이므로 약 0.22 LSB다. 무시할 수준은 아니지만 브리지·OTA 잡음보다 작다. 이득 40으로 나누는 것을 두 번 하면(40² = 1600) 0.04 µV라는 오답이 나온다.

4. 디지털 필터로 신호 대역(10 kHz)만 남겼는데도 ENOB가 사양에 못 미친다. 남은 잡음의 대부분이 OTA 1/f일 때 가장 효과적인 조치는?

1/f 잡음은 저주파에 몰려 있어 대역을 반으로 줄여도 \(\ln\)으로만 준다. kT/C·양자화는 이미 G로 나뉘어 작은 항이라 Cs나 ADC 비트를 늘려도 효과가 적다. 초핑은 신호를 높은 주파수로 옮겼다가 되돌려, OTA의 1/f와 오프셋을 신호 대역 밖으로 내보낸다.