В этом примере показано, как использовать блок General CRC Generator HDL Optimized для кодирования потоковых данных в соответствии со стандартом 5G NR.
В этом примере выходной сигнал этого блока сравнивается с функцией nrCRCEncode (5G Панель инструментов). Циклический избыточный контроль (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 и управляющие сигналы, которые указывают границы кадра. Пример модели импортирует переменные рабочей области 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;
nrCRCGeneratorExampleInit.m сценарий конфигурирует блок General CRC Generator HDL Optimized путем установки параметров блока на основе указанного многочлена CRC Generator, CRCType. Этот сценарий также обеспечивает ввод в справочную функцию nrCRCEncode (5G Панель инструментов). Подсистема генератора ЦИК NR содержит блок оптимизации HDL генератора CRC общего назначения. Выполнение модели импортирует переменные входного сигнала из рабочей области и возвращает выходные и управляющие сигналы в кодировке 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. НР; Мультиплексирование и канальное кодирование. проект партнерства 3-го поколения; Техническая спецификация на сеть радиодоступа группы.
nrCRCEncode (5G Панель инструментов)