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

Сгенерируйте биты CRC кода и добавьте к входным данным, оптимизированным для генерации HDL-кода

Библиотека

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

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

Описание

Этот благоприятный для оборудования блок генератора CRC, как блок General CRC Generator, генерирует контрольную сумму контроля циклическим избыточным кодом (CRC) и добавляет его к входному сигналу. С блоком General CRC Generator HDL Optimized обработка оптимизирована для генерации HDL-кода. Вместо того, чтобы обработать целый кадр целиком, блок принимает и возвращает демонстрационный поток данных с сопроводительными управляющими сигналами. Управляющие сигналы указывают на валидность выборок и контуры кадра. Чтобы достигнуть более высокой пропускной способности, блок принимает векторные данные до продолжительности 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Вывод Указывает, что выходные данные допустимы. Булевская переменная

Параметры

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 Generator HDL Optimized вводит задержку на выводе. Эта задержка может быть вычислена со следующим уравнением, предположением, что входные данные непрерывны:

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

Ссылки

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

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

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