В настоящее время стандарт USB бурно развивается. Все большее число фирм либо начинают выпускать оборудование, подключаемое к шине USB, либо расширяют такое производство. Производители системных плат, такие как Intel, Compaq, Delk а также другие фирмы, собирающие системные платы нa последних чипсетах Intel, считают наличие одного-двух портов USB обязательным. В данной статье продолжается описание функций USB, начатое в предыдущем номере журнала.
Форматы пакетов
Все посылки информации организованы в форме пакетов. Байты передаются по шине USB по следовательно, бит за битом, начиная с младшего бита. Каждый пакет начинается с поля синхронизации SYNC, которое представляется последовательностью состояний “КЗКЗКЗКК” (кодированную по NRZI). следующую после состояния Idlest ate. Последние два бита (КК) являются маркером начала пакета SOP. после которого следует идентификатор пакета PID. Идентификатор пакета является 4-битным полем PID (3:0]. идентифицирующим тип пакета (см. Табл. 1), за которым следуют в качестве контрольных тс же 4 бита, но в инверсном значении.
В пакетах-маркерах IN. SETUP и OUT за полем PID следуют адресные поля: 7-битный адрес периферийного устройства и 4-битный адрес конечной точки. Эти поля позволяют адресовать до 127 устройств USB (нулевой адрес используется для конфигурирования) и по 16 конечных точек каждого периферийного устройства.
В пакете SOF имеется 11 -битное поле номера кадра (frame number field), последовательно (циклически) увеличиваемое для очередного кадра.
Поле данных может иметь размер от О до 1023 байт. Размер поля данных зависит от типа передачи и согласуется при установлении канала.
Поле CRC-кода присутствует во всех маркерах и пакетах данных, оно защищает все поля пакета, за исключением поля PID. CRC для данных занимает 11 бит, а для маркеров – 5 бит и подсчитывается по разным формулам.
Каждая транзакция инициируется хост-кон-троллером посылкой маркера и завершается пакетом квитирования. Последовательность пакетов в транзакциях иллюстрирует рис.8.
Хост-контроллер организует обмены с устройствами согласно своему плану распределения ресурсов. Контроллер с периодом 1 мс (циклически) формирует кадры (frames), в которые укладываются все запланированные транзакции. Каждый кадр начинается с посылки маркера SOF (Start Of Frame), который является синхронизирующим сигналом для всех устройств, включая хабы. В конце каждого кадра выделяется небольшой интервал времени EOF (End Of Frame), на время которого хабы запрещают передачу по направлению к хост-контроллеру, и хост-контроллер быстро опрашивает состояние хабов, а при обнаружении изменений в состоянии с помощью специальных транзакций уточняет состояние. Каждый кадр имеет свой номер. Хост-контроллер оперирует 32-битным счетчиком, но в маркере начала кадра SOF передает только младшие 11 бит. Номер кадра увеличивается (циклически) во время EOF. Хост планирует загрузку кадров так. чтобы в них всегда находилось место для транзакций управления и прерывания. Свободное время кадров может заполняться сплошными передачами (bulk transfers).
Для изохронной передачи, когда передается звук или изображение, очень важен вопрос синхронизации устройств и контроллера. Возможны три варианта:
-синхронизация внутреннего генератора устройства с маркерами SOF;
-подстройка частоты кадров под частоту устройства:
-согласование скорости передачи (приема) устройства с частотой кадров.
Подстройка частоты кадров контроллера возможна, естественно, под частоту внутренней синхронизации только одного устройства. Подстройка осуществляется с помощью механизма обратной связи, который позволяет изменять период кадра в пределах плюс-минус 1 битового интервала.
Системное конфигурирование
В USB в отличие от других шинных архитектур концентраторы передают пакеты от корня без полного их получения, что обеспечивается возможность “горячего” подключения устройств без отключения системы. Можно подключить новое устройство или концентратор, или. наоборот, отключить ставшее ненужным оборудование без необходимости перезагрузки системы. При обнаружении на шине нового устройства концентратор оповещает об этом корневой концентратор. Затем система опрашивает вновь подключенное устройство о возможностях и потребностях и конфигурирует его. Вдобавок, при этом загружаются необходимые драйверы, так что новым устройством можно пользоваться немедленно. Таким образом, USB поддерживает подключение и отключение устройств в процессе работы. Конфигурация устройств шины является постоянным процессом, отслеживающим динамические изменения физической топологии.
Все устройства USB подключаются через порты хабов. Хабы определяют подключение и отключение устройств к своим портам и сообщают состояние портов в ответ на запрос от контроллера. Хост разрешает работу порта и адресуется к устройству через канал управления, используя нулевой адрес – USB Default Address. Все устройства адресуются этим адресом при начальном подключении или после сброса.
Хост определяет, является новое подключенное устройство хабом или периферийным устройством. и назначает ему уникальный адрес USB. Хост устанавливает с этим устройством канал управления (control pipe), используя назначенный адрес и нулевой номер точки назначения.
Если новое устройство является хабом, хост определяет подключенные к нему устройства, назначает им адреса и устанавливает каналы. Если новое устройство USB является периферийным устройством, уведомление о подключении передастся диспетчером USB заинтересованному программному обеспечению.
Когда устройство отключается, хаб автоматически запрещает соответствующий порт и сообщает об отключении контроллеру, ко горый удаляет сведения о данном устройстве из всех структур данных. Если отключается хаб. то процесс удаления выполняется для всех подключенных к нему устройств. Если отключается периферийное устройство. уведомление посылается заинтересованному ПО.
Процесс конфигурации устройств, подключенных к шине USB. осуществляется динамически по мере их подключения или включения их питания без какого-либо вмешательства пользователя или клиентского ПО. Процедура процесса конфигурации (с описанием сигналов и состояний) описана ниже.
I. Хаб, к которому подключилось устройство, информирует хост-контроллер о смене состояния своего порта ответом на опрос состояния. С этого момента устройство переходит в состояние ’’Attached’’ (подключено), а порт, к которому оно подключилось, в состояние ’ Disabled’’.
2. Хост-контроллер с помощью специальных транзакций уточняет состояние порта.
3. Узнав порт, к которому подключилось новое устройство, хост-контроллер дает команду сброса и разрешения порта.
4. Хаб формирует сигнал RESET для данного порта (10 мс) и переводит его в состояние “Enabled”. Подключенному устройству позволяется потреблять от шины ток питания в пределах 100 мА. Устройство переходит в состояние Powered (включено), все его регистры переводятся в исходное состояние, и оно отзывается на обращение по нулевому адресу.
5. До тех пор пока устройство не получит уникальный адрес, оно доступно по дежурному каналу, по которому хост-контроллер может определить максимально допустимый размер поля данных пакета.
6. Хост сообщает устройству его уникальный адрес, и оно переводится в состояние Addressed (адресовано).
7. Хост считывает все конфигурации устройства, включая и заявленный ток потребления от шины. Процесс считывания может потребовать передачи нескольких кадров.
8. Исходя из считанной информации хост конфигурирует все имеющиеся конечные точки данного устройства, которое переводится в состояние Configured (сконфигурировано). Теперь хаб позволяет устройству потреблять от шины полный ток, заявленный в конфигурации, и оно становится готовым к использованию.
Программное обеспечение USB
Система USB разделяется на три уровня с определенными правилами взаимодействия (аналогично семиуровневой модели OSI). Устройство USB делится на интерфейсную часть, часть устройства и собственно функциональную часть. Хост тоже делится на три части – интерфейсную, системную и ПО устройства. Каждая часть отвечает только за определенный круг задач, логическое и реальное взаимодействие между ними иллюстрирует рис. 10.
В рассматриваемую структуру входят следующие элементы:
– USB-device – физическое устройство устройство на шине, выполняющее функции, интересующие конечного пользователя:
– Client Software – программное обеспечение. соответствующее конкретному устройству, исполняемое на хост-компьютере. Оно может являться составной частью ОС (например, поддержка принтера) или специальным продуктом, поддерживающим устройство;
– Universal Serial Bus Driver (USB System SW);
– системная поддержка USB операционной системой, независимая от конкретных устройств и клиентского ПО;
– Universal Host Controller interface (Universal Host Controller и Universal Host Controller Driver) – аппаратные и программные средства, обеспечивающие подключение устройств USB к хост-компьютеру.
Архитектура USB предусматривает наличие внутренней и внешней частей; при этом внутренняя часть подразделяется на программную и аппаратную составляющие. Все подключаемое к USB оборудование разделено на классы (принтер, устройства взаимодействия с оператором и т. д.). Стандартный клиентский драйвер для устройства в соответствии с классом оборудования поставляется вместе с операционной системой, или разработчиком устройства, или третьими фирмами. Если оборудование не принадлежит к определенному классу, то соответствующий драйвер должен поставляться производителем. Драйвер корневого хаба и собственно концентратора шины USB, обеспечивающий управление контроллером и всеми концентраторами, поставляется вместе с ОС или третьими фирмами. Драйвер USB обеспечивает связь шины с операционной системой, а также согласует различные детали совместного использования. например, выделение гарантированной ширины полосы.
При обнаружении на шине нового устройства концентратор оповещает об этом корневой концентратор. Затем система опрашивает вновь подключенное устройство о возможностях и потребностях и конфигурирует его. При этом за1ружают-ся необходимые драйверы, и новым подключенным устройством можно пользоваться практически немедленно. Но для обеспечения возможности автоматической загрузки нужного драйвера все USB-устройства должны отвечать требованиям класса, к которому они принадлежат. Все устройства определенного класса должны выполнять свойственные этому классу функции. Классы устройств определены в спецификациях USB. Разработка новых классов ведется в соответствии с требованиями спецификации USB.
Спецификации класса определяют минимальный набор операций, поддерживаемый всеми устройствами класса, что дает управляющей ОС возможности управлять множеством устройств, отвечающих спецификации класса. Подстройка драйвера под конкретные функции конкретного устройства происходит при его опросе в момент подключения.
Классификация устройств в основном определяет способ, при помощи которого устройство взаимодействует с ведущим устройством. Поэтому в классах USB отражается, как устройство взаимодействует с шиной, а не предоставляемые им услуги. Например, в спецификации ’’класса принтеров” не указывается, сколько имеется лотков с бумагой или количество воспроизводимых цветов, а описывается способ подключения – как однонаправленный поток данных на вывод или два однонаправленных потока, один на вывод и второй на ввод, для получения информации о состоянии принтера. Указывается также способ форматирования, например, инкапсуляция данных согласно другим стандартам. Класс принтеров предусматривает специальные команды, позволяющие хосту получить нужную информацию при инициализации.
USB выстраивает необычные отношения между устройством и драйвером. Драйвер не управляет устройством напрямую, а имеет доступ только к четырем типам операций приема-передачи данных: передача массива, управление, прерывание и изохронные передачи. Все типы передач реализованы на уровне программного интерфейса. Стандартизация классов устройств USB и программного обеспечения способствует росту популярности данного способа расширения персональных компьютеров среди широкого круга пользователей и производителей компьютерной техники.
Дополнительные возможности USB
Бывают такие ситуации, когда только USB может обеспечить решение ряда проблем, которые обычным способом не решаются.
Конвертер USB – COM-порт. Например, для ноутбука потребовался ещё один COM-порт для подключения модема. Можно использовать его USB-порт и устройство, которое позволит получить из порта USB нужный СОМ-норт. Подобное устройство выпускают, например, в Англии (USB to Serial Convertor фирмы Entrega).
Конвертер USB – двунаправленный параллельный порт. Этот конвертор позволяет воспользоваться всеми возможностями расширенного порта принтера. Конвертор USB имеет кабель с разъемом типа “А”, с одной стороны и обычный разъем для Centronix с другой стороны и дает возможность подключить дополнительный порт LPT без каких-либо требований системных ресурсов (имеются в виду такие ресурсы, как IRQ и DMA). Конвертор захватывает свободный параллельный порт под себя и оставляет возможность пользоваться уже имеющимся в компьютере портом. Если есть LPT1. то контроллер будет виден, как USB to Parallel (LPT2).
Соединение компьютеров с использованием USB порта (LINK 200). Рассматриваемое устройство позволит вам организовать на основе USB портов одноранговую сеть, в которую можно объединить до 16 компьютеров. С одной стороны LINK 200 интегрирован шнур “USB Д ’, а на другой стороне имеется USB разъем типа “В”. В комплекте имеется USB кабель “A-В” и дискета с драйверами.
Un к 200 дает вам возможность создать полнофункциональную сеть при минимальных затра тах. которая работает под Windows 98/95 (со временем будут драйверы под Window’s 2000).
USB-IDE конвертор от SKYMASTER. Например, DAU-4002. Этот USB-JDE конвертер выполнен в виде корпуса для 36 pin HP разъема с интегрированным в него USB кабелем типа А. длиной 1.2 метра. Разъем 36 pin HP давно стал стандартом де-факто для подключения IDE устройств к шине USB. а также к ноутбукам через шину PCMCIA. DAU-4002 является основой для подключения целого ряда устройств и не требует от пользователей никаких действий по доработке оборудования. Использование конвертора DAU-4002 позволяет иметь несколько внешних устройств и подключать их по необходимости, используя один конвертер для нескольких устройств.
DHU-SCO1 USB Speaker Converter. Этот конвертер позволяет любым колонкам превратиться в USB колонки. Фактически этот конвертер представляет собой внешний USB DAC. Вы можете подключить этот конвертер к компьютеру через USB порт и. указав в опциях мультимедиа устройств USB динамики, получить вполне приемлемое качество звука без использования звуковой карты.
10 mbit Ethernet адаптер для шины USB (DHU-04O4). Предназначен для подключения PC к сети Ethernet на витой паре через шину USB. Питание устройства осуществляется от шины USB. Адаптер снабжен гнездом USB-B для подключения к PC и гнездом RJ-45 дня подключения к 10 mbit Ethernet хабу.
Таким образом, наличие различного рода конвертеров снимает проблему использования “старых” устройств после отказа от использования шины ISA и несомненно способствует росту популярности USB.