Какие ошибки не может обнаружить метод CRC? - PullRequest
0 голосов
/ 16 сентября 2018

Предположим, что 16-битный CRC полином x¹⁶ + x¹² + x⁵ + 1 = 0x11021.Этот полином может:

  1. обнаруживать все однобитовые ошибки (независимо от размера данных).
  2. обнаруживать все пакетные ошибки до 16-битной ширины (независимо от размера данных).
  3. обнаружение всех нечетных чисел битовых ошибок (поскольку оно имеет 4 полиномиальных термина; размер данных не зависит).
  4. обнаружение 3-битных ошибок (HD4) до 32571 битного размера данных.

Учитывая, что вышеприведенные пункты верны ...... Какие ошибки CRC не может обнаружить ??

1 Ответ

0 голосов
/ 17 сентября 2018

Это должно обнаруживать все ошибки одиночного пакета до 16 бит.

0x11021 является произведением 2 "простых" полиномов, 0xf01f и 0x3.Фактор 0x3 - это то, почему все нечетные битовые ошибки обнаруживаются (это коэффициент четности).

Поскольку все нечетные битовые ошибки обнаруживаются, этот оператор становится обнаруживающим все 2-битные ошибки вплоть доразмер данных 32751 бит или размер сообщения 32767 бит, который включает в себя 16-битный CRC, который добавляется к битам данных.Для подхода грубой силы, используя строку битов всех нулевых битов, кроме первого бита, который является одним битом, затем вычисляют CRC по этой строке до тех пор, пока CRC не будет иметь только один бит в качестве наиболее значимого бита.Это можно эмулировать, начиная с CRC 0x8000 и повторяя его, пока он снова не вернется к 0x8000, что займет 32767 циклов.Таким образом, если бит [0] и бит [32768] равны == 1 (все остальные биты == 0), то вычисленный CRC будет равен нулю, что приведет к невозможности обнаружить 2 ошибочных бита.

Какие ошибки CRC не может обнаружить?

Множественные пакетные ошибки, когда общее расстояние пакетов составляет более 16 бит, по сути, одна пакетная ошибка длиной более 16 бит.

Некоторые комбинации из 4 или более случайно распределенных битовых ошибок не будут обнаружены.Как видно из таблицы ниже, вероятность того, что ошибка не будет обнаружена, достаточно низкая.По мере увеличения количества битовых ошибок частота отказов увеличивается, но она остается низкой, если у вас много битовых ошибок.Случайный набор битов пройдет проверку CRC16 примерно в 1/65536 времени, но это было бы необычно в обычной последовательности отправки / получения сообщений.

48 bit data, 16 bit crc, => 64 bit message
2^64 - 1 possible error patterns
       84 of        635376 possible patterns of  4 error bits fail
     2430 of      74974368 possible patterns of  6 error bits fail
   133001 of    4426165368 possible patterns of  8 error bits fail
  4621021 of  151473214816 possible patterns of 10 error bits fail   
100246083 of 3284214703056 possible patterns of 12 error bits fail
...