ЭЛЕКТРОННЫЙ ЗАМОК НА КЛЮЧАХ-"ТАБЛЕТКАХ" iButton


А. СИНЮТКИН, г. Калуга

Эта статья познакомит вас с электронным замком нового типа, ключами к которому служат "таблетки" /Button. Это - устройства с двумя выводами, выполненные в металлическом цилиндрическом корпусе, который напоминает элемент питания для часов или дисковый аккумулятор. Их производит фирма Dallas Semiconductor. Стоят они недорого и уже получили широкое распространение. В первой части статьи автор рассказывает о принципах работы этих "таблеток", а во второй части будет описана конструкция замка на основе микроконтроллера АТ89С2051.

iButton - это микросхема, помещенная в стандартный круглый корпус диаметром 16,3 мм из нержавеющей стали (корпус MicroCan). Корпус устойчив к воздействию ударов, грязи и влажности. Есть две модификации с разной толщиной: F3 и F5. На рис. 1 показаны чертежи корпусов

cif-2o1-1.gif
Puc.1

обеих версий. Поскольку крышки у них одинаковы, для "ответной" части замка применяется одна и та же считывающая чашка. Кромка корпуса MicroCan позволяет удобно закреплять его в держателях. Подробные размеры, внешний вид и гравировка корпуса MicroCan указаны в [1].

Корпус состоит из двух электрически изолированных друг от друга частей, являющихся контактами, через которые микросхема соединяется с внешним миром. Таким образом, получается недорогой (в смысле использования аппаратных ресурсов считывающей аппаратуры) и надежный интерфейс - один провод данных и один общий провод. Энергия, необходимая для обмена информацией и работы микросхемы в корпусе, поступает от провода данных. На рис. 2 показана структурная схема iButton.

cif-2o1-2.gif
Puc.2

Микросхема изготовлена по технологии КМОП, и в состоянии ожидания основной ток потребления - только ток утечки (у КМОП он очень мал). Для сохранения энергопотребления на предельно низком уровне во время "активных" состояний (чтение данных, например), а также для совместимости с существующими сериями микросхем логики и микропроцессорами линия данных в iButton выполнена как в выход с открытым стоком.

Для взаимодействия с внешними устройствами на микросхемах КМОП нужен только нагрузочный резистор сопротивлением около 5 кОм, подсоединенный к плюсу питания VDD (+5 В) и к выходу обычного двунаправленного порта с открытым стоком (рис. 3). Если вход и выход процессора используют разные выводы, то их подключают, как показано на рис. 4. Для ключа iButton, описанного выше, используется специальный, оптимизированный протокол, позволяющий осуществлять двунаправленный обмен данными. Протокол носит название 1-Wire. Последовательная передача осуществляется в полудуплексном режиме (т. е. либо прием, либо передача), внутри дискретно определенных временных интервалов, называемых тайм-слотами.

cif-2o1-3.gif
Puc.

Микроконтроллер (master-устройство), подключенный к считывающей чашке, всегда инициирует передачу с помощью посылки командного слова на прикладываемый к чашке ключ iButton (он играет роль подчиненного, или slave-устройства). К шине может быть подключено несколько slave-устройств. Подобно электрическим вилке и розетке, которые определяют потребитель и источник электричества, контактное считывающее устройство в виде чашки является атрибутом master-устройства (которое, кстати, во многих случаях служит источником энергии для iButton), а круглая металлическая "таблетка" iButton является slave-устройством. Такое точное разделение позволяет легко избежать конфликтов - соединения двух master-устройств.

Команды и данные посылаются бит за битом и собираются в байты, причем вначале передается наименее значащий бит LSB (Least Significant Bit). Синхронизация устройств master и slave происходит по спаду импульса, когда master замыкает линию данных стоком выходного транзистора на общий провод. Через определенное время после этого происходит анализ состояния данных на линии (высокий или низкий уровень) для получения одного бита информации. В зависимости от направления передачи информации в текущий момент этот анализ делает либо master-устройство, либо slave-устройство. Этот метод обмена информацией называют передачей данных в тайм-слотах (рис. 5). Каждый тайм-слот отсчитывается независимо от другого, и при обмене данными могут иметь место паузы без возникновения ошибок.

cif-2o1-4.gif
Puc.

Почти сразу после присоединения к считывающему устройству (через несколько микросекунд) slave-устройство iButton выдает в линию импульс, чтобы "сказать" master-устройству, что оно присутствует на линии и ждет команду. Этот сигнал называется presence pulse (импульс присутствия, далее - просто presence). Master может также давать запрос на iButton с целью получения presence путем посылки специального импульса, называемого импульсом сброса (reset pulse, далее - просто reset). Если iButton принял сигнал reset, он анализирует линию данных, и как только линия снова достигнет высокого уровня, iButton сгенерирует presence. Полная последовательность импульсов reset и presence показана на рис.6.

После выдачи presence iButton ожидает получения команды. Любая команда записывается в iButton с помощью последовательности тайм-слотов, передающих биты 1 и 0. Такая последовательность создает полный байт команды.

cif-2o1-5.gif

Для передачи данных в обратном направлении (чтение iButton) используются те же самые правила для представления О или 1. Поскольку iButton разработано как slave-устройство, оно оставляет master-устройству право определять начало каждого тайм-слота. Чтобы произвести чтение iButton, master для чтения одного бита данных просто генерирует тайм-слот записи лог. 1 (именно тайм-слот записи, а не чтения). Если бит, который должен послать iButton, равен 1, то iButton просто ожидает появления следующего тайм-слота, пропуская текущий. При этом с линии данных master считывает 1. Если бит, который посылает iButton, равен 0, то iButton удерживает линию данных в состоянии низкого уровня определенное время и master считывает с линии данных 0.

cif-2o1-6.gif

Пример полной последовательности выполнения команды показан на рис. 7. Толстая черная линия означает активность master-устройства. Красной линией обозначен ответ iButton. Тонкая черная линия показывает, что не активно ни одно из устройств. На левой осциллограмме временные интервалы полностью определены master-устройством. На правой осциллограмме начало тайм-слотов определяет master, а на остальное время активность переходит к iButton либо резистор "подтягивает" линию к высокому уровню.

Запрограммированная лазерным лучом ROM-секция (ПЗУ) содержит 6-байтное уникальное для каждого устройства iButton число - серийный номер. Кроме того, во всех iButton записаны код типа устройства (family code) и проверочный байт CRC. Младшие 7 бит family code указывают на тип устройства. Старший бит family code используется в качестве флага в версиях, предназначенных для особых покупателей. Таким образом можно закодировать 128 разновидностей устройств.

cif-2o1-7.gif

48-битный (6-байтный) серийный номер может представить любое десятичное число до 2,81-1014. Если выпускать в год 1000 биллионов (1012) устройств одного и того же типа, то этого числа хватит на 281 год. Кроме того, можно выпускать 128 типов различных устройств. Если старший бит family code установлен в 1, то устройство функционирует так же, как и стандартное, однако серийный номер устанавливается по специальным правилам - часть серийного номера резервируется для обозначения конкретного покупателя (заказчика).

Рассмотрим самый простейший из всех типов iButton - DS1990A. Он как раз

и используется в качестве ключа для электронного замка. Этот iButton является устройством, которое может служить уникальным электронным идентификатором чего-либо или кого-либо. DS1990A содержит ПЗУ (ROM), запрограммированное на заводе. Поскольку информация записывается путем перерезания лазером связей в полисиликоне (нет зарядных элементов памяти или статических триггеров), DS1990A не нуждается в энергии для сохранения данных. DS1990A использует напряжение линии данных и сохраняет минимальный внутренний заряд для обеспечения работоспособности во время генерирования presence и в течение небольшого времени в любом из тайм-слотов, когда происходит операция чтения.

На рис. 8 показано, как организованы данные для DS1990A. Первый байт, передаваемый из ПЗУ, является кодом типа устройства - family code. После него идет уникальный серийный номер (6 байт), у которого наименее значащий байт передается первым. Последний байт несет информацию Cyclic Redundancy Check (CRC), что означает проверочный циклический избыточный код. CRC специальным образом вычисляется на основе первых семи байт. Это позволяет быстро проверить правильность передачи информации - если CRC, вычисленный устройством master от первых 7 байт, совпадает с принятым от iButton, то чтение было полностью верным. Этот метод - одна из причин, по которой iButton не требует стабильного электрического контакта со считывающим устройством.

В сборнике стандартов от фирмы Dallas Semiconductor говорится, что "из-за особенностей разработки iButton и строгого заводского контроля DS1990A является уникальным электронным идентификатором, который невозможно подделать". На мой

cif-2o1-8.gif

взгляд, это верно, но с небольшими оговорками. Само собой, не существует двух совершенно одинаковых электронных ключей DS1990A, один из которых подойдет вместо другого (откроет замок). Однако ничто не мешает злоумышленнику разработать прибор, который будет считывать ключ DS1990A, и затем воспроизводить его последовательный код, полностью имитируя поведение slave-устройства DS1990A. Имея такой прибор, злоумышленник может считать оригинал ключа и потом использовать его код, чтобы открыть замок. Кстати, на корпусе MicroCan нанесена гравировка, полностью воспроизводящая family code, serial number и даже CRC. Но для этого владелец ключа должен передать его злоумышленнику во временное пользование. Таким образом, копирование кода с электронного ключа очень похоже на снятие слепка с механического ключа. Разница только в технологиях, а также в том, что двух одинаковых электронных ключей не бывает.

iButton являются устройствами, требующими для функционирования электрического контакта. Передача данных является асинхронной по отношению к битам (не используется внешний синхросигнал для их генерации) и полудуплексной (в определенный момент времени может идти передача только в одном направлении). Данные, передаваемые в iButton, могут интерпретироваться ими как команды (в соответствии с предопределенным форматом, зависящим от family code), которые сравниваются с информацией, заранее сохраненной в iButton для принятия решения (о предназначении команды), либо просто сохраняться внутри iButton для дальнейшего использования.

iButton делает выборку данных на линии посередине тайм-слота. По определению активная часть 1-Wire тайм-слота (tsi-от) составляет 60 мкс. В нормальном состоянии iButton будет делать выборку сигнала с линии после 30 мкс относительно спада сигнала.

Внутренняя величина базового времени iButton может отличаться от стандартной, следовательно, может меняться время выборки сигнала. Допустимый диапазон изменения составляет от 15 до 60 мкс. Это означает, что реальное чтение линии slave-устройством может произойти в любом месте относительно старта тайм-слота между 15 и 60 мкс, т. е. может изменяться в соотношении 1 к 4. Во время этого окна времени напряжение на линии должно оставаться либо ниже VILMAX (максимально допустимое напряжение низкого уровня), либо больше VIHMIN (минимально допустимое напряжение высокого уровня).

Основные формы тайм-слотов записи единицы и записи нуля показаны на рис. 9 и рис. 10 соответственно. Эти тайм-слоты необходимы для записи команд и данных в iButton. По окончании активной части каждого тайм-слота iButton нуждается в паузе для подготовки следующего бита. Назовем это время временем восстановления tREC (минимальная величина - 1 мкс). Это время восстановления можно рассматривать как неактивную часть тайм-слота, оно должно быть добавлено к длительности актив-

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

По рис. 9 справедливы следующие соотношения: 60 мкс<tslот<120 мкс, 1 мкс<tLOw1<15 мкс, 1 мкс<tREC<oo. По рис.10: 60 MKC<tLOwo<tsi.oT<120 мкс, 1 MKC<tflec<00-

Теперь рассмотрим тайм-слоты чтения. Команды и данные посылаются в iButton путем комбинирования тайм-слотов, записывающих 0 и 1. Master генерирует тайм-слоты чтения для определения момента начала каждого бита. С точки зрения master, тайм-слоты чтения выглядят так же, как и тайм-слоты записи единицы. Начиная с момента изменения уровня сигнала с высокого на низкий, iButton посылает один бит своего адресованного содержимого. Если передаваемый устройством iButton бит равен 1,

cif-2o1-9.gif
cif-2o1-10.gif

то iButton оставляет линию данных без изменения. Если бит равен 0, iButton будет шунтировать линию (открывая канал своего выходного транзистора) в течение времени trov, или 15 мкс (рис. 11). В течение этого времени данные доступны для чтения устройством master.

Интервал tLOWR определяет время импульса низкого уровня, посылаемого устройством master. Оно должно быть, с одной стороны, больше 1 мкс, но с другой - как можно меньше, чтобы увеличить окно выборки сигнала для master. В целях компенсации емкости линии интерфейса 1-Wire master должен делать выборку сигнала как можно точнее через 15 мкс после начала синхронизирующего перепада. Следующий за интервалом tRDV интервал tRELEASE является дополнительным, в течение которого iButton отпускает линию 1 -Wire и напряжение возвращается к значению VHJUUP-Длительность tRELEASE может меняться в пределах от 0 до 45 мкс, номинальная величина - 15 мкс.

Как упомянуто выше, интерфейс 1 -Wire использует импульс reset. Этот импульс определен как импульс низкого уровня с минимальной длительностью 8 тайм-слотов или 480 мкс, за которым следует время reset с высоким уровнем на линии tflrsH и длительностью тоже 480 мкс (рис. 12). Это время нужно для того, чтобы iButton мог выдать импульс presence. Чтобы не маскировать сигналы прерываний от других устройств на шине 1 -Wire, время tRSTL+tfl должно быть всегда меньше 960 мкс.

Во время IRSTH на линии 1 -Wire не разрешены никакие другие соединения. Импульс reset предназначен для обеспечения чистого старта, который прерывает любую синхронизацию других тайм-слотов. Если master послал импульс reset, iButton будет ожидать время W,, а затем сгенерирует импульс presence длительностью tpoL- Это позволяет устройству master легко определить, присутствует или нет iButton на линии. Кроме того, если несколько iButton соединены параллельно (см. 5-ю часть [1)), master может измерить оба времени (tpoH и to.) и таким способом получить информацию о реальных временных допусках для всех устройств на линии. Номинальные значения: 30 мкс - для IPDH и 120 мкс - для If(tm)..

Устройства iButton специально разработаны для работы в условиях плохих электрических соединений. Однако требуется некоторое минимальное время контакта, необходимое для пересылки команд и пакета данных. Оно зависит от вида выполняемой операции. Для DS1990A, используемого в качестве электронного ключа, это время может не превышать 5 мс.

Рекомендуемый номинал нагрузочного резистора для линии 1-Wire - 5 кОм. Эта величина была выбрана для обеспечения работы с контактами высокого сопротивления. Обычно считывающий узел master воспринимает напряжение меньше 0,8 В как низкий уровень. Поскольку на взаимодействие между master и iButton оказывает влияние постоянная времени шины 1 -Wire, иногда может возникнуть необходимость использовать нагрузочный резистор с сопротивлением, меньшим 5кОм.

Идеальным соединением между устройством master и iButton является короткий кабель с малой паразитной емкостью. В случае применения длинного кабеля появляется гораздо больше забот для обеспечения необходимых требований по постоянному и, в особенности, по переменному току. Появляются критические моменты для времени восстановления tnEC и для чтения или записи бита 1. Время восстановления становится критичным, если для обмена данными необходимы два следующих друг за другом тайм-слота записи нуля.

cif-2o1-11.gif
cif-2o1-12.gif

Возможность распространения короткого импульса по длинному кабелю значительно ухудшается пропорционально длине кабеля. Случается так, что короткий импульс полностью отфильтровывается и связь с iButton на дальнем конце кабеля становится невозможной. Можно легко увеличить расстояние передачи, просто увеличив величину IHEC. Например, если tREC увеличить с 1 до 15 мкс, максимальная скорость передачи данных упадет с 16,3 до 13,3 Кбит/с, однако импульс tf,EC длительностью 15 мкс позволяет значительно повысить надежность передачи при длинном кабеле. Запись бита 1 можно также улучшить путем уменьшения длительности tLOm тайм-слота записи 1, однако при этом нельзя выходить за нижнюю минимальную границу (см. рис. 9).

Тесты показывают, что нагрузочный резистор номиналом 1 кОм позволяет работать с кабелем значительной длины. Однако даже если применить резистор сопротивлением меньше 1 кОм, то при большой емкости кабеля все равно не удается достичь правильной формы сигналов. Также повышается зависимость работы системы от качества контактов (от сопротивления контакта). Для увеличения длины кабеля рекомендуется использовать кабель с малой погонной емкостью - около 15пФ/м.

Тесты также показывают, что витая пара проводов работает лучше, чем просто два параллельных провода. Например, корректная работа iButton была достигнута на линии до 300 м с использованием простого витого телефонного кабеля. Нагрузочный резистор был уменьшен до 1 кОм. 30 экземпляров iButton были подключены параллельно в конце кабеля. Шина 1-Wire управлялась выводом порта 0 микроконтроллера DS5000 (совместимый с Intel 8051). Адаптеры для СОМ-порта PC работают на расстояниях до 200 м на большинстве PC (см. [2]).

Более подробно информация о iButton 081990Аданав[3,4,5].

ЛИТЕРАТУРА

1. Dallas Semiconductor Book of iButton Standarts.
2. Dallas Semiconductor Application Note 74, "Reading and Writing iButtons via Serial Interfaces".
3. Dallas Semiconductor User Manual, "DS1990A, Serial Number iButtonTM".
4. http://www.iButton.com.
5. http://www.dalsemi.com


33