Моделирование и тестирование LTE получатель РФ

Этот пример демонстрирует, как смоделировать и протестировать LTE получатель РФ с помощью LTE Toolbox™ и RF Blockset™.

Образцовое описание

Фигура ниже показов основные части этого примера. Форма волны LTE сгенерирована с помощью LTE Toolbox. Эта форма волны отфильтрована и передана через канал распространения прежде, чем накормить им модель получателя РФ реализованным с RF Blockset. Эта модель основана на коммерчески доступных частях. Фигурам EVM затем предоставляют для вывода получателя РФ.

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

Скрипт MATLAB реализует испытательный стенд симуляции, и модель Simulink является устройством под тестом (DUT). Кадры LTE передаются потоком между испытательным стендом и DUT.

Сгенерируйте форму волны LTE

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

Только один кадр сгенерирован. Этот кадр будет затем повторен неоднократно, чтобы выполнить измерения 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);

Инициализируйте компоненты симуляции

Этот раздел инициализирует некоторые компоненты симуляции:

  • Полоса, ограничивающая фильтр: разработайте коэффициенты фильтра, которые будут использоваться моделью Simulink. Фильтр имеет порядок 32 с частотой полосы пропускания, равной 2,25 МГц и частотой полосы задерживания, равной 2,7 МГц.

  • ОСШ и энергия сигнала

  • NumberOfFrames : это - число раз, сгенерированный кадр повторяется

  • Предварительно выделите итоговые векторы

% Band limiting interpolation filter
FiltOrd = 32;
h = firpm(FiltOrd,[0 2.25e6*2*SamplePeriod 2.7e6*2*SamplePeriod 1],[1 1 0 0]);
FilterDelaySamples = FiltOrd/2; % filter group delay

% Propagation model
SNRdB = 57;                 % Es/Noc in dB
NocdBm = -98;               % Noc in dBm/15kHz
NocdBW = NocdBm - 30;       % Noc in dBW/15kHz57
SNR = 10^(SNRdB/10);        % linear Es/Noc
Es = SNR*(10^(NocdBW/10));  % linear Es per RE
FFTLength = info.Nfft;
SymbolPower = Es/double(FFTLength);

% 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,1);   % Preallocation for results
evmrms = zeros(N-1,1);    % Preallocation for results

Загрузите испытательный стенд RF Blockset

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

  • Чтение формы волны LTE и периода выборки из рабочей области

  • Фильтрация Bandlimiting

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

  • Получатель РФ, включая прямой демодулятор преобразования

  • ADC и DC смещают отмену

  • Сохраните результаты в рабочую область

% Specify and open Simulink model
model = 'RFLTEReceiverModel';
disp('Starting Simulink');
open_system(model);
Starting Simulink

Модель получателя РФ

Модель получателя РФ включает элементы, показанные ниже

Демодулятор РФ включает следующие компоненты и показан ниже:

  • Локальный осциллятор (LO) и модель шума фазы

  • Сдвиг фазы, поскольку я и генератор компонентов Q

  • Микшеры

Моделируйте кадры

Этот раздел моделирует конкретное количество кадров. Это сделано на двух этапах:

  • Моделируйте первый кадр

  • Моделируйте остальную часть кадров в цикле

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

Моделируйте первый кадр LTE

Как упомянуто для первого моделируемого кадра мы должны увеличить длину сигнала, питаемого модель Simulink, чтобы компенсировать задержку, введенную фильтром. Затем мы запускаем симуляцию модели Simulink, не загружая начального состояния. После обработки первого кадра с моделью Simulink ее состояние (xFinal) хранится и присвоенный xInitial в следующий раз, когда модель запущена.

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

% Generate test data for RF receiver
time = (0:FrameLength+FilterDelaySamples)*SamplePeriod;
% Append to the end of the frame enough samples to compensate for the delay
% of the filter
txWaveform = timeseries([tx; tx(1:FilterDelaySamples+1)],time);

% Simulate RF Blockset model of RF RX
set_param(model, 'LoadInitialState', 'off');
disp('Simulating');
sim(model, time(end));
% Save the final state of the model in xInitial for next frame processing
xInitial = xFinal;

% Synchronize to received waveform
Offset = lteDLFrameOffset(rmc,squeeze(rx),'TestEVM');
% In this case Offset = FilterDelaySamples therefore the following
% frames do not require synchronization
Simulating

Моделируйте последовательные кадры LTE

Теперь остальная часть кадров может быть моделирована. Во-первых, образцовое состояние установлено с помощью значения, сохраненного в xInitial при выводе предыдущей итерации.

% Load state after execution of previous frame. Since we are repeating the
% same frame the model state will be the same after every frame execution.
set_param(model, 'LoadInitialState', 'on', 'InitialState','xInitial');
% Modify input vector to take into account the delay of the bandlimiting
% filter
RepeatFrame = [tx(FilterDelaySamples+1:end); tx(1:FilterDelaySamples+1)];
EVMalg.EnablePlotting = 'Off';
cec.PilotAverage = 'TestEVM';

for n = 2:N % for all remaining frames
    % Generate data
    time = ( (n-1)*FrameLength+(0:FrameLength) + FilterDelaySamples)*SamplePeriod;
    txWaveform = timeseries(RepeatFrame,time);

    % Execute Simulink RF Blockset testbench
    sim(model, time(end));
    xInitial = xFinal; % Save model state

    % Compute and display EVM measurements
    evmmeas = hPDSCHEVM(rmc,cec,squeeze(rx),EVMalg);
    evmpeak(n-1) = evmmeas.Peak;
    evmrms(n-1) = evmmeas.RMS;
end
Low edge EVM, subframe 0: 2.907%
High edge EVM, subframe 0: 2.918%
Low edge EVM, subframe 1: 2.651%
High edge EVM, subframe 1: 2.665%
Low edge EVM, subframe 2: 2.925%
High edge EVM, subframe 2: 2.933%
Low edge EVM, subframe 3: 3.428%
High edge EVM, subframe 3: 3.422%
Low edge EVM, subframe 4: 2.941%
High edge EVM, subframe 4: 2.956%
Low edge EVM, subframe 6: 3.095%
High edge EVM, subframe 6: 3.091%
Low edge EVM, subframe 7: 3.142%
High edge EVM, subframe 7: 3.145%
Low edge EVM, subframe 8: 3.195%
High edge EVM, subframe 8: 3.195%
Low edge EVM, subframe 9: 3.160%
High edge EVM, subframe 9: 3.157%
Averaged low edge EVM, frame 0: 3.059%
Averaged high edge EVM, frame 0: 3.062%
Averaged EVM frame 0: 3.062%
Averaged overall EVM: 3.062%
Low edge EVM, subframe 0: 2.889%
High edge EVM, subframe 0: 2.899%
Low edge EVM, subframe 1: 2.625%
High edge EVM, subframe 1: 2.640%
Low edge EVM, subframe 2: 2.930%
High edge EVM, subframe 2: 2.938%
Low edge EVM, subframe 3: 3.437%
High edge EVM, subframe 3: 3.432%
Low edge EVM, subframe 4: 2.905%
High edge EVM, subframe 4: 2.917%
Low edge EVM, subframe 6: 3.114%
High edge EVM, subframe 6: 3.109%
Low edge EVM, subframe 7: 3.143%
High edge EVM, subframe 7: 3.145%
Low edge EVM, subframe 8: 3.177%
High edge EVM, subframe 8: 3.176%
Low edge EVM, subframe 9: 3.144%
High edge EVM, subframe 9: 3.141%
Averaged low edge EVM, frame 0: 3.051%
Averaged high edge EVM, frame 0: 3.054%
Averaged EVM frame 0: 3.054%
Averaged overall EVM: 3.054%

Визуализируйте измеренный EVM

Этот раздел строит измеренный пик и RMS EVM для каждого моделируемого кадра.

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

Чистка

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

bdclose(model);
clear([model,'_acc']);

Приложение

Этот пример использует следующие функции помощника:

Выбранная библиография

  1. 3GPP TS 36.101 "Передача радио оборудования пользователя (UE) и прием"

Для просмотра документации необходимо авторизоваться на сайте