У вас большие запросы!
Точнее, от вашего браузера их поступает слишком много, и сервер VK забил тревогу.
Эта страница была загружена по HTTP, вместо безопасного HTTPS, а значит телепортации обратно не будет.
Обратитесь в поддержку сервиса.
Вы отключили сохранение Cookies, а они нужны, чтобы решить проблему.
Почему-то страница не получила всех данных, а без них она не работает.
Обратитесь в поддержку сервиса.
Вы вернётесь на предыдущую страницу через 5 секунд.
Вернуться назад
У вас большие запросы!
Точнее, от вашего браузера их поступает слишком много, и сервер VK забил тревогу.
Эта страница была загружена по HTTP, вместо безопасного HTTPS, а значит телепортации обратно не будет.
Обратитесь в поддержку сервиса.
Вы отключили сохранение Cookies, а они нужны, чтобы решить проблему.
Почему-то страница не получила всех данных, а без них она не работает.
Обратитесь в поддержку сервиса.
Вы вернётесь на предыдущую страницу через 5 секунд.
Вернуться назад
4.1. Шина usb
USB(UniversalSerialBus— универсальная последовательная шина) является промышленным стандартом расширения архитектурыPC, ориентированным на интеграцию с телефонией и устройствами бытовой электроники. Версия 1.0 была опубликована в начале 1996 года, большинство устройств поддерживает версию 1.1, которая вышла осенью 1998 года, — в ней были устранены обнаруженные проблемы первой редакции. Весной 2000 года опубликована спецификация USB 2.0, в которой предусмотрено 40-кратное повышение пропускной способности шины. Первоначально (в версиях 1.0 и 1.1) шина обеспечивала две скорости передачи информации:полная скорость FS(fullspeed) — 12 Мбит/с инизкая скорость LS (LowSpeed) — 1,5 Мбит/с. В версии 2.0 определена еще ивысокая скорость HS (HighSpeed) — 480 Мбит/с, которая позволяет существенно расширить круг устройств, подключаемых к шине. В одной и той же системе могут присутствовать и одновременно работать устройства со всеми тремя скоростями. Шина с использованием промежуточных хабов позволяет соединять устройства, удаленные от компьютера на расстояние до 25 м. Подробную и оперативную информацию по USB (на английском языке) можно найти по адресу http://www.usb.org.
4.1.1. Организация шины usb
USB обеспечивает обмен данными между хост-компьютером и множеством периферийных устройств (ПУ). Согласно спецификации USB, устройства (devices) могут являться хабами, функциями или их комбинацией. Устройство-дга^ (hub)
только обеспечивает дополнительные точки подключения устройств к шине. Устройство-функция (function)USBпредоставляет системе дополнительные функциональные возможности, например подключение кISDN, цифровой джойстик, акустические колонки с цифровым интерфейсом и т. п.Комбинированное устройство(compounddevice), содержащее несколько функций, представляется как хаб с подключенными к нему несколькими устройствами. Устройство USB должно иметь интерфейс USB, обеспечивающий полную поддержку протокола USB, выполнение стандартных операций (конфигурирование и сброс) и предоставление информации, описывающей устройство. Работой всей системы USB управляетхост-контроллер(hostcontroller), являющийся программно-аппаратной подсистемой ^осот-компьютера. Шина позволяет подключать, конфигурировать, использовать и отключать устройства во время работы хоста и самих устройств.
Шина USB является хост-центрической: единственным ведущим устройством, которое управляет обменом, является хост-компьютер, а все присоединенные к ней периферийные устройства — исключительно ведомые. Физическая топология шины USB— многоярусная звезда. Ее вершиной является хост-контроллер, объединенный с корневым хабом (roothub), как правило, двухпортовым. Хаб является устройством-разветвителем, он может являться и источником питания для подключенных к нему устройств. К каждому порту хаба может непосредственно подключаться периферийное устройство или промежуточный хаб; шина допускает до 5 уровней каскадирования хабов (не считая корневого). Поскольку комбинированные устройства внутри себя содержат хаб, их подключение к хабу 6-го яруса уже недопустимо. Каждый промежуточный хаб имеет нескольконисходящих (downstream) портов для подключения периферийных устройств (или нижележащих хабов) и одинвосходящий(upstream) порт для подключения к корневому хабу или нисходящему порту вышестоящего хаба. Логическая топологияUSB— просто звезда: для хост-контроллера хабы создают иллюзию непосредственного подключения каждого устройства. В отличие от шин расширения (ISA,PCI,PCCard), где программа взаимодействует с устройствами посредством обращений по физическим адресам ячеек памяти, портов ввода-вывода, прерываниям и каналамDMA, взаимодействие приложений с устройствами USB выполняется только через программный интерфейс. Этот интерфейс, обеспечивающий независимость обращений к устройствам, предоставляется системным ПО контроллера USB.
В отличие от громоздких дорогих шлейфов параллельных шин АТА и особенно шины SCSIс ее разнообразием разъемов и сложностью правил подключения, кабельное хозяйство USB простое и изящное. Кабель USB содержит одну экранированную витую пару с импедансом 90 Ом для сигнальных цепей и одну неэкранированную для подачи питания (+5 В), допустимая длина сегмента — до 5 м. Для низкой скорости может использоваться невитой неэкранированный кабель длиной до 3 м (он дешевле). Система кабелей и коннекторов USB не дает возможности ошибиться при подключении устройств (рис. 4.1, а и б). Для распознавания разъема USB на корпусе устройства ставится стандартное символическое обозначение (рис. 4.1, в). Гнезда типа «А» устанавливаются только на нисходящих портах хабов, вилки типа «А» — на шнурах периферийных устройств или восходя-
щих портов хабов. Гнезда и вилки типа «В» используются только для шнуров, отсоединяемых от периферийных устройств и восходящих портов хабов (от «мелких» устройств — мышей, клавиатур и т. п. кабели, как правило, не отсоединяются). Кроме стандартных разъемов, показанных на рисунке 4.1, применяются и мини-атюрные варианты (рис. 4.2, в, г, д).Хабы и устройства обеспечивают возможность «горячего» подключения и отключения. Для этого разъемы обеспечивают более раннее соединение и позднее отсоединение питающих цепей по отношению к сигнальным, кроме того, предусмотрен протокол сигнализации подключения и отключения устройств. Назначение выводов разъемовUSBприведено в табл. 4.1, нумерация контактов показана на рис. 4.2. Все кабели USB «прямые» — в них соединяются одноименные цепи разъемов.



В шине используется дифференциальный способ передачи сигналов D+ иD- по двум проводам. Скорость устройства, подключенного к конкретному порту, определяется хабом по уровням сигналов на линиях D+ и D-, смещаемых нагрузочными резисторами приемопередатчиков: устройства с низкой скоростью «подтягивают» к высокому уровню линию D-, с полной — D+. Подключение устройства HS
определяется на этапе обмена конфигурационной информацией — физически на первое время устройство HSдолжно подключаться какFS. Передача по двум проводам вUSBне ограничивается дифференциальными сигналами. Кроме дифференциального приемника, каждое устройство имеет линейные приемники сигналовD+ иD-, а передатчики этих линий управляются индивидуально. Это позволяет различать более двух состояний линии, используемых для организации аппаратного интерфейса.
Введение высокой скорости (480 Мбит/с — всего в 2 раза медленнее, чем GigabitEthernet) требует тщательного согласования приемопередатчиков и линии связи. На этой скорости может работать только кабель с экранированной витой парой для сигнальных линий. Для высокой скорости аппаратура USB должна иметь дополнительные специальные приемопередатчики. В отличие от формирователей потенциала для режимов FS иLS, передатчики HS являются источниками тока, ориентированными на наличие резисторов-терминаторов на обеих сигнальных линиях.
Скорость передачи данных (LS,FSили HS) выбирается разработчиком периферийного устройства в соответствии с потребностями этого устройства. Реализация низких скоростей для устройства обходится несколько дешевле (приемопередатчики проще, а кабель для LS может быть и неэкранированной невитой парой). Если в «старой» USB устройства можно было, не задумываясь, подключать в любой свободный порт любого хаба, то в USB 2.0 при наличии устройств и хабов разных версий появились возможности выбора между оптимальными, неоптимальными и неработоспособными конфигурациями.
Хабы USB 1.1 обязаны поддерживать скорости FS и LS, скорость подключенного к хабу устройства определяется автоматически по разности потенциалов сигнальных линий. Хабы USB 1.1 при передаче пакетов являются просто повторителями, обеспечивающими прозрачную связь периферийного устройства с контроллером. Передачи на низкой скорости довольно расточительно расходуют потенциальную пропускную способность шины: за то время, на которое они занимают шину, высокоскоростное устройство может передать данных в 8 раз больше. Но ради упрощения и удешевления всей системы на эти жертвы пошли, а за распределением полосы между разными устройствами следит планировщик транзакций хост-контроллера.
В спецификации 2.0 скорость 480 Мбит/с должна уживаться с прежними, но при таком соотношении скоростей обмены на FS и LS «съедят» возможную полосу пропускания шины без всякого «удовольствия» (для пользователя); Чтобы этого не происходило, хабы USB 2.0 приобретают черты коммутаторов пакетов. Если к порту такого хаба подключено высокоскоростное устройство (или аналогичный хаб), то хаб работает в режиме повторителя, и транзакция с устройством на HS занимает весь канал до хост-контроллера на все время своего выполнения. Если же к порту хаба USB 2.0 подключается устройство или хаб 1.1, то по части канала до контроллера пакет проходит на скорости HS, запоминается в буфере хаба, а к старому устройству или хабу идет уже на его «родной» скорости FS или LS. При этом функции контроллера и хаба 2.0 (включая и корневой) усложняются, поскольку транзакции на FS и LS расщепляются и между их частями вклиниваются
высокоскоростные передачи. От старых (1.1) устройств и хабов все эти тонкости скрываются, что и обеспечивает обратную совместимость. Вполне понятно, что устройство USB2.0 сможет реализовать высокую скорость, только если по пути от него к хост-контроллеру (тоже 2.0) будут встречаться только хабы 2.0. Если это правило нарушить и между ним и контроллером 2.0 окажется старый хаб, то связь может быть установлена только в режимеFS. Если такая скорость устройство и клиентское ПО устроит (к примеру, для принтера и сканера это выльется только в большее время ожидания пользователя), то подключенное устройство работать будет, но появится сообщение о неоптимальной конфигурации соединений. По возможности ее (конфигурацию) следует исправить, благо переключения кабелей USB можно выполнять на ходу. Устройства и ПО, критичные к полосе пропускания шины, в неправильной конфигурации работать откажутся и категорично потребуют переключении. Если же хост-контроллер старый, то все преимущества USB 2.0 окажутся недоступными пользователю. В этом случае придется менять хост-контроллер (менять системную плату или приобретать PCI-карту контроллера). Контроллер и хабы USB 2.0 позволяют повысить суммарную пропускную способность шины и для старых устройств. Если устройства FS подключать к разным портам хабов USB 2.0 (включая и корневой), то для них суммарная пропускная способность шины USB возрастет по сравнению с 12 Мбит/с во столько раз, сколько используется портов высокоскоростных хабов.
Хаб является ключевым элементом системы РпР в архитектуре USB. Хаб выполняет множество функций:
• обеспечивает физическое подключение устройств, формируя и воспринимая сигналы в соответствии со спецификацией шины на каждом из своих портов;
• управляет подачей питающего напряжения на нисходящие порты, причем предусматривается установка ограничения на ток, потребляемый каждым портом;
• отслеживает состояние подключенных к нему устройств, уведомляя хост об изменениях;
• обнаруживает ошибки на шине, выполняет процедуры восстановления и изолирует неисправные сегменты шины;
• обеспечивает связь сегментов шины, работающих на разных скоростях.
Хаб следит за сигналами, генерируемыми устройствами. Неисправное устройство может не вовремя «замолчать» (потерять активность) или, наоборот, что-то «бормотать» (babble). Эти ситуации отслеживает ближайший к устройству хаб и запрещает восходящие передачи от такого устройства не позже, чем по границе (мик-ро)кадра. Благодаря бдительности хабов эти ситуации не позволят неисправному устройству заблокировать всю шину.
Каждый из нисходящих (downstream) портов может быть разрешен или запрещен, а также сконфигурирован на высокую, полную или ограниченную скорость обмена. Хабы могут иметьсветовые индикаторысостояния нисходящих портов, управляемые автоматически (логикой хаба) или программно (хост-контроллером). Индикатор может представлять собой пару светодиодов — зеленый и желтый
(янтарный) или один светодиод с изменяющимся цветом. Состояние порта представляется следующим образом:
• не светится — порт не используется;
• зеленый — нормальная работа;
• зеленый мигающий — программа требует внимания пользователя (Softwareattention);
• желтый мигающий — аппаратура требует внимания пользователя (Hardwareattention).
Восходящий (upstream) порт хаба конфигурируется и внешне представляется как полноскоростной или высокоскоростной (только дляUSB2.0). При подключении порт хаба USB 2.0 обеспечивает терминацию по схемеFS, в режимHSон переводится только по команде контроллера.
На рис. 4.3 приведен вариант соединения устройств и хабов, где высокоскоростным устройством USB 2.0 является только телекамера, передающая видеопоток без компрессии. Подключение принтера и сканера USB 1.1 к отдельным портам хаба 2.0, да еще и развязка их с аудиоустройствами, позволяет им использовать полосу шины по 12 Мбит/с каждому. Таким образом, из общей полосы 480 Мбит/с на «старые» устройства (USB 1.0) выделяется 3х12=36 Мбит/с. Вообще-то можно говорить и о полосе в 48 Мбит/с, поскольку клавиатура и мышь подключены к отдельному порту хост-контроллера USB 2.0, но эти устройства «освоят» только малую толику из выделенных им 12 Мбит/с. Конечно, можно подключать клавиатуру и мышь к порту внешнего хаба, но с точки зрения повышения надежности системные устройства ввода лучше подключать наиболее коротким (по количеству кабелей, разъемов и промежуточных устройств) способом. Неудачной конфигурацией было бы подключение принтера (сканера) к хабу USB 1.1 — во время работы с аудиоустройствами (если они высокого качества) скорость печати (сканирования) будет падать. Неработоспособной конфигурацией явилось бы подключение телекамеры к порту хаба USB 1.1.
При планировании соединений следует учитывать способ питания устройств: устройства, питающиеся от шины, как правило, подключают к хабам, питающимся от сети. К хабам, питающимся от шины, подключают лишь маломощные устройства — так, к клавиатуре USB, содержащей внутри себя хаб, подключают мышь USB и другие устройства-указатели (трекбол, планшет).
Управление энергопотреблениемявляется весьма развитой функцией USB. Для устройств, питающихся от шины, мощность ограничена. Любое устройство при подключении не должно потреблять от шины ток, превышающий 100 мА. Рабочий ток (не более 500 мА) заявляется в конфигурации. Если хаб не может обеспечить устройству заявленный ток, оно не конфигурируется и, следовательно, не может быть использовано.
Устройство USB должно поддерживать режим приостановки(suspendedmode), в котором его потребляемый ток не превышает 500 мкА. Устройство должно автоматически приостанавливаться при прекращении активности шины.

Возможность удаленного пробуждения(remotewakeup) позволяет приостановленному устройству подать сигнал хост-компьютеру, который тоже может находиться в приостановленном состоянии. Возможность удаленного пробуждения описывается в конфигурации устройства. При конфигурировании эта функция может быть запрещена.
Компьютерная Энциклопедия
USB (Universal Serial Bus — универсальная последовательная шина) является промышленным стандартом расширения архитектуры PC, ориентированным на интеграцию с телефонией и устройствами бытовой электроники. Версия стандарта 1.0 была опубликована в начале 1996 года, большинство устройств поддерживают стандарт 1.1, который вышел осенью 1998 года, — в нем были устранены обнаруженные проблемы первой редакции. Весной 2000 года опубликована спецификация USB 2.0, в которой предусмотрено 40-кратное увеличение пропускной способности шины. Первоначально (в версиях 1.0 и 1.1) шина обеспечивала две скорости передачи информации: полная скорость, FS (full speed) — 12 Мбит/с и низкая скорость, LS (low speed) — 1,5 Мбит/с. В версии 2.0 определена еще и высокая скорость, HS (high speed) — 480 Мбит/с, что позволяет существенно расширить круг устройств, подключаемых к шине. В одной и той же системе могут присутствовать и одновременно работать устройства со всеми тремя скоростями. Шина позволяет с использованием промежуточных хабов соединять устройства, удаленные от компьютера на расстояние до 25 м. Подробную и оперативную информацию по USB (на английском языке) можно найти на сайте http://www.usb.org. Разработку устройств и их классификацию и стандартизацию координирует USB-IF (USB Implementers Forum, Inc.).
Шина USB обеспечивает обмен данными между хост-компьютером и множеством периферийных устройств (ПУ). USB является единой централизованной аппаратно-программной системой массового обслуживания множества устройств и множества прикладных программных процессов. Связь программных процессов со всеми устройствами обеспечивает хост-контроллер с многоуровневой программной поддержкой. Этим USB существенно отличается от традиционных периферийных интерфейсов (портов LPT, COM, GAME, клавиатуры, мыши и т. п.), сравнение этих типов подключений приводится в таблице.
Таблица. Сравнение шины USB с традиционными периферийными интерфейсами
| Традиционные интерфейсы (COM, LPT, Game…) | Шина USB |
| Подключение каждого устройства в общем случае требует присутствия собственного контроллера (адаптера) 1 | Все устройства подключены через один хостконтроллер |
| Каждый контроллер занимает свои ресурсы (области в пространстве памяти, ввода/вывода, а также запросы прерывания) | Ресурсы занимает только хост-контроллер |
| Малое количество устройств, которые возможно одновременно подключить к компьютеру | Возможность подключения до 127 устройств |
| Драйверы устройств могут обращаться непосредственно к контроллерам своих устройств, независимо друг от друга | Драйверы устройств обращаются только к общему драйверу хост-контроллера |
| Независимость драйверов оборачивается непредсказуемостью результата одновременной работы с множеством устройств, отсутствием гарантий качества обслуживания (возможность задержек и уменьшения скорости передачи) для различных устройств |
Централизованный планируемый обмен обеспечивает гарантии качества обслуживания, что позволяет передавать мультимедийные изохронные данные наряду с обычным асинхронным обменом |
| Разнообразие интерфейсов, разъемов и кабелей, специфичных для каждого типа устройств | Единый удобный и дешевый интерфейс для подключения устройств всех типов. Возможность выбора скорости работы устройства (1,5–15–480 Мбит/с) в зависимости от потребности |
| Отсутствие встроенных средств обнаружения подключения/отключения и идентификации устройств, сложность поддержки PnP | Возможность «горячего» подключения/отключения устройств, полная поддержка PnP, динамическое конфигурирование |
| Отсутствие средств контроля ошибок | Встроенные средства обеспечения надежной передачи данных |
| Отсутствие штатного питания устройств | Возможность питания устройств от шины, а также наличие средств управления энергопотреблением |
1 — Возможностью подключения к одному контроллеру множества устройств обладает и шина SCSI, но ее параллельный интерфейс по сравнению с USB слишком дорог, громоздок и более ограничен в топологии.
Основные понятия
Подробности Родительская категория: USB Категория: Организация шины USB
Архитектура USB допускает четыре базовых типа передач данных между хостом и периферийными устройствами:
- изохронные передачи (isochronous transfers) — потоковые передачи в реальном времени, занимающие предварительно согласованную часть пропускной способности шины с гарантированным временем задержки доставки. На полной скорости (FS) можно организовать один канал с полосой до 1,023 Мбайт/с (или два по 0,5 Мбайт/с), заняв 70 % доступной полосы (остаток можно занять и менее емкими каналами). На высокой скорости (HS) можно получить канал до 24 Мбайт/с (192 Мбит/с). Надежность доставки не гарантируется — в случае обнаружения ошибки изохронные данные не повторяются, недействительные пакеты игнорируются. Шина USB позволяет с помощью изохронных передач организовывать синхронные соединения между устройствами и прикладными программами. Изохронные передачи нужны для потоковых устройств: видеокамер, цифровых аудиоустройств (колонки USB, микрофон), устройств воспроизведения и записи аудио- и видеоданных (CD и DVD). Видеопоток (без компрессии) шина USB способна передавать только на высокой скорости;
- прерывания (interrupts) — передачи спонтанных сообщений, которые должны выполняться с задержкой не более, чем того требует устройство. Предел времени обслуживания устанавливается в диапазоне 10–255 мс для низкой и 1–255 мс для полной скорости. На высокой скорости можно заказать и 125 мкс. Доставка гарантирована, при случайных ошибках обмена выполняется повтор, правда, при этом время обслуживания увеличивается. Прерывания используются, например, при вводе символов с клавиатуры или для передачи сообщений о перемещениях мыши. Прерываниями можно передавать данные и к устройству (как только устройство сигнализирует о потребности в данных, хост своевременно их передает). Размер сообщения может составлять 0–8 байт для низкой скорости, 0–64 байт — для полной и 0–1024 байт — для высокой скорости передачи;
- передачи массивов данных (bulk data transfers) — это передачи без каких-либо обязательств по своевременности доставки и по скорости. Передачи массивов могут занимать всю полосу пропускания шины, свободную от передач других типов. Приоритет этих передач самый низкий, они могут приостанавливаться при большой загрузке шины. Доставка гарантированная — при случайной ошибке выполняется повтор. Передачи массивов уместны для обмена данными с принтерами, сканерами, устройствами хранения и т. п.;
- управляющие передачи (control transfers) используются для конфигурирования устройств во время их подключения и для управления устройствами в процессе работы. Протокол обеспечивает гарантированную доставку данных и подтверждение устройством успешности выполнения управляющей команды. Управляющая передача позволяет подать устройству команду (запрос, возможно, и с дополнительными данными) и получить на него ответ (подтверждение или отказ от выполнения запроса и, возможно, данные). Только управляющие передачи на USB обеспечивают синхронизацию запросов и ответов; в остальных типах передач явной синхронизации потока ввода с потоком вывода нет.
Аппаратная часть USB включает:
- периферийные устройства USB, несущие полезные функции (USB-functions);
- хост-контроллер (Host Controller), обеспечивающий связь шины с центром компьютера, объединенный с корневым хабом (Root Hub), обеспечивающим точки подключения устройств USB. Существует два варианта хост-контроллеров USB 1.x — UHC (Universal Host Controller) и OHC (Open Host Controller), поддерживающие скорости FS/LS; высокую скорость шины USB 2.0 (HS и только) поддерживает EHC (Enhanced Host Controller);
- хабы USB (USB Hubs), обеспечивающие дополнительные точки подключения устройств;
- кабели USB, соединяющие устройства с хабами.
Программная часть USB включает:
- клиентское ПО (CSw, Client Software) — драйверы устройств USB, обеспечивающие доступ к устройствам со стороны прикладного ПО. Эти драйверы взаимодействуют с устройствами только через программный интерфейс с общим драйвером USB (USBD). Непосредственного обращения к каким-либо регистрам аппаратных средств драйверы устройств USB не выполняют;
- драйвер USB (USBD, USB Driver), «заведующий» всеми USB-устройствами системы, их нумерацией, конфигурированием, предоставлением служб, распределением пропускной способности шины, мощности питания и т. п.;
- драйвер хост-контроллера (HCD, Host Controller Driver), преобразующий запросы ввода/вывода в структуры данных, размещенные в коммуникационной области оперативной памяти, и обращающийся к регистрам хост-контроллера. Хост-контроллер выполняет физические транзакции, руководствуясь этими структурами данных.
Драйверы USBD и HCD составляют хост-часть ПО USB; спецификация USB очерчивает круг их задач, но не описывает интерфейс между ними. Физическое устройство USB должно иметь интерфейс USB, обеспечивающий полную поддержку протокола USB, выполнение стандартных операций (конфигурирование и сброс) и предоставление информации, описывающей устройство. Физические устройства USB могут быть комбинированными (compound devices): включать в себя несколько устройств-функций, подключенных к внутреннему хабу, а также предоставлять своим внутренним хабом дополнительные внешние точки подключения.
Работой всех устройств шины USB управляет хост-контроллер (host controller), являющийся программно-аппаратной подсистемой хост-компьютера. Хост-контроллер является интеллектуальным устройством шины PCI или составной частью «южного» хаба (моста) системной платы, интенсивно взаимодействующим с оперативной памятью.
Физическая топология шины USB — многоярусная звезда (см. рисунок, а). Ее вершиной является хост-контроллер, объединенный с корневым хабом (root hub). Хаб является устройством-разветвителем, он может служить и источником питания для подключенных к нему устройств. К каждому порту хаба может непосредственно подключаться периферийное устройство или промежуточный хаб; шина допускает до пяти уровней (ярусов) каскадирования хабов (не считая корневого). Поскольку комбинированные устройства содержат внутри себя хаб, их подключение к хабу пятого яруса уже недопустимо. Каждый промежуточный хаб имеет несколько нисходящих (downstream) портов для подключения периферийных устройств (или нижележащих хабов) и один восходящий (upstream) порт для подключения к корневому хабу или нисходящему порту вышестоящего хаба.
Логическая топология USB — звезда. Хабы (включая корневой) создают иллюзию непосредственного подключения каждого логического устройства к хост-контроллеру (см. рисунок ниже, б). В этой звезде устанавливаются сугубо подчиненные отношения по системе опроса-ответа: хост-контроллер по своей инициативе передает данные к выбранному устройству или принимает их. Устройство по своей инициативе передавать данные не может; непосредственные передачи данных между устройствами невозможны. Устройство по своей инициативе может лишь сигнализировать о «пробуждении» (wakeup), для чего используется специальная сигнализация, но не передача данных.

Физический интерфейс USB прост и изящен. Конструкция кабелей и коннекторов USB не дает возможности ошибиться при подключении устройств (см. рисунок ниже, а и б). Для распознавания разъема USB на корпусе устройства ставится стандартное символическое обозначение (см. рисунок ниже, в). Гнезда типа «A» устанавливаются только на нисходящих портах хабов, вилки типа «A» — на шнурах периферийных устройств или восходящих портов хабов. Гнезда и вилки типа «B» используются только для шнуров, отсоединяемых от периферийных устройств и восходящих портов хабов (от «мелких» устройств — мышей, клавиатур и т. п. кабели, как правило, не отсоединяются). Для малогабаритных устройств имеются разъемы mini-B, а для поддержки OTG (On-the-Go) имеются и вилки mini-A, и розетки miniAB. Хабы и устройства обеспечивают возможность «горячего» подключения и отключения с сигнализацией об этих событиях хосту.
При планировании соединений следует учитывать способ питания устройств: устройства, питающиеся от шины, как правило, подключают к хабам, питающимся от сети. К хабам, питающимся от шины, подключают лишь маломощные устройства — так, к клавиатуре USB, содержащей внутри себя хаб, подключают мышь USB и другие устройства-указатели (трекбол, планшет).

Логическое устройство USB представляет собой набор независимых конечных точек (Endpoint, EP), с которыми хост-контроллер (и клиентское ПО) обменивается информацией. Каждому логическому устройству USB (как функции, так и хабу) конфигурационная часть ПО хоста назначает свой адрес (1–127), уникальный на данной шине USB. Каждая конечная точка логического устройства идентифицируется своим номером (0–15) и направлением передачи (IN — передача к хосту, OUT — от хоста). Точки IN4 и OUT4, к примеру, представляют собой разные конечные точки, с которыми могут общаться даже модули клиентского ПО. Набор конечных точек зависит от устройства, но всякое устройство USB обязательно имеет двунаправленную конечную точку 0 (EP0), через которую осуществляется его общее управление. Для прикладных целей используются конечные точки с номерами 1–15 (1–2 для низкоскоростных устройств). Адрес устройства, номер и направление конечной точки однозначно идентифицируют приемник или источник информации при обмене хост-контроллера с устройствами USB. Каждая конечная точка имеет набор характеристик, описывающих поддерживаемый тип передачи данных (изохронные данные, массивы, прерывания, управляющие передачи), размер пакета, требования к частоте обслуживания.
Устройство может выполнять несколько различных функциональных задач: например, привод CD-ROM может обеспечивать проигрывание аудиодисков и работать как устройство хранения данных. Для решения каждой задачи в устройстве определяется интерфейс — набор конечных точек, предназначенных для выполнения данной задачи, и правила их использования. Таким образом, каждое устройство должно обеспечивать один или несколько интерфейсов. Наличие нескольких интерфейсов позволяет нескольким драйверам, каждый из которых обращается только к своему интерфейсу (представляющему часть устройства USB), работать с одним и тем же устройством USB. Каждый интерфейс может иметь один или несколько альтернативных вариантов (альтернативных установок — alternate settings), из которых в данный момент активным может быть только один. Варианты различаются наборами (возможно, и характеристиками) используемых конечных точек.
Набор одновременно поддерживаемых интерфейсов составляет конфигурацию устройства. Устройство может иметь одну или несколько возможных конфигураций, из которых на этапе конфигурирования хост выбирает одну, делая ее активной. От выбранной конфигурации зависит доступная функциональность, и зачастую — потребляемая мощность. Пока устройству не назначен номер выбранной конфигурации, оно не может функционировать в прикладном смысле и ток потребления от шины не должен превышать 100 мА. Хост выбирает конфигурацию исходя из доступности всех ресурсов, затребованных данной конфигурацией, включая и ток потребления от шины.
Запросы, пакеты и транзакции
Подробности Родительская категория: USB Категория: Организация шины USB
Модель передачи данных
Каждая единица клиентского ПО (обычно представляемая драйвером) связывается с одним интерфейсом своего устройства (функции) монопольно и независимо (см. рисунок ниже). Связи на этом рисунке обозначают коммуникационные каналы (communication pipes), которые устанавливаются между драйверами устройств и их конечными точками. Каналы устанавливаются только с конечными точками устройств, относящимися к выбранным (из альтернативных) вариантам интерфейсов активной конфигурации. Другие конечные точки недоступны.

Запросы, пакеты и транзакции
Для передачи или приема данных клиентское ПО посылает к каналу пакет запроса ввода/вывода — IRP (Input/Output Request Packet) и ждет уведомления о завершении его отработки. Формат IRP определяется реализацией драйвера USBD в конкретной ОС. В IRP имеются только сведения о запросе (местоположение буфера передаваемых данных в оперативной памяти и длина передачи); от свойств конкретного текущего подключения (скорость, допустимый размер пакета) драйвер устройства абстрагируется. Отработкой запроса в виде транзакций на шине USB занимается драйвер USBD; при необходимости он разбивает на части длинные запросы (пакеты), пригодные для передачи за одну транзакцию. Транзакция на шине USB — это последовательность обмена пакетами между хостом и ПУ, в ходе которой может быть передан или принят один пакет данных (возможны транзакции, в которых данные не передаются). Отработка запроса считается завершенной, когда успешно выполняются все связанные с ним транзакции. «Временные трудности», встречающиеся при их выполнении (неготовность к обмену данными), до сведения клиентского драйвера не доводятся — ему остается только ждать завершения обменов (или выхода по тайм-ауту). Однако устройство может сигнализировать о серьезных ошибках (ответом STALL), что приводит к аварийному завершению запроса, о чем уведомляется клиентский драйвер. В этом случае отбрасываются и все последующие запросы к данному каналу. Возобновление работы с данным каналом возможно лишь после явного уведомления об обработке ошибочной ситуации, которое драйвер устройства делает с помощью специального запроса (тоже вызова USBD).
Длинные запросы разбиваются на транзакции так, чтобы использовать максимальный размер пакета. Последний пакет с остатком может оказаться короче максимального размера. Хост-контроллер имеет средства обнаружения приема от устройства «неполновесного» пакета, размер которого меньше ожидаемого. В запросе IRP указывается, следует ли особым образом реагировать на это событие. Особая реакция может быть двоякой:
- считать короткий пакет разделителем, указывающим на конец блока данных. При этом данный IRP завершается нормально и исполняются следующие запросы к данному каналу;
- считать короткий пакет признаком ошибки, по которому канал останавливается (все его последующие ожидающие запросы сбрасываются).
При передаче массивов использование укороченных пакетов в качестве разделителей наиболее естественно. Таким образом, например, в одном из вариантов протоколов для устройств хранения данных укороченные пакеты известной длины используются в качестве управляющих.
Каналы
Подробности Родительская категория: USB Категория: Организация шины USB
Коммуникационные каналы USB разделяются на два типа:
- потоковый канал (streaming pipe) доставляет данные от одного конца канала к другому, он всегда однонаправленный. Один и тот же номер конечной точки может использоваться для двух разных потоковых каналов — ввода и вывода. Передачи данных в разных потоковых каналах друг с другом не синхронизированы. Это означает, что запросы клиентских драйверов для разных каналов, поставленные в определенном порядке друг относительно друга, могут выполняться другом порядке. Запросы для одного канала будут исполняться строго в порядке их поступления; если во время исполнения какого-либо запроса происходит серьезная ошибка (об этом устройство сообщает ответом STALL), поток останавливается. Поток может реализовывать передачи массивов, изохронные и прерывания. Потоки несут данные произвольного формата, определенного разработчиком устройства (но не спецификацией USB). В потоках типично использование транзакций, в которых длина поля данных соответствует максимальному размеру, допустимому для его конечной точки. Если требуется разделение потока на логические блоки данных, то это можно сделать, применяя в качестве признака конца блока укороченные пакеты. Если оказывается, что блок укладывается в целое число пакетов максимального размера, в качестве разделителя можно использовать пакеты с нулевой длиной поля данных;
- канал сообщений (message pipe) является двунаправленным. Передачи сообщений во встречных направлениях синхронизированы друг с другом и строго упорядочены. На каждое сообщение противоположная сторона обязана ответить подтверждением его приема и отработки. Последующее сообщение не может быть послано до обработки предыдущего, но при отработке ошибок возможен сброс необслуженных сообщений. Форматы сообщений определяются спецификацией USB: имеется набор стандартных сообщений (запросов и ответов) и зарезервированных идентификаторов сообщений, формат которых определяется разработчиком устройства или интерфейса.
С каналами связаны характеристики, соответствующие конечной точке (полоса пропускания, тип сервиса, размер буфера и т. п.). Каналы организуются при конфигурировании устройств USB. Полоса пропускания шины делится между всеми установленными каналами. Выделенная полоса закрепляется за каналом, и если установление нового канала требует такой полосы, которая не вписывается в уже существующее распределение, запрос на выделение канала отвергается.
Каналы различаются и по назначению:
- основной канал сообщений (Default pipe, он же Control pipe 0), владельцем которого является USBD, используется для доступа к конфигурационной информации всех устройств. Этот канал устанавливается с нулевой конечной точкой, EP0 (endpoint zero), которая у всех устройств всегда поддерживает только управляющие передачи;
- клиентские каналы (Client pipes), владельцами которых являются драйверы устройств. По этим каналам могут передаваться как потоки, так и сообщения; они поддерживают любые типы передач USB (изохронные, прерывания, массивы и управление).
Интерфейс устройства, с которым работает клиентский драйвер, представляет собой связку клиентских каналов (pipe’s bundle). Для этих каналов драйверы устройств являются единственными источниками и потребителями передаваемых данных.
Владельцем основных каналов сообщений всех устройств является драйвер USB (USBD); по этим каналам передается информация конфигурирования, управления и состояния. Основным каналом сообщений может пользоваться и клиентский драйвер для текущего управления и чтения состояния устройства, но опосредованно через USBD. Например, сообщения, передаваемые по основному каналу, используются драйвером принтера USB для опроса текущего состояния (передаются три признака в формате регистра состояния LPT-порта: ошибка ввода/вывода, принтер выбран, отсутствие бумаги).
Кадры и микрокадры
Подробности Родительская категория: USB Категория: Организация шины USB
Хост организует обмены с устройствами согласно своему плану распределения ресурсов. Для этого хост-контроллер циклически с периодом 1 мс формирует кадры (frames), в которые укладываются все запланированные транзакции (cм. рисунок ниже). Каждый кадр начинается с посылки пакета-маркера SOF (Start Of Frame), который является синхронизирующим сигналом для изохронных устройств, а также для хабов. Кадры нумеруются последовательно, в маркере SOF передаются 11 младших бит номера кадра. В режиме HS каждый кадр делится на 8 микрокадров, и пакеты SOF передаются в начале каждого микрокадра (с периодом 125 мкс). При этом во всех восьми микрокадрах SOF несет один и тот же номер кадра; новое значение номера кадра передается в нулевом микрокадре. В каждом микрокадре может быть выполнено несколько транзакций, их допустимое число зависит от скорости, длины поля данных каждой из них, а также от задержек, вносимых кабелями, хабами и устройствами. Все транзакции кадров должны быть завершены до начала интервала времени EOF (End of Frame). Период (частота) генерации микрокадров может немного варьироваться с помощью специального регистра хост-контроллера, что позволяет подстраивать частоту для изохронных передач.

Кадрирование используется и для обеспечения живучести шины. В конце каждого микрокадра выделяется интервал времени EOF (End Of Frame), на время которого хабы запрещают передачу по направлению к контроллеру. Если хаб обнаружит, что с какого-то порта в это время ведется передача данных (к хосту), этот порт отключается, изолируя «болтливое» устройство, о чем информируется USBD.
Счетчик микрокадров в хост-контроллере используется как источник индекса при обращении к таблице дескрипторов кадров. Обычно драйвер USB составляет таблицу дескрипторов для 1024 последовательных кадров1, к которой он обращается циклически. С помощью этих дескрипторов хост планирует загрузку кадров так, чтобы кроме запланированных изохронных транзакций и прерываний в них всегда находилось место для транзакций управления. Свободное время кадров может заполняться передачами массивов. Спецификация USB позволяет занимать под периодические транзакции (изохронные и прерывания) до 90% пропускной способности шины, то есть времени в каждом микрокадре.