양자화 잡음과 SNR
비트 ADC에 넣은 정현파의 SNR은 최대 얼마이고, 그 값을 스펙트럼에서 어떻게 읽을까?
잘리지 않는 가장 큰 정현파는 진폭이 이다. 이것을 full-scale 정현파라고 한다. 그 RMS 값과 양자화 오차의 RMS 값의 비가 SNR이다(강의 자료 WE3 24쪽).
비트 하나를 더하면 LSB가 절반이 되어 SNR이 6.02 dB 오른다. 8비트이면 , 곧 49.9 dB이다(강의 자료 WE3 25쪽). 기준 전압은 답에 들어가지 않는다. 기준 전압을 바꾸면 신호의 최대 진폭과 LSB가 같은 비율로 바뀌기 때문이다.
이 식은 입력이 full-scale일 때의 값이다. 입력이 full-scale보다 dB 작으면(아래의 dBFS로 ) 양자화 잡음은 그대로이고 신호만 작아지므로 SNR도 dB 작아진다.
dBFS
세기를 ADC의 최대값에 견주어 적는 단위가 dBFS(dB relative to full scale)이다. 이 장에서는 full-scale 정현파의 전력을 0 dBFS로 둔다. 진폭이 full-scale의 절반인 정현파는 −6.02 dBFS이다. SDR의 복소 I/Q 표본에서는 크기 가 full-scale인 복소 톤을 0 dBFS로 둔다. 이 복소 톤의 양자화 SNR도 dB로 같고, 한 칸에 드는 잡음 바닥은 음의 주파수까지 칸에 퍼지므로 만큼 아래이다. ADC는 안테나에 들어온 전력이 몇 dBm인지 모른다. ADC가 아는 것은 자기 최대값에 대한 비율뿐이고, dBm으로 바꾸려면 수신 경로 전체를 교정해야 한다. 그래서 실습의 스펙트럼도 dBFS로 그린다.
Pluto의 AD9363은 12비트 ADC를 쓴다(ADI ADALM-PLUTO 사양, AD9363 데이터시트). 따라서 full-scale 정현파의 SNR은 이상적으로 dB이다. 이것은 양자화만 고려한 상한이고, 실제 수신 SNR은 앞단의 아날로그 잡음과 이득 설정이 정하므로 이보다 낮다.
스펙트럼에서 읽는 잡음 바닥
DFT로 보면 양자화 잡음은 톤 아래에 깔린 바닥이 된다. 이 바닥의 높이를 SNR로 읽으면 안 된다. 잡음 전력 는 칸 개에 나뉘어 들어가지만, 톤은 한 칸에 모인다. 실수 신호의 한쪽 스펙트럼(, 칸 개)에서 칸 하나의 평균 잡음은
이다. 를 DFT의 처리 이득(processing gain)이라고 한다. 을 네 배로 늘리면 바닥이 6 dB 내려가지만 SNR은 그대로이다. 복소 I/Q 기록은 칸 개가 에 걸쳐 있으므로 이 된다. 창을 곱하면 칸 하나가 모으는 잡음의 양도 바뀐다. 스펙트럼의 한 칸 값은 그 칸의 전력을 교정한 값이 아니다.
▶로 한 단계씩 넘기며 먼저 양자화한 정현파에서 오차열을 만드는 것을 보고, 그다음 스펙트럼의 신호 선과 바닥을 본다. 마지막 두 단계에서 SNR을 나타내는 간격과 칸 하나의 잡음 바닥까지의 간격을 견준다.
합성 정현파를 fₛ = 1 MS/s로 표본화했다. 톤은 DFT 칸에 놓이고 창은 곱하지 않는다. 입력에 0.3 LSB의 직류를 더했으며 0 Hz는 스펙트럼과 전력 합에서 뺐다. 6.02n+1.76과 칸당 바닥의 식은 양자화 오차가 고르게 퍼진다는 근사이고, 그림의 화살표는 계산한 전력 사이의 간격이다.
해 보기
- 오차열까지 본다.
관찰
양자화한 출력에서 입력을 뺀 값이 ±½ LSB 안에 놓인다.
- 두 간격을 본다.
관찰
신호에서 오차 전체까지가 SNR이고, 칸당 바닥은 그보다 더 아래에 있다.
- N을 네 배로 늘린다.
관찰
SNR은 거의 그대로인데 칸당 바닥은 약 6 dB 내려간다.
강의 노트