exponenta event banner

Моделирование радиочастотного приемника для приема LTE

В этом примере показано, как моделировать и тестировать приемник LTE RF с использованием LTE Toolbox™ и RF Blockset™.

Описание модели

Сигнал LTE генерируется, фильтруется, передается через канал распространения и подается в модель приемника RF Blockset. Радиочастотная модель может быть собрана с использованием коммерчески доступных деталей. Измерения EVM выполняются на выходе РЧ приемника.

Этот пример реализован с использованием MATLAB ® и Simulink ®, которые взаимодействуют во время выполнения. Функциональный раздел:

Средства тестирования измерений реализованы со сценарием MATLAB, использующим объект RF System в качестве тестируемого устройства (DUT). Кадры LTE передаются между testbench и DUT.

Генерация сигнала LTE

В этом разделе мы генерируем сигнал LTE с помощью LTE Toolbox. Мы используем эталонный измерительный канал (RMC) R.6 как определено в TS 36.101 [1]. Этот RMC определяет полосу пропускания 25 элементов ресурса (RE), эквивалентную 5 МГц. Используется модуляция 64 QAM. Все RE присвоены. Кроме того, в неиспользуемых RE разрешен шум OCNG.

Генерируется только один кадр. Этот кадр будет затем повторяться несколько раз для выполнения измерений EVM.

% Configuration TS 36.101 25 REs (5 MHz), 64-QAM, full allocation
rmc = lteRMCDL('R.6');
rmc.OCNGPDSCHEnable = 'On';

% Create eNodeB transmission with fixed PDSCH data
rng(2);                 % Fixed random seed (arbitrary)
data = randi([0 1], sum(rmc.PDSCH.TrBlkSizes),1);

% Generate 1 frame, to be repeated to simulate a total of N frames
[tx, ~, info] = lteRMCDLTool(rmc, data); % 1 frame

% Calculate the sampling period and the length of the frame.
SamplePeriod = 1/info.SamplingRate;
FrameLength = length(tx);

Инициализация компонентов моделирования

В этом разделе инициализируются некоторые компоненты моделирования:

  • Количество кадров - это количество повторений сформированного кадра

  • Предварительно распределить векторы результатов

% Number of simulation frames N>=1
N = 3;

% Preallocate vectors for results for N-1 frames
% EVM is not measured in the first frame to avoid transient effects
evmpeak = zeros(N,1);   % Preallocation for results
evmrms = zeros(N,1);    % Preallocation for results

Проектирование радиочастотного приемника

Первоначальная конструкция РЧ приемника выполняется с использованием RF Budget Analyzer app. Приемник состоит из LNA, демодулятора прямого преобразования и конечного усилителя. Все этапы включают шум и нелинейность.

load rfb;

Напечатать show(rfb) для отображения начального дизайна RF-приемника в приложении RF Budget Analyzer.

Создание радиочастотной модели для моделирования

Из объекта бюджета РФ можно автоматически создать модель, которая может использоваться для моделирования оболочки цепи.

rfx = rfsystem(rfb);
rfx.SampleTime = SamplePeriod;
open_system(rfx);

Расширение модели РЧ-приемника

Можно изменить модель, созданную в предыдущем разделе, для включения дополнительных РЧ-нарушений и компонентов. Можно изменить созданную модель RF Blocket, пока не будут изменены порты ввода/вывода. В этом разделе загружается измененная модель Simulink, которая выполняет следующие функции:

  • Модель канала: включает потерю пути свободного пространства

  • РЧ приемник: включает демодулятор прямого преобразования

  • Отмена смещения ADC и DC

Можно открыть и проверить измененную модель.

model = 'simrfV2_lte_receiver';
open_system(model);

Моделирование кадров

В этом разделе моделируется указанное количество кадров. Объект RF-системы моделирует модель оболочки цепи в Accelerator режим уменьшения времени выполнения. После обработки первого кадра моделью Simulink его состояние сохраняется и автоматически передается последовательному кадру.

Выходные данные модели Simulink хранятся в переменной rx, которая доступна в рабочей области. Любые задержки, вносимые в этот сигнал, удаляются после выполнения синхронизации. EVM измеряется на результирующей форме сигнала.

load rfs;
EVMalg.EnablePlotting = 'Off';
cec.PilotAverage = 'TestEVM';

for n = 1:N
    [I, Q]=rfs(tx);
    rx = complex(I,Q);

    % Synchronize to received waveform
    if n==1
        Offset = lteDLFrameOffset(rmc,squeeze(rx),'TestEVM');
    end
    % Compute and display EVM measurements
    evmmeas = simrfV2_lte_receiver_evm_cal(rmc,cec,squeeze(rx),EVMalg);
    evmpeak(n) = evmmeas.Peak;
    evmrms(n) = evmmeas.RMS;
end
Low edge EVM, subframe 0: 2.999%
High edge EVM, subframe 0: 3.002%
Low edge EVM, subframe 1: 2.969%
High edge EVM, subframe 1: 2.993%
Low edge EVM, subframe 2: 2.809%
High edge EVM, subframe 2: 2.811%
Low edge EVM, subframe 3: 2.789%
High edge EVM, subframe 3: 2.779%
Low edge EVM, subframe 4: 2.835%
High edge EVM, subframe 4: 2.843%
Low edge EVM, subframe 6: 3.001%
High edge EVM, subframe 6: 2.988%
Low edge EVM, subframe 7: 2.863%
High edge EVM, subframe 7: 2.870%
Low edge EVM, subframe 8: 2.740%
High edge EVM, subframe 8: 2.747%
Low edge EVM, subframe 9: 2.789%
High edge EVM, subframe 9: 2.798%
Averaged low edge EVM, frame 0: 2.866%
Averaged high edge EVM, frame 0: 2.870%
Averaged EVM frame 0: 2.870%
Averaged overall EVM: 2.870%
Low edge EVM, subframe 0: 3.108%
High edge EVM, subframe 0: 3.116%
Low edge EVM, subframe 1: 3.125%
High edge EVM, subframe 1: 3.128%
Low edge EVM, subframe 2: 2.960%
High edge EVM, subframe 2: 2.954%
Low edge EVM, subframe 3: 2.844%
High edge EVM, subframe 3: 2.848%
Low edge EVM, subframe 4: 2.797%
High edge EVM, subframe 4: 2.799%
Low edge EVM, subframe 6: 2.946%
High edge EVM, subframe 6: 2.939%
Low edge EVM, subframe 7: 2.987%
High edge EVM, subframe 7: 2.976%
Low edge EVM, subframe 8: 2.960%
High edge EVM, subframe 8: 2.958%
Low edge EVM, subframe 9: 2.910%
High edge EVM, subframe 9: 2.914%
Averaged low edge EVM, frame 0: 2.959%
Averaged high edge EVM, frame 0: 2.958%
Averaged EVM frame 0: 2.959%
Averaged overall EVM: 2.959%
Low edge EVM, subframe 0: 2.796%
High edge EVM, subframe 0: 2.788%
Low edge EVM, subframe 1: 2.811%
High edge EVM, subframe 1: 2.798%
Low edge EVM, subframe 2: 2.801%
High edge EVM, subframe 2: 2.803%
Low edge EVM, subframe 3: 2.785%
High edge EVM, subframe 3: 2.791%
Low edge EVM, subframe 4: 2.807%
High edge EVM, subframe 4: 2.821%
Low edge EVM, subframe 6: 2.780%
High edge EVM, subframe 6: 2.783%
Low edge EVM, subframe 7: 2.837%
High edge EVM, subframe 7: 2.828%
Low edge EVM, subframe 8: 2.819%
High edge EVM, subframe 8: 2.815%
Low edge EVM, subframe 9: 2.821%
High edge EVM, subframe 9: 2.803%
Averaged low edge EVM, frame 0: 2.807%
Averaged high edge EVM, frame 0: 2.804%
Averaged EVM frame 0: 2.807%
Averaged overall EVM: 2.807%

Визуализация измеренного EVM

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

hf(1) = figure;
plot((1:N), 100*evmpeak,'o-')
title('EVM peak %');
xlabel('Number of frames');
hf(2) = figure;
plot((1:N), 100*evmrms,'o-');
title('EVM RMS %');
xlabel('Number of frames');

Очистка

Закройте модель Simulink и удалите созданные файлы.

release(rfs);
%close_system(rfs);
bdclose all;

Приложение

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

Избранная библиография

  1. 3GPP ТС 36.101 «Радиопередача и прием пользовательского оборудования (UE)»

См. также

| | | |

Связанные темы