В этом примере показано, как использовать блок LTE CRC Encoder, чтобы закодировать данные, и как сравнить благоприятный для оборудования проект с результатами LTE Toolbox™. Рабочий процесс выполняет эти шаги:
Сгенерируйте системы координат случайных входных выборок в MATLAB.
Сгенерируйте и добавьте контрольную сумму CRC с помощью функции LTE Toolbox lteCRCEncode
.
Преобразуйте структурированные входные данные в поток выборок и импортируйте поток в Simulink®.
Чтобы закодировать выборки с помощью благоприятной для оборудования архитектуры, запустите модель Simulink, которая содержит Энкодер CRC LTE блока LTE 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] = ltehdlFramesToSamples(...
txframes,idleCyclesBetweenSamples,idleCyclesBetweenFrames,outputSize);
Запустите модель Simulink.
sampletime = 1;
simTime = length(ctrlIn);
modelname = 'ltehdlCRCEncoderModel';
open(modelname);
sim(modelname);
Модель Simulink экспортирует sampleOut_ts
и ctrlOut_ts
назад к рабочему пространству MATLAB. Десериализуйте выходные выборки и сравните обрамленные данные со справочными данными.
sampleOut = sampleOut_ts.Data; sampleOut = sampleOut(:); ctrlOut = [squeeze(ctrlOut_ts.start.Data) ... squeeze(ctrlOut_ts.end.Data) ... squeeze(ctrlOut_ts.valid.Data)]; txhdlframes = ltehdlSamplesToFrames(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