Кодируйте потоковые данные, используя общий генератор CRC HDL-оптимизированный Блок для 5G стандарта NR

В этом примере показов, как использовать оптимизированный HDL- блока генератора общего CRC для кодирования потоковых данных в соответствии со стандартом 5G NR.

В этом примере выход этого блока сравнивается с функцией nrCRCEncode (5G Toolbox). Циклическая проверка избыточности (CRC) является кодом выявления ошибок, предназначенным для обнаружения ошибок в потоковых данных. Генератор CRC вычисляет короткую контрольную сумму двоичной последовательности с фиксированной длиной и добавляет ее с данными. Детектор CRC выполняет CRC на данных и сравнивает полученную контрольную сумму с добавленной контрольной суммой. Если две контрольные суммы не совпадают, обнаруживается ошибка. Генератор и детектор CRC используются в 5G системе NR для обнаружения любых ошибок в транспортных блоках каналов управления и восходящей и нисходящих данных. 5G НОМЕР стандарта определяет шесть различных циклических полиномов генератора: CRC6, CRC11, CRC16, CRC24A, CRC24B и CRC24C. Для получения дополнительной информации об этих полиномах см. TS 38.212, раздел 5.1 [1].

Сгенерируйте входные данные для генератора NR CRC

Выберите полином CRC, заданный в 5G стандарте NR. Сгенерируйте случайные входные данные длины frameLen и управляющие сигналы, которые указывают контуры системы координат. Пример модели импортирует переменные рабочей области MATLAB ® dataIn, startIn, endIn, validIn, sampleTime, и simTime.

CRCType = 'CRC24A'; % Specify the CRCType as 'CRC6','CRC11','CRC16','CRC24A','CRC24B' or 'CRC24C'
frameLen = 100;
msg = randi([0 1],frameLen,1);

[dataIn,ctrlIn] = whdlFramesToSamples(msg);

dataIn = timeseries(logical(dataIn'));
startIn = timeseries(logical(ctrlIn(:,1)));
endIn = timeseries(logical(ctrlIn(:,2)));
validIn = timeseries(logical(ctrlIn(:,3)));

sampleTime = 1;
simTime = length(ctrlIn(:,3)) + 100;

Запуск модели генератора CRC NR

The nrCRCGeneratorExampleInit.m скрипт конфигурирует блок General CRC Generator HDL Optimized путем установки параметров блока на основе заданного полинома генератора CRC, CRCType. Этот скрипт также обеспечивает вход в ссылочную функцию nrCRCEncode (5G Toolbox). Подсистема генератора CRC NR содержит блок General CRC Generator HDL Optimized. Выполнение модели импортирует переменные входного сигнала из рабочей области и возвращает закодированные CRC выходы и управляющие сигналы, которые указывают контуры системы координат. Модель экспортирует переменные encOut и ctrlOut в рабочую область MATLAB ®.

[poly,crcPolynomial,initState,finalXORValue] = nrCRCGeneratorExampleInit(CRCType);
open_system('NRCRCGeneratorHDL');
encOut = sim('NRCRCGeneratorHDL');

Проверьте результаты генератора NR CRC

Преобразуйте выход потоковых данных подсистемы генератора NR CRC в системы координат. Сравните эти системы координат с выходами nrCRCEncode функция.

startIdx = find(encOut.startOut);
endIdx = find(encOut.endOut);
dataOut = encOut.dataOut;

dataRef = nrCRCEncode(msg,poly);
bitErr = sum(abs(dataRef - dataOut(startIdx:endIdx)));
fprintf('CRC-encoded frame: Behavioral and HDL simulation differ by %d bits\n',bitErr);

close_system('NRCRCGeneratorHDL');
CRC-encoded frame: Behavioral and HDL simulation differ by 0 bits

Ссылки

  1. 3GPP TS 38.212. NR; Мультиплексирование и канальное кодирование. Проект Партнерства 3-ьей генерации; Группа технических спецификаций Радиосеть доступ.

См. также

Блоки

Функции