Турбо кодирует выборки потоковой передачи

В этом примере показано, как использовать блок LTE Turbo Encoder, чтобы закодировать данные, и как сравнить благоприятный для оборудования проект с результатами LTE Toolbox™. Рабочий процесс выполняет эти шаги:

  1. Сгенерируйте системы координат случайных входных выборок в MATLAB®.

  2. Закодируйте данные с помощью функции LTE Toolbox lteTurboEncode.

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

  4. Чтобы закодировать выборки с помощью благоприятной для оборудования архитектуры, запустите модель Simulink, которая содержит Турбо Энкодер LTE блока Wireless HDL Toolbox™.

  5. Экспортируйте поток закодированных выборок к рабочему пространству MATLAB.

  6. Преобразуйте демонстрационный поток назад в обрамленные данные и сравните системы координат со справочными данными.

Сгенерируйте системы координат входных данных. Сгенерируйте закодированные данные ссылки с помощью lteTurboEncode.

rng(0);
turboframesize = 40;
numframes = 2;

txBits    = cell(1,numframes);
codedData = cell(1,numframes);

for ii = 1:numframes
    txBits{ii} = logical(randi([0 1],turboframesize,1));
    codedData{ii} = lteTurboEncode(txBits{ii});
end

Сериализируйте входные данные для модели Simulink. Оставьте достаточно времени между системами координат для каждой системы координат, которая будет полностью закодирована, прежде чем следующий запустится. Блок LTE Turbo Encoder берет inframesize + 16 циклов, чтобы завершить кодирование системы координат.

inframes = txBits;

inframesize = size(inframes{1},1);

idlecyclesbetweensamples = 0;
idlecyclesbetweenframes = inframesize+16;

[sampleIn,ctrlIn] = ...
    whdlFramesToSamples(inframes, ...
                          idlecyclesbetweensamples, ...
                          idlecyclesbetweenframes);

Запустите модель Simulink. Время симуляции равняется количеству входных выборок. Из-за добавленных неактивных циклов между системами координат входные данные потоковой передачи включают достаточно циклов для модели, чтобы завершить кодирование обеих систем координат.

sampletime = 1;
samplesizeIn = 1;
simTime = size(ctrlIn,1);
modelname = 'ltehdlTurboEncoderModel';
open_system(modelname);
sim(modelname);

Модель Simulink экспортирует sampleOut_ts и ctrlOut_ts назад к рабочему пространству MATLAB. Десериализуйте выходные выборки и сравните, обрамленные данные к ссылке закодировали системы координат.

Выходные выборки блока LTE Turbo Encoder чередованы с битами четности.

Благоприятный для оборудования выход: S_1 P1_1 P2_1 S2 P1_2 P2_2 ... Sn P1_n P2_n

LTE Toolbox выход: S_1 S_2 ... S_n P1_1 P1_2 ... P1_n P2_1 P2_2 ... P2_n

Переупорядочьте выборки с помощью опции чередования whdlSamplesToFrames функция. Сравните переупорядоченные выходные системы координат со ссылкой закодировали системы координат.

sampleOut = sampleOut';
interleaveSamples = true;
outframes = whdlSamplesToFrames(sampleOut(:),ctrlOut,[],interleaveSamples);

fprintf('\nLTE Turbo Encoder\n');
for ii = 1:numframes
    numBitsDiff = sum(outframes{ii} ~= codedData{ii});
    fprintf(['  Frame %d: Behavioral and ' ...
        'HDL simulation differ by %d bits\n'],ii,numBitsDiff);
end
Maximum frame size computed to be 132 samples.

LTE Turbo Encoder
  Frame 1: Behavioral and HDL simulation differ by 0 bits
  Frame 2: Behavioral and HDL simulation differ by 0 bits

Смотрите также

Блоки

Функции

Похожие темы