ADALM-Pluto SDR
Der ADALM-Pluto (kurz PlutoSDR), ist ein von Analog Devices entwickeltes aktives Lernmodul. Es soll allen Interessierten eine Plattform bieten, um die Gebiete rund um Software Defined Radio (SDR), Radiofrequenzen (RF) und Kommunikation mittels Funktechnologien praxisnah erfahren zu können und zu erlernen.
Abb.: ADALM-Pluto SDR
Mit dem Modul wird ein Frequenzbereich von 325 bis 3800 MHz abgedeckt bei einer maximalen Bandbreite von 20 MHz. Basierend auf dem Analog Devices AD9363 RF Agile Transceiver, verfügt der PlutoSDR über 12-Bit ADC/DAC Converter. Es sind Abtastraten von bis zu 61.44 Mega Sampels Per Second (MSPS) erreichbar und eine Frequenzstabilität ab Werk von +/- 25ppm. Da die Stabilität für die Kommunikation mit dem Satelliten nicht ausreichend ist und es mit der Werkskonfiguration zu Frequenzinstabilität und dem Teilweisen „weglaufen“ der Frequenz kommt, wurde der Oszillator ausgetauscht, hierzu lesen Sie im Abschnitt Modifikationen mehr. Durch einen Transmitter und einen Reciever ist -im Gegensatz zum HackRFOne - Senden und Empfangen sowohl im Halb- als auch in Vollduplex möglich. Um Rückkopplungen, Latenzprobleme und Leistungsproblematiken zu vermeiden, sowie das Gefühl eines Funkgerätes zu emulieren, wird das System in diesem Projekt ausschließlich in Halbduplex betrieben. Für den Betrieb gibt es einen offiziellen Matlab/Simulink Support, außerdem kann eigene Firmware mithilfe von GNU Radio sink und source blocks programmiert werden. C, C++, C# und Python API können von Studierenden und Interessierten genutzt werden, um selbiges zu tun. Da für Senden und Empfangen eine graphische Benutzeroberfläche von Vorteil ist, welche Frequenzeinstellung, Wasserfalldiagramme und Spektren anzeigt, wird in diesem Projekt die SDR Console V3.1 (entwickelt von Simon Brown, G4ELI) genutzt, welche den PlutoSDR vollständig unterstützt. Libiio Treiber machen die Lernplattform tauglich für alle gängigen Betriebssysteme, speziell Microsoft Windows, OS X und Linux.
Äußerlich besitzt der PlutoSDR zwei Female SMA Buchsen mit 50 Ohm Wellenwiderstand (RX und TX), über welche Empfangs- und Sendeantennen angeschlossen werden können. In diesem Projekt dient die RX-Buchse zur Verbindung mit dem LNB und die TX-Buchse zur Verbindung mit der Verstärkerschaltung, welche in einer selbst gewickelten Antenne mündet. Siehe hierzu die Abschnitte Antenne und Schaltung. Auf der Gegenseite der SMA Buchsen sind Status LEDs und zwei Mikro USB-Typ A 2.0 Buchsen auf das PCB gelötet. Die beiden Buchsen dienen zum Anschluss eines 5 V Netzteils für die Versorgungsspannung und zum Übertragen von Daten. Für die serielle Datenkommunikation wird der PlutoSDR über einen Micro USB auf Ethernet Adapter an das Netzwerk angeschlossen. Der Host baut mit dem Gerät eine Kommunikation zum Senden und Empfangen auf.
Innerlich behaust das Kunststoffgehäuse folgende Bausteine:
- AD9363 RF Agile Transceiver mit eingebauter 12-Bit AD/DA Logik
- Cortex-A9 @ 667MHz in ARM Architektur (Zynq-7000 SoC)
- 28 Tausend FPGA Logikzellen
- 80 DSP Slices
- 512MB DDR3L
- 32MB QSPI Flash
Die Komponenten auf der Leiterplatine sind in folgender Abbildung von OE7WPA übersichtlich dargestellt.
Abb.: Komponenten auf der Leiterplatine des PlutoSDRs
Damit nun eine Kommunikation über das 13cm- und 3cm-Band mit dem Satelliten eingerichtet werden kann, sollte der Signalpfad bekannt sein. Zunächst wird durch die SDR Console V3.1 ein niederfrequentes Sprachsignal (NF) über ein PTT-Mikrofon durch das Drücken der Sendetaste aufgezeichnet. Das Signal wird Einzelseitenband moduliert (ESB) in diesem Fall speziell das obere Seitenband (USB). Darauf hin wird das Signal über das Netzwerk an den PlutoSDR gesendet. Alle diese Schritte geschehen auf dem „Host“. Der Host steht über das Netzwerk in serieller Kommunikation mit dem PlutoSDR.
Abb.: Vereinfachtes Blockschaltbild des PlutoSDR
USB 2.0 PHY (SMSC USB3320C)
PHY ist eine Abkürzung und steht für Physical Layer und steht im Bezug zur Bitübertragungsschicht, dem Physical Layer, des OSI-Schichtenmodells in der Nachrichtentechnik. Es wird hierbei auch vom Übertragungsmedium gesprochen. Auf der Leiterplatine des PlutoSDR wird der USB 2.0 PHY dazu verwendet ankommende serielle, bitförmige Signale in 8-Bit parallele Übertragung umzuwandeln.
Dies wird möglich durch die Verwendung des ULPI Interfaces, welches die benötigte Pin-Anzahl stark reduziert und somit auf dem PCB des PlutoSDRs enorme Platzeinsparung bietet. Durch In-Bandsignaling und Status-Byte Übertragung wird es möglich eine USB Session mit weniger als 12 Pins zu realisieren. Notwendig wird die Verwendung des Bausteins aufgrund der Kommunikation über USB oder Ethernetschnittstellen, welche sich als serielle Schnittstellen darstellen. Um eine Verbindung zwischen Prozessorsocket und dem Universellen Seriellen Bussystem zu erzeugen und dabei so platzeffizient wie möglich zu sein wird dieser Baustein auf dem PCB verbaut. Der Prozessorsocket ist eingelassen ist das folgende Bauelement.
Xilinx Zynq-7000 SoC
Als All Programmable System on Chip (AP SoC) integriert der Zynq-7000 die Programmierfähigkeit eines Prozessors in ARM-Architektur im Zusammenspiel mit der Hardwareprogrammierfähigkeit eines Field Programmable Arrays (FPGA). In diesem Bauelement sind alle, für die digitale Signalverarbeitung benötigten Komponenten in einem Gehäuse untergebracht. Central Processing Unit (CPU), in diesem Fall ein Cortex-A9 32-Bit ARM Prozessor 2-Cache kohärenten Kernen, bietet in Kooperation mit der programmierbaren Logik, vereint in einem Chip, alle Möglichkeiten eines Digitalen Signal Prozessors (DSP) für moderne Embedded Systems und kann mittels des auf ihm ausgeführten Linux Kernel, schnell und zuverlässig digitale Audiosignale verarbeiten, Filtern, mischen und vieles mehr.
Auf dem Prozessor wird mit Zugriff auf die umliegenden Registerspeicher (siehe weiter Unten) die aufgespielte Firmware ausgeführt. Im Chip integriert sind zusätzlich Schnittstellen für USB, SPI, u.ä. um Daten von und zum Prozessor zu führen und in Embedded Systeme einzufügen.
Micron DDR3L
Der Name lässt vermuten, dass es sich um ein Synchronus Dynamic RAM (SDRAM) Speicherbaustein handelt. Mit 512 MB Random Access Memory (RAM) wird im Betrieb des PlutoSDR der Arbeitsspeicher bei 1,35 V (Low-Voltage Ausführung) betrieben. Es handelt sich hierbei um einen Halbleiterspeicher welche aus einer Mischung aus bistabiler Kippstufe (D-Flip Flop) und kapazitiver Speicherzelle bestehen. Nach dem Ausschalten der Versorgungsspannung verliert der Speicher alle gespeicherten Daten unwiderruflich.
Micron QSPI Flash
Im PlutoSDR stehen 32 MB Flash Speicher zur Verfügung. Elektronische nicht volatile Speichermedien sind Bausteine, welche elektrisch gelöscht und wieder beschrieben werden können. Auf diesem Baustein sind die Firmware, sowie Daten und andere zu speichernde Daten, die für den Betrieb des PlutoSDRs gebraucht werden. Daten gehen nach dem Ausschalten nicht verloren im Gegensatz zum RAM. Die Wiederprogrammierbarkeit ist der Grund, warum sich der PlutoSDR als Massenspeicher an einem Computer anmelden kann um neue Firmwareversionen zu erhalten. Zur Firmware und zum Aufspielen anderer oder neuer Firmware lesen Sie weiter unten.
AD9363
Wie zuvor bereits erwähnt, basiert der PlutoSDR auf dem Analog Devices AD9363 RF Agile Transceiver. Der Transceiver ist aufgeteilt in einen Sende- und einen Empfangszweig. 12-Bit I und Q Samples kommend vom Prozessor, durchlaufen einen 128-tap Finite Impulse Response Filter (FIR). Kurz beschrieben, handelt es sich hierbei um ein digitales Filter, welches mit der Hilfe von Additionen und Multiplikationen eine endliche Antwort erzeugt und somit die einzelnen abgetasteten Werte verarbeitet und filtert. Mit digitalen Filtern sind weitaus mehr und andere Filter realisierbar, als die Analogtechnik jemals zu sehen bekommen wird. Nach diesem Schritt wird das Signal einem digitalen Interpolationsfilter zugeführt. Für dieses Filter besteht die Notwendigkeit darin, die Signale auf die Bitbreite, also die Auflösung des nachstehenden Digital Analog Converters (DAC) anzupassen. Es kommt häufig zu dem Fall, dass die Bitbreite des vorher durch den FIR berechneten Wertes nicht zu dem des DAC passt. Daher kann es vorkommen, dass Bits hinzugefügt, abgeschnitten oder gerundet werden müssen, daher der Name Interpolationsfilter, da der Aufgabenbereich „zwsichen“ den Bits des Signals liegt. Wird diese Interpolation vernachlässigt, kann es zu deutlichen Qualitätseinbußen im späteren Audiosignal kommen.
Dem Interpolationsfilter nachgeschaltet, folgt ein hochschneller, paralleler Digital-Analog-Converter, welcher die digitalen Bits in Spannungsniveaus umwandelt. Je nach ankommender Bit Kombination wird ein bestimmtes Spannungsniveau durch einen Operationsverstärker ausfindig gemacht und auf den Ausgang durchgeschaltet. Hierbei ist darauf zu achten, dass für QSOs eine Samplingrate zwischen 44.1 kHz und 48 kHz zu wählen, da dann mit den besten Ergebnissen der Klangqualität zu rechnen ist.
Über einen analogen Filter wird das Signal zu einem Direct Conversion Mixer geleitet, um anschließend durch einen kleinen Power Amplifyer (PA) verstärkt zu werden und auf die TX SMA Buchse ausgegeben zu werden. Der Analoge Filter dient der unterdrückung von hohen Frequenzanteilen, welche für den Alias-Effekt verantwortlich sind. Beim Alias-Effekt handelt es sich um Frequenzanteile aus dem digitalen Bitstrom rekonstruierten analogen Signal, die höher sind als die Abtastfrequenz und somit für Störeffekte sorgen. Zum Senden wird die Frequenz dann mit einem Überlagerungsempfänger mithilfe des Sendeoszillators hochgemischt und dann über einen kleinen Verstärker auf die TX SMA Buchse ausgegeben. Einen Überlagerungsempfänger zu nutzen hat den Vorteil, dass das Signal im niederfrequenten Bereich verarbeitet werden kann, was eine enorme Erleichterung ist, da parasitäre Kapazitäten vermieden werden, um es dann auf die gewünschte Frequenz hoch zu mischen und zu senden. Die PA erzeugt laut Datenblatt eine Leistung von maximal 7 dBm, das entspricht einer Leistung von 5 mW.
Diese Leistung hat der PlutoSDR in diesem Projekt nie erreicht. Deswegen musste die Verstärkerstufe vor der Antenne neu dimensioniert werden um die entsprechende Endstufe aussteuern zu können.
Der Empfangszweig gliedert sich identisch zum Sendepfad, mit der Ausnahme, dass das Signal einen Low Noise Amplifyer (LNA) durchläuft und dann über die Überlagerungsmischung, ein analoges Filter, den Analog-Digital-Converter (jedem analogen Spannungsniveau eine Bitkombination zuweisen) einen Interpolationsfilter und das FIR zum Prozessor geleitet wird.
Weitere Informationen zu den Interna des PlutoSDRs finden Sie unter: Grundlegende Interna von Pluto [Analog Devices Wiki]
Netzwerkstruktur
Der PlutoSDR wird in seiner Verwendung in diesem Projekt über den Ethernet-Adapter angesprochen. Damit dies geschehen kann, ist in den Gegebenheiten der Hochschule eine gewisse Infrastruktur notwendig, welche zum Großteil bereits vorhanden war.
Abb.: Schematische Darstellung der Netzwerkstruktur
Über einen Laptop, auf welchem die SDR Console V3.1 installiert ist, kann der Pluto angesprochen werden. Daten werden vom Computer über einen Netzwerkswitch auf ein Netzwerkkabel umgeleitet, welches durch eine Durchgangsbohrung in der Decke des Labors, direkt auf das Hochschuldach und zum PlutoSDR führt. Durch digital-analog-Wandlung (DA-Wandlung siehe Abschnitt AD9363) werden die Daten in Funksignale umgewandelt und auf den Sendezweig ausgegeben, welcher damit endet, dass Wellen abgestrahlt werden. Signale, welche vom Satelliten zurückkehren werden wieder in digitale Signale umgewandelt (AD-Wandlung) und über das Netzwerk an den Laptop zurückgesendet.
Da der PlutoSDR in Halb- sowie Vollduplex betrieben werden kann, ist die Kommunikation zwischen PlutoSDR und Laptop bidirektional, was über die Normung der Ethernet-Schnittstelle keinerlei Probleme aufweist.
Netzwerkanbindung
Sobald der PlutoSDR mittels USB-Kabel an einen Computer angeschlossen wird, meldet dieser sich als Massenspeichergerät an. Im Verzeichnis zu finden sind eine Informationsdatei, Lizenzen sowie eine config.txt Datei. Diese Text Datei im ASCII-Format ist von Bedeutung. In dieser Datei müssen unter dem Unterpunkt [NETWORK] die entsprechenden Parameter vorgegeben werden, hier beispielhaft die ab Werk eingestellten Netzwerkparameter:
[Network]
Hostname = pluto
ipaddr = 192.168.2.1
ipaddr_host = 192.168.2.10
netmask = 255.255.255.0
Aus Datenschutzgründen wird an dieser Stelle auf die Nennung der in diesem Projekt verwendeten Netzwerkparameter des Labornetzes verzichtet. Als wichtiger Hinweis sei erwähnt, dass dem Pluto eine statische IP-Adresse zugeteilt wurde. Das Labornetzwerk verfügt nicht über einen Dynamic Host Control Protocol (DHCP) Server. Die Aufgabe dieser Server ist es, in heim- oder auch öffentlichen Netzwerken, IP-Adressen dynamisch zuzuteilen, wenn sich Geräte neu anmelden. Im Falle eines Nachbaus sollte darauf geachtet werden eine statische Adresse zu vergeben. Diese wird dann auf dem DHCP Server für dieses Gerät reserviert und wird nicht mehr an ein anderes Gerät vergeben. Solche Einstellungen können auf dem Netzwerkrouter vorgenommen werden. Da in der verwendeten Software, sowie in der config.txt Datei des PlutoSDRs, die IP-Adresse des Gerätes statisch eingetragen wird, ist diese Einstellung sicherlich sinnvoll, wenn nicht sogar notwendig. Anderenfalls kann es vorkommen, dass der DHCP Server die Adresse anderweitig vergibt und dann sämtliche Einstellungen verändert werden müssen.
Firmware
Als Grundlage für die Firmware dienen ausschließlich Open Source Software Komponenten. Aufgebaut ist diese Firmware aus dem Linux Kernel „Das U-Boot“ und Buildroot. Zur Erstellung eines Root-Filesystems dient das Open-Source-Projekt Buildroot. Es hilft bei der Auswahl sowie Konfiguration der notwendigen Pakte, die eine Sammlung von Skripten enthalten, die zur Fertigstellung des Systems benötigt werden. Ein Teilsystem ist der Bootloader „Das U-Boot“. The Universal Boot Loader ist eine Bootstrap-Software basierend auf einem 8xx-Power-PC-Bootloader von Magnus Damm und ist angelehnt an Linux. Das Einsatzgebiet sind Embedded Systems, meistens Mikrocontroller, da die Implementierung auf einem x86 Rechner mittels Cross-Compiler kompiliert werden kann. Die Software lässt sich flexibel für verschiedenste Anwendungsbereiche sowie -fälle Konfigurieren und während der Laufzeit beeinflussen.
Die aktuell verwendete Firmware ist die neuste Revision v0.34 des Herstellers Analog Devices. Im Rahmen des Projektes hat sich diese Version als gut und stabil erwiesen. Um eine neue Firmware zu installieren oder ein Update einzuspielen, wird der PlutoSDR an einen Computer angeschlossen. Die neue Firmwaredatei (Pluto.frm) wird in das Verzeichnis gezogen und dann das Massenspeichergerät ausgeworfen. Unter Windows geschieht dies über die graphische Nutzeroberfläche oder unter Linux über den Kernel-Befehl umount /dev/<PlutoSDR>. Der hintere Teil des Kernel Befehls kann mittels des Kernel-Befehls df ermittelt werden. Hier listet das System alle verfügbaren Massenspeicher samt ihrer Adresse auf. Wenn das Gerät ausgeworfen ist, beginnt die Status-LED in schneller Frequenz zu blinken. Der Prozess ist abgeschlossen, wenn die „Ready“ LED aufleuchtet, die Status-LED aufgehört hat zu blinken und der PlutoSDR sich als Massenspeichergerät wieder anmeldet. Vor Abschluss des Vorgangs darf die Versorgungsspannung nicht unterbrochen werden.
Modifikationen
Der eingebaute 40 MHz Oszillator ist auf Grund seiner geringwertigen Frequenzstabilität von +/- 25 ppm in einem Temperaturbereich von -40°C bis 85°C nicht für den SSB Betrieb geeignet. Unter dem Einfluss von schwankenden Temperaturen kann es zu starken Frequenzdrifts kommen, die die Signale beeinträchtigen. Der werksseitig verbaute Oszillator wurde durch einen temperaturkompensierenden Quarzoszillator (TCXO) von Abracon (ASTX-13-C-40.000MHZ-IO5-T) ersetzt. Dieser besitzt den gleichem Temperaturbereich und eine Frequenzstabilität von +/- 0,5 ppm. Auf Grund der kleineren Abmaße und der gleichen Versorgungsspannung von 1,8 V konnten die Oszillatoren ohne weitere Modifikationen ausgetauscht werden.
Abb.: Austausch des TCXO
Zuschalten des zweiten Prozessorkerns (Putty oder Linux Terminal)
Der Adalm Pluto verfügt über zwei Prozessorkerne von denen nur einer eingeschaltet ist und somit genutzt werden kann. Um eine höhere Rechenleistung zu generieren kann der zweite Kern mit Hilfe eines Telnet-Clients z.B. der Software PuTTY dazu geschaltet werden. Die Notwendigen Einstellungsschritte werden im folgenden Ablauf visualisiert.
Starten Sie die PuTTY Anwendung. Es öffnet sich folgendes Fenster:
Abb.: PuTTY Konfiguration
Unter Host IP geben Sie die IP-Adresse des PlutoSDR ein und klicken auf „Open“.
Dann melden sie sich mit Benutzer: "root" und Passwort: "analog" am PlutoSDR an:
Abb.: Login am Pluto mittels PuTTY
Über den Befehl: cat /proc/cpuinfo erhalten Sie Informationen über die CPU. Um den zweiten CPU Kern zu aktivieren geben Sie: fw_setenv maxcpus in das PuTTY Terminal ein. Danach ergibt sich folgendes:
Abb.: Es erscheinen zwei CPU Kerne (Processor 0 und Processor 1) wenn beide Kerne aktiv sind
Weiterführende Dokumente, sowie die vollständige Dokumentation in englischer Sprache befinden sich unter https://wiki.analog.com/university/tools/pluto.
Downloads: