General CRC Generator HDL Optimized

Сгенерируйте биты CRC кода и добавьте их к входным данным

  • Библиотека:
  • Поддержка HDL Communications Toolbox / Выявление ошибок и Коррекция / CRC

    Communications Toolbox / Выявление ошибок и Коррекция / CRC

  • General CRC Generator HDL Optimized block

Описание

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

Порты

Входной параметр

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

Входные данные в виде одной из этих опций.

  • Скаляр – Задает целое число, представляющее несколько битов. Для этого случая блок поддерживает беззнаковое целое (uint8uint16, или uint32) или fixdt(0,N,0) тип данных.

  • Вектор – Задает вектор из двоичных значений. Для этого случая блок поддерживает 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

Параметры

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

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

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

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

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

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

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

Задайте входной порядок байтов.

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

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

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

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

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

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

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

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

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

Алгоритмы

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

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

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

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

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

Ссылки

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

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

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