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

Обнаружьте ошибки во входных данных с помощью CRC, оптимизированного для генерации HDL-кода

Библиотека

Communications Toolbox> Исправление ошибок и Обнаружение> CRC (commcrc2)

Поддержка HDL Communications Toolbox> Исправление ошибок и Обнаружение> CRC (commhdlcrc)

Описание

Этот благоприятный для оборудования блок детектора CRC выполняет контроль циклическим избыточным кодом (CRC) на данных и сравнивает получившуюся контрольную сумму с добавленной контрольной суммой. Если эти две контрольных суммы не соответствуют, блок сообщает об ошибке. Вместо того, чтобы обработать целый кадр целиком, блок принимает и возвращает демонстрационный поток данных с сопроводительными управляющими сигналами. Управляющие сигналы указывают на валидность выборок и контуры кадра. Чтобы достигнуть более высокой пропускной способности, блок принимает векторные данные до продолжительности CRC и реализует параллельную архитектуру.

Атрибуты сигнала

ПортНаправлениеОписаниеТип данных
dataInВходной параметрПередайте данные плюс контрольная сумма. Данные могут быть вектором двоичных значений или скалярным целым числом, представляющим несколько битов. Например, векторный вход [0 0 0 1 0 0 1 1] эквивалентен входу uint8 19. Ширина данных должна быть меньше чем или равна продолжительности CRC, и продолжительность CRC должна быть делимой по условию ширина. Например, для CRC-CCITT/CRC-16, допустимые ширины данных равняются 16, 8, 4, 2, и 1.

Вектор: дважды или булевская переменная

Скаляр: беззнаковое целое (uint8/16/32) или fixdt (0, N, 0)

startInВходной параметрУказывает на запуск кадра данных, включая контрольную сумму.Булевская переменная
endInВходной параметрУказывает на конец кадра данных. Булевская переменная
validInВходной параметрУказывает, что входные данные допустимы. Булевская переменная
dataOutВывод Передайте данные. Выходные данные имеют ту же ширину как входные данные.То же самое как dataIn
startOutВывод Указывает на запуск кадра данных. Булевская переменная
endOutВывод Указывает на конец кадра данных. Булевская переменная
validOutВывод Указывает, что выходные данные допустимы. Булевская переменная
errВывод Указывает на повреждение полученных данных, когда err высок (1).Булевская переменная

Параметры

Polynomial

Двойной или булев вектор, задающий полином, в порядке убывания степеней. Продолжительность CRC является длиной (полином) – 1. Значением по умолчанию является [1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1].

Initial state

Двойной или булев скаляр или вектор длины равняются продолжительности CRC, задавая начальное состояние внутреннего сдвигового регистра. Значение по умолчанию 0.

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

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

Параметр очищен по умолчанию.

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

Reflect input

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

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

  • Когда этот параметр не выбран, данные о сообщении передаются неизменному сдвиговому регистру.

Параметр очищен по умолчанию.

Reflect CRC checksum

Продолжительность CRC должна быть кратной 8.

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

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

Параметр очищен по умолчанию.

Final XOR value

Значение, что контрольная сумма CRC является XORed с тем, прежде чем это будет добавлено к входным данным. Этот параметр может быть двойным или булевым скаляром или вектором длины, равной продолжительности CRC. Значение по умолчанию 0.

Алгоритм

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

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

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

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

Синхронизация схемы

Эта форма волны показывает данные о потоковой передаче и сопроводительные управляющие сигналы для CRC16 с 8-битным бинарным векторным входом. Входные кадры непрерывны, и выходные кадры показывают пробел между ними, потому что блок детектора удаляет слово контрольной суммы.

Эта схема формы волны показывает непрерывные входные данные. Нетекущие данные также поддержаны.

Начальная задержка

Блок General CRC Syndrome Detector HDL Optimized вводит задержку на выводе. Эта задержка может быть вычислена со следующим уравнением, предположением, что входные данные непрерывны:

initialdelay = 3 * (CRC length/input data width) + 2

Ссылки

[1] Кампобелло, Джузеппе, Джузеппе Патане и Марко Руссо. "Параллельная Реализация CRC". Транзакции IEEE на Компьютерах. Издание 52, № 10, октябрь 2003, стр 1312–1319.

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

Представленный в R2012b