Документация Engee

General CRC Generator HDL Optimized

Страница в процессе разработки.

Генерирует биты CRC-кода и добавляет их к входным данным.

Тип: HDLCRCGenerator

Путь в библиотеке:

/Basic/Additional/Discrete/General CRC Generator HDL Optimized

Описание

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

Порты

Вход

# dataIn — входные данные
скаляр | вектор

Details

Входные данные:

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

  • вектор — вектор двоичных значений. Для этого случая блок поддерживает тип данных Float64 или Bool.

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

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

Типы данных

Float64, UInt8, UInt16, UInt32, Bool, Fixed

Поддержка комплексных чисел

Нет

# startIn — индикатор начала входного кадра
скаляр

Details

Индикатор начала входного кадра.

Типы данных

Bool

Поддержка комплексных чисел

Нет

# endIn — индикатор конца входного кадра
скаляр

Details

Индикатор конца входного кадра.

Типы данных

Bool

Поддержка комплексных чисел

Нет

# validIn — индикатор допустимых входных данных
скаляр

Details

Индикатор допустимых входных данных.

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

Типы данных

Bool

Поддержка комплексных чисел

Нет

Выход

# dataOut — выходные данные
скаляр | вектор

Details

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

Типы данных

Float64, UInt8, UInt16, UInt32, Bool, Fixed

Поддержка комплексных чисел

Нет

# startOut — индикатор начала выходного кадра
скаляр

Details

Индикатор начала выходного кадра.

Типы данных

Bool

Поддержка комплексных чисел

Нет

# endOut — индикатор конца выходного кадра
скаляр

Details

Индикатор конца выходного кадра.

Типы данных

Bool

Поддержка комплексных чисел

Нет

# validOut — индикатор допустимых выходных данных
скаляр

Details

Индикатор допустимых выходных данных.

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

Типы данных

Bool

Поддержка комплексных чисел

Нет

Параметры

Parameters

# Polynomial — порождающий полином
Массив вещественных чисел

Details

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

Значение по умолчанию

[1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]

Имя для программного использования

Polynomial

Настраиваемый

Нет

Вычисляемый

Да

# Initial state — начальные состояния сдвигового регистра

Details

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

Значение по умолчанию

0

Имя для программного использования

InitialState

Настраиваемый

Нет

Вычисляемый

Да

# Direct method — включение прямого алгоритма вычисления контрольной суммы
Логический тип

Details

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

Более подробную информацию о прямых и непрямых алгоритмах см. в разделе Прямой и непрямой алгоритмы CRC.

Значение по умолчанию

false (выключено)

Имя для программного использования

DirectMethod

Настраиваемый

Нет

Вычисляемый

Нет

# Reflect input — порядок входных байтов
Логический тип

Details

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

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

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

Если флажок установлен, ширина входных данных должна быть кратна 8.

Значение по умолчанию

false (выключено)

Имя для программного использования

ReflectInput

Настраиваемый

Нет

Вычисляемый

Нет

# Reflect CRC checksum — порядок байтов контрольной суммы
Логический тип

Details

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

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

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

Если флажок установлен, ширина входных данных должна быть кратна 8.

Значение по умолчанию

false (выключено)

Имя для программного использования

ReflectCRCChecksum

Настраиваемый

Нет

Вычисляемый

Нет

# Final XOR value — контрольная сумма

Details

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

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

Значение по умолчанию

0

Имя для программного использования

FinalXORValue

Настраиваемый

Нет

Вычисляемый

Да

Алгоритмы

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

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

,

где

  • — это матрица на , которая выбирает элементы текущего состояния для вычисления полинома с новыми битами входа;

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

  • — блок реализует с помощью логического AND;

  • — блок реализует с помощью логического XOR.

general crc generator hdl optimized 1 ru

Литература

  1. Campobello, G., G. Patane, and M. Russo. “Parallel Crc Realization.” IEEE Transactions on Computers 52, no. 10 (October 2003): 1312–19. https://doi.org/10.1109/TC.2003.1234528.