Информация & документация

Dallas Semiconductor
Устройства iButton и CRC (краткий перевод)

ВВЕДЕНИЕ
Ключ, содержащийся в каждом устройстве представляет из себя уникальный 8-байтовый номер, зашитый в ПЗУ в процессе производства этого устройства. Младший значащий байт содержит номер серии, который идентифицирует тип устройства iButton. Например, DS1990A имеет тип 01, а у DS1991 тип 02. С той поры, когда на однопроводную линию подключились устройства разного типа, это очень важно для ведущего. Следующие шесть байт содержат уникальный серийный номер. Этот номер можно считать сетевым адресом устройства на однопроводной линии. Полная коллекция устройств плюс ведущий формируют тип miniature local area network, или Micro-LAN. Все они соединяются однопроводной линией. Старший значащий байт в ПЗУ каждого устройства содержит Cyclic Redundancy Check (CRC) - число вычисленное на основе предыдущих семи байт. Когда ведущий связывается с устройством, он читает 8-байтовое ПЗУ начиная с младшего байта. Если вычисленная ведущим CRC совпадает с принятой CRC (седьмой считая с нуля байт), связь считается действительной. Если нет, значит произошла ошибка, необходимо снова прочитать ПЗУ.

Некоторые продукты iButton помимо восьми байт ПЗУ имеют до 8K байт ОЗУ, которое доступно ведущему посредством специальных команд.

Даже если iButtons не имеют встроенной аппаратной CRC, если ведущий способен вычислять CRC для ПЗУ, то процедура для записи и чтения данных в ОЗУ устройств используя CRCs также может быть разработанна. Данные будут записаны в устройство обычным образом, после данных в память записывается значение CRC, которое должно быть вычислено ведущим. Затем когда данные читаются из iButton, ведущий сравнивает вычисленную CRC с прочитанной (той самой, которую сам же и записывал). Если значения совпали, прочитаны правильные данные. Для того, чтобы воспользоваться силой CRCs для "легализации"(validate) последовательной связи на 1-проводной шине, необходимо понимать понимать, что такое CRC и как она работает. Практический метод для вычисления значений CRC ведущим будет необходим для аппаратной либо программной реализации.

НА ЗАДНЕМ ПЛАНЕ

Последовательные данные могут быть проверены на ошибки разными способами. Один распространенный способ это включать прибавочный бит в каждый проверяемый пакет, который будет индицировать если была ошибка. Для пакетов 8-битных ASCII-символов, например, дополнительный бит добавляется к каждому ASCII-символу, который индицирует если символ содержит ошибки. Предположим, что данные состоят из строки битов 11010001. Девятый бит будет добавлен так, что получившееся число бит, равных единице, всегда нечетное число. Таким образом будет добавлен бит, равный одному и пакет данных будет: 111010001. Если принятые данные будут 111010101 (третий по значимости бит поврежден), общее количество единиц будет четным, что означает ошибку. Эта схема называется нечетным паритетом. Также, общее количество единиц может быть выбрано всегда четным, что называется четным паритетом. Эта схема ограничивается обнаружением только нечетного количества ошибок. Например, если данные были повреждены и приняты как 111011101, где третий и четвертый по значмости биты неправильные, проверка паритета не обнаружит ошибку, так как количество единиц будет также нечетным.

ОПИСАНИЕ

Dallas Semiconductor 1–Wire CRC
Cyclic Redundancy Check (CRC) - наиболее эффективная схема при нахождении ошибок в потоке последовательных данных с минимальной аппаратной поддержкой. Принцип работы и свойства функции CRC используемой в продуктах Dallas Semiconductor будут предоставлены без углубления в математические подробности доказательств утверждений и описаний. Математическое представление свойств CRC детально описывается в справочниках. CRC может быть наиболее просто понята рассмотрением функции на примере ее аппаратной реализации, обычно в виде регистра сдвига с обратной связью. Иногда CRC описывается как полиноминальное выражение с подставной переменной, с двоичными коэффициентами для каждого случая. Коэффициенты непосредственно соответствуют путям обратной связи в регистре сдвига. Количество разрядов??? в регистре сдвига для аппаратной реализации, или высший порядок коэффициент присутствующий в полиноминальной реализации, показывают величину значения CRC, которая будет вычисляться. В цифровых коммуникациях обычно используются CRC-коды "CRC-16" и "CRC-CCITT", каждый из которых вычисляет 16-битное значение CRC. Разрядность CRC для однопроводной шины (DOW CRC) 8 бит, которые используются для проверки 64-битного кода ПЗУ, содержащегося в каждом устройстве iButton. Значение CRC записывается в старший значащий байт ПЗУ. Нахождение путей обратной связи представленое шлюзами "исключающее или" на рис.2, или присутствием коэффициентов в полиноминальном выражении, определяет свойства CRC и способность алгоритма обнаруживать определенные виды ошибок в данных. Для DOW CRC типы обнаруживаемых ошибок следующие:
1. Любое нечетное количество ошибок в любом месте 64-битного номера. 2. Все двойные ошибки в любом месте 64-битного номера. 3. Любая группа ошибок, которая может быть помещена внутри 8-битового "окна" (1-8 биты неправильны). 4. Наиболее большие группы ошибок. Входящие данные проходят через "исключающее или" с выходом восьмого разряда регистра сдвига (рис.2). Регистр сдвига может быть рассмотрен математически как устройство для деления. Входные данные являются делимым, а регистр сдвига с обратной связью выступает в роли делителя. Результирующая дробная часть отбрасывается, и остаток - это значение CRC для ее частного потока входящих данных, которые находятся в регистре сдвига после того, как был сдвинут последний бит данных.



Hosted by uCoz