Моделирование и проверка приемника LTE RF

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

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

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

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

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

Сгенерируйте сигнал LTE

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

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

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

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

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

% 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 и периода дискретизации из рабочей области

  • Полосообразующая фильтрация

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

  • RF- приемника, включая демодулятор прямого преобразования

  • Отмена смещения АЦП и постоянного тока

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

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

Модель приемника RF

Модель приемника RF включает элементы, показанные ниже

RF-демодулятор включает в себя следующие компоненты и показан ниже:

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

  • Сдвиг фазы для генератора компонентов I и 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 LTE frame 1 ...');
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 frame 1 ...

Симулируйте последующие системы координат 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
    disp(['Simulating LTE frame ',num2str(n),' ...']);
    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
Simulating LTE frame 2 ...
Low edge EVM, subframe 0: 2.908%
High edge EVM, subframe 0: 2.919%
Low edge EVM, subframe 1: 2.653%
High edge EVM, subframe 1: 2.667%
Low edge EVM, subframe 2: 2.927%
High edge EVM, subframe 2: 2.935%
Low edge EVM, subframe 3: 3.429%
High edge EVM, subframe 3: 3.423%
Low edge EVM, subframe 4: 2.935%
High edge EVM, subframe 4: 2.950%
Low edge EVM, subframe 6: 3.100%
High edge EVM, subframe 6: 3.096%
Low edge EVM, subframe 7: 3.143%
High edge EVM, subframe 7: 3.145%
Low edge EVM, subframe 8: 3.188%
High edge EVM, subframe 8: 3.189%
Low edge EVM, subframe 9: 3.151%
High edge EVM, subframe 9: 3.148%
Averaged low edge EVM, frame 0: 3.057%
Averaged high edge EVM, frame 0: 3.061%
Averaged EVM frame 0: 3.061%
Averaged overall EVM: 3.061%
Simulating LTE frame 3 ...
Low edge EVM, subframe 0: 2.918%
High edge EVM, subframe 0: 2.922%
Low edge EVM, subframe 1: 2.732%
High edge EVM, subframe 1: 2.738%
Low edge EVM, subframe 2: 3.044%
High edge EVM, subframe 2: 3.044%
Low edge EVM, subframe 3: 3.475%
High edge EVM, subframe 3: 3.444%
Low edge EVM, subframe 4: 2.914%
High edge EVM, subframe 4: 2.923%
Low edge EVM, subframe 6: 3.139%
High edge EVM, subframe 6: 3.137%
Low edge EVM, subframe 7: 3.186%
High edge EVM, subframe 7: 3.187%
Low edge EVM, subframe 8: 3.116%
High edge EVM, subframe 8: 3.110%
Low edge EVM, subframe 9: 3.089%
High edge EVM, subframe 9: 3.083%
Averaged low edge EVM, frame 0: 3.077%
Averaged high edge EVM, frame 0: 3.073%
Averaged EVM frame 0: 3.077%
Averaged overall EVM: 3.077%

Согласно TS 36.104 [2], максимальное значение EVM при 64-QAM созвездия составляет 8%. Поскольку общее значение EVM, около 3%, меньше 8%, это измерение соответствует требованиям TS 36.104 [2].

Визуализация измеренного 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)»

  2. 3GPP ТС 36.104 "E-UTRA; радиопередача и прием базовой станции (BS) "3-ья Генерация партнерский проект; Группа технических спецификаций Радиосеть доступ.