exponenta event banner

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

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

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

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

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

Сценарий MATLAB реализует имитационный тест-стенд, а модель Simulink является тестируемым устройством (DUT). Кадры LTE передаются между испытательным стендом и 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);

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

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

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

  • SNR и энергия сигнала

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

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

% 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 Testbench

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

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

  • Фильтрация с ограничением полосы пропускания

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

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

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

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

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

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

Модель РЧ-приемника включает в себя элементы, показанные ниже

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

  • Модель гетеродина (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

В этом разделе показаны измеренный пик и среднеквадратичное значение 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 ТС 36.101 «Радиопередача и прием пользовательского оборудования (UE)»

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