아날로그 스위치와 멀티플렉서
한 줄 요약 — 신호 경로를 전자적으로 전환합니다. 채널 스위칭이 곧 멀티플렉싱이고, 여기서 발생하는 오차가 다채널 측정의 근본 한계입니다.
구조
CMOS 전송 게이트 (transmission gate)
NMOS와 PMOS를 병렬로 붙여 전 전압 범위에서 낮은 저항을 얻습니다.
NMOS 하나와 PMOS 하나를 나란히(병렬로) 붙인 것입니다. 두 소자의 소스·드레인이 각각 같은 점(IN, OUT)에 묶여 있고, 게이트에는 서로 반대인 제어 신호가 들어갑니다.
| NMOS | PMOS | |
|---|---|---|
| 게이트 신호 | 제어 = High일 때 ON | 제어 = Low일 때 ON (반전 신호를 받음) |
| 잘 통하는 구간 | 신호가 GND에 가까울 때 | 신호가 전원에 가까울 때 |
| 못 견디는 구간 | 신호가 높으면 가 줄어 저항 급증 | 신호가 낮으면 같은 문제 |
둘을 병렬로 놓으면 한쪽이 약해지는 구간을 다른 쪽이 메워, 어느 신호 전압에서든 저항이 낮게 유지됩니다.
| 단독 소자 | 문제 |
|---|---|
| NMOS만 | 소스 전압이 높으면 가 줄어 저항 증가 |
| PMOS만 | 반대쪽에서 같은 문제 |
| 병렬 | 서로 보완 → 전 범위에서 낮은 저항 ✅ |
핵심 파라미터
| 파라미터 | 의미 | 영향 |
|---|---|---|
| 도통(continuity) 저항 (수 Ω ~ 수백 Ω) | 신호 감쇠, 세틀링 | |
| (평탄도) | 신호 전압에 따른 변화 | 왜곡 |
| / | 채널 용량 | 대역폭(bandwidth), 크로스토크(crosstalk)크로스토크 crosstalk옆 배선의 신호가 용량이나 자기장을 타고 내 신호에 섞여 들어오는 것입니다.자세히 보기 → |
| charge injection () | 스위칭 시 주입되는 전하 | 옵셋 오차 |
| 누설 전류(leakage current) | OFF 상태 누설 | 고임피던스에서 오차 |
| 크로스토크 | 채널 간 결합(coupling) | 인접 채널 간섭(interference) |
| / | 전환 시간 | 스캔 속도 |
★ Charge Injection — 다채널 측정의 골칫거리
스위치가 열리거나 닫힐 때, 게이트 용량에 저장된 전하 일부가 신호 경로로 주입됩니다.
Delta V전압 변화량voltage changeVC_hold정전용량 (hold)capacitance (hold)FQ_inj전하 / 품질 계수 (inj)charge / quality factor (inj)V전압voltageV계산
= 5 pC (전형적인 CMOS 스위치), 홀드 커패시터(capacitor) 100 pF:
Delta V전압 변화량voltage changeVV전압voltageV50 mV의 옵셋! µV 신호를 다루는 회로에서는 재앙입니다.
완화 방법
| 방법 | 원리 | 대가 |
|---|---|---|
| 홀드 커패시터를 크게 | 세틀링 느려짐 () | |
| 더미 스위치 | 반대 극성 전하를 주입해 상쇄 | 면적 2배, 완전 상쇄는 어려움 |
| 차동 구조 | 양쪽에 같은 전하가 주입되어 차동에서 상쇄 | 회로 2배 |
| 상관 이중 샘플링 (CDS) | 스위칭 전후를 빼서 제거 | 샘플링 2회, 시간·잡음 증가 |
| 작은 스위치 | 게이트 면적 | 증가 |
| 느린 게이트 구동 | 전하가 양쪽으로 나뉘어 주입량 감소 | 전환 시간 증가 |
💡 CDS(상관 이중 샘플링)가 가장 강력합니다. 리셋 직후의 값과 신호가 실린 값을 두 번 읽어 빼면, charge injection뿐 아니라 소스 팔로워(source follower)소스 팔로워 source follower전압 이득이 1인데도 쓰는 이유는 높은 임피던스를 낮은 임피던스로 바꿔 주기 때문입니다.자세히 보기 →의 편차와 1/f 잡음1/f 잡음 flicker noise주파수가 낮을수록 커지는 잡음으로, DC 근처를 재는 측정에서는 이것이 지배합니다.자세히 보기 →까지 함께 제거됩니다. CMOS 이미지 센서와 픽셀 어레이의 표준 기법입니다.
★ 과 세틀링
스위치의 이 부하 용량과 함께 시정수시정수 time constantRC 회로가 목표값까지 63%를 가는 데 걸리는 시간으로, 회로의 빠르기를 한 숫자로 나타냅니다.자세히 보기 →를 만듭니다.
tau시정수time constantsC_load부하 정전용량load capacitanceFR_ON도통 저항on-resistanceΩR_source신호원 저항source resistanceΩ계산 예제
= 100 Ω, 신호원 500 Ω, 배선(trace) 용량 20 pF:
tau시정수time constants12비트 세틀링: ns
채널당 100 ns × 2500채널 = 250 µs/프레임 → 4 kHz 프레임 레이트
이 세틀링을 통해 시스템의 최대 채널 수와 대역폭을 직접 제한합니다. 이것이 16-01의 핵심 제약입니다.
★ 평탄도와 왜곡
은 신호 전압에 따라 변합니다. 이것이 부하 저항과 분압되면 비선형 왜곡이 됩니다.
R_ON도통 저항on-resistanceΩR_L부하 저항load resistanceΩV_in입력 전압input voltageVV_out출력 전압output voltageV대책:
- (고임피던스 부하) → 분압 영향 최소화
- 평탄도가 좋은 소자 선택
- 버퍼로 받기 (스위치 뒤에 고임피던스 입력)
크로스토크
OFF 채널의 신호가 를 통해 새어 들어옵니다.
C_OFF정전용량 (OFF)capacitance (OFF)Ff주파수frequencyHzR_L부하 저항load resistanceΩ계산: = 1 pF, = 10 kΩ, = 10 kHz
−64 dB. 12비트(74 dB)에는 부족합니다. 을 낮추거나 가 작은 소자를 써야 합니다.
⚠️ 세틀링 부족도 크로스토크로 나타납니다. 이전 채널의 값이 완전히 사라지지 않은 상태에서 다음 채널을 읽으면, 이전 채널의 신호가 섞입니다. 이것을 메모리 효과라고 하며, 순차 스캔 시스템에서 가장 흔한 크로스토크 원인입니다.
시뮬레이션으로 확인
# examples/09-digital/mux-settling.yaml
meta:
name: 멀티플렉서 세틀링과 크로스토크
lesson: docs/09-digital/06-analog-switch.md
note: 두 채널을 번갈아 선택하며 세틀링이 충분한지 확인
components:
- {ref: V1, type: vdc, value: 1.0, label: 채널1 신호}
- {ref: V2, type: vdc, value: 0.0, label: 채널2 신호}
- {ref: RS1, type: r, value: 500}
- {ref: RS2, type: r, value: 500}
- {ref: SW1, type: sw, model: SW_MUX}
- {ref: SW2, type: sw, model: SW_MUX}
- {ref: CL, type: c, value: 20p, label: 열 배선 용량}
- {ref: RL, type: r, value: 10MEG, label: 버퍼 입력}
- {ref: VC1, type: vpulse, params: {v1: 5, v2: 0, td: 0, tr: 1n, tf: 1n, pw: 100n, per: 200n}}
- {ref: VC2, type: vpulse, params: {v1: 0, v2: 5, td: 0, tr: 1n, tf: 1n, pw: 100n, per: 200n}}
nets:
CH1: [V1.p, RS1.1]
CH2: [V2.p, RS2.1]
S1: [RS1.2, SW1.1]
S2: [RS2.2, SW2.1]
BUS: [SW1.2, SW2.2, CL.1, RL.1]
C1: [VC1.p, SW1.cp]
C2: [VC2.p, SW2.cp]
GND: [V1.n, V2.n, CL.2, RL.2, SW1.cn, SW2.cn, VC1.n, VC2.n]
analyses:
- {type: tran, tstep: 1n, tstop: 1u}BUS 파형을 보면 채널 전환 후 값이 안정되는 데 걸리는 시간을 확인할 수 있습니다. 100 ns 안에 충분히 세틀링하는지 보세요.
⚖️ 부품 트레이드오프
| 선택 | ✅ 좋아지는 것 | ⚠️ 나빠지는 것 |
|---|---|---|
| 낮은 | 세틀링 빠름, 감쇠 적음 | 큰 게이트 → ↑, ↑ (크로스토크↑) |
| 높은 (작은 스위치) | ↓, 용량↓ | 세틀링 느림 |
| 큰 홀드 커패시터 | charge injection 영향↓, kT/C 잡음↓ | 세틀링 느림 |
| 작은 홀드 커패시터 | 빠름 | 커짐, kT/C 잡음↑ (3-02) |
| 더미 스위치 | 상쇄 | 면적, 완전 상쇄 불가 |
| 차동 구조 | 옵셋·잡음 상쇄, CMRR | 회로 2배, 배선 2배 |
| CDS | 옵셋·1/f 제거 | 샘플 2회 → 대역폭 절반, 잡음 배 |
💡 과 는 근본적으로 상충합니다. 둘 다 게이트 면적에 의존하는데 방향이 반대입니다. 이 트레이드오프가 멀티플렉싱 어레이 설계의 중심에 있습니다.
🔌 실제 쓰임새
| 용도 | 소자 |
|---|---|
| 다채널 ADC 입력 선택 | 아날로그 멀티플렉서 (ADG708 등) |
| 어레이 행/열 선택 | 집적 스위치 트랜지스터 (16-01) |
| 샘플-홀드 | 스위치 + 커패시터 + 버퍼 |
| 이득 전환 (PGA) | 스위치 + 저항 네트워크 |
| 신호 경로 라우팅 | 크로스포인트 스위치 |
| 초핑 (chopping) | 고속 스위치로 1/f 잡음 제거 |
| 교정(calibration) 신호 주입 | 스위치로 테스트 신호 선택 |
⚠️ 이상과 실제의 차이
| 이상 | 실제 |
|---|---|
| = 0 | 수 Ω~수백 Ω, 신호 전압에 따라 변동 |
| OFF = 완전 차단(cutoff) | 누설 전류 + 를 통한 결합 |
| 스위칭에 부작용 없음 | charge injection, 클럭 피드스루 |
| 즉시 전환 | / 존재, 세틀링 필요 |
| 채널 독립 | 크로스토크, 메모리 효과 |
| 전원 무관 | 이 전원 전압에 크게 의존 |
⚠️ break-before-make 확인: 대부분의 멀티플렉서(multiplexer)는 새 채널을 켜기 전에 이전 채널을 끕니다. 만약 make-before-break라면 두 채널이 순간적으로 단락(short)되어 신호원끼리 충돌합니다.
연습문제
문제 1. = 50 Ω, 부하 용량 50 pF. 10비트 세틀링 시간은?
풀이
tau시정수time constantstau시정수time constantst_settle정착 시간settling times문제 2. = 2 pC인 스위치를 홀드 커패시터 10 pF과 씁니다. 옵셋 오차는? 16비트 ADC(±1 V)에서 몇 LSB입니까?
exercises/09-06-charge-injection.yaml풀이
Delta V전압 변화량voltage changeVV전압voltageV200 mV!
LSB = V이므로:
완전히 사용 불가능합니다.
개선:
- 홀드 커패시터를 1 nF으로 → mV (65 LSB) — 여전히 큼
- CDS 적용 → 대부분 제거 ✅
- 차동 구조 → 상쇄
- 가 작은 소자 (0.1 pC급)
charge injection은 단순히 커패시터를 키워서 해결할 수 있는 수준이 아닙니다. CDS나 차동 구조 같은 회로 기법이 필요합니다.
문제 3. 2500채널 어레이에서 채널당 세틀링 100 ns가 필요합니다. 프레임 레이트와 채널당 유효 대역폭은? 대역폭을 2배로 하려면 무엇을 바꿔야 합니까?
exercises/09-06-scan-bandwidth.yaml풀이
프레임 시간: 프레임 레이트: 채널당 유효 대역폭: 나이퀴스트로 2 kHz (실용적으로는 프레임 레이트의 1/4~1/5인 800 Hz~1 kHz)
대역폭 2배로 만들려면 (프레임 레이트 8 kHz):
| 방법 | 어떻게 | 대가 |
|---|---|---|
| 세틀링 시간 절반 (50 ns) | 를 절반으로 → 또는 를 절반으로 | ↓ = 큰 스위치 = ↑; ↓ = 배선 짧게(레이아웃 제약) |
| 정확도 낮춤 (12비트→10비트) | 17% 개선뿐 — 부족 | |
| 병렬 리드아웃 | 열마다 ADC를 두어 50열 동시 | 면적·전력 50배, 채널 간 정합 문제 |
| 채널 수 절반 | 1250채널만 읽기 | 공간 해상도 손실 |
| 관심 영역(ROI)만 스캔 | 필요한 영역만 | 유연성 있음, 실용적 ✅ |
실무적 답: 병렬 리드아웃(열 병렬 ADC) 이 표준 해법입니다. CMOS 이미지 센서가 고속·고해상도를 달성한 방법과 같습니다. 열마다 간단한 ADC를 두면 행 단위로만 순차 처리하면 되므로 속도가 열 수만큼 빨라집니다.
이 설계 판단의 전개가 16-01의 핵심입니다.
이전 ← 05 풀업·오픈드레인·레벨 시프터 | 다음 → 07 카르노맵과 해저드