exponenta event banner

Демодуляция символов LTE комплексных символов данных

В этом примере показано, как использовать блок демодулятора символов LTE для демодуляции комплексных символов данных LTE на биты данных или значения LLR. Рабочий процесс выполняется следующим образом:

  1. Настройка параметров входных данных.

  2. Формирование кадров случайных входных выборок.

  3. Преобразование входных данных с кадрами в поток образцов и импорт потока в Simulink ®.

  4. Запустите модель Simulink ®, содержащую блок демодулятора символов LTE.

  5. Экспорт потока демодулированных выборок из Simulink в рабочую область MATLAB ®.

  6. Демодуляция символов данных с помощью lteSymbolDemodulate использовать его вывод в качестве ссылочных данных.

  7. Сравните выходные данные блока Simulink с выводом ссылочной функции MATLAB.

Настройка параметров входных данных.

Сопоставить имена модуляции со значениями. Числовые значения используются для установки блока демодулятора символов LTE. Строки используются для конфигурирования lteSymbolDemodulator функция.

rng(0);
framesize = 10;

% 0 - BPSK
% 1 - QPSK
% 2 - 16-QAM
% 3 - 64-QAM
% 4 - 256-QAM
% others - QPSK
modSelVal = [0;1;2;3;4];
modSelStr = {'BPSK','QPSK','16QAM','64QAM','256QAM'};

decType = 'Soft';

numframes = length(modSelVal);
dataSymbols  = cell(1,numframes);
modSelTmp = cell(1,numframes);
lteFcnOutput = cell(1,numframes);

Формирование кадров случайных входных выборок.

for ii = 1:numframes
    dataSymbols{ii} = complex(randn(framesize,1),randn(framesize,1));
    modSelTmp{ii} = fi(modSelVal(ii)*ones(framesize,1),0,3,0);
end

Преобразование кадрированных входных данных в поток выборок и ввод потока в блок имитации демодулятора символов LTE.

idlecyclesbetweensamples = 0;
idlecyclesbetweenframes  = 0;
[sampleIn, ctrl] = whdlFramesToSamples(dataSymbols,idlecyclesbetweensamples,...
    idlecyclesbetweenframes);
[modSel, ~] = whdlFramesToSamples(modSelTmp,idlecyclesbetweensamples,...
    idlecyclesbetweenframes);
validIn = logical(ctrl(:,3)');

sampletime = 1;
samplesizeIn = 1;
simTime = size(ctrl,1)*8;

Запустите модель Simulink.

modelname = 'ltehdlSymbolDemodulatorModel';
open_system(modelname);
set_param([modelname '/Demod/LTE Symbol Demodulator'],'DecisionType',decType)
sim(modelname);

Экспорт потока демодулированных выборок из Simulink в рабочую область MATLAB.

lteHDLOutput = sampleOut(validOut).';

Демодуляция символов данных с помощью lteSymbolDemodulate и использовать его вывод в качестве ссылочных данных.

for ii = 1:numframes
 lteFcnOutput{ii} = lteSymbolDemodulate(dataSymbols{ii},modSelStr{ii},decType).';
end

Сравнение выходных данных модели Simulink с выходными данными lteSymbolDemodulate функция.

lteFcnOutput = double(cell2mat(lteFcnOutput));

figure(1)
stem(lteHDLOutput,'b')
hold on
stem(lteFcnOutput,'--r')
grid on
legend('Reference','Simulink')
xlabel('Sample Index')
ylabel('Magnitude')
title('Comparison of Simulink block and MATLAB function')

См. также

Блоки