exponenta event banner

whdlFramesToSamples

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

Описание

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

пример

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

пример

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

пример

[samples,ctrl,len] = whdlFramesToSamples(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, которая содержит беспроводной 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

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

свернуть все

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

Типы данных: 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).

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

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

свернуть все

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

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

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

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

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

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

Представлен в R2017b