exponenta event banner

Общая оптимизация HDL генератора CRC

Создание битов кода CRC и добавление их к входным данным

  • Библиотека:
  • Набор средств связи Поддержка HDL/Обнаружение и исправление ошибок/CRC

    Набор средств связи/Обнаружение и исправление ошибок/CRC

  • General CRC Generator HDL Optimized block

Описание

Блок General CRC Generator HDL Optimized, который подобен блоку General CRC Generator, генерирует контрольную сумму контроля циклическим избыточным кодом (CRC) и добавляет ее к входному сообщению. Общая обработка блоков, оптимизированных для HDL генератора CRC, оптимизирована для генерации кода HDL. Вместо одновременной обработки всего кадра блок принимает и возвращает поток выборки данных с сопутствующими сигналами управления. Сигналы управления указывают на достоверность выборок и границы кадра. Для достижения более высокой пропускной способности блок принимает векторные данные длиной до CRC и реализует параллельную архитектуру.

Порты

Вход

развернуть все

Входные данные, указанные в качестве одной из этих опций.

  • Скаляр (Scalar) - указывает целое число, представляющее несколько битов. В этом случае блок поддерживает целое число без знака (uint8, uint16, или uint32) или fixdt(0,N,0) тип данных.

  • Вектор (Vector) - задает вектор двоичных значений. В этом случае блок поддерживает double или Boolean тип данных.

Ширина данных должна быть меньше или равна длине CRC, а длина CRC должна быть разделена на ширину данных. Для CRC-CCITT/CRC-16 допустимыми значениями ширины данных являются 16, 8, 4, 2 и 1.

Пример: uint8 векторный ввод [0 0 0 1 0 0 1 1] эквивалентно 19.

Типы данных: double | uint8 | uint16 | uint32 | fixed point | Boolean

Начало индикатора входного кадра, заданного как логический скаляр.

Типы данных: Boolean

Индикатор конца входного кадра, заданный как логический скаляр.

Типы данных: Boolean

Допустимый индикатор входных данных, заданный как логический скаляр.

Это управляющий сигнал, указывающий, являются ли данные порта dataIn допустимыми.

Типы данных: Boolean

Продукция

развернуть все

Выходные данные с добавленной контрольной суммой, возвращаемые в виде скаляра или вектора. Тип и размер выходных данных совпадают с входными данными.

Типы данных: double | uint8 | uint16 | uint32 | Boolean | fixed point

Начало индикатора выходного кадра, возвращаемого как логический скаляр.

Типы данных: Boolean

Индикатор конца выходного кадра, возвращаемый как логический скаляр.

Типы данных: Boolean

Допустимый индикатор выходных данных, возвращаемый как логический скаляр.

Этот порт является управляющим сигналом, указывающим, являются ли данные порта dataOut действительными.

Типы данных: Boolean

Параметры

развернуть все

Задайте полином генератора как двоичный вектор с коэффициентами в порядке убывания степеней. Длина вектора равна степени полинома плюс 1.

Укажите начальные условия внутреннего сдвигового регистра как двоичный скаляр или вектор с двойной или единственной точностью. Для векторных входов длина начального состояния должна быть равна степени полинома генератора.

Укажите прямой или косвенный метод расчета контрольной суммы.

  • Выберите этот параметр для блока, чтобы использовать прямой алгоритм для вычисления контрольной суммы CRC.

  • Снимите этот параметр для блока, чтобы использовать непрямой алгоритм для вычисления контрольной суммы CRC.

Дополнительные сведения о прямых и непрямых алгоритмах см. в разделе Коды проверки циклическим избыточным кодом.

Укажите порядок входных байтов.

  • Выберите этот параметр для блока, чтобы развернуть каждый входной байт до того, как он войдет в сдвиговый регистр.

  • Снимите этот параметр для блока, чтобы передать данные сообщения в сдвиговый регистр без изменений.

Ширина входных данных должна быть кратна 8.

Укажите порядок байтов контрольной суммы.

  • Выберите этот параметр для блока, чтобы развернуть каждый байт контрольной суммы перед передачей его в последний этап XOR.

  • Очистите этот параметр для блока, чтобы передать байт контрольной суммы на заключительный этап исключающее ИЛИ без изменений.

Ширина входных данных должна быть кратна 8.

Укажите контрольную сумму как скаляр или вектор типа данных двоичной, двойной или одинарной точности. Блок выполняет операцию исключающее ИЛИ для контрольной суммы CRC с этим значением перед добавлением ее к входным данным.

Если задан векторный ввод, длина вектора должна быть равна степени полинома генератора.

Алгоритмы

развернуть все

При использовании векторного или целочисленного ввода блок реализует параллельный алгоритм CRC [1].

Для обеспечения высокой пропускной способности современных систем связи блок реализует алгоритм CRC с параллельной архитектурой. Эта архитектура рекурсивно вычисляет М битов контрольной суммы CRC для каждого W входных битов. В конце кадра к сообщению добавляется окончательный результат контрольной суммы. Для полинома длиной М вычисление рекурсивной контрольной суммы для W битов параллельно составляет

X '= FW (×) X (+) D.

FW является матрицей M-by-M, которая выбирает элементы текущего состояния для вычисления полинома с новыми входными битами. D - вектор М-элемента, который обеспечивает новые входные биты, упорядоченные относительно полинома генератора и заполненные нулями. Блок реализует (×) с логическими И и (+) с логическими XOR.

Ссылки

[1] Кампобелло, Г., Г. Патане и М. Руссо. «Параллельная реализация Crc». Транзакции IEEE на компьютерах 52, № 10 (октябрь 2003 года): 1312-19. https://doi.org/10.1109/TC.2003.1234528.

Расширенные возможности

.
Представлен в R2012a