Этот пример показывает, как использовать блок Turbo Encoder, чтобы закодировать данные, и как сравнить благоприятный для оборудования проект с результатами LTE Toolbox™. Рабочий процесс выполняет эти шаги:
Сгенерируйте кадры случайных входных выборок в MATLAB®.
Закодируйте данные с помощью функции LTE Toolbox lteTurboEncode
.
Преобразуйте структурированные входные данные в поток выборок и импортируйте поток в Simulink®.
Чтобы закодировать выборки с помощью благоприятной для оборудования архитектуры, запустите модель Simulink, которая содержит Турбо Энкодер блока LTE HDL Toolbox™.
Экспортируйте поток закодированных выборок к рабочему пространству MATLAB.
Преобразуйте демонстрационный поток назад в обрамленные данные и сравните кадры со справочными данными.
Сгенерируйте кадры входных данных. Сгенерируйте закодированные данные ссылки с помощью 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. Оставьте достаточно времени между кадрами для каждого кадра, который будет полностью закодирован, прежде чем следующий запустится. Блок 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. Десериализуйте выходные выборки и сравните, обрамленные данные к ссылке закодировали кадры.
Выходные выборки блока 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