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