exponenta event banner

whdlSamplesToFrames

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

Описание

пример

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

пример

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

пример

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

Примеры

свернуть все

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

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

  2. Кодирование данных с помощью функции LTE Toolbox lteTurboEncode.

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

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

Аппаратный выход: S_1 P1_1 P2_1 S2 P1_2 P2_2 ... Sn P1_n P2_n

Выходные данные панели инструментов LTE: 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 матрица, М. Различная длина означает, что каждый образец представлен значениями N/M.

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

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

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

Например, в стандарте 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