USB

USB (англ. Universal Serial Bus — «универсальная последовательная шина») — последовательный интерфейс для подключения периферийных устройств к вычислительной технике. Получил широчайшее распространение и стал основным интерфейсом подключения периферии к бытовой цифровой технике.

Современный мир сложно представить без огромного числа устройств, которые отличаются и форматом, и предназначением. Настольные компьютеры и портативные ноутбуки, универсальные планшеты и смартфоны, которые всегда с собой, современные беспроводные наушники, а еще портативные аккумуляторы и умные часы. Практически каждый такой гаджет в том или ином виде использует интерфейс USB. Он прошел длинный эволюционный путь и подстроился под размер и нужды целого зоопарка из девайсов, которые находятся в обиходе современного пользователя.

В Intel днем рождения USB называют 15 ноября 1995 года. Первые спецификации для USB 1.0 были представлены в 1994—1995 годах. Разработка USB поддерживалась фирмами Intel, Microsoft, Philips, US Robotics. USB стал «общим знаменателем» под тремя не связанными друг с другом стремлениями разных компаний:

  • Расширение функциональности компьютера. На тот момент для подключения внешних периферийных устройств к персональному компьютеру использовалось несколько «традиционных» (англ. legacy) интерфейсов (PS/2, последовательный порт  rs-232,ieee 488 ,параллельный порт, порт для подключения джойстика, SCSI), и с появлением новых внешних устройств разрабатывали и новый разъём. Предполагалось, что USB заменит их все и заодно подхлестнёт разработку нетрадиционных устройств.
  • Подключить к компьютеру мобильный телефон. В то время мобильные сети переходили на цифровую передачу голоса, и ни один из имеющихся интерфейсов не годился для передачи с телефона на компьютер как речи, так и данных.
  • Простота для пользователя. Старые интерфейсы (например, последовательный (COM) и параллельный (LPT) порты) были крайне просты для разработчика, но не давали настоящего «подключи и работай». Требовались новые механизмы взаимодействия компьютера с низко- и среднескоростными внешними устройствами — возможно, более сложные для конструкторов, но надёжные, дружественные и пригодные к «горячему» подключению.

Поддержка USB вышла в виде патча  к Windows 95 OEM Service Release 2, в дальнейшем она вошла в стандартную поставку Windows 98. В первые годы устройств было мало, поэтому шину в шутку называли «Useless serial bus» («бесполезная последовательная шина»). Впрочем, производители быстро осознали пользу USB, и уже к 2000 году большинство принтеров и сканеров работали с новым интерфейсом.

Hewlett-Packard, Intel, Lucent, Microsoft, NEC и Philips совместно выступили с инициативой по разработке более скоростной версии USB. Спецификация USB 2.0 была опубликована в апреле 2000 года, и в конце 2001 года эта версия была стандартизирована USB Implementers Forum. USB 2.0 является обратно совместимой со всеми предыдущими версиями USB.

В начале 2000-х годов корпорация Apple отдавала приоритет шине FireWire, в разработке которой она принимала активное участие. Ранние модели iPod были оснащены только интерфейсом FireWire, а USB отсутствовал. Впоследствии компания отказалась от FireWire в пользу USB, оставив в некоторых моделях FireWire только для подзарядки. Однако часть выпускавшихся клавиатур и мышей, начиная со второй половины 1990-х годов, имела интерфейс USB.

Кабель USB (до 2.0 включительно) состоит из четырех медных проводников. Два проводника питания и два проводника данных в витой паре — и заземлённой оплётки (экрана).

Кабели USB ориентированы, то есть имеют физически разные наконечники «к устройству» (Тип B) и «к хосту» (Тип A). Возможна реализация USB устройства без кабеля, со встроенным в корпус наконечником «к хосту». Возможно и неразъёмное встраивание кабеля в устройство, как в мышь (стандарт запрещает это для устройств full и high speed, но производители его нарушают). Существуют, хотя и запрещены стандартом, и пассивные USB удлинители, имеющие разъёмы «от хоста» и «к хосту».

С помощью кабелей формируется интерфейс между USB устройствами и USB хостом. В качестве хоста  выступает программно-управляемый USB контроллер, который обеспечивает функциональность всего интерфейса. Контроллер, как правило, интегрирован в микросхему южного моста, хотя может быть исполнен и в отдельном корпусе. Соединение контроллера с внешними устройствами происходит через USB концентратор (USB hub). В силу того, что USB шина имеет древовидную топологию, концентратор самого верхнего уровня называется корневым (root hub). Он встроен в USB контроллер и является его неотъемлемой частью.

Для подключения внешних устройств к USB концентратору в нём предусмотрены порты, заканчивающиеся разъёмами. К разъёмам с помощью кабельного хозяйства могут подключаться USB устройства либо USB концентраторы нижних уровней. Такие концентраторы — активные электронные устройства (пассивных не бывает), обслуживающие несколько собственных USB портов. С помощью USB концентраторов допускается до пяти уровней каскадирования, не считая корневого. Сам USB интерфейс не позволяет соединять между собой два компьютера (хост-устройства), это возможно лишь при использовании специальной электроники, имеющей два USB входа и специализированный мост, например, эмулирующей два соединённых Ethernet адаптера. По одному для каждой из сторон — либо использующие специализированное ПО для обмена файлами.

Устройства могут быть запитаны от шины, но могут и требовать внешний источник питания. По умолчанию устройствам гарантируется ток до 100 мА, а после согласования с хост-контроллером — до 500 мА. Поддерживается и дежурный режим для устройств и концентраторов по команде с шины со снятием основного питания при сохранении дежурного питания и включением по команде с шины.

USB поддерживает «горячее» подключение и отключение устройств. Это достигнуто увеличенной длиной заземляющего контакта разъёма по отношению к сигнальным. При подключении разъёма USB первыми замыкаются заземляющие контакты, потенциалы корпусов двух устройств становятся равны и дальнейшее соединение сигнальных проводников не приводит к перенапряжениям, даже если устройства питаются от разных фаз силовой трёхфазной сети.

На логическом уровне устройство USB поддерживает транзакции приёма и передачи данных. Каждый пакет каждой транзакции содержит в себе номер оконечной точки (endpoint) на устройстве. При подключении устройства драйверы в ядре ОС читают с устройства список оконечных точек и создают управляющие структуры данных для общения с каждой оконечной точкой устройства. Совокупность оконечной точки и структур данных в ядре ОС называется каналом (pipe).

Оконечные точки, а значит, и каналы, относятся к одному из четырех классов — поточный (bulk), управляющий (control), изохронный (isoch) и прерывание (interrupt). Низкоскоростные устройства, такие, как мышь, не могут иметь изохронных и поточных каналов.

Управляющий канал предназначен для обмена с устройством короткими пакетами «вопрос-ответ». Любое устройство имеет управляющий канал 0, который позволяет программному обеспечению ОС прочитать краткую информацию об устройстве, в том числе коды производителя и модели, используемые для выбора драйвера, и список других оконечных точек.

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

Изохронный канал позволяет доставлять пакеты без гарантии доставки и без ответов/подтверждений, но с гарантированной скоростью доставки в N пакетов на один период шины (1 кГц у low и full speed, 8 кГц у high speed). Используется для передачи аудио- и видеоинформации.

Поточный канал даёт гарантию доставки каждого пакета, поддерживает автоматическую приостановку передачи данных по нежеланию устройства (переполнение или опустошение буфера), но не даёт гарантий скорости и задержки доставки. Используется, например, в принтерах и сканерах.

Время шины делится на периоды, в начале периода контроллер передаёт всей шине пакет «начало периода». Далее в течение периода передаются пакеты прерываний, потом изохронные в требуемом количестве, в оставшееся время в периоде передаются управляющие пакеты и в последнюю очередь — поточные.

Активной стороной шины всегда является контроллер, передача пакета данных от устройства к контроллеру реализована как короткий вопрос контроллера и длинный, содержащий данные, ответ устройства. Расписание движения пакетов для каждого периода шины создаётся совместными усилиями аппаратуры контроллера и ПО драйвера, для этого многие контроллеры используют крайне сложный DMA со сложной DMA-программой, формируемой драйвером.

Размер пакета для оконечной точки – это константа, встроенная в таблицу оконечных точек устройства и изменению не подлежит. Он выбирается разработчиком устройства из числа тех, что поддерживаются стандартом USB.

OHCI и UHCI, являются спецификациями, совместимыми с USB, и описывают интерфейс различных аппаратных реализаций встраиваемого контроллера. Многообразие встраиваимых в аппаратную часть систем контроллеров, является естественным развитием и создается в рамках спецификации USB.

Также система команд SCSI реализована поверх протокола USB, что является частью спецификации класса Mass Storage device. Это позволяет подключать через интерфейс USB любые хранилища данных (от флеш-накопителей до внешних жёстких дисков), не разрабатывая для них собственного протокола обмена, а вместо этого используя имеющийся в операционной системе драйвер SCSI.

Сертификацией новых стандартов и коннекторов USB занималась и продолжает заниматься некоммерческая организация USB Implementers Forum (USB-IF). Она объединяет разработчиков и производителей, которые используют технологию USB. Главная цель этой компании заключается в продолжении принципов интерфейса: сохранение направления на унификацию разъемов и кабелей, управление необходимым потреблением энергии, использование утвержденных протоколов для передачи данных, унификация набора функциональных возможностей и драйверов для всех гаджетов с поддержкой USB.

Версии USB и максимальная скорость:

Версия Скорость
USB 1.0 1,5 Мбит/с
USB 1.1 12 Мбит/с
USB 2.0 480 Мбит/с
USB 3.0 5 Гбит/с
USB 3.1 Gen 2 10 Гбит/с

 

Обсуждение закрыто.