В этом примере показано, как использовать блок сверточного кодера LTE для кодирования данных и как сравнивать аппаратную конструкцию с результатами Toolbox™ LTE. Рабочий процесс выполняется следующим образом:
Создание кадров случайных входных выборок в MATLAB ®.
Кодирование данных с помощью функции LTE Toolbox lteConvolutionalEncode.
Преобразование входных данных с кадрами в поток образцов и импорт потока в Simulink ®.
Для кодирования выборок с использованием аппаратной архитектуры запустите модель Simulink, которая содержит сверточный кодер LTE беспроводного HDL Toolbox™ блока.
Экспорт потока кодированных битов в рабочую область MATLAB.
Преобразуйте поток образцов обратно в данные с кадрами и сравните кадры с опорными данными.
Создание входных кадров данных. Создание эталонных кодированных данных с помощью lteConvolutionalEncode.
rng(0); frameLength = 256; numframes = 2; txframes = cell(1,numframes); txcodeword = cell(1,numframes); rxSoftframes = cell(1,numframes); for k = 1:numframes txframes{k} = randi([0 1],frameLength,1)>0.5; txcodeword{k} = lteConvolutionalEncode(txframes{k}); end
Сериализация входных данных для модели Simulink. Оставьте достаточно времени между кадрами, чтобы каждый кадр был полностью закодирован до начала следующего. Блок принимает frameLength + 5 циклов для кодирования кадра.
idleCyclesBetweenSamples = 0;
idleCyclesBetweenFrames = frameLength+5;
[sampleIn,ctrlIn] = whdlFramesToSamples(...
txframes,idleCyclesBetweenSamples,idleCyclesBetweenFrames);
Запустите модель Simulink. Из-за добавленных циклов простоя между кадрами потоковые входные данные включают в себя достаточное количество циклов для модели, чтобы завершить кодирование обоих кадров.
sampletime = 1;
samplesizeIn = 1;
simTime = size(ctrlIn,1);
modelname = 'ltehdlConvolutionalEncoderModel';
open_system(modelname);
sim(modelname);

Экспорт модели Simulink sampleOut и ctrlOut обратно в рабочую область MATLAB. Десериализируйте выходные выборки и сравните их с кодированным кадром.
Выходные выборки блока сверточного кодера LTE являются перемежающимися результатами трех полиномов.
Аппаратный выход: G0_1 G1_1 G2_1 G0_2 G1_2 G2_2 ... Gn G1_n G2_n
Выходные данные панели инструментов LTE: G0_1 G0_2 ... G0_n G1_1 G1_2 ... G1_n G2_1 G2_2 ... G2_n
whdlSamplesToFrames функция обеспечивает возможность переупорядочивания выборок. Сравните переупорядоченные выходные кадры с кодированными опорными кадрами.
interleaveSamples = true; sampleOut = sampleOut'; txhdlframes = whdlSamplesToFrames(sampleOut(:),ctrlOut,[],interleaveSamples); fprintf('\nLTE Convolutional Encoder\n'); for k = 1:numframes numBitsDiff = sum(double(txcodeword{k})-double(txhdlframes{k})); fprintf([' Frame %d: Behavioral and ' ... 'HDL simulation differ by %d bits\n'],k,numBitsDiff); end
Maximum frame size computed to be 768 samples. LTE Convolutional Encoder Frame 1: Behavioral and HDL simulation differ by 0 bits Frame 2: Behavioral and HDL simulation differ by 0 bits
lteConvolutionalEncode(Панель инструментов LTE)