Tematyka radia definiowanego programowo SDR jest znana nie od dziś. Czym więc jest SDR? W przypadku mikrokontrolerów lub sterowników PLC większość nacisku przy aplikowaniu położona jest na opracowanie oprogramowania dla zadanej i w miarę uniwersalnej platformy sprzętowej. Podobna idea przyświecała pomysłodawcom SDR. „Radio” stało się bazą zawierającą najczęściej tor nadawczy i odbiorczy w.cz. szybkie przetworniki A/C i CA, współpracujący układ FPGA oraz odpowiednio wydajny procesor lub połączenie ich obu w jednej strukturze SoC, który jest odpowiedzialny za konfigurację toru radiowego, realizację modulacji, demodulacji, szyfrowania kodowania i dekodowania transmitowanego sygnału. Takie podejście zapewnia szybkie i bardzo elastyczne zmiany funkcjonalności SDR, tak ważne przy nadążaniu lub wytyczaniu ścieżek rozwoju dzisiejszych urządzeń, z których większość ma funkcje komunikacji radiowej. Nietrudno wyobrazić sobie potencjał, jaki kryje SDR, gdzie praktycznie w ciągu kilku sekund po zmianie oprogramowania można przejść z odbioru ulubionej stacji FM do odbioru sygnału GPS, realizacji szyfrowanej transmisji cyfrowej w standardzie Wi-Fi lub pełnienia funkcji telefonu GSM.
Dla zapoznania się z technologią SDR firma Analog Devices przygotowała zestaw uruchomieniowy ADALM-PLUTO. W skład zestawu wchodzi odbiornik-nadajnik SDR, anteny, kabel USB oraz mostek SMA, czyli wszystko, co konieczne od strony sprzętowej, aby rozpocząć praktyczną przygodę z SDR. Wygląd zestawu pokazano na rysunku 1, a jego schemat blokowy na rysunku 2.
Sercem ADALM-PLUTO jest scalony transceiver AD9363. W zestawie umożliwia on realizację transmisji full-duplex (TX+RX), pracując w zakresie 325…3,8 GHz przy szerokości pasma do 20 MHz i z częstotliwością próbkowania do 61,44 MSa/s. Zastosowane anteny JCG401 optymalizowane są do pracy w paśmie 824…894 MHz i 1710…2170 MHz, ale radzą sobie w znacznie szerszym zakresie. Za konfigurację AD9363 i komunikację z użytkownikiem odpowiada układ SoC Xilinx XC7Z010 zawierający układ FPGA oraz rdzeń ARM pracujący pod kontrolą systemu Linux. Katalogowo zestaw kosztuje 149 USD, co jest ceną bardzo przystępną, o czym świadczy bardzo szybka wyprzedaż pierwszej partii Pluto.
Wygląd płytki drukowanej zestawu pokazano na rysunku 3. Zastosowane układy i wymagania odnośnie do w.cz. wymuszają zastosowanie wielowarstwowego obwodu drukowanego – tym razem dla rozpoczęcia pracy z SDR zakup zestawu jest praktycznie koniecznością. „Gospodarcza” metoda raczej nie wchodzi w rachubę, a opracowanie własnego rozwiązania jest opłacalne tylko w wypadku produkcji większej liczby płytek. Takie są nieodwracalne koszty postępu technicznego...
Sprawa wsparcia programowego dla ADALM-PLUTO jest ciągle otwarta. W zależności od systemu operacyjnego (Windows/Linux/MacOS) można korzystać z gotowego oprogramowania i driverów. Na przykład dla Windows – IIO Scope, SDR#. Dostępne są biblioteki dla Matlaba, Simulinka, GNU Radio. Brakuje jednak porządnie przygotowanego przewodnika i zebrania informacji w jednym miejscu, co znacząco ułatwiłoby pracę. Strona Wiki poświęcona SDR jest w ciągłej edycji i sporo jeszcze brakuje dla uzyskania pełnej funkcjonalności, a jak wiadomo – dobra dokumentacja to podstawa.
Moduł został przetestowany pod Windows, przy wykorzystaniu oprogramowania IIO-Oscilloscope i SDRSharp. Przed podłączeniem do PC konieczna jest instalacja driverów PlutoSDR-M2k-USB-Drivers.exe. Prawidłowo zainstalowany ADALM-PLUTO występuje w Menedżerze Urządzeń (rysunek 4) jako kilka urządzeń, m.in.:
- PlutoSDR USB Ethernet – wirtualny port ethernetowy.
- PlutoSDR Seria Console – port szeregowy dla konsoli komunikacyjnej.
- Linux File Storage Gadget USB Device – dysk USB, m.in. wykorzystywany do aktualizacji oprogramowania PLUTO.
Po zainstalowaniu driverów i podłączeniu zestawu można przejść do testowania. W dowolnej przeglądarce www wpisujemy adres IP modułu 192.168.2.1 (adres można zweryfikować w pliku info.html na dysku PlutoSDR widocznym w menedżerze plików systemu Windows), powinna zostać wyświetlona strona informacyjna PLUTO pokazana na rysunku 5, na której w sekcji firmware (rysunek 6) możemy sprawdzić wersję oprogramowania.
Jeżeli jest dostępna nowa wersja, należy ją pobrać na dysk. Podczas testów najnowsza wersja miała oznaczenie plutosdr-fw-v0.24.zip. Następnie należy wypakować i skopiować plik pluto.frm do głównego katalogu na dysku PlutoSDR oraz bezpiecznie odłączyć urządzenie USB PlutoSDR, co rozpoczyna proces aktualizacji sygnalizowany szybkim miganiem diody LED1 w module. Należy cierpliwie odczekać (ok. 5 minut) na zakończenie aktualizacji, pod żadnym pozorem nie wyłączając zasilania i nie odłączając kabla USB. Po zakończeniu aktualizacji Pluto zostanie ponownie zainstalowane w systemie. Teraz można je odłączyć i ponownie dołączyć do złącza USB. Poprawność aktualizacji sprawdzamy w przeglądarce pod adresem http://192.168.2.1/#firmware, status oprogramowania powinien zmienić się na aktualny v0.24.
Używając dowolnego terminalu (115200,8,n,1), możemy sprawdzić działanie konsoli (user: root/ Password: analog) i poleceniem fw_setenv maxcpus załączyć oba rdzenie procesora w SoC (rysunek 7). Jeżeli wszystko przebiegło pomyślnie, dla szybkiego sprawdzenia Pluto warto zainstalować i uruchomić oprogramowanie IIO Oscilloscope (https://goo.gl/1qqxFN). W zakładce konfiguracji FMComms2/3/4 mamy możliwość konfiguracji części radiowej PLUTO. Dla przykładu skonfigurowano odbiornik na pasmo nieco pod zakresem ISM, z częstotliwością środkową 433 MHz, a nadajnik na generowanie sygnału 0,5 MHz (rysunek 8).
Efekt konfiguracji można podglądnąć na ekranie oscyloskopu pracującego w trybie analizatora widma (rysunek 9). Oprócz nośnej 433 MHz i prążka 433,5 MHz jest widoczny efekt jednoczesnego z pomiarem działania pilota do bramy garażowej.
Ciekawą alternatywą szczególnie dla osób zainteresowanych nasłuchem przy wykorzystaniu ADALM-PLUTO jest oprogramowanie SDR# przekształcające zestaw w odbiornik szerokopasmowy (skaner). Po pobraniu ze strony https://airspy.com/ aktualnej wersji Windows SDR Software Package, zainstalowaniu driverów dla Pluto sdrsharp-plutosdr-0.4.1 oraz bibliotek libiio-0.11.gcb2f40f-Windows możliwy jest nasłuch i demodulacja sygnałów z szerokiego pasma częstotliwości. Program obsługuje pluginy, dzięki którym można rozszerzać jego możliwości, np.: dekodowanie FM Stereo, DAB, DVBT, odbiór telewizji analogowej itp. Przy wykorzystaniu skanera warto pokusić się o pewną nieautoryzowaną modyfikację ADALM-PLUTO, dzięki której zostanie poszerzone pasmo odbieranych częstotliwości do zakresu 70 MHz – 6 GHz. W tym celu ponownie uruchamiamy terminal znakowy i po zalogowaniu do konsoli zmieniamy konfigurację:
fw_setenv attr_name compatible
fw_setenv attr_val „ad9364”
Następnie restartujemy Pluto za pomocą polecenia pluto_reboot reset. Nie znalazłem wytłumaczenia, na czym polega ta przeróbka, ale jest faktem, że pozwala na strojenie SDR znacznie poniżej 325 MHz deklarowanych przez producenta. Pewnie odbywa się to kosztem czułości odbiornika, ale nie spada ona na tyle, by odbiornik stał się nieużyteczny. Dzięki przeróbce zyskujemy dostęp m.in. do zakresu FM, AirBand, oczywiście odbiór jest możliwy po zastosowaniu odpowiadającej pasmu anteny zewnętrznej.
Po uruchomieniu SDR# i wyborze urządzenia PlutoSDR konieczna jest konfiguracja połączenia według rysunku 10. Przykład nasłuchu stacji FM wraz z dekodowaniem stereo i odbiorem informacji RDS pokazano na rysunku 11.
Tak w dużym skrócie można przetestować ADALM-PLUTO za pomocą gotowych aplikacji. Pozostaje jeszcze sprawa bibliotek do Matlaba/Simulinka, które umożliwią szersze wykorzystanie możliwości SDR, szczególnie w celach dydaktycznych. Niestety, pomimo próśb skierowanych do dystrybutora, nie udało się pobrać testowej wersji Matlaba z bibliotekami dla Pluto (https://goo.gl/2xzKwM), więc sprawdzenie funkcjonalności się nie odbyło...
Kolejnym krokiem dla użytkownika zaznajomionego z podstawami SDR jest wykorzystanie dostępnych bibliotek i oprogramowanie modułu we własnym zakresie przy zastosowaniu np. w GNU Radio z GRC lub wykorzystanie HDL dla bezpośredniego programowania wbudowanego SoC za pomocą środowiska Xilinx Vivado.
Adam Tatuś, EP