FAQs from Rohde & Schwarz

Передача данных в режиме I/Q

Вопрос

Получение значений I и Q в режиме дистанционного управления. Как значения I и Q вставляются в поток данных ?

Ответ

Дистанционное считывание I/Q-данных из анализатора R&S FSV

В описании определены форматы считывания I/Q-данных в двоичном режиме. Порядок значений I и Q в двоичном потоке байтов устанавливается в соответствии с форматом передачи данных. Указаны три различных формата передачи данных.

Команда дистанционного управления для указания формата передачи данных:

TRACe<n>:IQ:DATA:FORMat <формат>

Эти три формата передачи данных:

COMPatible -> 512k отсчетов данных I, 512k отсчетов данных Q, 512k отсчетов данных I ......

IQBLock -> блок данных I, блок данных Q

IQPair -> отсчет данных I, отсчет данных Q, отсчет данных I, отсчет данных Q, отсчет данных I ......

I/Q mode data transfer - FSV

Чертеж содержит отсчеты (не байты). В четырех байтах находится содержимое одного отсчета.

Для блоков данных 512k отсчетов данных I: 512k отсчетов = 512 * 1024 = 524288 отсчетов

Для блоков данных 512k отсчетов данных Q: 512k отсчетов = 512 * 1024 = 524288 отсчетов

Есть два различных способа инициирования передачи данных: получение всех данных за один раз и получение данных небольшими частями.

Получение всех данных за один раз: TRACe<n>:IQ:DATA?

Получение данных небольшими частями: TRACe<n>:IQ:DATA:MEMory? s<смещение отсчетов>,<количество отсчетов>

Общее количество байтов данных, переданных через интерфейс:

L = H + s * b * i

L -> общее количество переданных байтов данных

H -> размер данных заголовка (см. спецификацию заголовка в конце данного документа)

s -> количество отсчетов

b -> всегда 4, так как в четырех байтах находится содержимое одного отсчета

i -> всегда 2, так как один отсчет представляет данные по I и Q

Примеры:

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

Формат передачи данных: COMPatible

Количество измеренных отсчетов: 10

Количество байтов для передачи: 10 отсчетов * 4 * 2 + заголовок = 80 байтов + заголовок

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

Использование команды TRACe<n>:IQ:DATA?

Поток данных содержит: заголовок

40 байтов данных I

40 байтов данных Q

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

Использование команды TRACe<n>:IQ:DATA:MEMory? s<смещение отсчетов>,<количество отсчетов>

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

Поток данных содержит: заголовок

12 байтов данных I

12 байтов данных Q

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

Поток данных содержит: заголовок

12 байтов данных I

12 байтов данных Q

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

Поток данных содержит: заголовок

12 байтов данных I

12 байтов данных Q

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

Поток данных содержит: заголовок

4 байта данных I

4 байта данных Q

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

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

Формат передачи данных: COMPatible

Количество измеренных отсчетов: 700000

Количество байтов для передачи: 700000 отсчетов * 4 * 2 + заголовок = 5600000 байтов + заголовок

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

Использование команды TRACe<n>:IQ:DATA?

Поток данных содержит: заголовок

2097152 байта данных I

2097152 байта данных Q

702848 байтов данных I

702848 байтов данных Q

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

Использование команды TRACe<n>:IQ:DATA:MEMory? s<смещение отсчетов>,<количество отсчетов>

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

Поток данных содержит: заголовок

20000 байтов данных I

20000 байтов данных Q

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

Поток данных содержит: заголовок

2097152 байта данных I

2097152 байта данных Q

302848 байтов данных I

302848 байтов данных Q

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

Поток данных содержит: заголовок

380000 байтов данных I

380000 байтов данных Q

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

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

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

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

Формат передачи данных: IQBLock

Количество измеренных отсчетов: 10

Количество байтов для передачи: 10 отсчетов * 4 * 2 + заголовок = 80 байтов + заголовок

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

Использование команды TRACe<n>:IQ:DATA?

Поток данных содержит: заголовок

40 байтов данных I

40 байтов данных Q

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

Использование команды TRACe<n>:IQ:DATA:MEMory? s<смещение отсчетов>,<количество отсчетов>

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

Поток данных содержит: заголовок

12 байтов данных I

12 байтов данных Q

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

Поток данных содержит: заголовок

12 байтов данных I

12 байтов данных Q

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

Поток данных содержит: заголовок

12 байтов данных I

12 байтов данных Q

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

Поток данных содержит: заголовок

4 байта данных I

4 байта данных Q

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

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

Формат передачи данных: IQBLock

Количество измеренных отсчетов: 700000

Количество байтов для передачи: 700000 отсчетов * 4 * 2 + заголовок = 5600000 байтов + заголовок

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

Использование команды TRACe<n>:IQ:DATA?

Поток данных содержит: заголовок

2800000 байтов данных I

2800000 байтов данных Q

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

Использование команды TRACe<n>:IQ:DATA:MEMory? s<смещение отсчетов>,<количество отсчетов>

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

Поток данных содержит: заголовок

20000 байтов данных I

20000 байтов данных Q

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

Поток данных содержит: заголовок

24000000 байтов данных I

24000000 байтов данных Q

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

Поток данных содержит: заголовок

380000 байтов данных I

380000 байтов данных Q

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

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

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

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

Формат передачи данных: IQPair

Количество измеренных отсчетов: 10

Количество байтов для передачи: 10 отсчетов * 4 * 2 + заголовок = 80 байтов + заголовок

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

Использование команды TRACe<n>:IQ:DATA?

Поток данных содержит: заголовок

4 байта данных I

4 байта данных Q

4 байта данных I

4 байта данных Q

........

........

4 байта данных I

4 байта данных Q

Всего 40 байтов данных I и 40 байтов данных Q

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

Использование команды TRACe<n>:IQ:DATA:MEMory? s<смещение отсчетов>,<количество отсчетов>

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

Поток данных содержит: заголовок

4 байта данных I

4 байта данных Q

4 байта данных I

4 байта данных Q

4 байта данных I

4 байта данных Q

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

Поток данных содержит: заголовок

4 байта данных I

4 байта данных Q

4 байта данных I

4 байта данных Q

4 байта данных I

4 байта данных Q

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

Поток данных содержит: заголовок

4 байта данных I

4 байта данных Q

4 байта данных I

4 байта данных Q

4 байта данных I

4 байта данных Q

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

Поток данных содержит: заголовок

4 байта данных I

4 байта данных Q

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

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

Формат передачи данных: IQPair

Количество измеренных отсчетов: 700000

Количество байтов для передачи: 700000 отсчетов * 4 * 2 + заголовок = 5600000 байтов + заголовок

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

Использование команды TRACe<n>:IQ:DATA?

Поток данных содержит: заголовок

4 байта данных I

4 байта данных Q

4 байта данных I

4 байта данных Q

4 байта данных I

4 байта данных Q

......

......

4 байта данных I

4 байта данных Q

Всего 2800000 байтов данных I и 2800000 байтов данных Q

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

Использование команды TRACe<n>:IQ:DATA:MEMory? s<смещение отсчетов>,<количество отсчетов>

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

Поток данных содержит: заголовок

4 байта данных I

4 байта данных Q

4 байта данных I

4 байта данных Q

4 байта данных I

4 байта данных Q

......

......

4 байта данных I

4 байта данных Q

Всего 20000 байтов данных I и 20000 байтов данных Q

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

Поток данных содержит: заголовок

4 байта данных I

4 байта данных Q

4 байта данных I

4 байта данных Q

4 байта данных I

4 байта данных Q

......

......

4 байта данных I

4 байта данных Q

Всего 24000000 байтов данных I и 24000000 байтов данных Q

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

Поток данных содержит: заголовок

4 байта данных I

4 байта данных Q

4 байта данных I

4 байта данных Q

4 байта данных I

4 байта данных Q

......

......

4 байта данных I

4 байта данных Q

Всего 380000 байтов данных I и 380000 байтов данных Q

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

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

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

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

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

Спецификация заголовка двоичного потока данных:

#45168xxxxxxxx

Блок данных начинается с такого символа ASCII, как #. Следующее число указывает, сколько последующих цифр описывают объем блока данных. В примере четыре последующие цифры указывают на объем, равный 5168 байтам. Далее следуют байты данных. При передаче этих байтов данных все специальные символы окончания и управления игнорируются вплоть до окончания передачи всех байтов.

Этот формат поддерживает только подсчет байтов до 9 цифр для количества байтов. Для более чем 999999999 байтов используется следующий дополнительный формат.

#(1100000000) xxxxxxxx

Число байтов считается, если указано в скобках. В примере число байтов указывает на размер, равный 1100000000 байтам. Байты данных следуют после закрывающей скобки.