exponenta event banner

Общий детектор синдрома CRC Оптимизированный HDL

Обнаружение ошибок во входных данных с помощью CRC

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

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

  • General CRC Syndrome Detector HDL Optimized block

Описание

Блок оптимизации HDL детектора синдрома общего CRC выполняет циклический избыточный контроль (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 скаляр.

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

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

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

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

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

Когда это значение равно 1сообщение содержит по меньшей мере одну ошибку. Когда это значение равно 0, сообщение содержит нулевые ошибки.

Типы данных: 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.

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

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