ltehdlFramesToSamples

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

Описание

[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.

Примеры

свернуть все

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

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

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

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

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

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

Переупорядочьте выборки с помощью опции чередования 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конец, и valid, для каждого samplesize элементы в samples. Для выборок входа N в системах координат F M является N + N ×idlecyclesbetweensamples + F ×idlecyclesbetweenframes. Когда вы импортируете эту переменную в Simulink®, используйте блок Sample Control Bus Creator, чтобы преобразовать сигналы в тип шины, используемый блоками LTE HDL Toolbox™.

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

Введенный в R2017b