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 нули для каждого запрошенного цикла ожидания. The ctrl и len векторы имеют тот же размер, что и когда samplesize равен 1.

пример

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

Примеры

свернуть все

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

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

свернуть все

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

Типы данных: 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 × <reservedrangesplaceholder0> + idlecyclesbetweenframes) значения на систему координат.

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

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

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

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

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

Введенный в R2017b