exponenta event banner

Добавление контрольной суммы CRC к потоковым данным

В этом примере показано, как использовать блок кодера CRC LTE для кодирования данных и как сравнивать аппаратную конструкцию с результатами Toolbox™ LTE. Рабочий процесс выполняется следующим образом:

  1. Формирование кадров случайных входных выборок в MATLAB.

  2. Создание и добавление контрольной суммы CRC с помощью функции LTE Toolbox lteCRCEncode.

  3. Преобразование входных данных с кадрами в поток образцов и импорт потока в Simulink ®.

  4. Для кодирования выборок с использованием аппаратной архитектуры запустите модель Simulink, которая содержит кодер LTE CRC беспроводного HDL Toolbox™ блока.

  5. Экспортируйте поток битов, который теперь имеет добавленную контрольную сумму CRC, в рабочую область MATLAB ®.

  6. Преобразуйте поток образцов обратно в данные с кадрами и сравните кадры с опорными кадрами и контрольной суммой.

Создание входных кадров данных. Создание ссылочных выходных данных с помощью 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

См. также

Блоки

Функции

Связанные темы