Спецификация USB.Rev1.0

Циклический Контроль по Избыточности


Циклические контроли по избыточности (CRC) используются для защиты всех полей кроме PID в маркерах и пакетах данных. В данном контексте, эти поля рассматривается как защищенные поля.  PID не входит в проверку CRC пакета, содержащего CRC. Все CRC сгенерированы для соответственно своих полей в передатчике прежде, чем  выполняется вставка бит. Точно так же CRC декодируются в приемнике после того, как были удалены вставленные биты. CRC Маркера и пакета данных обеспечивают 100 % - защиту от всех одиночных и двойных ошибок бит. Принято что неправильный CRC, указывает, что один или более  защищенных полей искажены и заставляет приемник игнорировать эти поля, и в большинстве случаев весь пакет.

Для создания CRC и осуществления проверки, сдвиговые регистры в генераторе и проверочном устройстве работают по одной и той же схеме.(For CRC generation and checking, the shift registers in the generator and checker are seeded with an all ones pattern.) Для каждого посланного или полученного бита данных, старший бит записи текущего остатка XORed(складывается по модулю 2) с информационным разрядом и затем остаток сдвигается влево на один бит и младший бит записи устанавливается в 0. Если результат этого XOR(сложения) 1, то остаток XORed(складывается) с генерируемым полиномом.(If the result of that XOR is 1, then the remainder is XORed with the generator polynomial.)

Когда последний бит контрольного поля послан, CRC в генераторе инвертируется и посылается на проверочное устройство MSb (старшими битами) вперед. Когда последний бит CRC получен проверочным устройством, и не произошло никаких ошибок, остаток будет равен остаточному полиному.

Требования к вставке бита должны удовлетворять CRC, из-за этого возникает необходимость вставить нуль в конец CRC, если предшествующие шесть битов были все единицы.



Содержание раздела