REMI Lab강의 노트

Wireless Embedded Systems E03

3장 디지털 신호와 표본화

양자화 잡음과 SNR

nn비트 ADC에 넣은 정현파의 SNR은 최대 얼마이고, 그 값을 스펙트럼에서 어떻게 읽을까?

잘리지 않는 가장 큰 정현파는 진폭이 FSR/2=2n−1 LSB\mathrm{FSR}/2=2^{n-1}\,\mathrm{LSB}이다. 이것을 full-scale 정현파라고 한다. 그 RMS 값과 양자화 오차의 RMS 값의 비가 SNR이다(강의 자료 WE3 24쪽).

SNR=2n−1 LSB/2LSB/12=2n−16SNR(dB)=20log⁡10(2n−16)=[20log⁡102] n+20log⁡1062≈6.02 n+1.76 dB\begin{aligned} \mathrm{SNR}&=\frac{2^{n-1}\,\mathrm{LSB}/\sqrt2}{\mathrm{LSB}/\sqrt{12}}=2^{n-1}\sqrt6\\ \mathrm{SNR(dB)}&=20\log_{10}\bigl(2^{n-1}\sqrt6\bigr)\\ &=\bigl[20\log_{10}2\bigr]\,n+20\log_{10}\frac{\sqrt6}{2}\\ &\approx6.02\,n+1.76\ \text{dB} \end{aligned}

비트 하나를 더하면 LSB가 절반이 되어 SNR이 6.02 dB 오른다. 8비트이면 276=3142^7\sqrt6=314, 곧 49.9 dB이다(강의 자료 WE3 25쪽). 기준 전압은 답에 들어가지 않는다. 기준 전압을 바꾸면 신호의 최대 진폭과 LSB가 같은 비율로 바뀌기 때문이다.

이 식은 입력이 full-scale일 때의 값이다. 입력이 full-scale보다 LL dB 작으면(아래의 dBFS로 −L-L) 양자화 잡음은 그대로이고 신호만 작아지므로 SNR도 LL dB 작아진다.

dBFS

세기를 ADC의 최대값에 견주어 적는 단위가 dBFS(dB relative to full scale)이다. 이 장에서는 full-scale 정현파의 전력을 0 dBFS로 둔다. 진폭이 full-scale의 절반인 정현파는 −6.02 dBFS이다. SDR의 복소 I/Q 표본에서는 크기 ∣I+jQ∣|I+jQ|가 full-scale인 복소 톤을 0 dBFS로 둔다. 이 복소 톤의 양자화 SNR도 6.02n+1.766.02n+1.76 dB로 같고, 한 칸에 드는 잡음 바닥은 음의 주파수까지 NN칸에 퍼지므로 10log⁡10N10\log_{10}N만큼 아래이다. ADC는 안테나에 들어온 전력이 몇 dBm인지 모른다. ADC가 아는 것은 자기 최대값에 대한 비율뿐이고, dBm으로 바꾸려면 수신 경로 전체를 교정해야 한다. 그래서 실습의 스펙트럼도 dBFS로 그린다.

Pluto의 AD9363은 12비트 ADC를 쓴다(ADI ADALM-PLUTO 사양, AD9363 데이터시트). 따라서 full-scale 정현파의 SNR은 이상적으로 6.02×12+1.76=74.06.02\times12+1.76=74.0 dB이다. 이것은 양자화만 고려한 상한이고, 실제 수신 SNR은 앞단의 아날로그 잡음과 이득 설정이 정하므로 이보다 낮다.

스펙트럼에서 읽는 잡음 바닥

DFT로 보면 양자화 잡음은 톤 아래에 깔린 바닥이 된다. 이 바닥의 높이를 SNR로 읽으면 안 된다. 잡음 전력 LSB2/12\mathrm{LSB}^2/12는 칸 NN개에 나뉘어 들어가지만, 톤은 한 칸에 모인다. 실수 신호의 한쪽 스펙트럼(0…fs/20\ldots f_s/2, 칸 N/2N/2개)에서 칸 하나의 평균 잡음은

바닥(dBFS)=−(6.02 n+1.76)−10log⁡10N2\begin{aligned} \text{바닥(dBFS)}&=-(6.02\,n+1.76)\\ &\quad-10\log_{10}\frac{N}{2} \end{aligned}

이다. 10log⁡10(N/2)10\log_{10}(N/2)를 DFT의 처리 이득(processing gain)이라고 한다. NN을 네 배로 늘리면 바닥이 6 dB 내려가지만 SNR은 그대로이다. 복소 I/Q 기록은 칸 NN개가 −fs/2…fs/2-f_s/2\ldots f_s/2에 걸쳐 있으므로 10log⁡10N10\log_{10}N이 된다. 창을 곱하면 칸 하나가 모으는 잡음의 양도 바뀐다. 스펙트럼의 한 칸 값은 그 칸의 전력을 교정한 값이 아니다.

▶로 한 단계씩 넘기며 먼저 양자화한 정현파에서 오차열을 만드는 것을 보고, 그다음 스펙트럼의 신호 선과 바닥을 본다. 마지막 두 단계에서 SNR을 나타내는 간격과 칸 하나의 잡음 바닥까지의 간격을 견준다.

합성 정현파를 fₛ = 1 MS/s로 표본화했다. 톤은 DFT 칸에 놓이고 창은 곱하지 않는다. 입력에 0.3 LSB의 직류를 더했으며 0 Hz는 스펙트럼과 전력 합에서 뺐다. 6.02n+1.76과 칸당 바닥의 식은 양자화 오차가 고르게 퍼진다는 근사이고, 그림의 화살표는 계산한 전력 사이의 간격이다.

해 보기

  1. 오차열까지 본다.
    관찰

    양자화한 출력에서 입력을 뺀 값이 ±½ LSB 안에 놓인다.

  2. 두 간격을 본다.
    관찰

    신호에서 오차 전체까지가 SNR이고, 칸당 바닥은 그보다 더 아래에 있다.

  3. N을 네 배로 늘린다.
    관찰

    SNR은 거의 그대로인데 칸당 바닥은 약 6 dB 내려간다.