SI570 Frequenzsteuerung
Nahezu alle aktuelle SDR-HW nutzt zur Abstimmung der Oszillatorfrequenz den von Silicon Labs hergestellten SI 570 IC. Er vereint herausragende Leistungen wie oberwellenarmes, hochstabiles Signal mit einem akzeptablen Preis. Daher wird eine Frequenzabstimmung für diesen Baustein implementiert.
Die nachfolgenden Ausführungen beziehen sich auf den FIFI-SDR des OV Lennestadt, sollten aber leicht auf FA-SDR, Softrock und ähnliche, Softrock kompatible Konzepte übertragbar sein.
Fred Krom, PE0FKO, hat sich intensiv mit der SI 570-Steuerung beschäftigt und stellt unter [12] u. a. eine DLL zur Einbindung in eigene Programme zur Verfügung. Diese DLL, SRDLL.dll kann über textorientierte Programme angesprochen werden. Freds DLL wiederum greift auf eine USB DLL, libusb0.dll, zu, welche zu guter Letzt die USB Schnittstelle und den SI 570 steuert. libusb0.dll wird in der Regel von den HW-Herstellern zur Verfügung gestellt.
Wie lässt sich dies nun unter Labview einbinden? Labview bietet ein VI, Knoten zum Aufruf externer Bibliotheken, an. Es findet sich unter ProgrammierungÆKonnektivitätÆBibliotheken & Programme. Dummerweise kann es Freds DLL nicht direkt ansprechen, da als Rückgabewert der aufgerufenen Funktionen void Pointer aus der Programmiersprache C verwendet werden. Diese sind in Labview nicht abbildbar.
Als Lösung stellt der Author eine kleine C++ DLL zur Verfügung, SI570WRP.dll. Diese macht nichts anderes als den Labview Funktionsaufruf in einem gängigen Format zu ermöglichen und diesen in ein Format für Freds DLL zu übersetzen.
Hier wird auch lediglich eine Funktion genutzt, die Einstellung der Frequenz.
Was sich kompliziert anhört ist in der Nutzung letztendlich trivial. Die 3 DLLs sind unter [11] erhältlich, sind in das Verzeichnis des Labview SDR VIs zu kopieren und der Rest findet unter Labview statt.
Bild 12 zeigt das Blockdiagramm der implementierten Frequenzsteuerung.
Bild 12: SI570-Frequenzsteuerung
Alle Komponenten sind getrennt vom Rest des SDRs in einer eigenen While-Schleife abgebildet. Daher läuft die Frequenzabstimmung quasiparallel als separater Prozess des Labview-Programms. Die While-Schleife selbst beinhaltet eine
Ereignisstruktur
, zu finden unter
ProgrammierungÆStrukturen
.
Die Ereignisstruktur führt die enthaltenen Funktionen einmalig aus, sobald ein unter Ereignisse Bearbeiten des Kontext-Menüs definiertes Ereignis stattfindet. Ähnlich einer Programmunterbrechung (Interrupt) wird somit jede Änderung der Frequenzeinstellung unmittelbar über die DLLs umgesetzt.
Im Gegensatz zu einer textorientierten Sprache ist hier die Prozess-Generierung und Unterbrechungs-Steuerung mit ein paar Klicks erledigt.
Auf der linken Seite findet sich eine einfache Logik um eine Sollfrequenzgröße zu generieren. Hier sind alle möglichen anderen Eingabelösungen denkbar, vom Drehknopf über Schieberegler bis zur direkten Eingabe der Sollfrequenz.
Parallel zur Anzeige wird die Frequenzgröße mit 4 multipliziert, da in der SDR-HW diese vierfache Frequenz benötigt wird. Grund ist die Generierung der um 90 Grad verschoben Oszillatorfrequenzen über einen 4 zu 1 Teiler.
Auf der rechten Seite findet sich das Labview Knoten-VI mit den zu übergebenen Parametern an die DLL-Kette.
Die Bilder 13 und 14 zeigen die einzustellende Funktionsdefinition und Parametereinstellung im Kontextmenü des Knoten-VIs.
Der Pfad ist entsprechend abzuändern. Alle weiteren Parameter können für den FIFI-SDR übernommen werden. Bei anderer SDR-HW sind ggf. diese Parameter zu ändern.
Bild 13: Tab-Funktion des Kontextmenus des Knoten
Bild 14: Tab-Parameter des Kontextmenus des Knoten
Das um die Frequenzsteuerung ergänzte SDR-Rahmen VI ist unter [11] als SDR Frame SI 570.vi erhältlich.