아날로그 실험실
열여덟 장 동안 시뮬레이터는 미리 짜 둔 회로를 보여 주었다. 이 장에서는 독자가 회로를 직접 그린다. 격자 위에 저항과 트랜지스터를 놓고 선을 이으면 브라우저 안의 SPICE가 그 회로를 풀어 동작점, DC 스윕, 주파수 응답, 과도 응답, 잡음을 보여 준다. 마지막으로 AB-1 신호 사슬 전체의 잡음 예산을 직접 짜고, 도전 과제 세 개를 채점받는다.
- 브라우저 SPICE가 회로를 푸는 세 가지 생각, 수정 마디 해석(MNA)·뉴턴 반복·동반 모델을 설명한다.
- 회로도 편집기로 회로를 그리고, 넷리스트가 연결 관계에서 어떻게 만들어지는지 이해한다.
- 동작점·DC 스윕·AC·과도·잡음 해석을 골라 쓰고, "수렴 실패"·"떠 있는 마디" 같은 오류의 원인을 찾는다.
- 센서 브리지에서 12비트 SAR까지 AB-1 신호 사슬의 잡음·오차 예산을 센서 입력 환산 µV와 LSB로 짠다.
- 공통 소스 증폭기, 2단 OTA 보상, 오프셋 면적 설계를 사양에 맞춰 직접 풀고 채점받는다.
브라우저 SPICE는 어떻게 도는가
이 책의 모든 회로 그림 뒤에는 같은 엔진(AN.circuit)이 있다. 엔진이 하는 일은 SPICE와 같다. 회로를 연립 방정식으로 바꾸고, 비선형 소자는 반복해서 직선으로 근사하고, 시간이 흐르는 회로는 짧은 시간 간격마다 커패시터를 저항과 전류원으로 바꿔 푼다. 세 가지 생각만 알면 시뮬레이터가 왜 수렴하지 못하는지, 왜 시간 간격이 중요한지 짐작할 수 있다.
첫째는 수정 마디 해석(Modified Nodal Analysis, MNA)이다. 접지를 뺀 마디마다 키르히호프 전류 법칙(KCL) 한 줄, 전압원마다 "두 마디 전압 차가 이 값이다"라는 한 줄을 쓴다. 미지수는 마디 전압과 전압원의 가지 전류다. 저항은 행렬에 컨덕턴스 \(1/R\)을 네 칸에 더하는 것으로 끝난다. 이것을 스탬프라 부른다.
둘째는 뉴턴 반복(Newton-Raphson)이다. MOSFET과 다이오드는 전류가 전압의 비선형 함수라서 행렬 한 번으로 풀리지 않는다. 지금 추정한 전압에서 소자를 접선, 즉 컨덕턴스(\(g_m\), \(g_{ds}\))와 등가 전류원 \(I_{eq}\)로 바꾸고, 그 선형 회로를 풀어 다음 추정값을 얻는다. 접선이 실제 곡선과 잘 맞으면 오차가 매번 제곱으로 줄어 몇 번 만에 수렴한다. 다이오드의 지수 곡선은 접선이 크게 빗나가기 쉬워서 엔진은 한 번에 마디 전압을 0.4 V 넘게 바꾸지 못하게 막는다.
아래 시뮬레이터는 1.2 V 전원·저항 2 kΩ·다이오드 하나의 회로를 뉴턴으로 푼다. 초기 추정값을 가로축 위에서 끌어 옮기고 "한 걸음"을 누른다.
뉴턴 반복: 접선을 따라 해로 내려간다
op())—셋째는 동반 모델(Companion Model)이다. 과도 해석은 시간을 \(\Delta t\) 간격으로 자르고, 매 간격마다 커패시터를 "컨덕턴스 + 전류원"으로 바꾼다. 엔진은 사다리꼴 적분을 쓴다. 그러면 시간 축 위의 미분 방정식이 매 간격 하나의 저항 회로(필요하면 뉴턴 반복)로 바뀐다. \(\Delta t\)가 회로의 시정수보다 충분히 짧아야 결과가 맞는다.
.nodeset이 있고, 이 장의 편집기에서는 마디 이름표의 "초기값"이 그 일을 한다.회로도 편집기
아래 편집기는 이 장의 중심이다. 왼쪽 격자에 소자를 놓고 선으로 이으면, 편집기가 핀과 선 끝이 만나는 점들을 하나로 묶어(유니온-파인드) 마디를 찾고, 그 마디 이름으로 넷리스트를 만들어 AN.circuit에 넘긴다. 회로를 고칠 때마다 아래쪽 해석이 다시 돈다. 처음이라면 "프리셋"에서 회로 하나를 불러와 소자를 눌러 보는 것부터 시작하면 된다.
| 하고 싶은 것 | 마우스·키보드 | 터치(휴대폰) |
|---|---|---|
| 소자 놓기 | 팔레트에서 고르고 격자를 누른다 | 같다(한 번 누르면 놓이고 선택 도구로 돌아간다) |
| 선 긋기 | "배선"을 고르고 점에서 점으로 끈다. W | 시작점을 누르고 끝점을 누른다(누른 점끼리 이어진다). 같은 점을 두 번 누르면 끝 |
| 옮기기·고르기 | 선택 도구로 소자를 끈다. 붙어 있던 선 끝이 따라온다 | 같다 |
| 회전·반전·삭제 | R · F · Delete, 되돌리기 Ctrl+Z | 오른쪽 단추 |
| 값 바꾸기 | 소자를 고르면 오른쪽 속성 칸에 값·W/L·파형이 나온다. 10k, 1p, 2.5u, 1meg처럼 SI 접두사를 쓴다(m은 밀리) | |
| 화면 옮기기·확대 | 빈 곳을 끌면 화면이 움직이고, +/−·"맞춤" 단추로 크기를 바꾼다 | |
| 측정 | 해석 탭을 고르고 관측 마디를 정한다. 동작점 탭에서 소자를 누르면 gm·ro·영역이 아래 정보 칸에 나온다 | |
회로도 편집기 + 브라우저 SPICE
소자나 선을 누르면 여기에서 값을 바꾼다.
동작점
프리셋을 불러오거나 회로를 그리면 엔진이 동작점을 푼다. 소자를 누르면 그 소자의 동작점이 여기에 나온다.
AN.circuit. NMOS 바디는 접지(p 기판), PMOS 바디는 소스에 묶는다. 기판 PNP의 베이스·컬렉터는 한 핀으로 묶여 있다. MOSFET 기생 C는 동작점에서 고정. 이상 증폭기 E는 출력이 접지 기준인 전압 제어 전압원. 과도 해석은 800스텝, C에 초기값이 있으면 동작점 대신 그 값에서 출발한다. 전류 점의 빠르기는 전류의 로그에 비례.)편집기에서 본 것처럼, 넷리스트는 그림이 아니라 연결 관계다. 선이 어떻게 꺾였든 같은 점에 닿은 핀들은 한 마디가 되고, 같은 이름표(예: vdd)를 단 점들도 선 없이 한 마디가 된다. 엔진에 들어가기 전에 편집기는 세 가지를 검사한다. 접지가 없으면 모든 전압이 기준을 잃고, 핀 하나만 닿은 마디나 직류 경로가 없는 마디(게이트와 커패시터에만 닿은 마디)는 행렬에서 그 줄이 0에 가까워져 답이 정해지지 않는다. 실제 SPICE도 똑같은 이유로 "singular matrix" 또는 "no DC path to ground"를 낸다.
넷리스트 문법
"넷리스트 내보내기"는 회로도 전체를 아래 형식의 글자로 바꾼다. 한 줄이 소자 하나다. 앞의 여섯 칸은 종류, 이름, 격자 좌표 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 MHz | R1을 40k로: 선형 영역, 이득 붕괴 | 4장 |
| 전류 미러 | DC 스윕으로 I(M2)–Vout, 기울기 = 1/ro | Vout를 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장 |
| LDO | Vbat 스윕에서 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 이득으로 나누어 센서 쪽으로 옮긴다.
신호는 10 kHz 대역 안에만 있다. 그러니 ADC 뒤에서 10 kHz 디지털 필터로 걸러 내면, 0~500 kHz에 고르게 퍼진 백색 잡음은 50분의 1(17 dB)로 준다. 하지만 1/f 잡음은 거의 다 10 kHz 아래에 있어서 필터로 줄지 않는다. 아래 예산기에서 이 차이를 직접 본다.
AB-1 신호 사슬: 잡음 예산을 짜서 ENOB 10.5를 넘겨라
| 기여(센서 환산, µV rms) | 나이퀴스트 | 10 kHz 필터 | 10 kHz 필터 + 초핑 |
|---|---|---|---|
| 브리지 열잡음 4kTRb | 8.7 | 1.2 | 1.2 |
| OTA 열잡음 | 13.4 | 1.9 | 1.9 |
| OTA 1/f | 5.0 | 3.5 | 0 |
| ADC 쪽(kT/C·양자화·비교기) ÷ G | 3.4 | 0.5 | 0.5 |
| 합(제곱합의 제곱근) | 17.1 | 4.2 | 2.3 |
| ENOB(신호 ±10 mV) | 8.4 | 10.4 | 11.3 |
표가 보여 주는 결론은 세 가지다. 첫째, ADC 쪽 잡음(kT/C, 양자화, 비교기)은 이득 40으로 나뉘어 센서 쪽에서는 작다. PGA를 앞에 두는 이유다. 둘째, 그 대신 PGA와 센서의 잡음이 예산을 지배하고, 표본화가 넓은 대역의 잡음을 모두 접어 넣는다. 셋째, 신호 대역만 남기는 디지털 필터는 백색 잡음에는 강력하지만 1/f에는 소용이 없다. 10 kHz 대역 센서에서 11장의 1/f 문제가 마지막 걸림돌이 되는 이유이고, 초핑이 같은 동작으로 오프셋 2.1 mV까지 지운다는 점이 덤이다.
도전 과제
이제 독자가 설계자다. 아래 세 과제는 각각 사양 몇 줄과 손잡이 몇 개를 준다. 손 계산으로 출발점을 정하고, 손잡이를 돌려 엔진 결과를 보고, "채점"을 누른다. 채점은 엔진이 다시 처음부터 풀어 사양 항목을 하나씩 확인한다.
과제 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\)를 높이는(폭을 키우는) 것이 열쇠다.
과제 1: 공통 소스 20 dB · 10 MHz · 200 µW
채점 전
손잡이를 돌리면 엔진 값이 바로 바뀐다. 네 사양을 모두 맞췄다고 생각하면 "채점"을 누른다.
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}\)로 둘째 극점을 상쇄하는 길을 찾아본다.
과제 2: CL 5 pF에서 PM ≥ 60°, GBW ≥ 20 MHz
채점 전
PM·GBW·전력 세 가지를 함께 맞춘다. 채점하면 단위 이득 버퍼의 계단 응답 오버슈트도 함께 본다.
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.
과제 3: 면적으로 오프셋 줄이기, 대가는 위상 여유
채점 전
손잡이를 돌리면 손 계산 σ와 PM·GBW가 바로 나온다. 버튼을 누르면 엔진이 소자 4개에 무작위 부정합을 입혀 200번 동작점을 풀고 히스토그램을 쌓는다.
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을 트랜지스터 하나에서 신호 사슬 전체까지 올렸다. 이 장의 실험실로 마지막 점검을 한다. 숫자는 엔진으로 다시 잰 값이고, 이 페이지를 열 때 자동으로 다시 계산된다.
최종 성적표: 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 dB | 71.8 dB | 통과 | 9 |
| OTA GBW (CL 2 pF) | ≥ 20 MHz | 23.5 MHz | 통과 | 9 |
| OTA 위상 여유 (Rz 2 kΩ) | ≥ 60° | 67.5° | 통과 | 10 |
| OTA 전력 | ≤ 300 µW | 218 µW | 통과 | 9 |
| OTA 입력 잡음 @1 MHz | ≤ 30 nV/√Hz | 14 nV/√Hz | 통과 | 11 |
| OTA 오프셋 3σ | < 5 mV | 6.2 → 약 4.4 mV | 면적 확대 후 통과 | 12·19 |
| 샘플러 kT/C (Cs 1 pF) | < LSB/√12 | 64 µV < 85 µV | 통과 | 15 |
| 사슬 ENOB (±10 mV) | ≥ 10.5 | 11.3 | 필터 + 초핑 후 통과 | 19 |
| 밴드갭 코어 (이 장 프리셋) | 1.2 V 근처 | 약 1.230 V | 곡률 보정 전 | 13 |
| LDO 출력 (10 mA, 이 장 프리셋) | 1.8 V | 1.804 V | 통과 | 14 |
핵심 정리
- SPICE는 소자를 MNA 행렬에 스탬프하고, 비선형 소자를 접선(컨덕턴스 + 등가 전류원)으로 바꾸어 뉴턴 반복하며, 과도 해석에서는 커패시터를 \(2C/\Delta t\)와 전류원의 동반 모델로 바꾼다.
- 뉴턴은 해 근처에서 제곱으로 수렴하지만 지수 곡선에서는 튈 수 있어 갱신 제한, gmin 스텝, 전원 스텝을 쓴다. 해가 여럿인 회로는 초기값(.nodeset)이 필요하다.
- 넷리스트는 연결 관계다. 접지가 없거나, 핀 하나만 닿았거나, 직류 경로가 없는 마디는 행렬을 특이하게 만든다.
- 사슬의 잡음은 한 기준점(센서 입력)으로 환산해 제곱합한다. PGA 이득 G로 ADC 쪽 잡음은 G배 작아지고, 표본화는 PGA 대역 전체의 잡음을 나이퀴스트 대역으로 접는다.
- 신호 대역 디지털 필터는 백색 잡음을 대역 비만큼 줄이지만 1/f는 줄이지 못한다. 10 kHz 센서 채널의 마지막 걸림돌은 1/f이고, 초핑이 1/f와 오프셋을 함께 지운다.
- 설계는 맞바꿈이다. 이득과 대역(RD), PM과 GBW(Cc, Rz), 오프셋과 PM(면적)은 같은 손잡이로 함께 움직인다. 엔진으로 확인하고 채점하는 습관이 남는다.
확인 퀴즈
1. 접지를 뺀 마디가 12개, 독립 전압원 3개, 인덕터 1개가 있는 회로를 MNA로 풀 때 미지수(행렬의 크기)는?
2. 과도 해석에서 1 pF 커패시터를 시간 간격 0.5 ns, 사다리꼴 적분으로 다룬다. 동반 모델의 등가 컨덕턴스는?
3. AB-1 사슬에서 샘플링 커패시터 1 pF의 kT/C 잡음(약 64 µV rms)을 센서 입력(PGA 이득 40)으로 환산하면, 센서 환산 1 LSB(약 7.3 µV)와 비교해 어떤가?
4. 디지털 필터로 신호 대역(10 kHz)만 남겼는데도 ENOB가 사양에 못 미친다. 남은 잡음의 대부분이 OTA 1/f일 때 가장 효과적인 조치는?