Общий генератор CRC

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

Библиотека

Подбиблиотека CRC Исправления ошибок и Обнаружения

Описание

Блок General CRC Generator генерирует биты циклического избыточного кода (CRC) для каждого, входные данные структурируют, и добавляет их к кадру. Этот блок принимает входной сигнал вектора столбца двоичных данных.

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

  • Как полиномиальный вектор символов, такой как 'x^3 + x^2 + 1'.

  • Как вектор строки двоичных знаков, содержащий коэффициенты в порядке убывания степеней. Например, [1 1 0 1] представляет полином x3 + x2 + 1.

  • Как целочисленный вектор - строка, содержащий степени ненулевых условий в полиноме, в порядке убывания. Например, [3 2 0] представляет полином x3 + x2 + 1.

Вы задаете начальное состояние внутреннего сдвигового регистра параметром Initial states. Параметр Initial states является или скаляром или вектором строки двоичных знаков длины, равной степени полинома генератора. Скалярное значение расширено до вектора - строки из длины, равной степени полинома генератора. Например, начальное состояние по умолчанию [0] расширено до вектора - строки из всех нулей.

Вы задаете количество контрольных сумм, которые блок вычисляет для каждого входного кадра параметром Checksums per frame. Значение Checksums per frame должно равномерно разделить размер входного кадра. Если значением Checksums per frame является k, блок делает следующее:

  1. Делит каждый входной кадр на подкадры k равного размера

  2. Префиксы вектор Initial states к каждому из подкадров k

  3. Применяет алгоритм CRC к каждому увеличенному подкадру

  4. Добавляет получившиеся контрольные суммы в конце каждого подкадра

  5. Выходные параметры конкатенировали подкадры

Если размером входного кадра является m, и степенью полинома генератора является r, выходной кадр имеет размер m + k * r.

Этот блок поддерживает типы данных boolean и double. Блок наследовал тип выходных данных от входного сигнала.

Пример

Предположим, что размер входного кадра равняется 10, степень полинома генератора равняется 3, Initial states является [0], и Checksums per frame является 2. Блок делит каждый входной кадр на два подкадра размера 5 и добавляет контрольную сумму размера 3 к каждому подкадру, как показано ниже. Начальные состояния не показывают в этом примере, потому что начальное состояние [0] не влияет на вывод алгоритма CRC. Выходной кадр затем имеет размер 5 + 3 + 5 + 3 = 16.

Пример кодирования контроля циклическим избыточным кодом

Этот пример разъясняет операцию блока General CRC Generator путем сравнения сгенерированных битов CRC от блока библиотеки со сгенерированными от примитивных блоков Simulink®. Чтобы открыть модель, введите doc_crcgen в командной строке MATLAB®.

Для известного входного сигнала с длиной 6 битов модель генерирует биты CRC для полинома генератора, g(x)=x3+x+​1, и определенное начальное состояние регистра.

Можно экспериментировать с различными начальными состояниями путем изменения значения Initial states до выполнения симуляции. Для всех значений сохраняется сравнение (сгенерированные биты CRC от блока библиотеки со сгенерированными от примитивных блоков Simulink).

Используя General CRC Generator блок позволяет вам легко задавать полином генератора (специально для полиномов высшего порядка).

Атрибуты сигнала

Блок General CRC Generator имеет один входной порт и один выходной порт. Оба порта поддерживают сигналы вектора столбца двоичных данных.

Параметры

Generator polynomial

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

Initial conditions

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

Direct method

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

Reflect input bytes

Когда вы устанавливаете этот флажок, блок инвертирует входные данные на bytewise основе до ввода данных в сдвиговый регистр. Для этого приложения входная длина кадра (и любая текущая входная длина кадра для сигналов переменного размера) разделенный на значение для параметра Checksums per frame должны быть кратными восемь. Когда вы снимаете этот флажок, блок не инвертирует входные данные.

Reflect checksums before final XOR

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

Final XOR

Задайте значение, с которым контрольная сумма CRC должна быть XORed как бинарным скаляром или вектором. Блок применяет операцию "исключающее ИЛИ" только до добавления входных данных. Длина вектора является степенью полинома генератора, который вы задаете в параметре Generator polynomial. Когда вы задаете итоговое значение XOR как скаляр, блок расширяет значение до вектора - строки с длиной, равной степени полинома генератора. Значением по умолчанию этого параметра является 0, который не эквивалентен никакой операции "исключающее ИЛИ".

Checksums per frame

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

Алгоритм

Для описания алгоритма CRC, как реализовано этим блоком, см. Коды Контроля циклическим избыточным кодом.

Ссылки

[1] Sklar, Бернард, цифровая связь: основные принципы и приложения. Englewood Cliffs, Нью-Джерси, Prentice Hall, 1988.

[2] Ивовый прут, Стивен Б., системы контроля ошибок для цифровой связи и устройства хранения данных, верхнего Сэддл-Ривер, Нью-Джерси, Prentice Hall, 1995.

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

Генерация кода C/C++
Генерация кода C и C++ с помощью Simulink® Coder™.

Смотрите также

Системные объекты

Блоки

Представлено до R2006a