Этот пример демонстрирует, как смоделировать и протестировать LTE приемник RF с помощью LTE Toolbox™ и RF Blockset™.
Рисунок ниже показывает основные части этого примера. Форма волны LTE сгенерирована с помощью LTE Toolbox. Эта форма волны отфильтрована и передана через канал распространения прежде, чем накормить им модель приемника RF реализованным с RF Blockset. Эта модель основана на коммерчески доступных частях. Фигурам EVM затем предоставляют для выхода приемника RF.
Этот пример реализован с помощью MATLAB® и Simulink®, которые взаимодействуют во времени выполнения. Функциональный раздел показан на рисунке ниже
Скрипт MATLAB реализует испытательный стенд симуляции, и модель Simulink является устройством под тестом (DUT). Системы координат LTE передаются потоком между испытательным стендом и DUT.
В этом разделе мы генерируем форму волны 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
Этот раздел загружает модель Simulink, показанную ниже. Эта модель включает следующие компоненты:
Чтение формы волны LTE и периода выборки из рабочей области
Фильтрация Bandlimiting
Модель Channel: это включает потери при распространении в свободном пространстве и AWGN
Приемник RF, включая прямой демодулятор преобразования
ADC и DC возмещают отмену
Сохраните результаты в рабочую область
% Specify and open Simulink model model = 'RFLTEReceiverModel'; disp('Starting Simulink'); open_system(model);
Starting Simulink
Модель приемника RF включает элементы, показанные ниже
Демодулятор RF включает следующие компоненты и показан ниже:
Локальный генератор (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 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].
Этот раздел строит измеренный пик и 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']);
Этот пример использует следующие функции помощника:
3GPP TS 36.101 "Передача радио оборудования пользователя (UE) и прием"
3GPP TS 36.104 "E-UTRA; передача радио Базовой станции (BS) и прием" Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.