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