General CRC Generator HDL Optimized
Страница в процессе разработки. |
Генерирует биты CRC-кода и добавляет их к входным данным.
Тип: HDLCRCGenerator
Путь в библиотеке:
|
Описание
Блок 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
.
Типы данных |
|
Поддержка комплексных чисел |
Нет |
#
startIn
—
индикатор начала входного кадра
скаляр
Details
Индикатор начала входного кадра.
Типы данных |
|
Поддержка комплексных чисел |
Нет |
#
endIn
—
индикатор конца входного кадра
скаляр
Details
Индикатор конца входного кадра.
Типы данных |
|
Поддержка комплексных чисел |
Нет |
#
validIn
—
индикатор допустимых входных данных
скаляр
Details
Индикатор допустимых входных данных.
Это управляющий сигнал, который указывает, являются ли данные на порту dataIn действительными.
Типы данных |
|
Поддержка комплексных чисел |
Нет |
Выход
#
dataOut
—
выходные данные
скаляр
| вектор
Details
Выходные данные с добавленной контрольной суммой. Тип и размерность выходных данных такие же, как и входных.
Типы данных |
|
Поддержка комплексных чисел |
Нет |
#
startOut
—
индикатор начала выходного кадра
скаляр
Details
Индикатор начала выходного кадра.
Типы данных |
|
Поддержка комплексных чисел |
Нет |
#
endOut
—
индикатор конца выходного кадра
скаляр
Details
Индикатор конца выходного кадра.
Типы данных |
|
Поддержка комплексных чисел |
Нет |
#
validOut
—
индикатор допустимых выходных данных
скаляр
Details
Индикатор допустимых выходных данных.
Это управляющий сигнал, который указывает, являются ли данные на порту dataOut действительными.
Типы данных |
|
Поддержка комплексных чисел |
Нет |
Параметры
Parameters
#
Polynomial —
порождающий полином
Массив вещественных чисел
Details
Задайте порождающий полином в виде двоичного вектора с коэффициентами в порядке убывания степеней. Длина вектора равна степени полинома плюс 1
.
Значение по умолчанию |
|
Имя для программного использования |
|
Настраиваемый |
Нет |
Вычисляемый |
Да |
# Initial state — начальные состояния сдвигового регистра
Details
Укажите начальные состояния внутреннего сдвигового регистра в виде двоичного скаляра или вектора. Допускается использование чисел одинарной и двойной точности, однако они все равно должны быть равны либо 0.0
, либо 1.0
. Для векторных входов длина начального состояния должна быть равна степени порождающего полинома.
Значение по умолчанию |
|
Имя для программного использования |
|
Настраиваемый |
Нет |
Вычисляемый |
Да |
#
Direct method —
включение прямого алгоритма вычисления контрольной суммы
Логический тип
Details
Установите этот флажок, чтобы использовать прямой алгоритм вычисления контрольной суммы CRC. Если флажок снят, то блок использует непрямой алгоритм для вычисления контрольной суммы CRC.
Более подробную информацию о прямых и непрямых алгоритмах см. в разделе Прямой и непрямой алгоритмы CRC.
Значение по умолчанию |
|
Имя для программного использования |
|
Настраиваемый |
Нет |
Вычисляемый |
Нет |
#
Reflect input —
порядок входных байтов
Логический тип
Details
Укажите порядок входных байтов:
-
Установите этот флажок, чтобы блок переворачивал каждый входной байт перед тем, как он попадет в сдвиговый регистр.
-
Снимите этот флажок, чтобы блок передавал данные сообщения в сдвиговый регистр без изменений.
Если флажок установлен, ширина входных данных должна быть кратна 8
.
Значение по умолчанию |
|
Имя для программного использования |
|
Настраиваемый |
Нет |
Вычисляемый |
Нет |
#
Reflect CRC checksum —
порядок байтов контрольной суммы
Логический тип
Details
Укажите порядок следования байтов контрольной суммы:
-
Установите этот флажок, чтобы блок переворачивал каждый байт контрольной суммы перед передачей его на финальную стадию XOR.
-
Снимите этот флажок, чтобы блок передавал байт контрольной суммы на финальную стадию XOR без изменений.
Если флажок установлен, ширина входных данных должна быть кратна 8
.
Значение по умолчанию |
|
Имя для программного использования |
|
Настраиваемый |
Нет |
Вычисляемый |
Нет |
# Final XOR value — контрольная сумма
Details
Укажите контрольную сумму в виде в виде двоичного скаляра или вектора. Допускается использование чисел одинарной и двойной точности, однако они все равно должны быть равны либо 0.0
, либо 1.0
. Блок выполняет операцию XOR над контрольной суммой CRC с этим значением перед добавлением ее к входным данным.
Если вы указываете векторный вход, то длина вектора должна быть равна степени порождающего полинома.
Значение по умолчанию |
|
Имя для программного использования |
|
Настраиваемый |
Нет |
Вычисляемый |
Да |
Алгоритмы
Когда вы используете векторный или целочисленный вход, блок реализует параллельный алгоритм CRC [1].
Чтобы обеспечить высокую пропускную способность современных систем связи, блок реализует алгоритм CRC с параллельной архитектурой. Эта архитектура рекурсивно вычисляет битов контрольной суммы CRC для каждого входного бита. В конце кадра результат контрольной суммы добавляется к сообщению. Для полиномиальной длины рекурсивное вычисление контрольной суммы для битов параллельно следующее:
,
где
-
— это матрица на , которая выбирает элементы текущего состояния для вычисления полинома с новыми битами входа;
-
— это -элементный вектор, который предоставляет новые входные биты, упорядоченные относительно порождающего полинома и заполненные нулями;
-
— блок реализует с помощью логического AND;
-
— блок реализует с помощью логического XOR.
Литература
-
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.