В этом примере показано, как использовать блок сверточного декодера LTE для декодирования данных и как сравнивать аппаратную конструкцию с результатами Toolbox™ LTE. Рабочий процесс выполняется следующим образом:
Создание сверточно закодированных сообщений LTE в MATLAB ® с помощью LTE Toolbox.
Функция Toolbox™ связи вызова для выполнения модуляции BPSK, передачи через канал AWGN и демодуляции BPSK. Результатом являются мягкие битовые значения, которые представляют логарифмические отношения правдоподобия (LLR).
Квантуют мягкие биты в соответствии с отношением сигнал-шум (SNR).
Преобразование входных данных с кадрами в поток образцов и импорт потока в Simulink ®.
Для декодирования выборок с использованием аппаратной архитектуры выполните модель Simulink, которая содержит блок сверточного декодера LTE.
Экспорт потока декодированных битов в рабочую область MATLAB.
Преобразуйте поток образцов обратно в данные с кадрами и сравните кадры с исходными входными кадрами.
Вычислите SNR канала и создайте объекты системы модулятора, канала и демодулятора. EbNo - отношение энергии на некодированный бит к спектральной плотности шума в дБ. EcNo - отношение энергии на канальный бит к спектральной плотности шума в дБ. Кодовая скорость сверточного кодера равна 1/3. Поэтому каждый передаваемый бит содержит 1/3 бита информации.
EbNo = 10; EcNo = EbNo - 10*log10(3); modulator = comm.BPSKModulator; channel = comm.AWGNChannel('EbNo',EcNo); demodulator = comm.BPSKDemodulator('DecisionMethod','Log-likelihood ratio');
Создание входных кадров данных. Кодирование данных, модуляция сообщения и добавление эффектов канала к результирующей совокупности. Демодулируйте передаваемую совокупность и генерируйте мягкие битовые значения. Для удобной для оборудования модели преобразуйте динамические биты в тип данных с фиксированной точкой. Оптимальный размер шага мягкого битового квантования является функцией спектральной плотности шума, No.
rng(0); messageLength = 100; numframes = 2; numSoftBits = 5; txMessages = cell(1,numframes); rxSoftMessages = cell(1,numframes); No = 10^((-EcNo)/10); quantStepSize = sqrt(No/2^numSoftBits); for k = 1:numframes txMessages{k} = randi([0 1],messageLength,1,'int8'); txCodeword = lteConvolutionalEncode(txMessages{k}); modOut = modulator.step(txCodeword); chanOut = channel.step(modOut); demodOut = -demodulator.step(chanOut)/4; rxSoftMessagesDouble = demodOut./quantStepSize; rxSoftMessages{k} = fi(rxSoftMessagesDouble,1,numSoftBits,0); end
Сериализация входных данных для модели Simulink. Оставьте достаточно времени между кадрами, чтобы каждый кадр был полностью декодирован до начала следующего. Блок сверточного декодера LTE принимает (2 * messageLength) + 140 циклов для завершения декодирования кадра.
Блок сверточного декодера LTE ожидает, что входные данные будут содержать три кодированных бита, перемеженных.
Аппаратный ввод: G0_1 G1_1 G2_1 G0_2 G1_2 G2_2 ... G0_n G1_n G2_n
Входные данные панели инструментов LTE: G0_1 G0_2 ... G0_n G1_1 G1_2 ... G1_n G2_1 G2_2 ... G2_n
idleCyclesBetweenSamples = 0; idleCyclesBetweenFrames = 2 * messageLength + 140; samplesizeIn = 3; interleaveSamples = true; [sampleIn,ctrlIn] = whdlFramesToSamples(rxSoftMessages,... idleCyclesBetweenSamples,... idleCyclesBetweenFrames,... samplesizeIn,... interleaveSamples);
Запустите модель Simulink. Из-за добавленных циклов простоя между кадрами входные переменные потоковой передачи включают в себя достаточное количество циклов для модели, чтобы завершить декодирование обоих кадров.
sampletime= 1;
simTime = size(ctrlIn,1);
modelname = 'ltehdlConvolutionalDecoderModel';
open(modelname);
sim(modelname);

Экспорт модели Simulink sampleOut и ctrlOut обратно в рабочую область MATLAB. Десериализация выходных выборок и сравнение с декодированным кадром.
rxMessages = whdlSamplesToFrames(sampleOut,ctrlOut); fprintf('\nLTE Convolutional Decoder\n'); for k = 1:numframes numBitsDiff = sum(double(txMessages{k})-double(rxMessages{k})); fprintf([' Frame %d: Behavioral and ' ... 'HDL simulation differ by %d bits\n'], k, numBitsDiff); end
Maximum frame size computed to be 100 samples. LTE Convolutional Decoder Frame 1: Behavioral and HDL simulation differ by 0 bits Frame 2: Behavioral and HDL simulation differ by 0 bits
lteConvolutionalDecode(Панель инструментов LTE)