회로설계/ADC

ADC - Gray Code

semikang 2026. 6. 14. 22:20

그레이 코드는 생각보다 역사가 매우 깊은 코드입니다. 숫자가 대칭적으로 거울처럼 반사되는 구조를 가지고 있어 'Reflective-binary'라고도 부릅니다.

표(Figure 2.3)의 맨 오른쪽 열에 있던 코드가 바로 이것입니다. 예를 들어 10진수 7은 이진수로 0111이지만, 그레이 코드는 0100으로 매핑되어 있습니다.

컴퓨터 CPU나 ALU 내부에서 덧셈이나 곱셈을 할 때는 그레이 코드가 규칙성이 깨져서 연산 회로가 훨씬 복잡해지기 때문에 쓰이지 않습니다. 하지만 데이터 컨버터(ADC) 설계나 고속 디지털 인터페이스에서는 노이즈와 치명적인 에러를 막아주는 엄청난 무기가 됩니다.

 

그레이 코드의 존재 이유: Glitch 방지

이진수에서 0111에서 1000으로 갈 때는 4개의 비트가 동시에 0은 1로, 1은 0으로 뒤집혀야 합니다. 하지만 실제 물리적인 반도체 회로에서는 게이트마다 지연 시간(Delay)이 미세하게 다르기 때문에, 4개 비트가 완벽하게 동시에 바뀔 수 없습니다. 예를 들어 어떤 비트가 아주 미세하게 먼저 바뀌면, 중간에 1111이나 0000 같은 엉뚱한 임시 코드가 아주 짧은 순간(수십~수백 피코초) 나타났다가 사라지는 디지털 글리치(Glitch) 노이즈가 발생합니다. 반면, 그레이 코드는 어떤 숫자로 넘어가든 오직 딱 1개의 비트만 바뀌기 때문에 이러한 타이밍 불일치로 인한 대형 전송 에러가 원천적으로 발생하지 않습니다.

 

일부 ADC들은 이를 내부적으로 활용한 다음, 외부에서 사용할 수 있도록 그레이 코드를 다시 이진 코드로 변환(Convert)하여 출력합니다.

 

요약하자면,

그레이 코드는 숫자가 바뀔 때 오직 1비트만 변하는 특성이 있어, 고속 ADC 내부 인코더 설계 시 스위칭 타이밍 미스매치로 인한 디지털 글리치(Glitch) 및 데이터 왜곡을 막기 위해 필수적으로 사용된 후 최종 단에서 일반 이진수로 변환됩니다.

 

그레이코드 <->이진수 디지털 회로 구현 방법

그레이 코드에서 이진수로, 그리고 이진수에서 그레이 코드로의 변환은 그림 2.8에 나타난 것처럼 XOR(Exclusive-OR, 배타적 논리합) 논리 함수를 통해 쉽게 구현 됩니다.

'회로설계 > ADC' 카테고리의 다른 글

ADC - 샘플링 이론(1) ADC구조  (0) 2026.06.17
ADC - 정적 전달 함수 및 DC오차  (1) 2026.06.16
ADC - Bipolar Codes  (0) 2026.06.16
ADC - Unipolar Codes  (0) 2026.06.14
ADC - Coding, Quantizing 용어 설명  (1) 2026.06.14