SDR과 ADALM-Pluto
ADALM-Pluto는 USB 막대 하나 크기의 SDR이다. 안테나로 들어온 2.4 GHz 전파를 초당 수백만 개의 복소 표본으로 바꾸어 PC로 보내고, PC가 만든 표본을 전파로 내보낸다. 이 장에서는 그 사이에서 LO, RF 대역폭, 표본화율이 각각 무엇을 정하는지, 표본이 PC까지 어떻게 오는지, 프로그램이 장치의 무엇을 바꾸는지 본다.
Pluto 안에 있는 것
안테나의 전파가 PC의 숫자가 되기까지, 이 작은 장치 안에서 어떤 부품을 거칠까?
Pluto의 부품은 크게 셋이다. 전파와 디지털 표본 사이를 오가는 RF 트랜시버 AD9363, 표본을 옮기고 장치를 제어하는 Zynq SoC, 그리고 PC와 잇는 USB 2.0이다. 전원도 USB 선 하나로 받는다.
AD9363은 증폭기, 믹서, 주파수 합성기 같은 마이크로파 회로와 필터, 표본화율 변환 같은 디지털 회로를 한 반도체에 담은 칩이다. 수신 쪽은 LNA(저잡음 증폭기), 직교 믹서, 아날로그 필터, ADC, 디지털 솎음 필터, 128탭 FIR 필터를 차례로 거쳐 12비트 표본을 낸다. 송신 쪽은 이 순서를 거꾸로 밟는다. 수신과 송신 채널이 하나씩 있고, 두 채널의 LO 주파수를 따로 정할 수 있다. 튜닝 범위는 325 MHz–3.8 GHz, 채널 대역폭은 200 kHz–20 MHz, 내보내는 표본화율은 65.1 kS/s–61.44 MS/s이다.
Zynq XC7Z010은 FPGA와 ARM Cortex-A9 프로세서(667 MHz)를 한 칩에 담았다. FPGA 부분은 AD9363에서 오는 표본을 받아 메모리(DDR3L 512 MB)의 버퍼로 옮긴다. 프로세서에서는 Linux가 돌고, 그 안의 드라이버가 AD9363의 설정을 바꾼다. 이 드라이버는 Linux 커널의 IIO(Industrial I/O) 틀에 맞춰 설정과 표본을 내놓고, iio_info, iio_attr 같은 명령은 그 틀을 쓰는 도구이다(강의 자료 WE5 14쪽). 32 MB 플래시에는 펌웨어가 들어 있다.
아래 그림은 부품 사이를 오가는 것을 세 가지로 나눠 그렸다. 전파는 빨강, 표본은 파랑, 설정은 보라 점선이다. 먼저 RX 포트에서 PC까지 파랑 화살표를 따라가고, 그다음 설정이 반대 방향으로 USB에서 AD9363까지 가는 길을 본다.
이 장의 나머지는 이 그림을 세 구간으로 나눠 본다. AD9363 안의 수신 경로에서 LO, RF 대역폭, 표본화율이 하는 일, 표본이 USB로 PC에 오는 구간, 그리고 프로그램이 설정을 바꾸는 길이다.
강의 노트