(Чтобы быть удаленным) объект детектора CRC Построения
crc.detector будет удален в будущем релизе. Чтобы обнаружить ошибки во входных данных с помощью контроля циклическим избыточным кодом (CRC), используйте comm.CRCDetector Системный объект вместо этого. Для получения дополнительной информации о рекомендуемом рабочем процессе см. Вопросы совместимости.
h= crc.detector(polynomial)
h= crc.detector(generatorObj)
h= crc.detector(‘Polynomial’, polynomial, ‘param1’, val1, etc.)
h= crc.detector
h= crc.detector(polynomial) создает объект H детектора CRC, заданный ПОЛИНОМОМ порождающего полинома
h= crc.detector(generatorObj) создает объект H детектора CRC, заданный параметрами, найденными в объекте генератора CRC GENERATOROBJ
h= crc.detector('property1', val1, ...) создает объект H детектора CRC со свойствами, как задано парами PROPERTY/VALUE.
h= crc.detector создает объект H детектора CRC со свойствами по умолчанию. Это создает детектор CRC-CCITT и эквивалентно:
h= crc.detector('Polynomial','0x1021','InitialState','0xFFFF','ReflectInput',false,'ReflectRemainder',false,'FinalXOR','0x0000')
Следующая таблица описывает свойства объекта детектора CRC. Все свойства перезаписываемы, кроме Type.
| Свойство | Описание |
|---|---|
Type | Задает объект как 'Детектор CRC'. |
Polynomial | Порождающий полином, который задает связи для линейного сдвигового регистра обратной связи. Это свойство может быть задано как бинарное представление вектора, убывающее степени полинома. В этом случае продвижение '1' из полинома должно быть включено. Это может также быть задано как строка, снабженная предисловием '0x', который является шестнадцатеричным представлением убывающих степеней полинома. В этом случае продвижение '1' из полинома не использовано. |
InitialState | Начальное содержимое сдвигового регистра. Это свойство может быть задано как бинарный скаляр, бинарный вектор, или как строка, снабженная предисловием '0x', который является шестнадцатеричным представлением бинарного вектора. Как бинарный вектор, его длина должна быть той меньше, чем продолжительность бинарного векторного представления Полинома. |
ReflectInput | Булево количество, которое задает, должны ли входные данные быть инвертированы на bytewise базисе до ввода сдвигового регистра. |
ReflectRemainder | Булево количество, которое задает, должна ли контрольная сумма CRC двоичного выхода быть инвертирована вокруг ее центра после входных данных, полностью через сдвиговый регистр. |
FinalXOR | Значение, с которым контрольная сумма CRC должна быть XORed только до обнаружения входных данных. Это свойство может быть задано как бинарный скаляр, бинарный вектор или как строка, снабженная предисловием '0x', который является шестнадцатеричным представлением бинарного вектора. Как бинарный вектор, его длина должна быть той меньше, чем продолжительность бинарного векторного представления Полинома. |
Обнаружить метод используется с объектом обнаружить ошибки в цифровой передаче.
Для получения информации имея отношение к алгоритму генерации CRC, см. Коды Контроля циклическим избыточным кодом.
[OUTDATA ERROR] = DETECT(H, INDATA) обнаруживает ошибки передачи в закодированном входном сигнале INDATA путем регенерации контрольной суммы CRC с помощью объекта H детектора CRC. Детектор затем сравнивает регенерированную контрольную сумму с контрольной суммой, добавленной к INDATA. INDATA с бинарным знаком может быть или вектор-столбцом или матрицей. Если это - матрица, каждый столбец считается отдельным каналом. OUTDATA идентичен входному сигналу INDATA, за исключением того, что этому сняли изоляцию с контрольной суммы CRC. ОШИБКА 1xC логический вектор, указывающий, если закодированное сообщение, INDATA имеет ошибки, где C является количеством каналов в INDATA. ОШИБОЧНОЕ значение 0 не указывает ни на какие ошибки, и значение 1 указывает на ошибки.
Создайте генератор CRC-16 CRC, затем используйте его, чтобы сгенерировать контрольную сумму для бинарного вектора, представленного последовательностью ASCII '123456789'. Введите ошибку, затем обнаружьте ее с помощью детектора CRC-16 CRC.
gen = crc.generator('Polynomial', '0x8005', 'ReflectInput', ... true, 'ReflectRemainder', true); det = crc.detector('Polynomial', '0x8005', 'ReflectInput', ... true, 'ReflectRemainder', true); % The message below is an ASCII representation % of the digits 1-9 msg = int2bit((49:57)',8); encoded = generate(gen, msg); encoded(1) = ~encoded(1); % Introduce an error [outdata error] = detect(det, encoded); % Detect the error noErrors = isequal(msg, outdata) % Should be 0 error % Should be 1
Этот пример генерирует следующий выход:
noErrors = 0 error = 1