MATLAB / Simulink UHD API
MATLAB UHD API
Для обеспечения взаимодействия MATLAB с платформой РИТМ SDR USRP требуется наличие установленного пакета аппаратной поддержки Communications Toolbox Support Package for USRP Radio. Данный инструментарий позволяет осуществлять моделирование сигналов, их последующую передачу на SDR-устройство, а также прием и анализ данных с использованием развитого набора средств обработки, доступных в MATLAB.
После установки пакета аппаратной поддержки можно приступить к разработке скрипта. Алгоритм работы идентичен примерам из других разделов: осуществляется передача гармонического сигнала на передатчик с последующим чтением и визуализацией данных во временной и частотной областях.
В первую очередь выполняется инициализация глобальных параметров системы, таких как частота тактирования (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
Для завершения работы программы необходимо нажать кнопку Stop на верхней панели инструментов вкладки Editor. Для корректного разрыва соединения с платформой РИТМ SDR USRP следует выполнить следующий код:
release(tx);
release(rx);
release(tScope);
release(sAnalyzer);
Использование функции release для системных объектов протокола UHD является обязательным. Без вызова данного метода корректное освобождение ресурсов и разрыв соединения с РИТМ SDR USRP невозможны.
|
Simulink UHD API
Для обеспечения взаимодействия Simulink с платформой РИТМ SDR USRP требуется наличие установленного пакета аппаратной поддержки Communications Toolbox Support Package for USRP Radio. После завершения инсталляции становится возможным проектирование моделей с использованием платформы РИТМ SDR USRP.
На начальном этапе необходимо инициализировать генератор гармонических колебаний Sine Wave, параметры настройки данного блока представлены на изображении ниже. Также в состав модели следует включить блок SDRu Transmitter (соответствующие параметры указаны далее). Выходной порт генератора синусоидального сигнала соединяется с входным портом блока SDRu Transmitter.
Следующим этапом является конфигурирование блока приемника SDRu Receiver (параметры настройки приведены ниже). Для последующей визуализации и анализа данных необходимо подключить выход данного блока к входам блоков Time Scope, предназначенного для исследования временных характеристик принятого сигнала, и Spectrum Analyzer, используемого для анализа его спектрального состава.
В итоге модель должна выглядеть как показано на рисунке.
Кроме того, для обеспечения параллельной передачи и приема данных в режиме реального времени необходимо произвести настройку решателя Solver. В конфигурационных параметрах модели следует установить тип решателя Type как Fixed-step (с фиксированным шагом), а в качестве непосредственно решателя Solver выбрать discrete (no continuous states).
Запустив Run можно получить следующие графики, показанные на рисунке.

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