В этом примере показано, как использовать блок LTE Turbo Decoder для декодирования данных и как сравнить аппаратно-удобный проект с результатами LTE Toolbox™.
Сгенерируйте системы координат случайных входных выборок в MATLAB ®. Закодируйте выборки и добавьте шум к данным.
Декодируйте данные с помощью функции LTE Toolbox, lteTurboDecode.
Преобразуйте входные данные с рамкой в поток выборок и импортируйте поток в Simulink ®.
Чтобы декодировать выборки с помощью аппаратно-удобной архитектуры, выполните модель Simulink, которая содержит блок LTE Turbo Decoder.
Экспорт потока декодированных бит в рабочее пространство MATLAB.
Преобразуйте поток сэмплирования назад в данные с кадрами и сравните системы координат с декодированными системами координат с шага 2.
Сгенерируйте входные данные систем координат. Турбокодируйте данные, модулируйте сообщение и добавьте шум к полученному созвездию. Демодулируйте шумное созвездие и сгенерируйте значения мягких бит. Сгенерируйте ссылочные декодированные данные с помощью lteTurboDecode. Для модели, удобной для аппаратного обеспечения, преобразуйте мягкие биты в тип данных с фиксированной точкой.
rng(0); numframes = 2; txBits = cell(1,numframes); softBits = cell(1,numframes); rxBits = cell(1,numframes); inframes = cell(1,numframes); for ii = 1:numframes txBits{ii} = randi([0 1],6144,1); codedData = lteTurboEncode(txBits{ii}); txSymbols = lteSymbolModulate(codedData,'QPSK'); noise = 0.5*complex(randn(size(txSymbols)),randn(size(txSymbols))); rxSymbols = txSymbols + noise; softBits{ii} = lteSymbolDemodulate(rxSymbols,'QPSK','Soft'); rxBits{ii} = lteTurboDecode(softBits{ii}); inframes{ii} = fi(softBits{ii},1,5,2); end
Сериализуйте входные данные для модели Simulink. Оставьте достаточно времени между системами координат, чтобы каждая система координат был полностью декодируема до начала следующего. Блок LTE Turbo Decoder занимает 2 * numTurboIterations * HalfIterationLatency + (inframesize / samplesizeIn ) переходит к полному декодированию системы координат. Для получения дополнительной информации о вычислении HalfIterationLatency смотрите блок страницы с описанием Turbo Decoder.
Блок LTE Turbo Decoder ожидает, что входные выборки перемежаются с битами четности.
Удобный для аппаратного обеспечения вход: 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
Переупорядочить выборки с помощью опции чередования whdlFramesToSamples функция.
inframesize = size(inframes{1},1); %includes 4 tail bit samples
encoderrate = 3; % rate 1/3 Turbo code
samplesizeIn = encoderrate; % 3 samples in at a time
idlecyclesbetweensamples = 0;
outframesize = size(txBits{1},1);
numTurboIterations = 6;
halfIterationLatency = (ceil(outframesize/32)+3)*32; % window size=32
algframedelay = 2*numTurboIterations*halfIterationLatency+(inframesize/samplesizeIn);
idlecyclesbetweenframes = algframedelay;
interleaveSamples = true;
[sampleIn,ctrlIn] = ...
whdlFramesToSamples(inframes, ...
idlecyclesbetweensamples, ...
idlecyclesbetweenframes, ...
samplesizeIn, ...
interleaveSamples);
Запустите модель Simulink. Время симуляции равняется количеству входа отсчетов. Из-за добавленных циклов бездействия между системами координат потоковые входные данные включают в себя достаточно циклов, чтобы модель могла завершить декодирование обеих систем координат.
sampletime = 1;
simTime = size(ctrlIn, 1);
modelname = 'ltehdlTurboDecoderModel';
open_system(modelname);
sim(modelname);

Модель Simulink экспортирует sampleOut и ctrlOut назад в рабочее пространство MATLAB. Десериализуйте выходные выборки и сравните с декодированной системой координат.
outframes = whdlSamplesToFrames(sampleOut,ctrlOut); fprintf('\nLTE Turbo Decoder\n'); for ii = 1:numframes numBitsDiff = sum(outframes{ii} ~= rxBits{ii}); fprintf([' Frame %d: Behavioral and ' ... 'HDL simulation differ by %d bits\n'],ii,numBitsDiff); end
Maximum frame size computed to be 6144 samples. LTE Turbo Decoder Frame 1: Behavioral and HDL simulation differ by 0 bits Frame 2: Behavioral and HDL simulation differ by 0 bits
lteTurboDecode (LTE Toolbox)