exponenta event banner

Считывание данных фазы и квадратуры (IQ) из анализатора сигналов по TCP/IP

В этом примере показано, как получить IQ-данные от анализатора сигналов через интерфейс TCP/IP.

Toolbox™ управления приборами поддерживает связь с приборами через интерфейсы и драйверы.

Полный список поддерживаемых аппаратных средств можно найти на странице инструментария управления приборами по адресу www.mathworks.com/products/instrument/

Введение

В этом примере данные IQ извлекаются из анализатора сигналов серии X (N9030A, PXA Signal Analyzer) компании Keysight Technologies ® (ранее Agilent Technologies ®) через интерфейс TCP/IP.

Требования

Для запуска этого примера необходим анализатор сигнала серии X с подключением Ethernet (TCP/IP). Этот пример можно также выполнить с помощью MATLAB на анализаторе серии X или на ПК в той же сети, что и анализатор серии X.

В этом примере используются функции панели инструментов управления приборами и системного Toolbox™ DSP.

Определение параметров измерения

Перед выполнением измерения определите параметры, используемые для конфигурирования прибора. На основе измеряемого сигнала может потребоваться изменить некоторые из следующих параметров.

% Specify the IP address of the signal analyzer
addressMXA = "172.28.16.61";

Определения параметров

% Center frequency of the modulated waveform (Hz)
centerFrequency = 2.14e9;

% Bandwidth of the signal (Hz)
bandwidth = 25e6;

% Measurement time (s)
measureTime = 8e-3;

% Mechanical attenuation in the signal analyzer(dB)
mechAttenuation = 0;

% Start frequency for Spectrum Analyzer view
startFrequency = 2.11e9;

% Stop frequency for Spectrum Analyzer view
stopFrequency = 2.17e9;

% Resolution Bandwidth for Spectrum Analyzer view
resolutionBandwidth = 200e3;

% Video Bandwidth for Spectrum Analyzer view
videoBandwidth = 300;

Подключение к прибору

  • Настройка подключения КИП с использованием TCP/IP-соединения.

  • Установите время ожидания, достаточное для измерения и передачи данных.

  • Установите порядок байтов «big-endian» для считывания данных с плавающей запятой в правильном формате из анализатора.

signalAnalyzerObject = tcpclient(addressMXA, 5025);
signalAnalyzerObject.ByteOrder = "big-endian";
signalAnalyzerObject.Timeout = 20;

Запрос идентификационной информации прибора

Сбросьте прибор в известное состояние с помощью соответствующей команды SCPI. Запросите идентификатор прибора, чтобы убедиться, что мы подключены к нужному прибору.

writeline(signalAnalyzerObject, "*RST");
instrumentInfo = writeread(signalAnalyzerObject, "*IDN?");
disp("Instrument identification information: " + instrumentInfo);
Instrument identification information: Agilent Technologies,N9030A,US00071181,A.14.16

Настройка прибора для измерения формы IQ-сигнала

Анализаторы сигналов и спектров серии X выполняют IQ-измерения, а также спектральные измерения. В этом примере выполняется сбор данных IQ временной области, их визуализация в MATLAB и анализ полученных данных. Команды SCPI используются для конфигурирования прибора для выполнения измерений и определения формата передачи данных после выполнения измерений.

% Set up signal analyzer mode to Basic/IQ mode
writeline(signalAnalyzerObject,":INSTrument:SELect BASIC");

% Set the center frequency
writeline(signalAnalyzerObject,":SENSe:FREQuency:CENTer " + num2str(centerFrequency));

% Set the resolution bandwidth
writeline(signalAnalyzerObject,":SENSe:WAVEform:BANDwidth:RESolution " + num2str(bandwidth));

% Turn off averaging
writeline(signalAnalyzerObject,":SENSe:WAVeform:AVER OFF");

% Set to take one single measurement once the trigger line goes high
writeline(signalAnalyzerObject,":INIT:CONT OFF");

% Set the trigger to external source 1 with positive slope triggering
writeline(signalAnalyzerObject,":TRIGger:WAVeform:SOURce IMMediate");
writeline(signalAnalyzerObject,":TRIGger:LINE:SLOPe POSitive");

% Set the time for which measurement needs to be made
writeline(signalAnalyzerObject,":WAVeform:SWE:TIME " + num2str(measureTime));

% Turn off electrical attenuation.
writeline(signalAnalyzerObject,":SENSe:POWer:RF:EATTenuation:STATe OFF");

% Set mechanical attenuation level
writeline(signalAnalyzerObject,":SENSe:POWer:RF:ATTenuation " + num2str(mechAttenuation));

% Turn IQ signal ranging to auto
writeline(signalAnalyzerObject,":SENSe:VOLTage:IQ:RANGe:AUTO ON");

% Set the endianness of returned data
writeline(signalAnalyzerObject,":FORMat:BORDer NORMal");

% Set the format of the returned data
writeline(signalAnalyzerObject,":FORMat:DATA REAL,32");

Инициирование измерения

Запустите прибор для выполнения измерения, дождитесь завершения операции измерения и прочтите сигнал. Перед обработкой данных отделите компоненты I&Q от перемеженных данных, возвращаемых прибором, и создайте сложный вектор в MATLAB.

% Trigger the instrument and initiate measurement
writeline(signalAnalyzerObject,"*TRG");
writeline(signalAnalyzerObject,":INITiate:WAVeform");

% Wait till measure operation is complete
measureComplete = writeread(signalAnalyzerObject,"*OPC?");

% Read the IQ data
writeline(signalAnalyzerObject,":READ:WAV0?");
data = readbinblock(signalAnalyzerObject,"single");

% Read the additional terminator character from the instrument
read(signalAnalyzerObject,1);

% Separate the data and build the complex IQ vector.
inphase = data(1:2:end);
quadrature = data(2:2:end);
IQData = inphase+1i*quadrature;

Отображение информации об измерении

Инструмент предоставляет информацию о последних полученных данных. Зафиксируйте эту информацию и отобразите ее.

writeline(signalAnalyzerObject,":FETCH:WAV1?");
signalSpec = readbinblock(signalAnalyzerObject,"single");
sampleRate = 1/signalSpec(1);
disp("Sample Rate (Hz) = " + num2str(sampleRate));
disp("Number of points read = " + num2str(signalSpec(4)));
disp("Max value of signal (dBm) = " + num2str(signalSpec(6)));
disp("Min value of signal (dBm) = " + num2str(signalSpec(7)));
Sample Rate (Hz) = 31250000.8838
Number of points read = 250001
Max value of signal (dBm) = -8.211
Min value of signal (dBm) = -42.5689

Постройте график полученных данных IQ

Постройте первые 1000 точек полученных данных временной области и аннотируйте рисунок.

figure(1)
plot(real(IQData(1:1000)),"b");
hold on
plot(imag(IQData(1:1000)),"g");
legend("Inphase signal", "Quadrature signal");
title("IQ Data for the first 1000 points of acquired signal")
xlabel("Sample number");
ylabel("Voltage");

Постройте график спектра IQ-данных

Представление спектра может содержать больше информации, чем представление данных во временной области. Например, можно использовать представление спектра для идентификации основных полос частот, полосы пропускания сигнала и т.д. Для печати вида спектра требуется панель системных инструментов DSP. Если необходимые функциональные возможности недоступны, могут возникнуть ошибки.

% Create a periodogram spectrum with a Hamming window
figure(2)
periodogram(IQData,hamming(length(IQData)),[],sampleRate,"centered")

Переключите прибор обратно в режим анализатора спектра

Переключите прибор в режим анализатора спектра и сравните вид спектра, сформированный в MATLAB, с видом на анализаторе сигналов. Дополнительные команды SCPI используются для настройки параметров измерения и отображения приборов.

% Switch back to the spectrum analyzer view
writeline(signalAnalyzerObject,":INSTrument:SELect SA");

% Set mechanical attenuation level
writeline(signalAnalyzerObject,":SENSe:POWer:RF:ATTenuation " + num2str(mechAttenuation));

% Set the center frequency, RBW and VBW and trigger
writeline(signalAnalyzerObject,":SENSe:FREQuency:CENTer " + num2str(centerFrequency));
writeline(signalAnalyzerObject,":SENSe:FREQuency:STARt " + num2str(startFrequency));
writeline(signalAnalyzerObject,":SENSe:FREQuency:STOP " + num2str(stopFrequency));
writeline(signalAnalyzerObject,":SENSe:BANDwidth:RESolution " + num2str(resolutionBandwidth));
writeline(signalAnalyzerObject,":SENSe:BANDwidth:VIDeo " + num2str(videoBandwidth));

% Continuous measurement
writeline(signalAnalyzerObject,":INIT:CONT ON");

% Trigger
writeline(signalAnalyzerObject,"*TRG");

Очистить

% Close and delete instrument connections
clear signalAnalyzerObject