본문 바로가기
코딩취미/프로그램 지식

ADC 관련 기본 : Missing Code 과 ENOB

by 브링블링 2025. 3. 28.
반응형

ADC 관련 기본 : Missing Code 과 ENOB

ADC(Analog to Digital Converter) 설계와 테스트에서 중요한 용어인  "Missing Code" 와 "ENOB(Effective Number of Bits)" 에 대해서 내용을 정리했습니다. 이 2가지는 실제 설계나 테스트할 때 정확도와 품질을 평가하는 핵심 포인트 입니다.

⚠️ Missing Code (미싱 코드)

✅ 개념 정의

Missing Code란, 이론적으로 존재해야 할 디지털 코드 값 중 일부가 실제 ADC 출력에서 아예 나타나지 않는 현상을 의미합니다.

 

예를 들어 8비트 ADC는 0 ~ 255 (총 256개) 코드 값을 갖지만,
테스트 중 특정 코드(예: 127번)가 절대 출력되지 않는다면, 그것이 Missing Code 입니다.


❗ 원인

  • DNL 오류가 –1 LSB 미만일 경우 발생
  • 내부 Comparator 오차, 클럭 지터, 비선형성 등
  • 레이아웃 불균형이나 캘리브레이션 실패

📌 문제점

  • ADC의 해상도 저하
  • 데이터 왜곡
  • 제어 시스템에서 신뢰성 저하

🔍 예시

아날로그 입력 디지털 출력
1.23V 126
1.24V 126
1.25V 128

→ 127번 코드가 전혀 나타나지 않음 → Missing Code 발생


🔢 ENOB (Effective Number of Bits)

✅ 개념 정의

ENOB는 실제 ADC가 가진 "유효한 비트 수"를 나타내는 지표로,
이상적인 ADC 대비 노이즈, 왜곡 등을 고려한 실제 정밀도를 평가합니다.


📐 공식

ENOB는 SNR(Signal-to-Noise Ratio)을 기반으로 아래와 같이 계산:

  • 단위: bit
  • SNR: 신호 대 잡음비 (dB)

❗ 왜 중요한가?

  • ADC의 명시된 해상도(예: 12bit)가 실제로 12bit처럼 작동하지 않을 수 있음
  • 시스템의 정확도 한계를 결정함
  • 고정밀 측정, 오디오 처리, 센서 신호 등에 매우 중요
반응형

📊 예시

  • 이론상 12bit ADC → 최대 SNR =

하지만 측정된 SNR이 66.0 dB라면?

→ 실질적으로는 약 10.6bit 정도의 정밀도만 가지고 있다는 뜻


🐍 파이썬 예제 코드

def calc_enob(snr_db):
    return (snr_db - 1.76) / 6.02

snr = 66.0
enob = calc_enob(snr)
print(f"ENOB: {enob:.2f} bits")

📌 INL / DNL / Missing Code / ENOB 관계 정리

항목 의미 영향
DNL 코드 간 step 불균형 Missing Code 발생 가능성
INL 전체 선형성 왜곡 시스템 오차, 정밀도 저하
Missing Code 누락된 디지털 코드 측정 누락, 해상도 저하
ENOB 실제 유효 비트 수 전체 ADC 성능의 종합 척도

📦 실무 팁

  • DNL < –1 LSB → Missing Code 체크 필수
  • ENOB가 낮다 → 노이즈 필터링, 전원 안정화 필요
  • 성능 평가 시 FFT로 SNR → ENOB 계산 자주 활용

 

반응형