모든 이야기

빠른 파동이 느린 파동으로 보이는 순간: 샘플링과 앨리어싱

바퀴가 거꾸로 도는 이유를 ADC도 겪는다

영화 속 자동차 바퀴가 실제와 반대로 도는 듯 보일 때가 있다. 카메라가 기록한 순간 사이에서 바퀴가 얼마나 움직였는지 빠져 있기 때문이다. ADC도 연속 전압을 일정한 순간에만 읽는다. 숫자의 소수점을 아무리 정밀하게 기록해도, 읽지 않은 순간의 움직임까지 자동으로 알 수는 없다.

이때 서로 다른 연속 신호가 같은 샘플열로 구별되지 않는 현상이 앨리어싱이다. 단순히 파형이 조금 거칠어지는 문제가 아니다. 실제로는 없던 낮은 주파수 성분이 측정 결과에 나타나 원인을 잘못 짚게 만들 수 있다. ADC의 비트 수가 전압축의 눈금이라면, 샘플링률은 시간축에서 정보를 붙잡는 간격이다. 두 조건을 따로 설계해야 한다.

‘두 배’에는 신호 대역이라는 전제가 있다

우선 직류부터 최대 주파수 B까지로 대역이 제한된, 보통의 실수 기저대역 신호를 생각하자. 이상적으로 일정한 간격에 샘플링하고 적절히 복원할 때 쓰는 조건은 다음과 같다.

f_s > 2B

f_s는 초당 샘플 수이고 B는 입력에 포함된 최고 주파수다. 경계에 정확히 걸린 정현파는 위상에 따라 샘플이 모두 0이 되는 등 애매함이 생길 수 있어 여기서는 엄격한 부등호로 썼다. 이는 연속 신호를 구별하기 위한 이상적 조건이지, 샘플 사이를 직선으로 잇기만 하면 완벽한 파형이 나온다는 뜻은 아니다. ADI의 샘플링 설명은 이 조건과 샘플링 후 반복되는 주파수 스펙트럼을 함께 다룬다.

단일 정현파가 첫 번째 나이퀴스트 구간으로 접혀 보이는 주파수는 이렇게 계산할 수 있다.

f_alias = |f_in − k f_s|

f_in은 원래 입력 주파수다. k는 f_in/f_s에 가장 가까운 정수이며, 이 선택으로 결과가 0부터 f_s/2 사이가 된다. 예를 들어 초당 1억 번 읽는 100 MS/s ADC에 70 MHz 신호를 넣으면 30 MHz 성분으로 나타난다. 이때 출력 숫자만 보고 원래 입력이 30 MHz였는지, 더 높은 곳에서 접혀 왔는지 결정할 수 없다. 입력의 대역을 미리 제한해야 하는 이유다.

필터는 숫자로 바꾸기 전에 일해야 한다

관심 신호가 20 MHz까지라고 해도 실제 배선에는 더 높은 주파수의 간섭과 잡음이 함께 들어올 수 있다. ‘측정하려는 신호의 주파수’와 ‘ADC 단자에 실제 도착하는 모든 성분’은 다르다. 따라서 기저대역 측정에서는 ADC 앞의 아날로그 저역통과 필터로 원치 않는 성분을 충분히 약하게 만든다.

이미 관심 대역 안으로 접힌 간섭은 원하는 신호와 섞여 있다. 뒤에 디지털 저역통과 필터를 붙여도 같은 주파수에 겹친 둘을 일반적으로 분리할 수 없다. NI의 안티앨리어싱 필터 설명도 샘플링 전 필터의 위치와 현실적인 전이 대역을 강조한다.

현실의 필터는 통과와 차단을 수직 절벽처럼 바꾸지 못한다. 관심 대역은 잘 통과시키면서, 그 안으로 접혀 들어올 성분을 허용 오차보다 작게 줄일 공간이 필요하다. 필요한 감쇠량도 간섭의 원래 크기에 달려 있다. 샘플링률을 높이면 이 전이 구간을 넓힐 수 있지만 ADC와 후단 처리의 속도·전력·데이터량에 비용이 생긴다. 그래서 ‘딱 두 배면 설계 완료’라고 할 수 없다.

높은 주파수를 일부러 접어 쓰기도 한다

그렇다면 높은 주파수를 낮은 샘플링률로 읽는 통신 수신기는 모두 잘못된 걸까. 그렇지는 않다. 신호가 어느 좁은 대역에 있는지 이미 알고, 대역통과 필터로 다른 대역을 제거한 뒤, 복제된 스펙트럼이 겹치지 않도록 샘플링률을 골라 쓰는 대역통과 샘플링이 있다.

다만 대역폭만 보고 아무 샘플링률이나 고르면 안 된다. 주파수 대역의 위치와 접히는 방향까지 계획해야 하며, ADC의 아날로그 입력 회로는 원래 높은 주파수를 받아낼 수 있어야 한다. ADI의 언더샘플링 설명이 구분하는 조건이다. 앨리어싱을 이용할 수 있는 것은 입력 대역을 통제했기 때문이다. 무엇이 들어올지 모르는 상태에서 생긴 겹침은, 더 많은 비트로 저장해도 되돌릴 수 없다.

빠른 파동이 느린 파동으로 보이는 순간: 샘플링과 앨리어싱 · ariser