В этом примере показано, как использовать блок кодера CRC LTE для кодирования данных и как сравнивать аппаратную конструкцию с результатами Toolbox™ LTE. Рабочий процесс выполняется следующим образом:
Формирование кадров случайных входных выборок в MATLAB.
Создание и добавление контрольной суммы CRC с помощью функции LTE Toolbox lteCRCEncode.
Преобразование входных данных с кадрами в поток образцов и импорт потока в Simulink ®.
Для кодирования выборок с использованием аппаратной архитектуры запустите модель Simulink, которая содержит кодер LTE CRC беспроводного HDL Toolbox™ блока.
Экспортируйте поток битов, который теперь имеет добавленную контрольную сумму CRC, в рабочую область MATLAB ®.
Преобразуйте поток образцов обратно в данные с кадрами и сравните кадры с опорными кадрами и контрольной суммой.
Создание входных кадров данных. Создание ссылочных выходных данных с помощью lteCRCEncode.
frameLength = 256; numframes = 2; rng(0); txframes = cell(1,numframes); txcodeword = cell(1,numframes); rxSoftframes = cell(1,numframes); for ii = 1:numframes txframes{ii} = randi([0 1],frameLength,1)>0.5; CRCType = '24B'; CRCMask = 50; txcodeword{ii} = lteCRCEncode(txframes{ii},CRCType,CRCMask); end
Сериализация входных данных для модели Simulink. Оставьте достаточно времени между кадрами для полного кодирования каждого кадра до начала следующего. Для кодирования CRC 24 контрольная сумма добавляет 24 бита четности в конце кадра. Аппаратный алгоритм также добавляет циклы задержки CRCLength + 3.
idleCyclesBetweenSamples = 0;
idleCyclesBetweenFrames = 24+27;
outputSize = 1;
[sampleIn,ctrlIn] = whdlFramesToSamples(...
txframes,idleCyclesBetweenSamples,idleCyclesBetweenFrames,outputSize);
Запустите модель Simulink.
sampletime = 1;
simTime = length(ctrlIn);
modelname = 'ltehdlCRCEncoderModel';
open(modelname);
sim(modelname);

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