exponenta event banner

Модуляция символов LTE битов данных

В этом примере показано, как использовать блок модулятора символов LTE для модуляции битов данных на сложные символы данных. Из этого блока можно создать код HDL.

Настройка параметров входных данных. Выберите длину данных для каждого типа модуляции. Длина данных должна быть целочисленной кратной количеству битов на символ.

rng(0);
framesize = 240;

% Map modulation names to values
% 0 - BPSK
% 1 - QPSK
% 2 - 16-QAM
% 3 - 64-QAM
% 4 - 256-QAM
% others - QPSK

% For LTE Symbol Modulator Simulink block
modSelVal = [0;1;2;3;4];

% For |lteSymbolModulate| function
modSelStr = {'BPSK','QPSK','16QAM','64QAM','256QAM'};

outWordLength = 16;
numframes = length(modSelVal);
dataBits  = cell(1,numframes);
modSelTmp = cell(1,numframes);
lteFcnOutput = cell(1,numframes);

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

for ii = 1:numframes
    dataBits{ii} = logical(randi([0 1],framesize,1));
    modSelTmp{ii} = fi(modSelVal(ii)*ones(framesize,1),0,3,0);

end

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

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

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

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

modelname = 'ltehdlSymbolModulatorModel';
open_system(modelname);
sim(modelname);

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

sampleOut = squeeze(sampleOut).';
lteHDLOutput = sampleOut(squeeze(validOut));

Модулировать биты данных с помощью lteSymbolModulate и использовать его вывод в качестве ссылочных данных.

for ii = 1:numframes
    lteFcnOutput{ii} = lteSymbolModulate(dataBits{ii},modSelStr{ii}).';
end

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

fprintf('\nLTE Symbol Modulator\n');
lteFcnOutput = fi(cell2mat(lteFcnOutput),1,outWordLength,outWordLength-2);
difference = sum(abs(lteHDLOutput-lteFcnOutput(1:length(lteHDLOutput))));
fprintf('\nTotal number of samples differed between Simulink block output and Reference data output: %d \n',difference);
LTE Symbol Modulator

Total number of samples differed between Simulink block output and Reference data output: 0 

См. также

Блоки