Топология USB
USB использует многоуровневую топологию звезда, которая выглядит как дерево. Где движение делится на два или более ветвей хаба. В конце каждой ветви периферическая  функция. Слово функция в данном контексте является специфическим термином USB.

Каждое физическое устройство USB состоит из шины интерфейса, логического устройства и одной или нескольких функций. Интерфейс шины является стандартным  для всех устройств USB. Логические устройства используют вид устройства. С физической точки зрения он может содержать одну функцию, или она может состоять из нескольких функций с встроенным концентратором. Примером многофункционального устройства со встроенным концентратором является клавиатура со встроенным трекболом.
Концентраторы имеют порты или точки крепления, которые позволяют другим устройствам USB подключаться к ним. Каждая длина кабеля начинается от центра и заканчивается на другом устройстве. Каждый разъем прекращается на концевой заделке кабеля и пользователям не нужно беспокоиться. На хосте есть только один центр — известный как корневой концентратор — прилагается внутренне, чтобы могли работать один или несколько USB-портов. Там может быть только один корневой концентратор на USB.
С точки зрения компьютерного оборудования корневому концентратору, или, скорее, USB-контроллеру, через который работает программное обеспечение ПК и управляет им, есть одно устройство со своим IRQ и I / O требованиями. После настройки USB не требует какой -либо аппаратной реконфигурации независимо от того, какие устройства вы подключите к нему. Все, что вам нужно сделать, это установить драйвера для нового устройства.
USB предназначен для динамической привязки и удаления устройств, когда система работает. Это достигается с помощью непрерывного процесса перечисления направления , который постоянно проверяет, что устройства находяться на шине.
При отсутствии подключенного устройства в точке крепления, выпадающее резисторы гарантируют , что линия передачи данных находятся на нулевом потенциале. Когда устройство подключено, подтягивающий резистор в устройство поднимает одну строку выше порога 2,8 В, так что хаб знает, что подключено устройство. Хаб может также сказать, является ли устройство с низкой или высокой скоростью передачи данных : низкая скорость устройства подтянет D-линии, а высокая скорость устройства подтянет D + высокую. Установив наличие устройства и его скорость передачи данных, система  программного обеспечения может допросить его, чтобы узнать, какие  его требования, и загрузить соответствующие драйверы.
Есть сходство между программным обеспечением и USB-картой и услугой PC Card программным обеспечением. Существуют три уровня программного обеспечения. На самом низком уровне драйвера хост-контроллера (HCD) программное обеспечение, интерфейсы непосредственно к контроллеру USB. Выше этого драйвера USB (USBD) программного обеспечения, которые обеспечивают поддержку USB для работы  операционной системы компьютера. Над этими двумя слоями клиентское программное обеспечение, необходимое для каждой функции USB.
Ни приложения, ни операционная система не могут обращаться непосредственно к USB-устройствам. Приложения могут делать запросы ввода / вывода для клиентского программного обеспечения, или же они могут получить доступ к устройству USB косвенно, используя функции операционной системы, которые сами называют клиентское программное обеспечение. Клиентское программное обеспечение может либо совершать запросы непосредственно USBD слою, или с помощью операционной системы определенного интерфейса.
USBD преобразует запросы клиента на уровне сделки направления, например, разбив запрос на передачу большого блока данных в необходимое количество пакетов размером трансфертов. Они передаются на HCD слои. HCD непосредственно взаимодействует с контроллером USB, превращая запросы транзакций на низком уровне которые зависят от реализации формы, которая затем передаёться контроллеру который  реагирует на создание направленной деятельности.
Связь
Хотя физическая карта USB может выглядеть как дерево, логически всё же выглядит как звезда с возможностью подключения  до 127 устройств, подключенных к одному концентратору. Клиентское программное обеспечение напрямую связывается с его устройством. Каждое устройство имеет уникальный адрес, который присваивается ему на уровне системного программного обеспечения USB во время настройки, чтобы избежать конфликтов.
Связь между устройствами и клиентским программным обеспечением понимается как использование каналов связи. Каждый канал связи находиться между программным обеспечением хоста и конечной точкой устройства. Каждая конечная точка представляет собой часть устройства, которое выполняет одну конкретную цель для этого устройства, например, для получения команд и передачи данных. Полная скорость устройства может иметь до 16 конечных точек, несмотря на  то что устройства с низкой скоростью ,могут иметь только три.
Все они поддерживают USB-устройства с конечной точкой 0 при включении питания. Эта конечная точка является целью по умолчанию каналов связи. После прикрепления устройства оно будет обнаружено, USBD программное обеспечение использует конечную точка 0 для инициализации устройства, выполнения общей (т.е. не для конкретного устройства) конфигурации, а также получения информации о других конечных точках  предоставляемых устройством. Конечные точки характеризуются своими номерами конечной точки (задаёться во время разработки) и пропускной способности шины, частоты доступа, задержки и ошибок требований к обращению, поведению.
Как только конечные точки устройства будут определены и настроены, возникают каналы связи позволяющие клиентскому программному обеспечение установить связь с устройством. Каналы связи, связанные с ним характеристиками, такими как требование о доступе и пропускной способности, тип перевода, направление перевода и максимальная нагрузка размера данных.
USB определяет четыре типа передачи: контроль за поставками, которые обычно используются для команд или статуса операций, передачи прерываний, которые инициируют функцию запроса какого-либо действия от устройства , изохронную передачу, которая используются для передачи данных доставки которые критичны по времени (например, для видео и речи), и основных передач, которые могут использовать всю доступную пропускную способность, но не критичных по времени. Все трансферы идут в форме пакетов, которые содержат управляющую информацию, данные и проверку полей ошибок.
Есть также два типа каналов связи : сообщения и поток. Передача управления производятся с помощью сообщений каналов связи . В сообщении каналы связи, часть данных каждого пакета имеет какое-то значение для системного программного обеспечения USB.
Поток каналов связи используется для прерывания, изохронных и объемных переводов. В потоке каналов связи, части данных пакетов не имеют определенного смысла USB: данные просто передаются между клиентским программным обеспечением и устройством.
Протокол обмена по шине
Передача информации по шине, называются операциями. В любое время хост-контроллер, имеет список операций, которые ждут, чтобы их задействовали. Транзакция начинается, когда контроллер посылает пакет, описывающий тип и направление , 7-битный USB-адрес устройства и номер конечной точки. Этот пакет называется маркер пакетов.

P.P.S. Если у Вас есть вопросы, желание прокомментировать или поделиться опытом, напишите, пожалуйста, в комментариях ниже.

Alx
2012-10-09 13:53:56
Очень интересно и позавательно!!!
Читайте ранее:
Как работают USB порты на компьютере-часть I.

Сегодня, пользователь ПК знает, что есть возможность подключить свои системы широкого спектра внешних устройств: не только принтеры и модемы, но...

Закрыть