Kontaktaufnahme

Live-Chat mit Tektronix-Vertretern. Verfügbar von 9 bis 17 Uhr CET Geschäftstage.

Anrufen

Kontaktieren Sie uns telefonisch unter

Verfügbar von 9 bis 17 Uhr CET Geschäftstage.

Download

Laden Sie Handbücher, Datenblätter, Software und vieles mehr herunter:

DOWNLOADTYP
MODELL ODER SCHLÜSSELWORT

Feedback

Verwendung eines Echtzeit-Spektrumanalysators von Tektronix als softwaredefiniertes Funkgerät mit Open-Source-Tools

Von Tektronix-Experten

Softwaredefinierte Funkgeräte (SDR) bieten gegenüber herkömmlichen, hardwarebasierten Messgeräten und Funkempfängern mehrere Vorteile, darunter Flexibilität, Rekonfigurierbarkeit und die Möglichkeit, Open-Source-Verarbeitungswerkzeuge zu verwenden. In diesem Beitrag erfahren Sie, wie Sie Daten aus einem Tektronix-Echtzeit-Spektrumanalysator (RTSA) exportieren und in eine Vielzahl von Tools importieren.

 Wir beginnen damit, wie man durch die Verwendung einer einfachen Tabellenkalkulation für grundlegende Analysen einen angemessenen Einblick in das interessierende Signal gewinnen kann. Tools wie Octave bieten umfangreiche Möglichkeiten zur Matrixmanipulation, während GNU Radio viele Funkanalyse-Blöcke wie Filter, Kanalcodes, Synchronisationselemente und Entzerrer bereitstellt. Audacity, ursprünglich für die Audiobearbeitung entwickelt, kann verwendet werden, um demodulierte Daten bis auf Sample-Ebene anzuzeigen und zu bearbeiten.

Als Beispielanwendung für diesen Beitrag habe ich die Analyse eines Funk-Autoschlüssels gewählt. Diese Geräte (zumindest in den USA) senden üblicherweise mit 315 MHz und verwenden ein einfaches On-Off Keying (OOK) Modulationsverfahren. Ein einfaches Gerät wie ein Autoschlüssel ermöglicht es uns, uns auf die Verwendung der Open-Source-Toolchain zu konzentrieren und uns nicht von der Komplexität des Signals überfordern zu lassen.

Messaufbau

Der Schlüssel zur Akquisition liegt in diesem Fall in der Einrichtung der Zeitübersichtsanzeige. Diese Anzeige zeigt den gesamten Erfassungsdatensatz und verdeutlicht, wie die Spektrumzeit und die Analysezeit in den Erfassungsdatensatz passen. Sie können auch sehen, wie Sie die Spektrumzeit und die Analysezeit anpassen können, um Teile der Daten zu messen.

Ein Vorteil des RTSA gegenüber vergleichbaren SDRs ist, dass er über einen analogen Abwärtswandler verfügt. Dadurch können wir das Gerät auf 315 MHz, die Mittenfrequenz der Übertragung, einstellen. In diesem Fall legen wir die Spanne willkürlich auf 5 MHz fest, um sicherzustellen, dass wir das Signal erfassen. Der Trigger des Instruments sollte auf HF-Impuls eingestellt sein, damit eine Datenerfassung erfolgt, wenn der Schlüsselanhänger aktiviert wird.

Der HF-Puls hat eine Dauer von etwa 185 ms und eine Datenrate von ~1700 Hz, was einer Periodizität von 0,6 ms entspricht. Wenn wir uns entscheiden, 220 ms an Daten mit 7 MS/s (Megasamples pro Sekunde) zu erfassen, dann erfassen wir 1,5 Msamples bzw. 142 ns pro Sample (0,219s/1,5 Msamples). Bei einer Datenrate von 1.700 Hz bzw. 0,6 ms bedeutet das, dass wir 4.000 Punkte pro Pulsübergang erfassen. Laut Nyquist könnten wir deutlich weniger einfangen. In diesem Fall haben wir die Erfassungsspanne jedoch auf 5 MHz eingestellt, sodass 7 MS/s ausreichend sind. Eine kleinere Spanne würde gegebenenfalls zu einer niedrigeren Abtastrate führen.

Im Fenster „Zeitübersicht“ werden die Spektrumslänge und die Analyselänge angezeigt. Die Spektrumslänge ist der Zeitraum innerhalb des Erfassungsdatensatzes, über den das Spektrum berechnet wird. Die Analyselänge ist der Zeitraum innerhalb des Erfassungsdatensatzes, über den alle anderen Messungen wie Amplitude vs. Zeit oder Spektrum werden wie im folgenden Beispiel dargestellt erstellt. Die Spektrumlänge und die Analyselänge können miteinander verknüpft werden, sodass die zur Erzeugung der Spektrumanzeige verwendeten Daten auch für die Messanzeigen verwendet werden; sie müssen jedoch nicht miteinander verknüpft werden. Sie werden standardmäßig separat angegeben und zur Analyse verschiedener Teile des Erfassungsdatensatzes verwendet.

sdr_figure_1_2_28_19
Abbildung 1 – Aufbau der Datenerfassung.

Daten exportieren

Sobald die Messung erfolgt ist, können die Daten als IQ-Daten gespeichert werden. Wählen Sie „Datei“ und dann „Speichern unter“, um die Daten zu speichern. Ich habe CSV als Format und Acq als Datentyp ausgewählt. Datenexport.

sdr_figure_2_2_28_19

Speichern Sie anschließend die Analysedauer der aktuellen Akquisition als IQ-Datensatz.

sdr_figure_3_2_28_19

Wenn Sie die Datei in Notepad oder einem beliebigen ASCII-Editor öffnen, sehen Sie eine Kopfzeile und können überprüfen, dass Sie 1532861 Abtastpunkte mit einer Abtastfrequenz von 7000000 Hz erfasst haben.

sdr_figure_4_2_28_19

Tabellenkalkulationen

Sie können die Datei auch als CSV-Datei in eine Tabellenkalkulation importieren und dann ganz einfach die Größe (I2 + Q2) berechnen und die Daten grafisch darstellen. Da wir 1,5 Millionen Datenpunkte haben – was für manche Tabellenkalkulationsprogramme zu viele Daten sind –, können wir die SignalVu-PC-Software verwenden, um nur einen kleinen Teil der Wellenform zur Analyse zu erfassen. In diesem Fall habe ich den Header umgangen und mithilfe des Zeitübersichtsfensters 16 ms Datenfeld bzw. 120.000 Samples ausgewählt. Anschließend habe ich, wie oben beschrieben, die Analysedaten in einer CSV-Datei gespeichert.

sdr_figure_5_2_28_19

Nach dem Import in eine Tabellenkalkulation können wir die Kopfdaten und die IQ-Daten sehen. In Spalte D habe ich die Magnitude berechnet und das IQ Mag Data-Diagramm erstellt.

sdr_figure_6_2_28_19

Tabellenkalkulationen bieten zwar gewisse Möglichkeiten zur Signalanalyse, sind aber nicht für die Arbeit mit großen Matrixdaten optimiert. Es gibt jedoch mehrere Open-Source-Programmiersprachen, die genau dafür entwickelt wurden.

Oktave

GNU Octave ist eine freie Open-Source-Hochsprache, die primär für numerische Berechnungen gedacht ist. Octave kann über eine grafische Benutzeroberfläche (GUI) oder über die Kommandozeile mit der Befehlsschnittstellenversion (CLI) ausgeführt werden. In den folgenden Beispielen werde ich die CLI-Version verwenden.

Beachten Sie in den obigen Beispielen, dass die CSV-Datei mit einer Kopfzeile gespeichert wurde. Octave benötigt diese Header-Datei nicht. Der Befehl „delimiter read“ (dlmread) ist eine gute Wahl zum Importieren der Daten. Wir können das Komma als Trennzeichen festlegen und den Import nach der10. Zeile starten, sodass wir die Kopfzeile nicht importieren. Wir werden 'v' als den Vektor angeben, dem wir die Matrix zuweisen möchten.

v = dlmread (filename, ',', 10,0);

Sobald der Import abgeschlossen ist, können Sie überprüfen, ob die Daten korrekt der Variable v zugewiesen wurden. Der Befehl size gibt die Länge und Breite von v zurück. Wenn wir die Datei „Datenfeld nur“ aus dem Tabellenkalkulationsbeispiel in Octave einlesen und dann die Größe des Arrays abfragen, gibt die Abfrage eine zweispaltige Matrix mit 119.291 Zeilen zurück.

sdr_figure_7_2_28_19

Octave enthält eine leistungsstarke Reihe von Matrixmanipulationsfunktionen, zum Beispiel um die Größe des IQ-Arrays handschriftlich zu berechnen, jedes Element der Matrix zu quadrieren und dann jede horizontale Zeile mit der sum()-Funktion zu summieren.

sdr_figure_8_2_28_19

Das Ergebnis ist ein einspaltiges Array mit 119.291 Zeilen. Um dies grafisch darzustellen, verwenden Sie einfach die Funktion plot(), wie oben gezeigt. Dadurch öffnet sich das folgende Grafikfenster:

sdr_figure_9_2_28_19

Octave verfügt über diverse Matrixmanipulations- und arithmetische Funktionen. Zum Beispiel müssen Sie nicht jedes Element quadrieren und dann addieren; Sie können die Funktion sumsq() verwenden, die jedes Element in einer Zeile quadriert und dann die Zeile summiert.

sdr_figure_10_2_28_19

Anschließend können Sie den Inhalt des Arrays mit flipud() umkehren und die Daten rückwärts darstellen, wie unten gezeigt:

sdr_figure_11_2_28_19

Octave eignet sich zwar hervorragend für Matrixberechnungen und verfügt über viele Funktionen, ist aber nicht für die Analyse von Funksignalen optimiert, was uns zu GNU Radio führt.

GNU Radio

Wie Octave verfügt auch GNU Radio sowohl über eine Kommandozeilen- als auch über eine grafische Programmiersprache; GNU Radio wurde jedoch explizit für die Analyse von Funksignalen entwickelt. GNU Radio ist ein freies und quelloffenes Softwareentwicklungs-Toolkit, das Signalverarbeitungsblöcke zur Implementierung von Softwareradios bereitstellt. Es kann mit verschiedenen externen Hardwaresystemen verwendet werden, darunter die Tektronix RTSA-Familie.

Im Prinzip empfängt man ein Signal, verarbeitet es und gibt das resultierende Signal dann an ein grafisches Element wie Spektrum- oder Zeitanzeigen aus, oder man gibt es in einer Datei aus und/oder gibt es letztendlich an einen tatsächlichen Hardware-Sender aus.

GNU Radio verfügt über Filter, Kanalcodes, Synchronisationselemente, Entzerrer, Demodulatoren, Vocoder, Decoder und viele andere Elemente (Elementblöcke), die typischerweise in Funksystemen zu finden sind. Wichtiger noch: Es beinhaltet eine Methode zur Verbindung dieser Blöcke und regelt anschließend, wie Daten von einem Block zum anderen weitergegeben werden. Auch das Erweitern von GNU Radio ist recht einfach; wenn Sie einen bestimmten fehlenden Block finden, können Sie ihn schnell erstellen und hinzufügen.

Um die CSV-Daten einer Spektrumsaufnahme nutzen zu können, müssen Sie sie in ein Binärformat konvertieren, das von GNU Radio gelesen werden kann. Dies kann auf verschiedene Arten erfolgen, aber da ich Octave in diesem Beispiel bereits geöffnet hatte, habe ich ein kleines Konvertierungsskript geschrieben. Zuerst wird mit dlmread() die 1,5 Millionen Punkte umfassende Schlüsselanhängerdatei in die Matrix v eingelesen. Anschließend wird mit der Funktion textInBinOut() eine Datei erstellt, die von GNU Radio gelesen werden kann.

sdr_figure_12_2_28_19

Mit den Daten in einem verwendbaren Format können wir einen GNU Radio Flow Graph erstellen. Das Flussdiagramm unten bezieht das Signal aus der Datei, die ich gerade erstellt habe, und leitet es dann in die GUI-Frequenzsenke weiter, die das Signal im Frequenzbereich anzeigt, ähnlich wie bei einem Spektrumanalysator. Die Abtastrate beträgt 7 MS/s und ich habe sie einer Variablen namens samp_rate zugewiesen. Das Drosselelement nutzt diese Variable, um den Datendurchsatz zu begrenzen. Hinweis: Es empfiehlt sich, den Datendurchsatz auf die Abtastrate zu begrenzen. Dadurch wird verhindert, dass GNU Radio alle CPU-Ressourcen verbraucht, wenn der Ablaufgraph nicht durch einen Datenstrom in Echtzeit von externer Hardware reguliert wird.

sdr_figure_13_2_28_19

Wenn ich das Flussdiagramm ausführe, zeigt das Spektrum die folgenden Ergebnisse an:

sdr_figure_14_2_28_19

Beachten Sie, dass dies keine Konvertierung der Daten beinhaltet; alle Elemente im Flussdiagramm verwenden komplexe Datentypen, und wir verbinden einfach eine Linie zwischen den Elementen, um die komplexen Daten zwischen ihnen zu übertragen. Der nächste Schritt besteht darin, die Amplitudendaten auf plus und minus eins zu normalisieren. Im Falle dieses Signals können Sie die IQ-Daten mit 10 multiplizieren. Sie können dem Signal auch Rauschen hinzufügen und die Mittenfrequenz anpassen.

Im folgenden Beispiel habe ich zwei Range-GUI-Elemente hinzugefügt, die als Schieberegler dienen, um das additive Rauschen des Noise Generator Elements zu erhöhen und die Mittenfrequenz durch Mischen des Originalsignals mit einem von einem Single Source Element erzeugten Signal zu verschieben. Ich habe außerdem eine Spektrogrammanzeige bzw. das Wasserfall-Senken-Element hinzugefügt, um die Veränderungen im Laufe der Zeit zu beobachten.

sdr_figure_15_2_28_19

Die Ausführung des obigen Ablaufdiagramms liefert die folgende Ausgabe. Wenn der Frequenzschieber bewegt wird, kann man sehen, wie sich die Mittenfrequenz des ursprünglichen Trägers verschiebt, und wenn wir Rauschen von der Rauschquelle hinzufügen, erhöht sich die Amplitude des Rauschpegels.

sdr_figure_16_2_28_19

Letztendlich wollen wir das Signal demodulieren und es im Zeitbereich betrachten. Mit einem einfachen Modulationsverfahren wie OOK ist dies relativ einfach. Da GNU Radio so leistungsstark ist, können Sie eine vollständige analoge oder digitale Empfängerkette mit Elementen aufbauen, die Ihnen die Taktrückgewinnung, komplexe Demodulationsfilterung und Symboldecodierung ermöglichen.

Da OOK relativ einfach zu dekodieren ist, habe ich das obige Flussdiagramm modifiziert, indem ich zunächst die Skalierung durch Verwendung des Multiply Const Elements vereinfacht und anschließend das IQ-Signal in eine Gleitkomma-Größe umgewandelt habe.

sdr_figure_17_2_28_19

Da die erste Messung über Funk (OTA) erfolgte, gibt es eine gewisse Variabilität in der Amplitude. Diese können wir jedoch mithilfe der Schwellenwertfunktion korrigieren, indem wir einen 1-V-Ausgang für jeden Eingangswert über 0,8 V und einen 0-V-Ausgang für jeden Wert unter 0,1 V am Eingang des Elements definieren. Die beiden Amplitudendiagramme zeigen sowohl die Rohamplitudendaten als auch die durch die Schwellenwertfunktion gefilterten Amplitudendaten.

sdr_header_image_2_28_19_1

 

Beachten Sie, dass ich im Flussdiagramm die Daten auch um den Faktor siebzig reduziert und dann das Wave File Sink Element verwendet habe, um die resultierenden Daten zur Weiterverarbeitung im nächsten Tool in einer Datei zu speichern.

 

Kühnheit

Audacity ist eine kostenlose Open-Source-Softwareanwendung zum Bearbeiten und Aufnehmen digitaler Audiodateien. Viele nutzen es auch zur Analyse demomodulierter Daten verschiedenster Art. Es ermöglicht Ihnen, Daten bis hin zu jedem einzelnen Abtastpunkt anzuzeigen und zu bearbeiten. Im folgenden Beispiel habe ich so weit hineingezoomt, dass jeder einzelne Abtastpunkt sichtbar ist.

sdr_figure_19_2_28_19

Mithilfe des Beispielbearbeitungswerkzeugs können Sie jeden einzelnen Punkt anpassen oder bei Bedarf sogar die gesamte Hüllkurve ändern. Um die Datei wieder in GNU Radio zu importieren, verwenden Sie einfach das Source Wav File Element.

Fazit

Probleme mit störungsfreiem Dynamikbereich, Spiegelungen, Oberwellen und anderen Störsignalen beeinträchtigen die Leistungsfähigkeit vieler heute auf dem Markt erhältlicher SDRs. Daher ist es für eine erfolgreiche Analyse von grundlegender Bedeutung sicherzustellen, dass die erfassten Daten vor der Verarbeitung von guter Qualität sind. Die Verwendung eines leistungsstarken RSA306 oder RSA500 RTSA als SDR gewährleistet die Erfassung qualitativ hochwertiger Spektrumdaten. Sobald die Daten erfasst sind, stehen zahlreiche leistungsstarke Software-Tools zur Verfügung, die SDR-Funktionalität ermöglichen.

 In diesem Beitrag habe ich nur an der Oberfläche gekratzt. Sowohl Octave als auch GNU Radio können auch für Taktrückgewinnung, Demodulation und Messungen an allen Arten von IQ-modulierten Signalen verwendet werden, während Audacity die grafische Bearbeitung auf Sample-Ebene ermöglicht. Die Kombination hochwertiger Empfangsfunktionen mit einer Reihe leistungsstarker Open-Source-Softwaretools bietet nahezu unendliche Analysemöglichkeiten und die Möglichkeit, tiefe Einblicke in die Funkumgebung um uns herum zu gewinnen. Erfahren Sie mehr über Spektrumanalysatoren“