REMI Lab강의 노트

Wireless Embedded Systems E05

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까지 가는 길을 본다.

ADALM-PLUTO의 부품과 신호의 길. 안테나 포트 RX와 TX가 AD9363 RF 트랜시버에 이어지고, AD9363과 Zynq SoC 사이로 I/Q 표본과 설정이 오간다. Zynq에는 DDR3L 메모리와 QSPI 플래시가 붙고, USB 2.0으로 PC와 이어진다.RX 포트 (SMA)TX 포트 (SMA)전파전파AD9363 RF 트랜시버수신 LNA → 직교 혼합 → 아날로그 LPF → ADC → 디지털 필터송신 디지털 필터 → DAC → 아날로그 LPF → 직교 혼합 → 증폭LO 합성기 2개(수신용·송신용), ADC·DAC 12비트325 MHz–3.8 GHz, 채널 대역폭 200 kHz–20 MHzI/Q 표본설정(SPI)Zynq XC7Z010 SoCFPGA표본을 받아 메모리의 버퍼로 옮긴다ARM Cortex-A9 667 MHz (Linux)AD9361 드라이버(IIO 장치 ad9361-phy)iiod: USB로 온 요청을 드라이버에 전달DDR3L512 MBQSPI 플래시32 MB 펌웨어USB 2.0 (PHY: USB3320)PC전원도 USB로
부품 이름과 사양은 ADI의 ADALM-PLUTO 사양 쪽과 강의 자료의 블록도를 따라 다시 그렸다(강의 자료 WE5 12–13쪽). USB PHY의 부품 번호 USB3320은 기판 설명에서 가져왔다(강의 자료 WE5 12쪽). 수신 경로의 순서는 ADI의 Pluto 내부 설명을 따랐다. PC와 USB 사이의 화살표는 표본과 설정이 양쪽으로 오간다는 뜻이다.

이 장의 나머지는 이 그림을 세 구간으로 나눠 본다. AD9363 안의 수신 경로에서 LO, RF 대역폭, 표본화율이 하는 일, 표본이 USB로 PC에 오는 구간, 그리고 프로그램이 설정을 바꾸는 길이다.