FAQs from Rohde & Schwarz

Datenübertragung im I/Q-Modus

Frage

Empfangen der I- und Q-Werte per Fernsteuerung. Wie werden die I- und Q-Werte in den Datenstrom eingefügt?

Antwort

Fernauslesen der I/Q-Daten vom R&S FSV

Die Beschreibung erläutert die Formate für das Auslesen der I/Q-Daten im Binärmodus. Die Reihenfolge der I- und Q-Informationen im binären Byte-Strom wird durch das Übertragungsformat bestimmt. Es sind drei verschiedene Übertragungsformate definiert.

Der Fernsteuerbefehl für die Festlegung des Übertragungsformats lautet

TRACe<n>:IQ:DATA:FORMat <Format>

Diese drei Übertragungsformate haben die folgenden Bezeichnungen:

COMPatible -> 512k I-Musterdaten, 512k Q -Musterdaten, 512k I-Daten ......

IQBLock -> I-Datenblock, Q-Datenblock

IQPair -> I-Musterdaten, Q-Musterdaten, I-Musterdaten, Q-Musterdaten, I-Daten ......

I/Q mode data transfer - FSV

Die Zeichnung enthält Muster (keine Bytes). Vier Bytes enthalten die Inhalte eines Musters.

Im Fall von Datenblöcken sind 512k I-Musterdaten: 512k Muster = 512 * 1024 = 524288 Muster

Im Fall von Datenblöcken sind 512k Q-Musterdaten: 512k Muster = 512 * 1024 = 524288 Muster

Es gibt zwei verschiedene Methoden für die Initiierung einer Datenübertragung: Abrufen aller Daten in einem Vorgang und Abrufen der Daten in kleinen Teileinheiten.

Abrufen aller Daten in einem Vorgang: TRACe<n>:IQ:DATA?

Abrufen der Daten in kleinen Teileinheiten: TRACe<n>:IQ:DATA:MEMory? <OffsetSamples>,<NoOfSamples>

Die Gesamtanzahl der über die Schnittstelle übertragenen Datenbytes ist:

L = H + s * b * i

L -> Gesamtanzahl der übertragenen Datenbytes

H -> Länge der Header-Informationen (siehe Header-Spezifikation am Ende dieser Hinweise)

s -> Anzahl der Muster

b -> immer 4, da vier Bytes die Inhalte eines Musters enthalten

i -> immer 2, da ein Muster I-Daten und Q-Daten umfasst

Beispiele:

===================================================================================================

Übertragungsformat: COMPatible

Anzahl der gemessenen Muster: 10

Anzahl der zu übertragenden Bytes: 10 Muster * 4 * 2 + Header = 80 Byte + Header

------------------------------------------------------------------------------------------------------------

Verwenden von TRACe<n>:IQ:DATA?

Der Datenstrom enthält: Header

40 Byte I-Daten

40 Byte Q-Daten

------------------------------------------------------------------------------------------------------------

Verwenden von Using TRACe<n>:IQ:DATA:MEMory? <OffsetSamples>,<NoOfSamples>

TRACe<n>:IQ:DATA:MEMory? 0, 3

Der Datenstrom enthält: Header

12 Byte I-Daten

12 Byte Q-Daten

TRACe<n>:IQ:DATA:MEMory? 3, 3

Der Datenstrom enthält: Header

12 Byte I-Daten

12 Byte Q-Daten

TRACe<n>:IQ:DATA:MEMory? 6, 3

Der Datenstrom enthält: Header

12 Byte I-Daten

12 Byte Q-Daten

TRACe<n>:IQ:DATA:MEMory? 9, 1

Der Datenstrom enthält: Header

4 Byte I-Daten

4 Byte Q-Daten

==============================================================

==============================================================

Übertragungsformat: COMPatible

Anzahl der gemessenen Muster: 700000

Anzahl der zu übertragenden Bytes: 700000 Muster * 4 * 2 + Header = 5600000 Byte + Header

------------------------------------------------------------------------------------------------------------

Verwenden von TRACe<n>:IQ:DATA?

Der Datenstrom enthält: Header

2097152 Byte I-Daten

2097152 Byte Q-Daten

702848 Byte I-Daten

702848 Byte Q-Daten

------------------------------------------------------------------------------------------------------------

Verwenden von Using TRACe<n>:IQ:DATA:MEMory? <OffsetSamples>,<NoOfSamples>

TRACe<n>:IQ:DATA:MEMory? 0, 5000

Der Datenstrom enthält: Header

20000 Byte I-Daten

20000 Byte Q-Daten

TRACe<n>:IQ:DATA:MEMory? 5000, 600000

Der Datenstrom enthält: Header

2097152 Byte I-Daten

2097152 Byte Q-Daten

302848 Byte I-Daten

302848 Byte Q-Daten

TRACe<n>:IQ:DATA:MEMory? 605000, 95000

Der Datenstrom enthält: Header

380000 Byte I-Daten

380000 Byte Q-Daten

===================================================================================================

===================================================================================================

===================================================================================================

===================================================================================================

Übertragungsformat: IQBLock

Anzahl der gemessenen Muster: 10

Anzahl der zu übertragenden Bytes: 10 Muster * 4 * 2 + Header = 80 Byte + Header

------------------------------------------------------------------------------------------------------------

Verwenden von TRACe<n>:IQ:DATA?

Der Datenstrom enthält: Header

40 Byte I-Daten

40 Byte Q-Daten

------------------------------------------------------------------------------------------------------------

Verwenden von Using TRACe<n>:IQ:DATA:MEMory? <OffsetSamples>,<NoOfSamples>

TRACe<n>:IQ:DATA:MEMory? 0, 3

Der Datenstrom enthält: Header

12 Byte I-Daten

12 Byte Q-Daten

TRACe<n>:IQ:DATA:MEMory? 3, 3

Der Datenstrom enthält: Header

12 Byte I-Daten

12 Byte Q-Daten

TRACe<n>:IQ:DATA:MEMory? 6, 3

Der Datenstrom enthält: Header

12 Byte I-Daten

12 Byte Q-Daten

TRACe<n>:IQ:DATA:MEMory? 9, 1

Der Datenstrom enthält: Header

4 Byte I-Daten

4 Byte Q-Daten

==============================================================

==============================================================

Übertragungsformat: IQBLock

Anzahl der gemessenen Muster: 700000

Anzahl der zu übertragenden Bytes: 700000 Muster * 4 * 2 + Header = 5600000 Byte + Header

------------------------------------------------------------------------------------------------------------

Verwenden von TRACe<n>:IQ:DATA?

Der Datenstrom enthält: Header

2800000 Byte I-Daten

2800000 Byte Q-Daten

------------------------------------------------------------------------------------------------------------

Verwenden von Using TRACe<n>:IQ:DATA:MEMory? <OffsetSamples>,<NoOfSamples>

TRACe<n>:IQ:DATA:MEMory? 0, 5000

Der Datenstrom enthält: Header

20000 Byte I-Daten

20000 Byte Q-Daten

TRACe<n>:IQ:DATA:MEMory? 5000, 600000

Der Datenstrom enthält: Header

24000000 Byte I-Daten

24000000 Byte Q-Daten

TRACe<n>:IQ:DATA:MEMory? 605000, 95000

Der Datenstrom enthält: Header

380000 Byte I-Daten

380000 Byte Q-Daten

===================================================================================================

===================================================================================================

===================================================================================================

===================================================================================================

Übertragungsformat: IQPair

Anzahl der gemessenen Muster: 10

Anzahl der zu übertragenden Bytes: 10 Muster * 4 * 2 + Header = 80 Byte + Header

------------------------------------------------------------------------------------------------------------

Verwenden von TRACe<n>:IQ:DATA?

Der Datenstrom enthält: Header

4 Byte I-Daten

4 Byte Q-Daten

4 Byte I-Daten

4 Byte Q-Daten

........

........

4 Byte I-Daten

4 Byte Q-Daten

Insgesamt sind es 40 Byte I-Daten und 40 Byte Q-Daten

------------------------------------------------------------------------------------------------------------

Verwenden von Using TRACe<n>:IQ:DATA:MEMory? <OffsetSamples>,<NoOfSamples>

TRACe<n>:IQ:DATA:MEMory? 0, 3

Der Datenstrom enthält: Header

4 Byte I-Daten

4 Byte Q-Daten

4 Byte I-Daten

4 Byte Q-Daten

4 Byte I-Daten

4 Byte Q-Daten

TRACe<n>:IQ:DATA:MEMory? 3, 3

Der Datenstrom enthält: Header

4 Byte I-Daten

4 Byte Q-Daten

4 Byte I-Daten

4 Byte Q-Daten

4 Byte I-Daten

4 Byte Q-Daten

TRACe<n>:IQ:DATA:MEMory? 6, 3

Der Datenstrom enthält: Header

4 Byte I-Daten

4 Byte Q-Daten

4 Byte I-Daten

4 Byte Q-Daten

4 Byte I-Daten

4 Byte Q-Daten

TRACe<n>:IQ:DATA:MEMory? 9, 1

Der Datenstrom enthält: Header

4 Byte I-Daten

4 Byte Q-Daten

==============================================================

==============================================================

Übertragungsformat: IQPair

Anzahl der gemessenen Muster: 700000

Anzahl der zu übertragenden Bytes: 700000 Muster * 4 * 2 + Header = 5600000 Byte + Header

------------------------------------------------------------------------------------------------------------

Verwenden von TRACe<n>:IQ:DATA?

Der Datenstrom enthält: Header

4 Byte I-Daten

4 Byte Q-Daten

4 Byte I-Daten

4 Byte Q-Daten

4 Byte I-Daten

4 Byte Q-Daten

......

......

4 Byte I-Daten

4 Byte Q-Daten

Insgesamt sind es 2800000 Byte I-Daten und 2800000 Byte Q-Daten

------------------------------------------------------------------------------------------------------------

Verwenden von Using TRACe<n>:IQ:DATA:MEMory? <OffsetSamples>,<NoOfSamples>

TRACe<n>:IQ:DATA:MEMory? 0, 5000

Der Datenstrom enthält: Header

4 Byte I-Daten

4 Byte Q-Daten

4 Byte I-Daten

4 Byte Q-Daten

4 Byte I-Daten

4 Byte Q-Daten

......

......

4 Byte I-Daten

4 Byte Q-Daten

Insgesamt sind es 20000 Byte I-Daten und 20000 Byte Q-Daten

TRACe<n>:IQ:DATA:MEMory? 5000, 600000

Der Datenstrom enthält: Header

4 Byte I-Daten

4 Byte Q-Daten

4 Byte I-Daten

4 Byte Q-Daten

4 Byte I-Daten

4 Byte Q-Daten

......

......

4 Byte I-Daten

4 Byte Q-Daten

Insgesamt sind es 24000000 Byte I-Daten und 24000000 Byte Q-Daten

TRACe<n>:IQ:DATA:MEMory? 605000, 95000

Der Datenstrom enthält: Header

4 Byte I-Daten

4 Byte Q-Daten

4 Byte I-Daten

4 Byte Q-Daten

4 Byte I-Daten

4 Byte Q-Daten

......

......

4 Byte I-Daten

4 Byte Q-Daten

Insgesamt sind es 380000 Byte I-Daten und 380000 Byte Q-Daten

===================================================================================================

===================================================================================================

===================================================================================================

===================================================================================================

===================================================================================================

Spezifikation des Headers eines Binärdatenstroms:

#45168xxxxxxxx

Das ASCII-Zeichen # leitet den Datenblock ein. Die nächste Zahl gibt an, wie viele der folgenden Ziffern die Länge des Datenblocks beschreiben. Im Beispiel geben die 4 folgenden Ziffern eine Länge von 5168 Byte an. Anschließend folgen die Datenbytes. Während der Übertragung dieser Datenbytes werden alle Endzeichen oder andere Steuerzeichen ignoriert, bis alle Bytes übertragen sind.

Dieses Format unterstützt nur eine Byte-Anzahl von bis zu 9 Ziffern für die Anzahl der Bytes. Bei mehr als 999999999 Byte wird das folgende zusätzliche Format verwendet.

#(1100000000) xxxxxxxx

Die Byte-Länge wird in Klammern angegeben. Im Beispiel gibt die Anzahl der Bytes eine Länge von 1.100.000.000 Byte an. Die Datenbytes folgen nach der schließenden Klammer.