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

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

Сценарий MATLAB реализует имитационный тест-стенд, а модель Simulink является тестируемым устройством (DUT). Кадры LTE передаются между испытательным стендом и DUT.
В этом разделе мы генерируем сигнал 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
В этом разделе загружается модель 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 для каждого моделируемого кадра.
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 ТС 36.101 «Радиопередача и прием пользовательского оборудования (UE)»
3GPP ТС 36.104 "E-UTRA; радиопередача и прием базовой станции (BS) "Проект партнерства 3-го поколения; Техническая спецификация на сеть радиодоступа группы.