В этом примере показов, как использовать оптимизированный 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].
Выберите полином 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;
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 в системы координат. Сравните эти системы координат с выходами 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
3GPP TS 38.212. NR; Мультиплексирование и канальное кодирование. Проект Партнерства 3-ьей генерации; Группа технических спецификаций Радиосеть доступ.
nrCRCEncode
(5G Toolbox)