Table of Contents
디지털 신호는 컴퓨터나 전자 장치에서 연산을 빠르게 수행할 수 있다는 점에서 큰 이점을 지닌다. 하지만 우리 주변에서 접하는 신호는 대부분 아날로그 형태이므로, 이를 먼저 디지털로 변환한 뒤 처리하는 과정이 필요하다. 이번 글에서는 아날로그 신호를 디지털 신호로 전환하는 전반적인 과정을 살펴본 다음, 이때 발생할 수 있는 문제점들을 심도 있게 다루어 보고자 한다.
Digital processing system for continous signal
실생활에서 접하는 아날로그 신호는 연속적인 시간 축을 갖지만, 컴퓨터로 가공하기 위해서는 먼저 디지털 형태로 변환한 뒤 연산을 수행하고, 필요하다면 다시 아날로그 신호로 복원해야 한다. 이러한 전체 과정을 그림으로 표현하면 다음과 같다.
https://legacy.cs.indiana.edu/~port/teach/641/signal.proc.html
- 전처리 필터
- A/D Converter
- D/A Converter
- 후처리 필터
전처리 필터는 아날로그 신호를 샘플링하기 전에 주파수 범위를 제한하여, 샘플링 과정에서 발생할 수 있는 에일리어싱(aliasing)을 미리 방지하는 역할을 한다. 이러한 이유로 전처리 필터를 anti-aliasing 필터라고 부르기도 하며, 이 필터는 뒤에서 더욱 자세히 소개하였다.
이미지를 대상으로 한 anti-alasing 필터의 적용 유무 (출처: wikipedia)
A/D 변환기는 아날로그 신호를 본격적으로 디지털 신호로 변환하는 단계를 말하며, 크게 샘플링, 양자화, 부호화의 세 단계로 이루어져있다.
- 샘플링(Sampling): 연속적인 시간 축의 신호에서 일정한 시간 간격으로 값을 추출하는 과정
- 양자화(Quantization): 추출한 연속값을 이산적인 값으로 매핑하는 과정
- 부호화(Encoding): 양자화된 값을 2진수로 변환하는 과정
샘플링의 예시
D/A 변환기는 이와 반대로, 디지털 신호를 다시 아날로그 신호로 복원하는 기능을 수행한다. A/D 변환 과정을 역순으로 진행하지만, 역-양자화의 단계는 존재하지 않는다. 이미 양자화된 값이 ‘원래의 어떤 실수값’이었는지 정확히 되돌릴 방법이 없기 때문이다.
후처리 필터는 이렇게 복원된 아날로그 파형에서 잔여 고주파 노이즈나 과도 응답(D/A 변환 과정에서 발생)을 제거해주는 과정이다. 쉽게 말해, “복원된 신호를 한 번 더 다듬어 깔끔한 아날로그 신호를 얻는” 역할을 한다.
Sampling
샘플링이란 연속 시간 신호에서 일정 시간 간격 $T_s$ 마다 값을 추출하여, 수열 형태의 이산 신호로 만드는 과정을 말한다. 이때 $T_s$를 샘플링 주기라고 하며, $\frac{1}{T_s}$는 샘플링 주파수, $\omega_s = \frac{2\pi}{T_s}$는 샘플링 각주파수라고 부른다.
\[x[n] = x(nT_s), \quad f_s = \frac{1}{T_s}, \quad \omega_s = \frac{2\pi}{T_s}\]여기서 중요한 점은, 샘플링을 통해 얻은 이산 신호만으로는 그 사이 구간에 있었던 연속 정보가 모두 사라진다는 사실이다. 즉, 간격 $T_s$ 외부의 세밀한 변화가 손실된다는 뜻이다. 손실된 정보를 복원하는 과정은 이후 D/A 변환(Digital-to-Analog Conversion) 단계에서 이루어지는데, 과연 이러한 복원이 완벽히 가능한지 의문이 생긴다. 결론부터 말하면, 주어진 이산 신호가 존재한다고 할 때, 그것을 만들어 낼 수 있는 연속 시간 신호는 무수히 많다. 아래 그림에서 그 이유를 직관적으로 살펴볼 수 있다.
https://www.researchgate.net/figure/Aliasing-in-the-Time-Domain_fig3_265323668
그림처럼 가장 간단한 신호인 정현파를 예로 들어보자. 어떤 정현파 신호 $x(t) = A \cos(\omega_0 t)$ 가 있고 이것을 주기 $T_s$마다 샘플링하게 되면 아래처럼 수열을 얻을 수 있다.
\[x[n]=x(nT_s)=A\cos(\omega_0 n T_s)=A \cos(\Omega_0n)\]위 식에서 $\omega_0 T_s$ 는 이산 시간 신호에서의 각주파수(이를 $\Omega_0$라 부름) 역할을 한다. 하지만 샘플링을 거친 신호는 ‘연속적인 시간 정보’를 잃고, 샘플 순서에 해당하는 이산점들만 남게 된다. 이말은 곧, $\Omega_0$를 만들어내는 $\omega_0$와 $T_s$의 조합이 여러 개 존재할 수 있음을 의미한다.
그렇다면 둘 중 하나의 값이 고정된 경우, 예를 들어 샘플링 주기 $T_s$를 알고 있어서 $\omega_0$는 이에 따라 자동으로 결정이 된다면 완벽히 복원할 수 있을까? 그렇지 않다. 이는 정현파가 $2\pi$를 주기로 반복된다는 사실 때문에 생기는 앨리어싱(aliasing) 현상 때문이다. 가령, 주파수가 $f_0 + kf_s$인 정현파를 샘플링 주파수 $f_s$로 샘플링하면, 주파수 $f_0$인 정현파를 샘플링했을 때와 완전히 똑같은 이산 신호가 만들어진다.
\[\begin{aligned} \cos(2\pi(f_0+kf_s)nT_s) &= \cos(2\pi f_0 nT_s+2\pi kf_s nT_s) \\ &= \cos(2\pi f_0n T_s + 2\pi k n) \\ &= \cos(2\pi f_0 n T_s) \end{aligned}\]Sampling Theorem
샘플링 과정은 아래 그림처럼 연속 신호 $x(t)$를 임펄스 열 $p(t)$과 곱하는, 일종의 변조로 해석할 수 있다. 직관적으로는, $x(t)$에서 $T_s$를 주기로 임펄스가 “찍혀서” 해당하는 값을 뽑아내는 것과 같다.
https://dsp.stackexchange.com/questions/84077/sampling-with-impulse-train
우리가 다루는 신호를 다시 떠올려보면, 푸리에 급수(또는 푸리에 변환) 관점에서 임의의 신호는 다양한 주파수를 갖는 정현파들의 합으로 표현될 수 있었다. 따라서 샘플링된 신호에서도 각 주파수 성분을 온전하게 추출할 수 있어야 하므로, 이를 주파수 영역에서 분석하는 것이 중요하다. 실제로 샘플링된 신호 $x_s(t)$의 푸리에 변환을 계산해보면, 임펄스 열 $p(t)$의 푸리에 변환 $P(\omega)$와 원 신호 $X(\omega)$의 컨볼루션 형태로 나타나게 된다.
\[X_s(\omega) = \mathcal{F}\{x_s(t)\} =\mathcal{F}\{x(t) \cdot p(t)\}=\frac{1}{2\pi}X(\omega)*P(\omega)\]컨볼루션의 특성상, 임펄스 열의 주기적 성질로 인해 원 신호의 스펙트럼 $X(\omega)$가 주파수축 전역에 반복 복사되는 현상이 발생한다. 아래 그림은 이러한 반복 복사 과정에서 샘플링 주파수 $\omega_s$를 부적절하게 설정했을 때, 주파수 중첩(aliasing) 문제가 생기는 예시를 보여준다.

샘플링이 끝난 뒤에는, 원하는 신호 대역만 남기기 위해 저역 통과 필터(low-pass filter)를 사용한다. 그러나 이미 주파수 중첩이 일어난 상태라면, 필터링으로도 원래 신호의 대역을 온전하게 분리할 수 없다. 결국 주파수 중첩이 발생하지 않도록 샘플링 주파수 $\omega_s$를 충분히 크게 잡는 것이 핵심이다.

그렇다면, 얼마나 큰 $\omega_s$가 필요할까? 위 그림을 살펴보면, 원래 신호가 차지하는 대역폭이 $\omega_b$ 라고 할 때, $2\omega_b$ 이상의 샘플링 주파수를 확보해야 반복된 스펙트럼이 서로 겹치지 않는다는 것을 알 수 있다. 이러한 사실을 공식화한 것이 바로 나이퀴스트-섀넌(Nyquist-Shannon) 샘플링 정리이다. 이는
최대 주파수가 $\omega_b$인 신호를 완벽히 복원하려면,
샘플링 각주파수 $\omega_s$가 적어도 $2\omega_b$ 이상이어야 한다.
라고 요약할 수 있으며, 실제 디지털 신호처리나 통신 시스템 설계의 핵심이론으로 널리 적용되고 있다.
Signal reconstruction
앞서 설명한 대로, 스펙트럼이 주기적으로 반복될 때 서로 겹치지만 않으면 원래 신호를 정확히 복원할 수 있다고 했다. 그러나 실제 환경에서는 이 이론이 그대로 들어맞지 않는 경우가 많다. 그 주된 이유는 두 가지이다:
- 이상적인 저역 통과 필터 $H(\omega)$를 구현하기가 불가능하다.
-
일상생활 신호는 유한 길이를 갖고 있다.
이는 곧, 해당 신호의 스펙트럼 대역이 이론적으로 무한히 뻗어있다는 의미이다. 앞에서 보았던 파란색 삼각형 처럼 주파수 범위가 깔끔하게 제한되지 않으므로, 결국 주파수 중첩 문제를 피하는 것이 불가능하다.
이러한 현실적 제약을 감안하면, 주파수 중첩문제를 완벽하게 해결하는 대신, 가능한 한 최소화하는 쪽으로 접근해야 한다. 대표적인 2가지 방안은 다음과 같다:
-
중첩을 완전히 피하기 어렵다면 최소화하자.
즉, 샘플링 주파수를 충분히 높게 잡아 중첩 구간을 최대한 줄이는 것이다.
-
스펙트럼 대역을 적절히 제한하자.
신호가 사실상 무한 대역폭을 가질 수 밖에 없다면, 저역 통과 필터 등을 사용해 정보 손실을 최소화하면서 대역을 제한하는 것이다.
Ideal reconstruction
디지털 신호를 아날로그 형태로 가장 이상적으로 복원하기 위해서는, 앞서 봤듯이 이상적인 저역 통과 필터(사각 필터)를 적용하면 된다. 이는 주파수 영역에서 사각형 형태의 필터 $H(\omega)$로 표현할 수 있으며, 시간 영역에서는 $\text{sinc}$ 함수가 된다. 다시 말해, 이상적인 D/A 변환은 $\text{sinc}$ 함수들의 가중합 형태로 이해할 수 있다.
\[H(\omega)=\begin{cases} 1, & |\omega| \le \omega_c, \\ 0, \quad & \text{그 외} \end{cases}\]이 필터의 시간 영역 임펄스 응답 $h(t)$는 푸리에 역변환을 통해 다음과 같이 유도된다:
\[\begin{aligned} h(t)&=\mathcal{F}^{-1} \{H(\omega)\}=\frac{1}{2\pi} \int_{-\omega_c}^{\omega_c} 1\cdot e^{j\omega t} d\omega \\ &= \frac{1}{2\pi} \Bigl[\underbrace{\frac{e^{j\omega t}}{j t}}_{\text{적분 결과}} \Bigr]_{-\omega_c}^{\omega_c} = \frac{1}{2\pi} \cdot \frac{1}{j t} \Bigl(e^{j\omega_c t} - e^{-j\omega_c t}\Bigr) = \frac{1}{2\pi} \cdot \frac{2j \,\sin(\omega_c t)}{j t} \\ &= \frac{\sin(\omega_c t)}{\pi t} = \frac{\omega_c}{\pi} \text{sinc}\left( \frac{\omega_c t}{\pi} \right). \end{aligned}\]다시, 원래의 신호에 low pass filter를 적용한 것은 아래 수식으로 나타난다:
\[\begin{aligned} X_r(\omega)=X_s(\omega)\cdot H(\omega) \quad \Longleftrightarrow \quad x_r(t) &= x_s(t) * h(t) \\ &= \sum_{k=-\infty}^{\infty} x(kT_s) \cdot T_s \frac{\omega_c}{\pi} \text{sinc}\left( \frac{\omega_c(t-kT_s)}{\pi} \right) \end{aligned}\]결국 복원된 신호 $x_r(t)$는 “ $\text{sinc}$ 함수가 $kT_s$ 마다 시프트되어 겹쳐진 것”으로, 각 샘플 $x[k]$ 이 해당 $\text{sinc}$ 파형의 진폭을 결정한다. 이를 $\text{sinc}$ 보간 또는 이상적 재구성(reconstruction)이라 부르며, 나이퀴스트 샘플링 정리가 성립하는 조건하에서 원 신호를 이론상 완벽히 복원할 수 있음을 보여준다.
https://electronics.stackexchange.com/questions/354346/how-is-the-sinc-function-used-to-reconstruct-an-analog-signal-from-a-digital-sig
Zero order hold reconstruction
이론적으로는 무한 길이의 $\text{sinc}$ 필터를 이용해 아날로그 신호를 완벽히 복원할 수 있지만, 실제 아날로그 회로나 DSP 기법으로 이를 구현하는 것은 사실상 불가능하다. 따라서 보다 현실적인 방법들이 사용되는데, 그 중 가장 널리 쓰이는 대안이 영차 홀드(Zero-Order Hold, ZOH) 방식이다.

영차홀드의 아이디어는 매우 간단하다. 각 샘플이 된 값을 시작점으로 하는 사각형을 그리는 것이다. 마치 모두 그려놓고 보면 구분구적법과 매우 비슷하게 보여진다. 영차홀드는 한 샘플링 주기 $T_s$ 동안 그 값을 그대로 유지하기에 임펄스 응답은 사각펄스로서 주어진다.
영차 홀드의 아이디어는 간단하다. 각 샘플의 값을 일정 시간 $T_s$동안 그대로 유지하는 것이다. 샘플링 주기 $T_s$마다 ‘사각형 파형’을 그리는 형태인데, 이를 모아 보면 구분구적법을 연상시키기도 한다. 이때, ZOH의 임펄스 응답은 사각 펄스로 표현할 수 있다:
\[h_{zoh}(t)= u(t) - u(t-T_s) \quad\Longleftrightarrow\quad H_{zoh}(\omega)=\frac{1-e^{-j \omega T_s}}{j\omega} = T_s\,\text{sinc}\left(\frac{\omega}{\omega_s}\right) e^{-j\frac{T_s}{2}\omega}\]그러므로 샘플링 신호 $x_s(t)$와의 컨볼루션으로 복원된 신호를 얻으면,
\[x_r(t)=x_s(t)*h_{zoh}(t)=\sum_{k=-\infty}^{\infty} x(k T_s)\cdot h_{zoh}(t-kT_s).\]영차홀드(ZOH)는 구현이 매우 쉽고, 샘플링 주파수 $f_s$를 충분히 높게 잡으면 꽤 양호한 복원 품질을 보인다는 장점이 있다. 이 때문에 실무에서 가장 흔히 사용되는 복원 방식 중 하나이다.
영차 홀드는 다음 샘플 값이 발생할 때까지,
현재의 샘플 값을 그대로 유지하는 형태의 신호 복원 방법이다.
First order hold reconstruction (linear interpolation)
이론적으로 좀 더 높은 복원 성능을 기대할 수 있는 방법은 일차 홀드(First-Order Hold, FOH) 방식이다. 일차 홀드는 샘플들을 직선으로 이어 원래 파형을 복원하기 때문에, 선형 보간(linear interpolation)이라고도 불린다. 즉, 사각형이 아닌 삼각형 형태의 파형을 사용하여 꺾은선 그래프처럼 신호를 복원하는 셈이다.
\[h_{foh}(t)=\begin{cases} \frac{1}{T_s}t + 1, & -T_s < t <0 \\ -\frac{1}{T_s}+1, & 0 < t < T_s \\ 0, & \text{그 외}\end{cases} \quad \Longleftrightarrow \quad H_{foh}(\omega) = T_s \,\text{sinc}^2\left(\frac{\omega}{\omega_c}\right).\]
간단히 말해, 두 개의 샘플 값 사이를 직선으로 보간하므로, ZOH보다 더 자연스러운 복원을 기대할 수 있다. 하지만 회로나 소프트웨어 구현이 ZOH에 비해 복잡하고 고속 처리가 필요한 경우에는 계산 비용이나 하드웨어 구성이 부담이 될 수 있다. 그래도 정밀도가 중요한 곳에서는 FOH가 ZOH보다 더 나은 결과를 제공하기도 한다.
Summary
아날로그 신호를 디지털로 바꾸는 과정은 전처리 필터, A/D 변환기, D/A 변환기, 후처리 필터로 구성되어 있었다. 특히 A/D 변환 과정에서는 샘플링, 양자화, 부호화의 과정을 거치게 되며 이중 샘플링 과정에서 발생할 수 있는 문제점들 그리고 샘플링 주파수의 설정 방법등을 샘플링 정리를 통해 살펴보았다.
Nyquist frequency는 신호가 갖는 최고 주파수의 2배에 해당하는 주파수로 원래의 아날로그 신호로 복원하기 위해서는 이보다 더 높은 주파수를 갖게 샘플링을 해야함을 보았다. 사각 필터는 시간 축에서 무한한 길이의 신호로 구성되어 있는데 현실적으로 이를 구현하는 것은 매우 어렵기 때문에 영차홀드 또는 일차홀드를 사용해 근사하는 방법도 같이 보았다.
Start the conversation