안티에일리어싱 필터 설계
한 줄 요약 — 차수·응답·샘플링률을 함께 정합니다. 오버샘플링(oversampling)이 거의 항상 정답입니다.
설계 절차
1) 신호 대역 확정 2) 필요 감쇠 결정 — ADC 분해능(resolution)분해능 resolutionADC 가 구분할 수 있는 가장 작은 전압 차이로, 비트 수와 기준전압으로 정해집니다.자세히 보기 →에서 3) 샘플링률 후보 설정 4) 필요 차수 계산 5) 응답 종류 선택 (베셀 / 버터워스 / 체비셰프) 6) 실현 가능성 검토 → 안 되면 3번으로 돌아가 조정
1~2단계: 필요 감쇠
A_req이득 (req)gain (req)n비트 수 또는 개수number of bits or count| ADC | 감쇠 |
|---|---|
| 10비트 | 62 dB |
| 12비트 | 74 dB |
| 14비트 | 86 dB |
| 16비트 | 98 dB |
| 24비트 | 146 dB (비현실적 → 오버샘플링 필수) |
💡 실무적으로는 ADC의 실효 분해능(ENOB)실효 비트 ENOBADC 가 실제로 쓸 수 있는 비트 수로, 데이터시트의 비트 수보다 늘 1~3비트 낮습니다.자세히 보기 → 기준으로 잡습니다. 12비트 ADC의 ENOB가 11비트라면 68 dB면 충분합니다.
3~4단계: 차수 계산
A_req이득 (req)gain (req)f_sig신호 주파수signal frequencyHzf_s샘플링 주파수sampling frequencyHzn비트 수 또는 개수number of bits or count표 (12비트, 74 dB)
| dB/차수 | 필요 차수 | |
|---|---|---|
| 2.5 | 3.5 | 21 ❌ |
| 4 | 9.5 | 8 |
| 10 | 19.1 | 4 |
| 20 | 25.6 | 3 |
| 40 | 31.8 | 3 |
| 100 | 39.9 | 2 |
| 1000 | 60 | 2 (여유) |
를 10 이상으로 잡으면 4차 이하로 해결됩니다.
5단계: 응답 선택
| 응답 | 통과대역 | 차단(cutoff) | 군지연(group delay) | 용도 |
|---|---|---|---|---|
| 베셀 | 완만한 롤오프 시작 | 완만 | 평탄 ✅ | 파형 보존이 중요 |
| 버터워스 | 최대 평탄 | 중간 | 변동 | 범용 |
| 체비셰프 I | 리플(ripple)리플 ripple직류가 되다 만 나머지 교류분으로, 평활 커패시터가 얼마나 큰지로 정해집니다.자세히 보기 → | 급격 | 심한 변동 | 주파수 분리 |
| 타원 | 양쪽 리플 | 최급격 | 최악 | 좁은 전이대역 |
왜 군지연이 중요한가
군지연이 주파수에 따라 다르면 각 주파수 성분이 다른 시간에 도착해 파형이 변형됩니다.
| 신호 | 군지연 중요? |
|---|---|
| 신경 스파이크(spike) | ✅ 매우 (파형으로 뉴런 분류) |
| 심전도(ECG) QRS | ✅ |
| 정현파 진폭 측정 | ❌ |
| 주파수 분석 (FFT) | ❌ (위상(phase) 보정 가능) |
| 과도 응답 측정 | ✅ |
파형 모양이 정보인 측정에서는 베셀을 쓰세요.
베셀의 대가
같은 차수에서 차단이 훨씬 완만합니다.
| 4차, 에서 감쇠 | |
|---|---|
| 버터워스 | −80 dB |
| 베셀 | −60 dB |
20 dB 손해 → 차수를 올리거나 오버샘플링으로 보완해야 합니다.
★ 오버샘플링 전략 (권장)
이점
| 이점 | 설명 |
|---|---|
| 아날로그 필터 단순화 | 부품↓, 잡음↓, 왜곡↓, 비용↓ |
| 분해능 향상 | OSR당 비트 |
| 선형 위상 | 디지털 FIR로 파형 완벽 보존 |
| 유연성 | 필터 특성을 나중에 변경 가능 |
| 다채널에 유리 | 채널당 아날로그 부품 최소 |
대가
| 대가 | 설명 |
|---|---|
| ADC 속도·전력 | 비례 |
| 데이터량 | 비례 — 다채널이면 심각 |
| 디지털 처리 부하 |
계산 예제
신호 5 kHz, 12비트, 32채널
전략 A: 저샘플링 + 고차 아날로그
- = 20 kSPS, 8차 필터
- 채널당 OP앰프 4개 → 128개 ❌
- 데이터: MB/s
전략 B: 오버샘플링 + 저차 아날로그
- = 200 kSPS, 3차 필터 (패시브 RC 1차 + 액티브 2차)
- 채널당 OP앰프 1개 → 32개 ✅
- 데이터: MB/s
- 디지털 데시메이션(decimation) 후 저장: 1.28 MB/s
전략 C: 극한 오버샘플링 + 패시브만
- = 1 MSPS, 1차 RC만
- → dB/차수 → 2차면 충분 (1차는 46 dB로 부족)
- 채널당 저항 1개 + 커패시터(capacitor) 2개 → OP앰프 0개 ✅✅
- 데이터: 64 MB/s (전송 부담)
B가 대개 최적점입니다. 부품과 데이터량의 균형이 좋습니다.
★ 다채널 시스템의 함정
멀티플렉스 ADC에서 채널당 실효 샘플링률 = 전체 / N입니다.
필터는 채널당 샘플링률 기준으로, 멀티플렉서(multiplexer) 앞에 채널마다 있어야 합니다 (10-04).
멀티플렉싱할 때 필터는 MUX 앞, 채널마다 하나씩 둡니다.
| 위치 | 결과 |
|---|---|
| 각 채널마다 (MUX 앞) ✅ | 채널마다 제대로 대역 제한됨. 부품은 N배 |
| MUX 뒤에 하나만 ❌ | 필터가 채널 전환 파형까지 뭉개 크로스토크가 됨 |
MUX 뒤에 필터를 두면, 채널이 바뀔 때마다 필터가 이전 채널 값에서 천천히 옮겨가므로 이전 채널의 값이 다음 채널에 섞입니다.
멀티플렉서 뒤의 필터는 안티에일리어싱 역할을 하지 못합니다.
시뮬레이션으로 확인
# examples/13-signal-chain/aa-filter-3rd.yaml
meta:
name: 3차 안티에일리어싱 필터 (패시브 1차 + 액티브 2차)
lesson: docs/13-signal-chain/06-antialiasing-design.md
components:
- {ref: VP, type: vdc, value: 5}
- {ref: VN, type: vdc, value: -5}
- {ref: VIN, type: vac, value: 1}
# 1차 패시브 RC (10 kHz)
- {ref: RP, type: r, value: 1.6k}
- {ref: CP, type: c, value: 10n}
# 2차 살렌-키 (5 kHz, 베셀)
- {ref: R1, type: r, value: 10k}
- {ref: R2, type: r, value: 10k}
- {ref: C1, type: c, value: 3.3n}
- {ref: C2, type: c, value: 2.2n}
- {ref: U1, type: opamp, model: OPA320}
nets:
VCC: [VP.p, U1.'v+']
VEE: [VN.p, U1.'v-']
IN: [VIN.p, RP.1]
P1: [RP.2, CP.1, R1.1]
MID: [R1.2, R2.1, C1.1]
INP: [R2.2, C2.1, U1.'in+']
OUT: [U1.out, U1.'in-', C1.2]
GND: [VP.n, VN.n, VIN.n, CP.2, C2.2]
analyses:
- {type: ac, sweep: dec, points: 50, fstart: 100, fstop: 10MEG}
expect:
- {measure: gain_db, node: OUT, at: 5k, analysis: ac, value: -3, tol: 2}
- {measure: gain_db, node: OUT, at: 195k, analysis: ac, max: -74}= 200 kSPS일 때 195 kHz에서 −74 dB 이상 감쇠하는지 확인하세요.
💡 패시브 RC를 앞에 두는 이유: 살렌-키의 고주파 누설(7-05)을 막고, OP앰프에 들어가기 전에 큰 고주파를 미리 제거해 왜곡을 방지합니다.
⚖️ 트레이드오프 종합
| 선택 | ✅ | ⚠️ |
|---|---|---|
| 오버샘플링 | 필터 단순, 분해능↑, 유연 | ADC 속도·전력·데이터량 |
| 고차 아날로그 필터 | 낮은 샘플링률 | 부품↑, 잡음↑, 위상 왜곡, 감도↑ |
| 베셀 | 파형 보존 | 차단 완만 → 차수↑ |
| 버터워스 | 급격한 차단 | 링잉(ringing), 파형 왜곡 |
| 패시브 앞단 RC 추가 | 누설 방지, OP앰프 보호 | 신호 감쇠(작음), 부품 |
| 필터 없음 | 부품 0 | 에일리어싱(aliasing)에일리어싱 aliasing샘플링 주파수의 절반보다 높은 성분이 낮은 주파수인 척 되접혀 들어오는 현상으로, 한 번 섞이면 되돌릴 수 없습니다.자세히 보기 → — 복구 불가 ❌ |
🔌 실제 쓰임새
| 시스템 | 구성 |
|---|---|
| 단채널 정밀 | 4~5차 베셀 + 4× 오버샘플링 |
| 다채널 (32ch+) | 1~2차 패시브/액티브 + 20~50× 오버샘플링 |
| ΔΣ ADC | 내장 오버샘플링 → 간단한 RC면 충분 |
| 오디오 | 시그마-델타 (필터 거의 불필요) |
| 고속 (MHz) | 고차 액티브 또는 LC |
💡 ΔΣ(시그마-델타(sigma-delta)) ADC를 쓰면 안티에일리어싱이 매우 쉬워집니다. 내부에서 수십~수백 배 오버샘플링하므로, 외부에는 1차 RC만 있으면 됩니다. 생체 신호용 AFE 칩이 대부분 ΔΣ를 쓰는 이유입니다.
⚠️ 이상과 실제의 차이
| 이상 | 실제 |
|---|---|
| 필터가 계산대로 | 부품 오차로 ±20% |
| 완전 차단 | 살렌-키 고주파 누설 |
| 신호만 접힘 | 잡음도 접힘 — 광대역 잡음이 배로 |
| 필터 위치 무관 | MUX 앞, 채널마다 |
| 커패시터 값 안정 | X7R은 온도·DC 바이어스로 변동 → C0G 필수 |
연습문제
문제 1. 신호 2 kHz, 14비트 ADC, = 50 kSPS. 필요 차수는?
풀이
A_req이득 (req)gain (req)n비트 수 또는 개수number of bits or count문제 2. 위 문제에서 베셀을 쓰려면? (베셀은 버터워스보다 약 5 dB/차수 불리하다고 가정)
exercises/13-06-bessel-order.yaml풀이
n비트 수 또는 개수number of bits or count여전히 4차로 가능합니다. 다만 여유가 적으므로 실제 응답을 시뮬레이션으로 확인해야 합니다.
더 안전한 대안: 를 100 kSPS로 올리면 , dB/차수(베셀 28.8) → 3차면 충분.
문제 3. 64채널, 채널당 신호 1 kHz, 12비트. 어떻게 설계하겠습니까?
exercises/13-06-64ch-design.yaml풀이
핵심 제약: 채널당 부품 수 = 시스템 규모
전략 비교:
| 전략 | (전체) | 채널당 | 필터 차수 | 채널당 부품 | 데이터량 |
|---|---|---|---|---|---|
| A | 256 kSPS | 4 kSPS | 9차 ❌ | OP앰프 5 | 0.5 MB/s |
| B | 640 kSPS | 10 kSPS | 4차 | OP앰프 2 | 1.3 MB/s |
| C | 3.2 MSPS | 50 kSPS | 2차 | OP앰프 1 | 6.4 MB/s |
| D | 12.8 MSPS | 200 kSPS | 1차(RC만) | OP앰프 0 ✅ | 26 MB/s |
권장: C 또는 D
D의 매력: 채널당 저항 1개 + 커패시터 1개만 있으면 됩니다. 64채널이면 부품 128개 — 관리 가능합니다.
D의 문제: 데이터량 26 MB/s. USB 2.0(35 MB/s 실효)으로는 아슬아슬하고, 무선은 불가능합니다.
절충 — 디지털 데시메이션:
- ADC는 12.8 MSPS로 읽되, FPGA/MCU에서 즉시 디지털 필터 + 데시메이션
- 저장·전송은 채널당 4 kSPS로 → 0.5 MB/s ✅
- 아날로그는 RC만, 디지털에서 선형 위상 필터
최종 설계:
⚠️ MUX 세틀링 확인 필수: 12.8 MSPS면 채널당 78 ns. 12비트 세틀링에 가 필요하므로 ns → 소스 임피던스와 배선 용량을 그에 맞춰야 합니다 (9-06).
이 설계 흐름이 16-01의 액티브 어레이와 정확히 같은 구조입니다. 채널 수가 많아지면 아날로그를 단순화하고 디지털로 밀어내는 것이 유일한 해법입니다.
이전 ← 05 DC 오프셋 제거 | 다음 → 07 락인 검출 개요