디지털 통신에서 소리 같은 신호를 "0과 1"로 바꾼다고 배웠습니다. 이번에는 그 변환이 실제로 어떤 순서로 이루어지는지 살펴봅니다. 시간에 따라 부드럽게 변하는 아날로그 신호를 컴퓨터가 다룰 수 있는 디지털 신호로 바꾸는 장치를 ADC(Analog-to-Digital Converter, 아날로그-디지털 변환기)라고 부르며, 이 변환은 표본화 → 양자화 → 부호화의 3단계로 이루어집니다.
ADC의 세 단계: 표본화 → 양자화 → 부호화
아날로그 신호는 시간의 모든 순간마다 값을 가지고 있어서, 그 자체로는 유한한 숫자로 담을 수 없습니다. 그래서 먼저 일정한 시간 간격(표본화 주기)마다 신호의 값을 하나씩 "찍어서" 뽑아냅니다. 이렇게 뽑아낸 값을 표본(sample)이라 하고, 1초에 몇 번 뽑는지를 표본화 주파수(sampling rate)라고 합니다.
표본을 너무 드물게 뽑으면 원래 신호를 되살릴 수 없습니다. 나이키스트(Nyquist) 표본화 정리에 따르면, 표본화 주파수가 신호에 담긴 가장 높은 주파수의 2배보다 커야 원래 신호를 완전하게 복원할 수 있습니다. 이 조건을 지키지 못하면 원래와 전혀 다른 낮은 주파수의 신호로 잘못 해석되는데, 이를 에일리어싱(aliasing)이라고 부릅니다.
같은 표본(점)이라도, 표본화가 부족하면 완전히 다른 신호(오른쪽 점선)로 오인될 수 있습니다.
표본화로 뽑아낸 값은 여전히 연속적인(무한히 세밀한) 값입니다. 컴퓨터는 유한한 개수의 값만 다룰 수 있으므로, 미리 정해 둔 계단 모양의 단계(레벨) 중 가장 가까운 값으로 반올림합니다. 이를 양자화라고 합니다. 단계를 몇 비트로 나누는지에 따라 레벨의 개수가 정해지는데, n비트라면 2ⁿ개의 레벨을 사용합니다(예: 8비트라면 256단계).
반올림을 하기 때문에 원래 값과 양자화된 값 사이에는 아주 작은 차이가 생기는데, 이를 양자화 오차(quantization error)라고 합니다. 레벨(비트 수)이 많을수록 계단이 촘촘해져 오차는 줄어들지만, 표현해야 할 숫자의 범위가 커져 더 많은 비트가 필요해집니다.
양자화로 얻은 레벨 번호(예: 0~255)를 이진수(0과 1의 조합)로 바꾸는 마지막 단계입니다. 예를 들어 8비트 양자화에서 레벨이 "13"이었다면 이진수로는 "00001101"처럼 8개의 0과 1로 표현됩니다. 이렇게 만들어진 0과 1의 나열이 바로 우리가 저장하고 전송하는 디지털 신호입니다.
표본화 개수와 양자화 비트 수를 바꿔 보면서, 원래 신호(회색 점선)와 디지털로 바뀐 신호(초록 계단선) 사이의 차이가 어떻게 달라지는지 실험해 보세요.
┄ 원래 아날로그 신호 ■ 양자화된 디지털 신호(계단) ● 표본점 표본화 개수를 줄이면 파형의 세부 모양을 잃고(에일리어싱 위험), 비트 수를 줄이면 계단이 굵어지며 양자화 오차가 커집니다.
받은 쪽에서는 반대 순서로 되돌립니다. 이진수 부호를 다시 레벨 값으로 풀고, 각 표본 값을 다음 표본이 오기 전까지 잠깐 유지시켜 계단 모양의 신호를 만든 뒤, 저역통과필터(low-pass filter)로 계단의 뾰족한 부분을 부드럽게 다듬으면 원래의 아날로그 신호와 매우 가까운 모습으로 되살아납니다.
아날로그 신호를 표본화·양자화·부호화로 디지털로 바꾸는 과정을 실험해 봅니다.