Обнаружение ошибок в принятых кадрах кодового слова в соответствии с полиномом генератора
Набор средств связи/Обнаружение и исправление ошибок/CRC
Блок детектора синдрома общего CRC вычисляет контрольные суммы контроля циклическим избыточным кодом (CRC) для принятых кадров кодового слова. Для успешного обнаружения CRC в линии связи системы связи необходимо выровнять настройки параметров блока детектора синдрома общего CRC с парным блоком генератора общего CRC.
Дополнительные сведения см. в разделе Работа детектора синдрома CRC.
In - Принятое кодовое словоПолученное кодовое слово, указанное как двоичный вектор столбца.
Типы данных: double | Boolean
Out - Выходной кадрВыходной кадр, возвращаемый как двоичный вектор столбца, который наследует тип данных входного сигнала. Выходной кадр содержит принятое кодовое слово с удаленными контрольными суммами.
Длина выходного кадра равна n - k * r битов, где n - размер принятого кодового слова, k - количество контрольных сумм на кадр, и r - степень полинома генератора.
Err - Сигнал ошибки контрольной суммыСигнал ошибки контрольной суммы, возвращаемый как двоичный вектор столбца, который наследует тип данных входного сигнала. Длина Err равно значению контрольных сумм на кадр. Для каждого вычисления контрольной суммы значение элемента 0 в Err указывает на отсутствие ошибки контрольной суммы и значение элемента 1 в Err указывает на ошибку контрольной суммы.
Generator polynomial - Полином генератора'z^16 + z^12 + z^5 + 1' (по умолчанию) | вектор многочленов | вектор двоичной строки | вектор целочисленной строкиГенераторный полином для алгоритма CRC, указанный как один из следующих:
Вектор многочлена, например 'z^3 + z^2 + 1'.
Двоичный вектор строки, который представляет коэффициенты полинома генератора в порядке степени убывания. Длина этого вектора равна (N + 1), где N - степень полинома генератора. Например ,[1 1 0 1] представляет многочлен x3 + z2 + 1.
Целочисленный вектор строки, содержащий экспоненты z для ненулевых членов в многочлене в порядке убывания. Например, [3 2 0] представляет многочлен z3 + z2 + 1.
Дополнительные сведения см. в разделе Символьное представление многочленов.
Некоторые обычно используемые генераторные многочлены включают в себя:
| Метод CRC | Полином генератора |
|---|---|
| CRC-32 | 'z^32 + z^26 + z^23 + z^22 + z^16 + z^12 + z^11 + z^10 + z^8 + z^7 + z^5 + z^4 + z^2 + z + 1' |
| CRC-24 | 'z^24 + z^23 + z^14 + z^12 + z^8 + 1' |
| CRC-16 | 'z^16 + z^15 + z^2 + 1' |
| Реверсированный CRC-16 | 'z^16 + z^14 + z + 1' |
| CRC-8 | 'z^8 + z^7 + z^6 + z^4 + z^2 + 1' |
| CRC-4 | 'z^4 + z^3 + z^2 + z + 1' |
Пример: 'z^7 + z^2 + 1', [1 0 0 0 0 1 0 1], и [7 2 0] представляют один и тот же многочлен, p (z) = z
7 + z
2 + 1.
Initial states - Начальные состояния внутреннего сдвигового регистра0 (по умолчанию) | 1 | двоичный вектор строкиНачальные состояния внутреннего сдвигового регистра, заданного как двоичный скаляр или двоичный вектор строки длиной, равной степени полинома генератора. Скалярное значение расширяется до вектора строки равной длины до степени полинома генератора.
Direct method - Использовать прямой алгоритм для вычисления контрольной суммы CRCoff (по умолчанию) | onИспользуется прямой алгоритм для вычисления контрольной суммы CRC. При сбросе блок использует непрямой алгоритм для вычисления контрольной суммы CRC.
Дополнительные сведения о прямых и непрямых алгоритмах см. в разделе Обнаружение и исправление ошибок.
Reflect input bytes - Отражать входные байтыoff (по умолчанию) | onПеред вводом данных в сдвиговый регистр выберите переключение принятого кодового слова по байтам. Когда выбран параметр Reflect input bytes, длина принятого кодового слова, деленная на значение параметра Checksums per frame, должна быть целочисленной и кратной 8. Если параметр «Отражать входные байты» снят, блок не переворачивает входные данные.
Reflect checksums before final XOR - Отражение контрольных сумм перед окончательным исключающим ИЛИoff (по умолчанию) | onВыберите «Отразить контрольные суммы перед окончательным исключающим ИЛИ», чтобы развернуть контрольные суммы CRC вокруг их центров после полного прохождения входных данных через сдвиговый регистр. Когда функция «Отразить контрольные суммы» (Reflect checksums) перед сбросом окончательного исключающего ИЛИ (XOR), блок не переворачивает контрольные суммы CRC.
Final XOR - Окончательное исключающее ИЛИ0 (по умолчанию) | 1 | двоичный вектор строкиКонечный XOR, заданный как двоичный скаляр или двоичный вектор строки длиной, равной степени полинома генератора. Операция XOR выполняется с использованием значения параметра Final XOR и контрольной суммы CRC перед сравнением с входной контрольной суммой. Скалярное значение расширяется до вектора строки равной длины до степени полинома генератора. Установка 0 эквивалентно отсутствию операции XOR.
Checksums per frame - Количество контрольных сумм, рассчитанных для каждого кадра1 (по умолчанию) | положительное целое числоКоличество контрольных сумм, рассчитанных для каждого кадра, указанное как положительное целое число.
Типы данных |
|
Многомерные сигналы |
|
Сигналы переменного размера |
|
Циклическое избыточное кодирование (CRC) представляет собой метод кодирования с управлением ошибками для обнаружения ошибок, возникающих при передаче кадра данных. В отличие от блочных или сверточных кодов, коды CRC не имеют встроенной возможности исправления ошибок. Вместо этого, когда система связи обнаруживает ошибку в принятом кодовом слове, приемник запрашивает отправителя повторно передать кодовое слово.
При кодировании CRC передатчик применяет правило к каждому кадру данных для создания дополнительных битов CRC, называемых контрольной суммой или синдромом, и затем добавляет контрольную сумму к кадру данных. После приема переданного кодового слова приемник применяет то же самое правило к принятому кодовому слову. Если итоговая контрольная сумма не равна нулю, произошла ошибка, и передатчик должен повторно отправить кадр данных.
Когда количество контрольных сумм на кадр больше 1, входной кадр данных делится на подкадры, правило применяется к каждому подкадру данных, и отдельные контрольные суммы добавляются к каждому подкадру. Кодовые слова подкадра объединяются для вывода одного кадра.
Описание поддерживаемых алгоритмов CRC см. в разделе Коды проверки циклическим избыточным кодом.
Детектор синдрома CRC выводит принятый кадр сообщения и вектор ошибок контрольной суммы в соответствии с заданным полиномом генератора и количеством контрольных сумм на кадр.
Биты контрольной суммы удаляются из каждого подкадра, так что результирующая длина выходного кадра равна n - k × r, где n - размер принятого кодового слова, k - количество контрольных сумм на кадр, а r - степень полинома генератора. Входной кадр должен быть равномерно разделен на k.
Для конкретного начального состояния внутреннего сдвигового регистра:
Принятое кодовое слово делится на k подкадров равного размера.
CRC удаляется из каждого из k подкадров и сравнивается с контрольной суммой, вычисленной на принятых подкадрах кодовых слов.
Выходной кадр собирают путем объединения битов подкадра k подкадров и затем выводят в виде вектора столбца.
Ошибка контрольной суммы выводится как двоичный вектор-столбец длиной k. Значение элемента 0 указывает на свободный от ошибок принятый подкадр, а значение элемента 1 указывает на ошибку, возникшую в принятом подкадре.
Для сценария, показанного здесь, принимается 16-битное кодовое слово, генераторный многочлен третьей степени вычисляет контрольную сумму CRC, начальное состояние равно 0, и количество контрольных сумм на кадр равно 2.

Поскольку количество контрольных сумм на кадр равно 2, а степень полинома генератора равна 3, принятое кодовое слово делится пополам и вычисляются две контрольные суммы размера 3, по одной для каждой половины принятого кодового слова. Начальные состояния не показаны, поскольку начальное состояние [0] не влияет на выходные данные алгоритма CRC. Выходной кадр содержит конкатенацию двух половин принятого кодового слова в виде единственного вектора размера 10. Выходной сигнал ошибки контрольной суммы содержит двоичный вектор кадра 2 на 1, записи которого зависят от того, равны ли вычисленные контрольные суммы нулю. Как показано на чертеже, первая контрольная сумма не равна нулю, а вторая контрольная сумма равна нулю, что указывает на ошибку, возникшую при приеме первой половины кодового слова.
[1] Склар, Бернард. Цифровые коммуникации: основы и приложения. Энглвуд Клиффс, Нью-Джерси: Прентис-Холл, 1988.
[2] Уикер, Стивен Б. Системы управления ошибками для цифровой связи и хранения. Река Верхнее Седло, Н.Дж.: Прентис Холл, 1995.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.
