Что такое USB 2.0? Когда, как и зачем?


Сколько устройств можно подключить к двум СОМ-портам и одному LPT? Правильно три. до появления разъема PS/2 один СОМ-порт занимала мышь. Остается два порта. Этого мало. Да и с подключением могут быть проблемы - прерывания, драйверы и все прочее, что так часто вводит в ступор чайников, и из-за чего у них возникают те вопросы, от которых впадают в кому, бьются в истерике и горько рыдают работники службы технической поддержки. Скорости СОМ и LPT - портов постепенно стало не хватать для нужд потребителей. Поэтому, проявляя заботу о пользователях и удовлетворяя всеобщую потребность в унификации, компании Intel, IBM, NEC, Nozther Telecom и Compaq объединились в консорциум и попытались решить проблему. Нужен был новый интерфейс подключения к компьютеру периферийных устройств, который, помимо всего прочего, отвечал бы трем основным требованиям: простота подключения, высокая скорость обмена данными, возможность подсоединения множества устройств. Результатом проведенной работы (1995-1996 годы) стало создание шины USB – Universal Serial Bus, что переводится как универсальная последовательная шина.
Несмотря на многочисленные достоинства нового интерфейса и его преимущества перед старыми портами (а их много, например, высокая скорость обмена данными - 12 МБит/с для USB 170 и -480 МВит/с для USB 2.0, поддержка до 127 устройств, возможность "горячего" подключения, электропитание устройств непосредственно через шину USB и пр.), сразу после выхода USB в свет не отмечалось ее особой популярности и всплеска производства USB - устройств. Причина проста - отсутствие поддержки в операционной системе. А какая операционка у нас была в 1895 году? Правильно, великая и глючная Windows 95! Microsoft обеспечила нормальную и полноценную поддержку USB только в Windows 98, а обновление для Windows 95 OSR 2.1 не сильно улучшило тогдашнюю ситуацию, так как все было сделано больно криво. Ну а уж после появления полноценной программной поддержки в популярной ОС, производители периферии не стали тормозить - на рынок обрушился поток USB - устройств. Как абсолютно новых моделей, так и более старых, переделанных под стандарт USB . Являясь в некотором смысле правопреемником СОМ -порта, шина USB не забыла о еще одном предназначении предка - соединении непосредственно двух компьютеров.
Законектить две точки через USВ гораздо удобнее - выше скорость, "горячее" подключение безо всяких перезагрузок. А самое главное – протоколом связи является стандартный Ethernet - протокол, поэтому соединение подойдет подавляющему большинству игр и программ.
А еще компаниям-производителям оборудования понравилось то, что через USB можно питать устройство. Так появились очень удобные девайсы, например базовая станция для беспроводной мыши, которая не только связывает ее с компьютером, но и перезаряжает аккумулятор.

Как оно работает?

Помимо общего вопроса работы шины, интересны и некоторые частные моменты. Например, как реализовано "горячее подключение, почему можно подключить целых 127 устройств, почему не нужно возиться с установкой драйверов и так далее. Попробуем разобраться.
Возможность подключения более чем сотни устройств - это шутка. Такая большая цепочка девайсов - это уже самая настоящая сеть. Сеть с топологией "многоуровневая звезда". В системную плату твоего компьютера встроены два устройства с верхней ступени иерархии, которая носит название roottier (главный уровень, верхний слой): хост-контроллер (может быть только, один) и корневой разветвитель (root hub). Хост-контроллер (или USB – контроллер) отвечает за следующие действия: обнаружение, присоединение и удаление устройств (по терминологии USB – спецификации), управление командным потоком между хостом и устройствами USB, управление потоком данных между хостом и устройствами USB сбор статистики о состоянии и активности устройств, обеспечение подачи ограниченного количества мощности на присоединение устройства USB , Корневой хаб дает нам возможность подключать к шине более одного устройства. Root hub соединен непосредственно с хост - контроллером.
Все устройства находящиеся в цепи, делятся на два типа: хабы, которые позволяют подключить к одному порту несколько конечных устройств и являются расширителями сети, и собственно конечные устройства (функции), Хаб - это девайс, который занимает один порт, но при этом имеет несколько портов USB для подключения других устройств. Функция - это фотоаппарат, принтер, внешний CD-ROM и так далее. Хаб также может быть встроен и в устройство, чаще всего - в монитор.
Одна из самых "вкусных" возможностей USB -это "горячее" подключение. Как оно происходит? Все просто. При подключении нового устройства происходит изменение напряжения в цепи (100мА), которое улавливается хостом. Тот сразу начинает опрашивать новое устройство о том, кто оно, что и зачем, то есть выясняет его класс, нужную ему полосу пропускания и прочую служебную информацию. После получения ответов новичку присваивается уникальный номер, а в ОС загружается нужный драйвер. Никаких требований ввести IRQ, DMA или что-то еще нет, потому что программы, работающие с устройством, общаются не с ним, а с программным интерфейсом, через который U$В взаимодействует с окружающей средой. Всю работу выполняет он и хост - контроллер. По USB - кабелям не только передаются данные, но и осуществляется питание для устройств. Как и все в мире, оно конечное, и хватает его не всем. Мышке, клавиатуре или еще какому - нибудь небольшому девайсу вполне достаточно. А вот джойстику или рулю с обратной связью обязательно понадобится отдельный электрический кабель.

Кабели и разъемы.

Раз уж разговор зашел про кабели, то нужно рассмотреть их подробнее.
USB – кабель состоит из четырех проводов. Два из них (верхний и нижний) предназначены для передачи электроэнергии устройствам, внутренние провода отвечают за доставку информации. Кабели бывают различные, об этом ниже, в части USB 2.O. Также различаются разъемы на концах кабелей и порты на устройствах. Тип А предназначен для подключения к компьютеру или разветвителю. Он плоский и прямоугольный, именно его ты вставляешь в компьютер. Тип В расположен на функциях, ин квадратный и небольшой, такие порты расположены, например, на принтерах с интерфейсом USB. Это различие нужно для реализации одного из основных требований, которые предъявлялись к создаваемой шине, а именно - простота подключения. Согласись, трудно вставить маленький и квадратный разъем в узкий, плоский и прямоугольный порт. Это - защита от дурака. Даже начинающий неопытный пользователь ничего не сломает и не сожжет. Кроме того, имеется модификация - разъем mini USB, который, как правило, используется в цифровых фотокамерах. Как понятно из названия, он маленький, предназ­начен для использования в плеерах, телефонах и прочих небольших по размеру девайсах.

Передача данных.

Разобравшись с проводами, можно перейти к информации, которая передается по ним, к структуре пакета данных, которыми обмениваются USB - функции с хостом. Тут сразу стоит отметить, что сами функции между собой никак не общаются, обмен данными может идти только между ними и контроллером. И только контроллер может выступать инициатором этого обмена (за одним исключением - устройство может первым послать сигнал хосту, если оно выводит компьютер из Спящего" режима). Данные передаются пакетами. Глобально все пакеты делятся на две части – in(передаются функциями) и out (передаются хостом). Существует несколько типов пакетов. Пакет -признак (token packet) несет в себе служебную информацию, что и кому собственно следует. Пакет с данными (data packet), как несложно догадаться, содержит в себе передаваемые данные. Пакет согласования (handshake packet), как и пакет - признак, несет в себе служебную информацию, но не о том, что и кому передается, а об итогах этой передачи. Соответственно, каждая транзакция состоит из трех частей - передача маркера, который "договаривается" о доставке, передача непосредственно данных и информация о завершение транзакции, которая содержится в пакете согласования.
В спецификации USB определены два типа каналов: потоковые (stream) и каналы сообщений (message). Канал сообщения полностью находится под контролем хоста и инициируется хостом при необходимости отправить устройству запрос.
Имеет строго обозначенную структуру и, в целом, является каналом передачи служебной информации. Потоковые каналы не имеют строго заданной структуры и могут управляться как хостом, так и функцией.
Для того чтобы окончательно тебя запутать, скажу, что видов передачи информации тоже несколько.
Управляющая передача (control transter). Используется для настройки и конфигурации устройств, а также для управления передачей данных. Требует выделения гарантированной полосы пропускания.
Передача с прерываниями (interrupt transfer). Используется для передачи небольших пакетов данных, требующих немедленного внимания (например, информация от мышей и клавиатур). Имеет высший приоритет среди всех типов передач информации и обеспечивает гарантированную доставку данных.
Изохронная передача (isochronous transfer). Используется для передачи потоковых данных в реальном времени (аудио и видео). Не гарантирует доставку пакетов, но требует определенной выделенной полосы пропускания.
Массовая передача (bulk transfer). Является противоположностью передачи с прерываниями. Имеет высокую длительность, передает большие объемы информации с гарантированной безошибочной доставкой. Из-за объемов передаваемых данных "подминает" под себя всю доступную полосу пропускания, отдает часть только в случае появления передачи с более высоким приоритетом и забирает обратно при освобождении канала. Не требует гарантированной полосы пропускания.
Таким образом, устанавливая тип передачи, хост - контроллер динамично распределяет полосу пропускания USB между подключенными устройствами, и мышь всегда сможет передать информацию о положении курсора, даже если в этот момент закачивается большой файл с флэш - карты.

USB 2.0 - что нового, в чем отличия?

Все развивается и эволюционирует. Не обошло это веяние стороной и шину USB . Скорости первой версии (12 Мбит/с.) стало явно не хватать. Например, при подключении по ней CD-ROMов у них была ограниченная скорость чтения, записи и перезаписи - всего лишь какие-то несчастные 6Х, Также больше скорости нужно было внешним жестким дискам, сканерам, да и многим другим устройствам. Решением стало появление USB 2.0, где скорость была увеличена аж в 40 раз - до 480 Мбит/сек! Сухие цифры нужно разбавить пояснением - гиг можно передать за минуту. Неслабо?
В новой спецификации появилось и несколько отличий от предыдущих. Были определены три скоростных режима. Первый - это low-speed signaling bit rate, низкая скорость обмена, 1.5 Мбит/с. Второй - высокая скорость обмена full-speed signaling bit rate, 12 Мбит/с. Это было в двух первых версиях, USB 1.0 и USB I.I. Третий режим - это уже третья версия шины, USB 2.0, hign speed signaling bit rate - 480 Мбит/с. Третья версия полностью совместима с двумя предыдущими, то есть в порт USB 2.0 можно воткнуть устройство, которое поддерживает только более раннюю версию USB , а вот обратное зачастую неверно. Чтобы не было проблем с разными скоростями, применяется метод буферизации информации, поступающей от наименее скоростных устройств. Кабель второй версии представляет собой экранированную витую пару, а кабели более ранних версий могут быть и не экранированы.
Хотя это и не касается напрямую USB 2.0, нужно отметить, что те устройства, которые передают и принимают большие объемы трафика, необходимо подключать ближе к хост - контроллеру, чтобы оптимизировать передачу информации по USB. Вот такой маленький совет.

Что за горизонтом?

Естественно, USB не собирается останавливаться на достигнутом. Было объявлено о создании Wireless USB Promoter Group, которая будет заниматься созданием и продвижением беспроводной USB. Скорость обещается такая же, как и в USB 2.0, допустимое расстояние 10 м, плюс безопасность, простота и прочие фишки.