Объявление

Свернуть
Пока нет объявлений.

Новый обзор электронных ключей-идентификаторов iButton от фирмы Dallas Semiconductor

Свернуть
X
Свернуть

  • Новый обзор электронных ключей-идентификаторов iButton от фирмы Dallas Semiconductor

    В 1991 году компания Dallas Semiconductor выпустила свои первые электронные ключи-идентификаторы серии DS199х. В начале для них было запатентован товарный знак "Touch Memory", которое достаточно полно отражало основные свойства этих изделий. Touch - переводится "прикоснись", Memory - "память". Действительно, все ключи, которые внешне выглядят как металлические дисковые батарейки, в обязательном порядке имеют внутри микросхему-ПЗУ с уникальной для каждого устройства двоичной 48-разрядной кодовой комбинацией (идентификационным номером), а считывается эта комбинация при прикасании металлическим корпусом ключа к металлическому же зонду-считывателю.
    Новый электронный ключ из Далласа стал популярным среди потребителей, и, как следствие, стали появляться новые модели. Последнее изделие этого ряда DS1954 имеет внутри своего корпуса специальный микропроцессор для шифрования информации, разработан был также идентификатор со встроенным термопреобразователем, планируется реализовать идеи размещения других схем в стандартизованном компанией Dallas Semiconductor металлическом корпусе. Поэтому с начала 1997 года Dallas Semiconductor заявила о смене названия всех своих идентификационных ключей на iButton (Information Button - "таблетка с информацией"), как более общее и охватывающее весь ряд изделий в настоящем и в будущем.
    Данное сообщение содержит описание конструкции, принципов работы и обзор последней номенклатуры электронных ключей из Далласа в соответствие с новой терминологией.
    Внешний вид электронного ключа iButton


    Все электронные ключи-идентификаторы iButton внешне похожи на дисковую металлическую батарейку (См. Рис 1). Металл представляет собой нержавеющую сталь. Диаметр диска около 17 мм, толщина 3,1 мм или 5,89 мм. Диск состоит из двух электрически разъединенных половинок.
    Внутри он полый. В герметичную полость заключена электронная схема на кремниевом кристалле. Выход схемы соединен с половинками диска двумя проводниками. Половинки диска образуют контактную часть однопроводного последовательного порта. При этом через центральную часть идет линия данных, внешняя оболочка - земля. Для того чтобы произошел обмен информации iButton с внешними устройствами, необходимо прикоснутся обеими поверхностями половинок металлического диска к контактному устройству (зонду), также состоящему из двух электрически не связанных, проводящих электрический ток частей.
    Обычно для материала контактов зонда используют нержавеющую сталь или медный сплав, с нанесенным на него защитным токопроводящим покрытием. Процесс касания к зонду показан на Рис.2.
    Большая площадь поверхности контактов защищает систему от неточного совмещения при подключении по причине "человеческого фактора" или при автоматизированном касании, когда идентификатор и зонд расположены на различных подвижных механизмах . Кроме того дисковая форма корпуса направляет и очищает контакты, гарантируя надежное соединения, а закругленный край корпуса легко совмещается с зондом.

    Области применения

    Устройства семейства iButton предназначены для различных секторов рынка, в зависимости от их типа. Наиболее распространены они сейчас в качестве:
    Идентификационных карточек персонала для систем ограничения доступа в здания или отдельные помещения. Особенно они популярны в секторе рынка с повышенным уровнем воздействия внешней среды и условий эксплуатации, то есть там, где традиционные карточки или устройства для считывания с них информации могут быстро выйти из строя.При этом, в зависимости от категории защищенности объекта, применяются различные типы iButton. Так, для ограничения доступа в подъезды жилых домов, где не предъявляются повышенные требования к системам ограничения доступа, используют самые дешевые iButton DS1990A, которые стоят около 2 долларов. В подъезды iButton устанавливают обычно в единой системе с домофоном - переговорной и управляющей дверным электромагнитным замком системой. Учитывая низкую цену считывающего устройства - около 25 долларов, установщики домофонов получают беспрецендентно низкие цены и на всю электронную систему управления замками, при очень высоких потребительских параметрах, в особенности, защищенности от внешних воздействий. В таких системах жильцам подъезда выдаются iButton DS1990, в качестве ключей для подъездного замка. Закрепленные на пластмассовом брелке, который можно носить в одной связке вместе с обычными механическими ключами, iButton можно ронять на землю или бетонный пол, они не боятся воды, льда (предел рабочей температуры -40С), кислот, масел, бензина, электромагнитных полей. Корпус рассчитан на 1млн. касаний к зонду. Металлический зонд также хорошо вписывается в жесткие эксплуатационные нагрузки общих входных дверей подъезда.
    Широко используются iButton также в качестве идентификационных карточек ограничения доступа в офисные помещения и на промышленные предприятия.
    В этих вариантах использования часто закрепляют диск iButton на личной пластиковой карточке персонала, где дополнительно может быть размещена фотография и другие данные о специалисте.
    Дополнительные возможности по повышению степени ограничения доступа в помещения позволяют реализовывать iButton с защищенной паролем энергонезависимой памятью, а также новые iButton DS1954 с микропроцессором-шифратором с длиной кода ключа 1024 бит, энергонезависимой памятью и часами-календарем. Последняя модель имеет высокую степень защиты информации. Такие системы обычно используются в банках и на предприятиях с повышенными требованиями безопасности.
    Идентификационные метки оборудования и аппаратуры. Специальное приспособление закрепляет диск iButton на плате оборудования или в его корпусе. Уникальный номер позволяет производителю идентифицировать свое оборудование или защищать его от подделок. IButton с энергонезависимой памятью могут дополнительно хранить параметры эксплуатации, гарантийные обязательства и другие служебные характеристики изделий.
    Аппаратный ключ в системах защиты информации. Используется для защиты программного обеспечения компьютеров. Защищаемая программа имеет встроенную процедуру обращения через один из портов компьютера к идентификационному номеру или энергонезависимой памяти iButton. Сам идентификатор закрепляют в специальном адаптере к порту. Хозяин программы распределяет по ней защитные метки с номерами конкретной iButton или с содержимым его энергонезависимой памяти. В случае несоответствия номера или содержимого энергонезависимой памяти идентификатора этим записями, программа не работает.

    Принципы конструкции iButton и считывающих устройств для них

    Как отмечалось выше, iButton представляют собой микросхему, помещенную в дисковый металлический корпус. В структурной схеме этой микросхемы в обязательном порядке присутствуют однопроводный порт, логика управления и ПЗУ в виде 64-битного блока, содержащего 48-битный идентификационный номер, 8-ми битный номер типа изделия и 8-битный код для контроля. Идентификационный номер записывается в микросхему при помощи лазера во время ее изготовления. Он не может быть изменен в течение всего срока службы прибора. Dallas Semiconductor не выпускала и никогда не планирует выпускать iButton с одинаковыми идентификационными номерами. Комбинаций из 48-разрядов вполне достаточно даже при самых оптимистичных объемах выпуска в сотни миллионов ключей в год, чтобы сотни лет номера их не повторялись.
    При считывании идентификационного номера, считывающее устройство вычисляет через принятый номер код контроля по общей для всех iButton формуле и сравнивает его с принятым кодом контроля. При совпадении, запускается процесс двунаправленной передачи данных по принципу "запрос-ответ". Считывающее устройство выступает здесь в роли мастера, а iButton выполняет его команды. На одной двухпроводной линии параллельно к одному порту мастера могут быть подключены одновременно в общем случае значительное количество iButton. Ограничения определяются особенностью протокола со скоростью обмена до 115 кБод и физической длиной линии до 300 м, ограниченной процессами затухания сигнала. Хотя, конечно, с помощью специальных схем усилителей и ретрансляторов расстояние можно увеличить практически неограниченно. Интересной особенностью принципов схемотехники самой iButton является то, что питание ее микросхемы формируется от "паразитного источника" - конденсатора емкостью 800 пФ, который заряжается через диод от порта зонда в момент касания. Для микропотребляющих МОП-схем iButton емкости такого источника вполне достаточно. Схема входных цепей iButton в момент касания к микроконтроллеру показана на Рис. 3.
    Кроме обязательных составляющих различные типы iButton могут содержать энергонезависимую SRAM (данные хранятся не менее 10 лет благодаря встроенной в корпус литиевой батарейке), однократно программируемую память, часы-календарь реального времени, термодатчик и, наконец, криптографический микропроцессор.
    Практически любой стандартный микроконтроллер, например 8051-совместимый, или компьютер может быть использован для обмена данными с iButton. При этом металлическая контактная площадка зонда соединяется обычной витой парой с портом микроконтроллера или компьютера.
    В случае, если в качестве мастера для считывания iButton используется персональный компьютер, то в простейшем случае схема соединения его с контактной площадкой достаточно проста.
    Схема эта показана на Рис.4. В ней могут быть использованы отечественные кремиевые маломощные стабилитроны типа КС139 и КС162 и любые маломощные диоды Шотки типа КД808. Dallas Semiconductor поставляет адаптер DS9097, который внешне оформлен в виде стандартной розетки 9-ти или 25-выводного разъема последовательного порта. Распаянная внутри адаптера схема аналогична показанной на Рис. 4. Этот адаптер обеспечивает расстояния в десятки метров до контактной площадки и для простых линий с одним узлом приема информации его вполне достаточно. Схемы на расстояния до узла контакта в сотни метров сложнее незначительно. В них используется драйвер однопроводной линии DS2480.

    Описание протокола iButton

    Данные в соответствие с протоколом iButton Standarts передаются в дискретные временные интервалы, которые называются временными сегментами (типовая длительность около 60мкс) с помощью коротких и длинных импульсов, аналогичных азбуке Морзе. При этом инициатором обмена (ведущим) всегда является считывающее устройство. При соприкосновении с зондом или его эквивалентом прибор iButton выдает ответный сигнал, за которым следует код семейства, 48-битный серийный номер iButton и код контроля.
    Длинные или короткие активные состояния логического нуля во временных сегментах представляют единицы или нули. Ведущая система запускает передачу каждого бита.
    В общем случае iButton может работать относительно мастера как на считывание, так и на запись информации в свою энергонезависимую память. Для записи логической 1 в течение типового сегмента времени однопроводная линия передачи должна за время выборки данного вернуться в состояние логической 1, для записи нуля в течение всего этого временного окна линия должна находиться в состоянии логического 0 (Рис 5.).
    Синхронизация временного сегмента осуществляется отрицательным фронтом сигнала, который формируется мастером, при этом длительность состояния логического нуля на однопроводной линии связи должна составлять не менее 1мкс.
    В цикле считывания идеальный момент стробирования считываемого данного - это 8мкс после начала временного сегмента (Рис 6). Задающее устройство подает на однопроводную линию активный логический 0 на время синхронизации данного (не менее 1мкс), после чего переходит в режим приема. Далее в течение всего времени выборки данного состояние линии определяется прибором iButton . После начала временного сегмента состояние линии с помощью пассивной нагрузки выдерживается на уровне логической 1 от 15 до 60мкс. Возможна приостановка сеанса связи на любое время между временными сегментами, при этом на однопроводной линии связи поддерживается состояние логической 1. Во всех сеансах связи первым передается младший значащий разряд данного.
    Подробно ознакомиться с протоколом iButton Standarts можно в многочисленных изданиях самой фирмы Dallas Semiconductor в виде книг, CDROM или по Интернету. Обзорная таблица iButton представлена в Табл.1.
    Для упрощения восприятия обзора попытаемся внести элементы классификации в семейства iButton. Необходимо отметить, что делается это самовольно - Dallas Semiconductor пока этого еще не сделал и представляет свои семейства по принципу возрастания номера маркировки.
    Основной раздел между iButton можно провести по признаку наличия средств защиты области данных от несанкционированного пользователя. В этом случае явно выделяются два типа: iButton с незащищенной областью данных и iButton со специальной защитой данных.
    В данной части обзора Вы сможете найти описание основных свойств и особенностей устройства iButton с незащищенной областью данных. Мы также их разделили на группы, но приборы внутри группы уже мало чем отличаются по своей структурной схеме. Отличие состоит обычно в объеме памяти того или иного вида.

    Табл. 1. Обзорная таблица iButton
    Маркировка Описание Емкость памяти
    DS1920 Цифровой термодатчик 16 бит ЕЕРРОМ
    DS1954 Криптографический микропроцессор 32К ROIVI+6K NVSRAM
    DS1963 Электронный кошелек 4096 бит NVSRAM
    DS1971 EEPROM память 256+64 бит EEPROM
    DS1981U EPROM память и специальный номер 512битЕРРОМ
    DS1982U EPROM память и специальный номер 1024 бит EPROM
    DS1982 EPROM память 1024 бит EPROM
    DS1985 EPROM память 16384 бит EPROM
    DS1986 EPROM память 65536 бит PROM
    DS1990A Только номер нет
    DS1991 Энергонезависимая память с паролем 1344 бит NVSRAM
    DS1992 Энергонезависимая память 1024 бит NVSRAM
    DS1993 Энергонезависимая память 4096 бит NVSRAM
    DS1994 Энергонезависимые память и часы 4096 бит NVSRAM
    DS1995 Энергонезависимая память 16384 бит NVSRAM
    DS1996 Энергонезависимая память 65536 бит NVSRAM
    1. iButton с уникальным серийным номером

    Группа состоит из одного семейства - DS1990А. Это первое изделие Dallas Semiconductor, впервые поступившее в продажу в 1991 году. Имеются две разновидности по толщине корпуса. DS1990A-F5 - имеет толщину корпуса 5,89 мм, а DS1990A-F3 толщину 3,1 мм.
    По схемотехнике DS1990A самая простая iButton и имеет только ПЗУ с уникальным 48-разрядным номером, кодом семейства и кодом контроля. Доступ к ПЗУ происходит через интерфейсную схему, поддерживающую протокол iButton Standart (блок-схема на Рис. 2). Питается микросхема DS1990A, как и все iButton, от "паразитного источника" (на рисунке не показан), состоящего из внутренних выпрямителя и конденсатора (см. первую часть обзора). Энергия в этот источник поступает через резистор 5 КОм открытого коллектора порта считывателя в момент времени, когда контактная часть считывателя и iButton прикоснулись друг к другу.
    DS1990A не имеет никаких средств защиты области данных пользователя, так как области этой как таковой и нет. Уникальный номер, записанный в ПЗУ на заводе в Далласе, доступен для любого считывающего устройства-эонда, поддерживающего протокол iButton Standart.
    Четыре КОМАНДЫ ПЗУ составляют систему команд iButton DS1990А: ЧТЕНИЕ ПЗУ, СОВПАДЕНИЕ ПЗУ, ПРОПУСК ПЗУ и ПОИСК ПЗУ. В режиме с одним узлом считывания достаточно команды СЧИТЫВАНИЕ ПЗУ. Остальные команды необходимы для работы в сетевом варианте применения для исключения конфликтов при одновременном касании многих iButton к разным считывающим контактам, подсоединенным к одной линии данных.
    Порядок выдачи содержимого ПЗУ при исполнении команды ЧТЕНИЕ ПЗУ следующий: код семейства(01H для DS1990A ), 48 бит уникального номера и последним идет 8-битный код контроля. Передача идет побитно, младший значащий разряд идет первым. Прием считается завершенным, только если вычисленный мастером на основе уникального номера по стандартной формуле контрольный код, совпадает с принятым контрольным кодом из ПЗУ iButton. Полный цикл считывания ПЗУ длится около 5мс.

    2. iButton с энергонезависимой статической памятью

    Группа этих iButton включает в себя четыре семейства: DS1992L, DS1993L, DS1995L и DS1996L. Буква L в наименовании означа- ет наличие трехвольтовой литиевой батарейки. Энергия батарейки использует- ся для питания микромощной статической памяти (SRAM) в течение всего срока службы этих iButton, который составляет не менее 10 лет.
    Для коммуникационных процессов здесь, как и в других iButton, используется "паразитный" внутренний источник - выпрямитель+конденсатор. В случае разряда батарейки по какой-либо причине, имеется возможность доступа только к ПЗУ.
    Как и у всех iButton, ПЗУ этих семейств имеет идентификационный номером, код семейства и код контроля (См. Рис. 3). Каждое семейство отличается от другого только размером статической энергонезависимой памяти.
    Структурно эта память разбита на страницы по 32 байта и имеет систему адресации. DS1992 имеет всего четыре таких страницы, DS1993 - 16 страниц, DS1995 - 64 страницы, DS1996 - 256 страниц. Содержимое страниц может быть считано любым устройством считывания, поддерживающим iButton Standart.
    Скорости записи данных и считывания одинаковы и составляют в обычном режиме 16,3 Кбит в секунду. Модели DS1995 и DS1996 поддерживают режим ускоренного обмена "overdrive", отличие которого от обычного в сокращенных примерно в 10 раз длительностях цикла инициализации и временных окон для данных. Так инициализация происходит за время от 48мкс, а достаточный временной интервал для данных 6мкс. Скорость полудуплексного обмена данными в режиме "overdrive" 142Кбит в секунду. Запись в энергонезависимую SRAM осуществляется диспетчером памяти через 32-байтную блокнотную память, которая выполняет функцию буфера. Блок данных записывается вместе с блоком адреса для этих данных. Данные и адрес верифицируются, то есть считываются обратно мастером из блокнотной памяти, и проверяются им на предмет идентичности с отправленными. Только после удачного исхода мастер командой "копировать блокнотную память" разрешает переносить данные из блокнотной памяти на выбранную страницу основной энергонезависимой SRAM. Формат записываемых данных может быть от 1 байта до 32 байт. Считываются данные минуя блокнотную память.
    Восемь команд поддерживаются данным типом iButton: четыре КОМАНДЫ ROM, три команды ЗАПИСИ, СЧИТЫВАНИЯ и КОПИРОВАНИЯ БЛОКНОТНОЙ ПАМЯТИ и команда ЧТЕНИЕ ПАМЯТИ.

    3. iButton с энергонезависимой однократнопрограммируемой EPROM-памятью.

    В отличие от семейств с энергонезависимой статической памятью, в этих приборах не используются литиевые батарейки, хотя и имеется память данных. . Память данных здесь однократнопрограммируемая EPROM. Напряжение программирования 11,5В +0,5В, ток 10мА.
    Питание всей схемы осуществляется только от "паразитного" источника. Отсутствие литиевой батарейки позволяет Dallas Semiconductor выпускать эти модели, как в толстом F5, так и в тонком F3 корпусах. Группа включает семейства DS1981U,DS1982U, DS1982,DS1985 и DS1986. У всех семейств имеется стандартного вида ПЗУ, но разный объем памяти данных. Последняя адресуется и разбита на страницы по 32 байта. DS1981 имеет 2 страницы,DS1982 - 4 страницы, DS1985 -64 страницы и DS1986 - 256 страниц. Модели с маркировкой U отличаются от остальных моделей тем, что 12 бит из общего пространства уникального номера занимает прошивка 5E7H, остальные же 36 бит имеют уникальную прошивку.
    Для повышения надежности занесения данных в однократнопрограммируемую память данных в электрическую схему введены дополнительные элементы: детектор напряжения, генератор контрольной суммы, регистр статуса и 8-битная блокнотная память (см. Рис. 4).
    Чистая EPROM имеет записанными логические единицы. Однажды установленный в логический ноль бит памяти невозможно в дальнейшем изменить, однако оставшийся в единичном состоянии может быть изменен в логический ноль при повторном программировании. Каждая страница памяти данных может быть защищена от попытки повторной записи в нее данных, установкой соответствующего бита регистра статуса в состояние логического нуля. Регистр статуса программируется только однократно, поэтому обратно открыть для записи страницу уже будет нельзя. Кроме байта защиты памяти данных, регистр статуса имеет байты переадресации страниц. Запись в эти байты позволяет переписать содержимое страницы на другую открытую для записи страницу и дополнить ее содержимое модифицированными данными. Для приложений, требующих модификации данных, Dallas Semiconductor предлагает брать модели с заведомо большим количеством страниц.
    Что касается механизма записи информации в память данных этого семейства, то он несколько усложнен. Адреса, коды команд и данные проверяются исключительно побайтно. Мастер считывает код, вычисленный генератором проверочного кода, и сравнивает со своими вычислениями. Только после этого разрешается продвижение на очередной байт в процедуре записи.
    Протокол обмена с мастером поддерживает восемь команд: четыре ПЗУ КОМАНДЫ, команды с памятью данных ЧТЕНИЕ и ЗАПИСЬ, а также команды для регистра статуса ЧТЕНИЕ и ЗАПИСЬ. Модель DS1986 имеет возможность работать в скоростном режиме "overdrive".
    В приложениях не требующих частого обновления данных эти iButton находят применение, вследствие своей дешевизны.

    4. iButton с EEPROM памятью данных

    Группа пока представлена одним семейством DS1971. Это новое семейство выпускается с 1997 года. Поставляется DS1971 в двух корпусах F3 и F5. Кроме стандартного ПЗУ, эта модель содержит память данных типа EEPROM в виде одной 256 битной странички. Данные могут неоднократно перезаписываться только постранично.
    Напряжение программирования +5В. Запись происходит через блокнотную память, объем которой также 256 бит (см. Рис. 5). После верификации данных, содержимое блокнотной памяти переносится в память данных одним блоком. Имеется регистр для занесения служебной информации - РЕГИСТР ОДНОКРАТНОЙ ЗАПИСИ. Данные в него заносятся через его блокнотную память и могут быть записаны только один раз. В дальнейшем этот регистр открыт только для считывания. Регистр однократной записи может использоваться производителем оборудования с использованием DS1971 для занесения служебной информации, например, дата выпуска, номер партии и т.п.. Событие о том, что запись в РЕГИСТР ОДНОКРАТНОЙ ЗАПИСИ произведена, отражается в состоянии регистра СТАТУС-ПАМЯТЬ. Два бита его устанавливаются при этом в логический ноль. Мастер может только считать состояние этого регистра.
    Одиннадцать команд возможны в работе с DS1971: четыре КОМАНДЫ ПЗУ, три команды ЧТЕНИЕ, ЗАПИСЬ и КОПИРОВАНИЕ блокнотной памяти, три команды регистра однократной записи - ЧТЕНИЕ, ЗАПИСЬ и КОПИРОВАНИЕ С ЗАМКОМ и команда ЧТЕНИЕ СТАТУС-ПАМЯТИ.

    5. iButton с энергонезависимыми таймером и статической памятью.

    Эта группа представлена одним семейством DS1994L. Микросхема его содержит обычную ПЗУ с идентификационным номером, кодом семейства и кодом контроля, статическую память 16 страниц по 32байта каждая, кварцевый генератор часовой частоты 32768 Гц, таймер-календарь в двоичном формате, программируемые счетчики циклов включения-выключения, интервальный таймер.
    Статическая память и все элементы таймера энергонезависимы за счет литиевой батарейки. Режимы работы таймерной части DS1994 определяют два его регистра: регистр статуса и регистр управления. В регистр статуса помещают свои флаги по наступлению заданного события таймер-календарь, интервальный таймер и счетчик циклов. Состояния флагов доступны для считывающего прибора и могут быть использованы им для принятия решения. Календарь таймера организован так, что необходима предварительная установка даты и времени отсчета. Исход времени будет затем отсчитываться от этой даты. Емкость по времени календаря 136 лет.
    Состояние регистра управления определяет доступность ресурсов как таймера, так и страниц энергонезависимой памяти. Установки его битов останавливают генератор, запрещают изменения установок календаря, интервального таймера, счетчика циклов, чтение общей энергонезависимой памяти.
    DS1994 удобно использовать для ограничения срока работы приборов или устройств. В этом варианте он устанавливается в специальном зажиме, по аналогии с дисковыми аккумуляторами, и имеет постоянное соединение со схемой устройства.
    Система команд DS1994 содержит как типичные для iButton команды ПЗУ так и команды работы с таймерами и счетчиком.


    6. Автономный цифровой термопреобразователь в корпусе iButton

    Представлен одной моделью DS1920. Внутри стандартного для iButton корпуса толщиной F3 или F5 установлена микросхема, осуществляющая полный цикл преобразования температуры окружающей ее среды в 9-разрядный цифровой код. Датчиком температуры служит термистор, также установленный в корпусе DS1920. 9-разрядный АЦП осуществляет преобразование сопротивления датчика, как функцию температуры, в цифровой код.
    Преобразование происходит в момент касания DS1920 зондом. Питание поступает от порта зонда. Имеется особенность в организации питания, которая обусловлена повышенными токами потребления микросхемы DS1920 в момент преобразования. Рекомендуется вместо выходного открытого коллектора с нагрузочным резистором 5 Ком, использовать "сильно открытый коллектор", где резистор заменен полевым транзистором, открытым в период преобразования и пропускающим больший ток, ввиду меньшего сопротивления.
    Диапазон температур измеряемый DS1920 лежит в интервале от -55С до +100С, время преобразования 0,2 секунды, точность 0,5С в диапазоне от 0С до +70С.
    Имеются специальные триггеры порогов температуры, значения которых записываются в их память EEPROM. Триггеры сообщают мастеру, при его обращении, о превышении порогов, что бывает удобно при поиске узла измерения в сетевом варианте, когда в одну линию соединены большие количества DS1920.
    Интерфейс и ROM DS1920 соответствуют всем требованиям iButton Standart, а система команд состоит как из обычных для iButton ПЗУ КОМАНД, так и из специфичных ТЕМПЕРАТУРНОЕ ПРЕОБРАЗОВАНИЕ, ВЫБОРКА СОСТОЯНИЯ ПОРОГА и команд работы с БЛОКНОТНОЙ ПАМЯТЬЮ.
    Типичным способом использования DS1920 является закрепление его на объекте с использованием специальных дисков с липкими поверхностями или пластиковых зажимов на винтах. При этом можно в параллель соединить проводниками несколько приборов, а опрос вести переносным зондом из одной точки. По уникальному номеру нетрудно будет выяснить место измерения для каждой точки температурных измерений.

    В заключение хотелось бы отметить, что Dallas Semiconductor поставляет программное обеспечение DS0621-SDK для работы со всеми типами iButton. Оно специально предназначено разработчикам и содержит драйверы для DOS, Windows 3.1, Windows-95/NT. Имеются варианты процедур работы с iButton, написанные на ассемблере микропроцессоров MCS-51, на С, на Паскале, Дельфи, Visual Baisic. В пакете представлена также оболочка TMEX для сетевых систем с использованием iButton. Утилиты этой оболочки включают команды для сети iButton , сходные с командами COPY, FORMAT, DIR, RENAME, DELETE, DIR и т.п.. Dallas Semiconductor поставляет готовый адаптер для последовательного порта (25 у.е. в розницу). Внешний вид дан ниже:


      Возможность размещать комментарии к сообщениям отключена.

    Метки статей

    Свернуть

    Меток пока нет.

    Новые статьи

    Свернуть

    • Эссе об авторизации таксофонных карт
      admin
      Путешествуя по рунету в поисках любой информации об эмуляторах смарт карт синхронного режима стандарта ISO7816 заметил интересную особенность: информации почти нет, а то что можно найти списано с одного источника (Phrack Magazine 48 выпуск) в разных вариациях. И ни слова я не нашел об авторизации смарт карт в таксофоне. На самом деле, любой кто подумывал о создании эмулятора...
      04.02.2017, 10:48
    • Устройства бесконтактной идентификации
      admin
      В общем случае система бесконтактной идентификации состоит из двух частей: ключ и считыватель.
      Ключ

      Ключ представляет собой миниатюрный чип и антенну, которые затем запрессовываются в некоторый корпус (пластиковая карточка, авторучка, подошва обуви и т. д.). На рисунке, взятом из технического описания на чип H4100 фирмы EM-Marin показана схема такого ключа. ...
      04.02.2017, 10:48
    • Трактат о проектировании эмуляторов таксофонных карт
      admin
      Я считаю, что было бы совершенно неправильно, если бы вообще кто-либо публиковал рабочую прошивку эмулятора, тем самым обесценивая полученный результат. Потом каждый ламер сможет фыркнуть на вашу работу - "это все из инета скачать можно ...". Если вы трахались над нею более года, вам будет очень обидно. А если учесть, что "золотые" телефонные карты продаются в питере по цене около ста баков за штуку, то и тем более не стоит.
      К тому же, очень многим прошивка не поможет. Такого, чтобы заработало сразу - не бывает. Грабли будут. А грабли обходить - нужно понимать, что ты делаешь, как оно все работает и как оно должно работать. В общем случае, достаточно наличия восхищения двумя книгами - "искусство программирования" кнута и "искусство схемотехники" хоровица / хилла. А большинству читателей этой конфы неплохо бы перечесть школьный курс физики в разделе "электричество". Чтобы было поменьше "гениальных" идей, типа ламинирования магнитной карты.
      А то, к примеру, вам потребуется собрать считыватель телефонных карточек. Вы припаяете правильно все проводки, запустите правильную прогу... А в сетапе компа стоит двунаправленный /eрр/ режим параллельного порта...
      И - жопа...
      Работать не будет. А это даже не грабля, это так - грабелька. В этой конфе постоянно жалуются, что не получается считать карточку. Прикидываю, поля, усеянные граблями, на которых заблудились эти несчастные.
      Но, я прикололся, и хочу показать, как примерно должна выглядеть разработка эмулятора. Дабы было меньше неконкретных вопросов на эту тему. При этом будут использованы ошметки моих первых, порой забавных, попыток в этой области. Ценность их для меня сейчас не велика, поскольку я и сам не знаю можно ли их довести до рабочего результата /то была тупиковая ветвь разработки/, но жалко, если какие-то изюминки пропадут, когда-нибудь, без следа, раздавленные клавишей F8. Пусть будут в эхе.
      Во избежание разглашения know нow я сменю микропроцессорную платформу, при обсуждении. Ее выбор будет более или менее дебильным. Таким, чтобы воспользоваться этим текстом, как инструкцией по сборке, было бы совершенно невозможно. Только, как руководством к действию. На пик процессоре эмулятор вы уж реализуйте на досуге как-нибудь сами...
      Итак, предположим вам втемяшилось в голову разработать эмулятор на самой неподходящей для этого платформе. Например, на однокристалке из семейства mcs-48 фирмы интел i8048, КР1816ВЕ48, i8035, i8039, etc./. Ну уперлись рогом и все тут.
      Процессоры 8048, 8035, при максимальной тактовой частоте 6 mнz исполняют одну команду за 2.5 или 5 мкс. А минимальные времена импульса и промежутка между импульсами сигнала clk при чтении карточки определены в 8 и 10 мкс. На период событий в нашей системе будут приходится 3-7 команд процессора. Ясно, что это недопусимо мало. Процессоры i8049 и i8039 чуть быстрее. К ним можно прилепить кварц 11 Mнz и команда будет выполняться за 1.36 или 2.72 мкс. Поскольку, таксофон, наверняка, работает с карточкой на частоте меньше максимальной (для надежности), может быстродействия нам и хватит. Если Будем экономить каждый такт процессора. Короче говоря, столь странный Камень выбран для того, чтобы сделать более выпуклой битву за быстродействие, которая является непременным спутником разработки любого эмулятора.
      Поскольку таксофон, при отнятии единицы, снимает питание с карточки и перечитывает ее заново, а встроенной энергонезависимой памяти в нашем проце нет, то ясно, что придется сделать внешнее питание. А то, при снятии питания, проц будет забывать сколько осталось единиц. Чтобы батарейка работала подольше, берем кмоп вариант проца. Чтобы никакие дополнительные мелкоcхемы, типа защелки или пзу-хи /27C16/ не потребляли лишнего тока, берем проц со встроенным перешиваемым пзу. Будем лить программу внутрь. Короче говоря, выбираем i87C49 (кажется у него даже есть аналог КР1835ВЕ49). Максимально допустимая частота кварца для этого процессора 11 mнz (одна команда за 1.36 или 2.72 мкс). Но, не забудем, что процессоры можно разгонять. Поэтому эксперименально подберем максимальную частоту кварца, при которой проц будет работать без глюков. Не забудем, при этом, контролировать частоту генерации Частотомером на ноге xtal2. А то, при подключении слишком высокочастотных кварцев, генерация может начаться на паразитных r и c, а не на частоте резонатора. Пик-процессоры, например, разгоняются аж в 2 раза. Мой PIC16C84-04/SO работал на 10 mнz-ах и изредка глючил на 11.7. А PIC16F84-10I/SO еще Пахал на 21mнz-е и напрочь отказался лишь на 24-х.
      Поскольку, эмулятор получается батарейным, то отпадает проблема, которая мучит разработчика эмулятора с питанием от таксофона - минимизация времени старта процессора. Таксофон, после подачи питания, делает жутко малую выдержку прежде, чем начать читать карту. Если, к этому времени поцессор не успел стартовать, исполнить секцию инициализации программы и добраться до главного цикла, то данные, прочитанные таксофоном, будут представлять совершеннейший shit. Но процессору-то надо дать время сброситься, а тактовому генератору раскочегариться и устаканить свои колебания. Напомню, что кварцевый резонатор начинает генерацию вовсе не сразу после подачи на него питания. Пик-процессор, например, при старте отсчитывает 1024 импульса от кварца, в качестве выдержки на стабилизацию его частоты, прежде чем начать ход по программе. Очевидно, что время между подачей напряжения питания и первым импульсом от кварца является просто мертвым временем, бесполезно увеличивающим время прихода процессора в чувство. Мертвое время зависит от величин емкостей, подключенных к выводам кварца и имеет четко выраженный минимум. Оно велико при слишком маленьких и слишком больших емкостях. У керамического резонатора это время порядка десятков микросекунд, а у кварца это - единицы миллисекунд ! Так-что, взяв двухлучевой запоминающий осциллограф, желательно минимум этого мертвого времени, для конкретного экземпляра кварца, найти, перебирая величины подключенных к нему емкостей.
      Опять таки, поскольку эмулятор получается батарейным, нет необходимости оптимизировать секцию инициализации программы. Можно, не торопясь, скопировать все или часть данных из пзу в озу. В нашем случае в озу Будут храниться только изменяемые данные, соответствующие кредиту карты. Неизменяемые данные (серийный номер карты, сертификат и т.п.) будут храниться в пзу. Для ускорения доступа к данным будем, при старте Программы, копировать данные в озу по тем-же адресам, что они лежали в третьей странице пзу. Это позволит использовать один указатель для доступа и к изменяемым и к неизменяемым данным.
      Теперь изобретаем схему. Схему всегда нужно проектировать так, чтобы программа для нее имела максимальное быстродействие. То есть первый этап оптимизации программы - схемотехнический.
      Во первых, смотрим - можно-ли обнаруживать какие-либо события аппаратно (а не программно), заводя сигналы на ноги прерывания микропроцессора. Пусть железо, жесткая логика, вберет в себя часть алгоритма. Нужно максимально использовать аппаратные возможности микросхемы, обрабатывая импульсы по прерываниям, а не опросом линии в цикле.
      Карточка, при чтении, по фронту clk увеличивает на один внутренний адресный счетчик. Но состояние своего выхода не меняет. И выдает новый Бит лишь по спаду сlk. Наш-же эмулятор, обнаружив clk, будет в течение нескольких команд процессора соображать по программе, что к чему и какой бит вывести. Поэтому ясно, что эмулятор должен срабатывать по фронту clk. Он будет выдавать следующий бит с задержкой от фронта. Если таксофон будет очень привередничать можно, вставляя noр-ы, манипулируя частотой кварца, а также выравнивая плечи по временам исполнения, приурочить этот момент как раз на спад clk. Хотя реально такие тонкости вряд-ли понадобятся. То есть необходимо прерывание по фронту clk. Но наш гребаный процессор имеет вход int, который срабатывает по отрицательному перепаду /из 1 в 0/. ну не ставить-же инвертор в самом деле. Волей-неволей с идеей прерываний приходится распрощаться. Будем опрашивать линии сами.
      Куда-же засунуть этот clk. Какой-нибудь программист тут-же ляпнул бы - да на порт ввода-вывода /например р1.0/. И обрабатывал линию бы так :
      in a,р1
      jb0 clock_рrisнel - в 4 такта процессора а если-бы условный переход нужен был бы по отсутствию clk : in a,р1
      cрl a
      jb0 netu_clocka - 5 тактов
      / команды jnb в этой варварской системе команд нету / А вот человек, исповедующий идею аппаратной оптимизации программ, засунул бы линию clk на ногу t0, а линию rst на ногу t1 и ветвился бы в два такта по обоим условиям - jt0, jnt0, jt1, jnt1.
      Вот линию out некуда присоединить, кроме как к какой-нибудь линии порта ввода-вывода. Причем приверженец схемотехничесого вылизывания программ предпочел бы именно нулевой бит какого-нибудь порта /например р1.0/. Почему ? А это предоставляет возможность писать максимально лаконичные куски кода для манипулирования этим выходом. Ниже вы это увидите.
      Но сначала вопрос - как хранить данные карточки, для максимально быстрого оперирования ими. Во первых как их вообще представлять - по биту в байте или упаковать по 8 бит в байт. Если хранить весь дамп Карты в 16-и байтах, то при чтении, а это самая быстрая операция карточки, пришлось бы проверять постоянно - надо ли читать следующийБайт или все еще вращать / сдвигать этот. Зато как легко выполнялся бы Writecarrу - послал в память байт ff и все. Но операция writecarrу будет происходить около 10 мс. Поэтому оптимизируем по быстродействию в пользу read, а уж при writecarrу времени послать 8 байт хватит. То есть храним данные карточки в 128-и байтах, причем смысл данных будет иметь только младший бит в байте. При этом, все операции получаются легко и непринужденно.
      Посылка следующего бита на выход :
      1. Неизменяемых данных из rom
        inc r0 - увеличение на единицу адресного счетчика
        mov a,r0
        movр3 a,@a - чтение байта из встроенного пзу
        outl р1,a - нужный бит данных на выходе р1.0
        остальные бита порта р1 никуда не подключены пусть изменяются как им угодно
      2. Изменяемых данных из ram inc r0 - увеличение на единицу адресного счетчика
        mov a,@r0 - чтение байта из встроенного озу
        outl р1,a - нужный бит данных на выходе р1.0

      Теперь в алгоритме нужно, как-то, определять какой байт читать из озу а какой из пзу. В каждом байте у нас осталось по 7 бесхозных бит. Пусть один из них (например первый) определяет статус данных - если он Сброшен, то данные надо искать в озу, а если выставлен - в пзу :
      inc r0 - увеличение на единицу адресного счетчика
      mov a,r0
      movр3 a,@a - чтение байта из встроенного пзу
      jb1 rom
      RAM: mov a,@r0 - чтение байта из встроенного озу
      ROM: outl р1,a - нужный бит данных на выходе р1.0
      Очень просто получается операция write :
      anl р1,#0feн - сбросить линию out в ноль
      inc @r0 - поскольку до write бит был заведомо выставлен, то после inc он будет заведомо сброшен.
      Операция writecarrу тоже выглядит вполне ничего для 10 мс, отведенных для нее. Поскольку до writecarrу восемь бит были заведомо нулевыми, восемь inc-ов сделают их заведомо единичными -
      mov a,r0 - текущий адресный счетчик
      anl a,#0f8h
      add a,#8 - вычислено начало восьмерки бит /лотка 8-чного абака/
      mov r1,a
      inc @r1
      inc r1
      inc @r1
      inc r1
      inc @r1
      inc r1
      inc @r1
      inc r1
      inc @r1
      inc r1
      inc @r1
      inc r1
      inc @r1
      inc r1
      inc @r1
      Короче говоря, исходный текст того, что получилось вы увидите в хвосте этого документа. В программе сами собой получились фичи, существенно необходимые для эмулятора, например, наличие 512-битного кольца данных. В реальной карте 9-битный адресный счетчик и он запросто переполняется. Правда, у нас получилось 256-битное кольцо. Но раз есть 256-битное, то и 512-битное тоже есть.
      Получившаяся программа обладает вполне не дурными временными характеристиками. По приходу clk, данные на выходе, появляются спустя 9-13 тактов процессора. Для 11 mнz-ового кварца это - спустя 12-18 мкс после фронта clk. Вполне пристойный результат для такой убогой архитектуры. Это лишь в 2-3 раза хуже того, что можно получить на пик-е. Впрочем, для некоторых типов таксофонов этого вполне достаточно. Кстати, у процессора i8049 128 байт встроенного озу, в отличие от 64 байт у i8048. Поэтому, можно, при инициализации программы, переместить все данные в озу. В результате в быстродействии операции чтения можно выиграть еще 2 такта. Переключать чтение данных из пзу в озу и обратно уже будет не нужно. Read: mov a,r0 - текущий адресный счетчик inc a - его увеличение anl a,#7fн - кольцо теперь должно быть 128-битным mov r0,a mov a,@r0 - чтение из озу outl р1,a - бит данных на выход Но я, из принципа, написал код, который бы работал на любом процессоре cемейства mcs-48. А теперь пара нетривиальных советов по программированию однокристалок. Напрочь забудьте то, как вас учили программировать. Программу надо писать так, чтобы дейкстра (основатель структурного программирования), Прочитав ее, #%нулся бы в обморок. И приправить ее солидной порцией шизы. Есть примета, что программы для такого рода вещей, написанные без доли шизы, реально не работают. На некоторых архитектурах, особливо интеловских, без извращений - никак. Например, в нашей программе часть данных, соответствующая кредиту карты копируется в озу. Причем эти данные полностью перекрывают область стека. Но, поскольку, я нигде не вызываю подпрограмм и прерывания у Меня запрещены, то что тут такого ? Дамп карточки в программе лежит не по порядку, а завернувшись в кольцо, используя то обстоятельство, что адресный счетчик r0 переполняется /точнее лежит полузавернувшись в кольцо, или завернувшись в полукольцо, как кому больше нравится/. В результате возможно всего двумя командами mov a,r0 jb7 failure Различать попытку записи в область единиц и попытку записи в Manufacturer area. Таксофон так делает, в качестве противодействия Эмуляторам. Эта изюминка с кольцом, требует волей-неволей организовать другую - адреса 0 и 1 используются одновременно и как рабочие регистры r0 и r1, И как ячейки для хранения двух бит кредита карты. Фокус в том, что приходящиеся на эти ячейки биты дампа карты (два старших бита кредита) всегда должны быть нулевыми, поскольку не бывает карт с кредитом больше Чем 7*4096-1=28671 единица. И всегда, когда к r0 и r1 обращаются, как к хранителям дынных карточки, они оказываются с нулевым младшим битом ! Каким образом так получается ? Регистр r0 используется как адресный счетчик (указатель). Когда ему случится указать на самого себя, он, естественно, будет равен нулю, а значит и младший бит его будет равен нулю. Регистр r1 всегда, по окончании использования, - anl a,#0f8н ; a.0 ...
      04.02.2017, 10:48
    • Тайна карт Московского метрополитена
      admin
      ...
      04.02.2017, 10:48
    • Протокол POCSAG и его применение
      admin
      Формат POCSAG-кода.
      Информация на пейджер в стандарте POCSAG передается в двоичном виде,по битам. Структура посылки изображена рис. 1.
      Преамбула Пакет 1 . . . Пакет N
      рис. 1
      Каждая передача начинается с преамбулы - последовательности битов:10101010... - по этому сигналу производится предварительное включение пейджера и определяется скорость передачи данных ( 512/1200/2400 ). Далее следуют пакеты с данными. Каждый пакет представляет собой последовательность из 17-ти кодовых слов (рис. 2), кодовое слово (CW) - последовательность из 32-х битов. Кодовые слова бывают:
      • синхронизации - для синхронизации фреймов в пакетах.
      • адреса - для передачи САР - кода, рис.3.
      • сообщения - для передачи текста сообщения, рис.4.
      • пустые - для заполнения пустых фреймов.
      Фрейм 0 Фрейм 1 Фрейм 2 Фрейм 3 Фрейм ... Фрейм 7
      ...
      04.02.2017, 10:48
    • Приемники пейджинговых сообщений
      admin
      Телевизор в качестве приёмника...
      04.02.2017, 10:48
    Обработка...
    X