FAQs from Rohde & Schwarz

Beispiel für die manuelle Erzeugung einer *.wv-Datei mit Python

Beschreibung

Ich möchte eine Wellenform-Datei (*.wv) manuell mit Python generieren, die ich später in meinen Vektorsignalgenerator laden kann.

Auflösung

Um eine *.wv-Datei manuell zu generieren, benötigen Sie die I- und Q-Daten Ihrer Wellenform und die Abtastfrequenz (Takt), mit dem das Signal abgetastet wurde.

In diesem einfachen Beispiel wird ein 10-MHz-Taktsignal und eine I/Q-Folge von 20 Abtastwerten verwendet.

FAQ-Beispiel-für-die-manuelle-Erzeugung-einer-*.wv-Datei-mit-Python_01

Im Header der Wellenformdatei werden sogenannte Tags eingefügt. Die Tags TYPE, CLOCK, LEVEL OFFS und WAVEFORM sind für jede Wellenform zwingend erforderlich.

Alle weiteren Tags sind optional und können nach dem TYPE-Tag in beliebiger Reihenfolge eingesetzt werden.

Der numerische Bereich zwischen –1,0 und +1.0 der I- und Q-Daten entspricht dem Modulationsbereich des 16-bit-Wellenform-D/A-Konverters von -32767 bis +32767.

Diese Zahlen vom Typ "16 Bit Signed Integer" müssen in die resultierenden I- und Q-Werte konvertiert werden, die im hexadezimalen Little-Endian-Format repräsentiert werden.

Anschließend müssen die Daten im Binärformat mit der folgenden Struktur in Ihr WAVEFORM-Tag eingesetzt werden:

  • Berechnung der Länge
  • Länge = Zahl von I/Q-Paaren * 4 + 1 = 20*4 + 1 = 81 Bytes
  • Platzieren Sie den String {WAVEFORM-81:# am Beginn des Datensatzes.
  • Platzieren Sie das Symbol } am Ende des Datensatzes.

Nach Ausführen des obigen Codes kann die erzeugte Datei mit der R&S ARB Toolbox geöffnet werden und liefert die folgende Wellenform. Indem man die I- und Q-Daten aus dem Python-Code vergleicht, sieht man, dass die Daten korrekt generiert wurden.

FAQ-Beispiel-für-die-manuelle-Erzeugung-einer-*.wv-Datei-mit-Python_02

Referenzen:
SMBV100B Bedienhandbuch
https://www.rohde-schwarz.com/produkte/messtechnik/vektorsignalgeneratoren/rs-smbv100b-vektorsignalgenerator_63493-519808.html