RXD_CRC - является усовершенствованной версией функии RXD_CHECKSUM и позволяюет производить расчет большего количества вариантов контрольных сумм.
Функция выполняет расчет контрольной суммы (настройка Тип) по RXD буферу, начиная с index
до (index + size - 1)
. Рассчитанная контрольная сумма сравнивается со значением, хранящемся в RXD буфере на позиции с индексом value_index
.
Результат сравнения передается на выход valid
.
В меню функций | На схеме |
---|---|
![]() |
![]() |
Название | Тип значения | Описание |
---|---|---|
index |
int32 | Позиция в RXD буфере, начиная с которой производится расчет контрольной суммы |
size |
int32 | Длина массива данных для расчета контрольной суммы |
value_index |
int32 | Позиция значения в RXD буфере, с которым будет сравниваться рассчитанная контрольная сумма |
Название | Тип значения | Описание |
---|---|---|
valid |
bool | Результат проверки контрольной суммы. Если True, то расчетное значение контрольной суммы совпадает со значением в RXD буфере, расположенном по индексу value_index . |
Название | Описание |
---|---|
Тип | Алгоритм расчета контрольной суммы. Настройка разбита на две части: Слева расположен выбор длины CRC: CRC-8 - 1 байт; CRC-16 - 2 байта; CRC-32 - 4 байта. Справа расположен выбор типа CRC для выбранной длины: Нестандартный - выбор настроек функции вручную; Остальные варианты - предустановки для настроек, приведенных ниже. Полный список предустановок для различных типов CRC приведен в статье Расчет CRC |
Poly | Производящий полином |
Init | Стартовые данные, то есть значения регистров на момент начала вычислений |
RefIn | Флаг, указывающий на начало и направление вычислений, для обнаружения пакетов ошибок должно соответствовать порядку передачи в канале. Существует два варианта: False — начиная со старшего значащего бита (MSB-first); True — с младшего (LSB-first). |
RefOut | Флаг, определяющий, инвертируется ли порядок битов регистра при входе на элемент XorOut: False — не инвертируется; True — инвертируется. |
XorOut | Между полученным результатом и XorOut выполняется операция "побитовый XOR" (см. функцию BXOR) |
Check | Проверочное значение CRC. Указанное значение должно получиться при расчете настроенной CRC по массиву байт:0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39 |
Порядок байт | Только если длина CRC больше 1 байта. Порядок байт, для дальнейшего выполнения преобразований контрольной суммы (для примера считаем, что расчетное значение = 0x0201 ):Младшим вперед - Далее будет использовано значение 0x0102 .Старшим вперед - Далее будет использовано значение 0x0201 . |