В этом примере показано, как использовать блок General CRC Generator HDL Optimized для кодирования данных о потоковой передаче согласно 5G стандарт NR.
В этом примере выход этого блока по сравнению с функциональным nrCRCEncode (5G Toolbox). Контроль циклическим избыточным кодом (CRC) является кодом с обнаружением ошибок, спроектированным, чтобы обнаружить ошибки в потоковой передаче данных. Генератор CRC вычисляет короткую контрольную сумму двоичной последовательности фиксированной длины и добавляет ее с данными. Детектор CRC выполняет CRC на данных и сравнивает получившуюся контрольную сумму с добавленной контрольной суммой. Если эти две контрольных суммы не соответствуют, ошибка обнаруживается. Генератор CRC и детектор используются в 5G система NR, чтобы обнаружить любые ошибки в транспортных блоках управления и восходящих и нисходящих каналов данных. 5G стандарт NR задает шесть различных циклических полиномов генератора: CRC6, CRC11, CRC16, CRC24A, CRC24B и CRC24C. Для получения дополнительной информации об этих полиномах, смотрите Раздел TS 38.212 5.1 [1].
Выберите полином CRC, заданный в 5G стандарт NR. Сгенерируйте случайные входные данные длины frameLen и управляющие сигналы, которые указывают на контуры системы координат. Модель в качестве примера импортирует переменные dataIn рабочей области MATLAB®, startIn, endIn, validInРазмер шага, и 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;
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');

Преобразуйте вывод данных потоковой передачи подсистемы Генератора CRC NR к системам координат. Сравните те системы координат с выходом 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; мультиплексирование и кодирование канала. Проект партнерства третьего поколения; сеть радиодоступа Technical Specification Group.
nrCRCEncode (5G Toolbox)