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

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

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

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

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

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

  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

См. также

Блоки

Функции

Похожие темы