Этот пример демонстрирует, как смоделировать и протестировать приемник 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 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
В этом разделе загружается модель Simulink, показанная ниже. Эта модель включает следующие компоненты:
Чтение формы волны LTE и периода дискретизации из рабочей области
Полосообразующая фильтрация
Модель канала: это включает потери при распространении в свободном пространстве и AWGN
RF- приемника, включая демодулятор прямого преобразования
Отмена смещения АЦП и постоянного тока
Сохраните результаты в рабочей области
% Specify and open Simulink model model = 'RFLTEReceiverModel'; disp('Starting Simulink'); open_system(model);
Starting Simulink
Модель приемника 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].
Этот раздел строит графики измеренного пика и 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 ТС 36.104 "E-UTRA; радиопередача и прием базовой станции (BS) "3-ья Генерация партнерский проект; Группа технических спецификаций Радиосеть доступ.