Документация Engee

MATLAB / Simulink UHD API

MATLAB UHD API

Для обеспечения взаимодействия MATLAB с платформой РИТМ SDR USRP требуется наличие установленного пакета аппаратной поддержки Communications Toolbox Support Package for USRP Radio. Данный инструментарий позволяет осуществлять моделирование сигналов, их последующую передачу на SDR-устройство, а также прием и анализ данных с использованием развитого набора средств обработки, доступных в MATLAB.

image.png

После установки пакета аппаратной поддержки можно приступить к разработке скрипта. Алгоритм работы идентичен примерам из других разделов: осуществляется передача гармонического сигнала на передатчик с последующим чтением и визуализацией данных во временной и частотной областях.

В первую очередь выполняется инициализация глобальных параметров системы, таких как частота тактирования (Master Clock Rate), частота дискретизации, размер кадра и несущая частота:

masterClockRate = 60e6;
sampleRate = 4e6;
samplesPerFrame = 1024*5;
centerFreq = 2.0e9;

Далее создаются системные объекты для управления передающим (TX) и приемным (RX) трактами РИТМ SDR USRP. В параметрах указываются адрес устройства, коэффициенты интерполяции и децимации, уровни усиления и порты антенн:

tx = comm.SDRuTransmitter(...
'Platform', 'E320', ...
'IPAddress', '192.168.2.100', ...
'MasterClockRate', masterClockRate, ...
'InterpolationFactor', masterClockRate/sampleRate, ...
'CenterFrequency', centerFreq, ...
'Gain', 7);

rx = comm.SDRuReceiver(...
'Platform', 'E320', ...
'IPAddress', '192.168.2.100', ...
'MasterClockRate', masterClockRate, ...
'DecimationFactor', masterClockRate/sampleRate, ...
'SamplesPerFrame', samplesPerFrame, ...
'CenterFrequency', centerFreq, ...
'Gain', 60, ...
'OutputDataType', 'double', ...
'ReceiveAntennaPort','TX/RX');

Следующим шагом настраивается синусоидальный сигнал. Определяются его рабочая частота, частота дискретизации, формат вывода (комплексный сигнал) и тип данных:

sineFreq = 1e5;
sineGen = dsp.SineWave(1, sineFreq, ...
    'SampleRate',       sampleRate, ...
    'SamplesPerFrame',  samplesPerFrame, ...
    'ComplexOutput',    true, ...
    'OutputDataType',   'double');
txSignal = sineGen();

Для визуализации принятой информации инициализируются объекты осциллографа (timescope) и спектроанализатора (spectrumAnalyzer). Для них задаются временной интервал отображения, метод оценки спектральной плотности мощности и границы осей:

tScope = timescope(...
    'SampleRate',       sampleRate, ...
    'TimeSpan',         5/sineFreq, ...
    'Name',             'Осциллограмма принятого сигнала', ...
    'YLimits',          [-0.5, 0.5]);
sAnalyzer = spectrumAnalyzer(...
    'SampleRate',       sampleRate, ...
    'Method',           'Welch', ...
    'Title',            'Спектр принятого сигнала', ...
    'YLimits',          [-120, 0]);

В основном цикле программы реализуется непрерывный процесс передачи сформированного сигнала, приема данных из эфира и их оперативного вывода на графические панели для последующего анализа:

while 1
    tx(txSignal);
    [rxSignal, len] = rx();
    if len > 0
        tScope(rxSignal);
        sAnalyzer(rxSignal);
    end
end
image 44

Для завершения работы программы необходимо нажать кнопку Stop на верхней панели инструментов вкладки Editor. Для корректного разрыва соединения с платформой РИТМ SDR USRP следует выполнить следующий код:

release(tx);
release(rx);
release(tScope);
release(sAnalyzer);
Использование функции release для системных объектов протокола UHD является обязательным. Без вызова данного метода корректное освобождение ресурсов и разрыв соединения с РИТМ SDR USRP невозможны.

Для обеспечения взаимодействия Simulink с платформой РИТМ SDR USRP требуется наличие установленного пакета аппаратной поддержки Communications Toolbox Support Package for USRP Radio. После завершения инсталляции становится возможным проектирование моделей с использованием платформы РИТМ SDR USRP.

На начальном этапе необходимо инициализировать генератор гармонических колебаний Sine Wave, параметры настройки данного блока представлены на изображении ниже. Также в состав модели следует включить блок SDRu Transmitter (соответствующие параметры указаны далее). Выходной порт генератора синусоидального сигнала соединяется с входным портом блока SDRu Transmitter.

image 40

Следующим этапом является конфигурирование блока приемника SDRu Receiver (параметры настройки приведены ниже). Для последующей визуализации и анализа данных необходимо подключить выход данного блока к входам блоков Time Scope, предназначенного для исследования временных характеристик принятого сигнала, и Spectrum Analyzer, используемого для анализа его спектрального состава.

image 41

В итоге модель должна выглядеть как показано на рисунке.

image 42

Кроме того, для обеспечения параллельной передачи и приема данных в режиме реального времени необходимо произвести настройку решателя Solver. В конфигурационных параметрах модели следует установить тип решателя Type как Fixed-step (с фиксированным шагом), а в качестве непосредственно решателя Solver выбрать discrete (no continuous states).

image 31

Запустив Run можно получить следующие графики, показанные на рисунке.

image 38

Можно заметить, что в начале настраивается прием данных, а только потом начинается передача сигнала. Так же, если приблизить, можно увидеть синусоиду правильной формы.

image 39