whdlSamplesToFrames

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

Описание

пример

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

пример

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

пример

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

Примеры

свернуть все

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

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

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

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

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

  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

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

свернуть все

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

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

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

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

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

Типы данных: logical

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

Типы данных: double

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

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

Типы данных: logical

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

свернуть все

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

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

Введенный в R2017b