ltehdlSamplesToFrames

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

Синтаксис

outframes = ltehdlSamplesToFrames(samples,ctrl)
outframes = ltehdlSamplesToFrames(samples,ctrl,maxlen)
outframes = ltehdlSamplesToFrames(samples,ctrl,maxlen,interleaved)

Описание

пример

outframes = ltehdlSamplesToFrames(samples,ctrl) составляет основанные на кадре данные из демонстрационного потока и соответствующих управляющих сигналов. Управляющие сигналы указывают на валидность выборок и контуры кадров. Функция вычисляет максимальную длину кадра от входных данных и управляющих сигналов, и удаляет любые неактивные или недопустимые выборки из данных.

пример

outframes = ltehdlSamplesToFrames(samples,ctrl,maxlen) составляет основанные на кадре данные, с помощью максимальной длины кадра. Если входной кадр, описанный samples, больше, чем maxlen, функция обрезает кадр.

пример

outframes = ltehdlSamplesToFrames(samples,ctrl,maxlen,interleaved) заказывает основанные на кадре данные, принимая, что входные выборки чередованы, когда interleaved 1 (true). Аргумент interleaved допустим только, когда каждая выборка представлена несколькими значениями. Функция вычисляет количество значений, представляющих каждую выборку путем сравнения длины samples и ctrl.

Примеры

свернуть все

Этот пример показывает, как использовать блок 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

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

свернуть все

Поток выходных выборок, заданных как вектор-столбец. Вектор может включать неактивные циклы между выборками и между кадрами. Отбрасываются неактивные циклы. Кадры, представленные потоком, могут быть различными размерами. Длина вектора, N, должна быть целочисленным кратным длина матрицы ctrl, M. Отличающиеся длины означают, что каждая выборка представлена N/M значения.

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

Управляющие сигналы, сопровождающие демонстрационный поток, заданный как M-by-3 матрица. Матрица включает три управляющих сигнала, start, end и valid, для каждой выборки в samples. Каждая выборка может быть представлена больше чем одним значением. В этом случае длина samples должна быть целочисленным кратным M.

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

Максимальная длина кадра, заданная как целое число. Входные кадры в samples могут быть различными размерами. Выходной вектор-столбец отражает размер входного кадра, согласно ctrl. Если кадр больше, чем maxlen, функция обрезает кадр и возвращает предупреждающее сообщение.

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

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

Например, 1/3 закодированные турбо выборки представлены [S1 P11 P12 S2 P21 P22]. Чтобы переупорядочить выборки так, чтобы систематичный и значения четности группировались, устанавливает interleaved на 1 (true). Выходным порядком является затем [S1 S2 P11 P21 P12 P22].

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

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

свернуть все

Кадры выходных выборок, возвращенных как вектор-столбец или массив ячеек вектор-столбцов. Размер выходного вектор-столбца отражает размер входного кадра, как определено управляющими сигналами в ctrl.

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

Введенный в R2017b