ltehdlFramesToSamples

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

Синтаксис

[samples,ctrl,len] = ltehdlFramesToSamples(frames)
[samples,ctrl,len] = ltehdlFramesToSamples(frames,postsampleidles,postframeidles)
[samples,ctrl,len] = ltehdlFramesToSamples(frames,postsampleidles,postframeidles,samplesize)
[samples,ctrl,len] = ltehdlFramesToSamples(frames,postsampleidles,postframeidles,samplesize,interleaved)

Описание

[samples,ctrl,len] = ltehdlFramesToSamples(frames) сериализирует основанные на кадре данные в поток выборок и сопроводительных управляющих сигналов. Управляющие сигналы указывают на валидность выборок и контуры кадров. Функция также возвращает вектор, len, формата кадра, соответствующего каждой выборке.

пример

[samples,ctrl,len] = ltehdlFramesToSamples(frames,postsampleidles,postframeidles) вставляет неактивные циклы в демонстрационный поток, samples. Задайте количество неактивных циклов, чтобы вставить между входными выборками, postsampleidles и количеством неактивных циклов между кадрами, postframeidles.

пример

[samples,ctrl,len] = ltehdlFramesToSamples(frames,postsampleidles,postframeidles,samplesize) создает демонстрационный поток, где каждая выборка представлена значениями samplesize. Функция вставляет нули samplesize для каждого неактивного цикла, который требуют. ctrl и векторы len одного размера как тогда, когда samplesize равняется 1.

пример

[samples,ctrl,len] = ltehdlFramesToSamples(frames,postsampleidles,postframeidles,samplesize,interleaved) заказывает демонстрационный поток, принимая, что входные выборки чередованы, когда interleaved 1 (true). Аргумент interleaved допустим только, когда samplesize больше, чем 1.

Примеры

свернуть все

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

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

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

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

  4. Чтобы закодировать выборки с помощью благоприятной для оборудования архитектуры, запустите модель Simulink, которая содержит Турбо Энкодер блока LTE 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. Оставьте достаточно времени между кадрами для каждого кадра, который будет полностью закодирован, прежде чем следующий запустится. Блок Turbo Encoder берет inframesize + 17 циклов, чтобы завершить кодирование кадра.

inframes = txBits;

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

idlecyclesbetweensamples = 0;
idlecyclesbetweenframes = inframesize+20;

[sampleIn,ctrlIn] = ...
    ltehdlFramesToSamples(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. Десериализуйте выходные выборки и сравните, обрамленные данные к ссылке закодировали кадры.

Выходные выборки блока 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

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

sampleOut = sampleOut_ts.Data';
sampleOut = sampleOut(:);
ctrlOut = [squeeze(ctrlOut_ts.start.Data) ...
    squeeze(ctrlOut_ts.end.Data) ...
    squeeze(ctrlOut_ts.valid.Data)];

interleaveSamples = true;
outframes = ltehdlSamplesToFrames(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

Входные параметры

свернуть все

Кадры входных выборок, заданных как вектор-столбец или массив ячеек вектор-столбцов. Кадры в массиве ячеек могут быть различными размерами.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | fi

Количество неактивных циклов, чтобы вставить между выборками, заданными как целое число. Функция вставляет нули samplesize для каждого неактивного цикла и устанавливает все управляющие сигналы на 0 (false).

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Количество неактивных циклов, чтобы вставить между кадрами, заданными как целое число. Функция вставляет нули samplesize для каждого неактивного цикла и устанавливает все управляющие сигналы на 0 (false).

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Количество значений, представляющих каждую выборку, заданную как положительное целое число. Функция возвращает один набор управляющих сигналов для каждого samplesize значения.

Например, в стандарте LTE, уровень турбокода является 1/3, таким образом, каждая закодированная турбо выборка представлена одним систематическим, и два значения четности: Sn, Pn1 и Pn2. В этом случае установите samplesize на 3.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Порядок выходных выборок относительно входного порядка, когда больше чем одно значение представляет каждую выборку, заданную как логический скаляр.

Например, для 1/3 закодированные турбо выборки, входному кадру можно упорядочить [S_1 P1_1 P2_1 S_2 P1_2 P2_2] или [S_1 S_2 P1_1 P1_2 P2_1 P2_2]. В первом случае вывод по умолчанию был бы тем же порядком как вход. Чтобы достигнуть того выходного порядка для второго входа, установите interleaved на 1 (true).

Типы данных: single | double | logical

Выходные аргументы

свернуть все

Поток выборок, возвращенных как вектор-столбец. Для выборок N во входном кадре выводом является N + samplesize × (N ×idlecyclesbetweensamples + idlecyclesbetweenframes) значения на кадр.

Управляющие сигналы сопроводительный демонстрационный поток, возвращенный как M-by-3 матрица. Матрица включает три управляющих сигнала, start, end и valid, для каждого samplesize элементы в samples. Для выборок входа N в кадрах F M является N + N ×idlecyclesbetweensamples + F ×idlecyclesbetweenframes. Когда вы импортируете эту переменную в Simulink®, используйте блок Sample Control Bus Creator, чтобы преобразовать сигналы в тип шины, используемый блоками LTE HDL Toolbox™.

Структурируйте длину, возвращенную как вектор-столбец целых чисел. Это значение является количеством допустимых выборок в соответствующем кадре для каждого samplesize элементы в samples. Этот вектор является той же длиной как ctrl.

Введенный в R2017b