PersCom — Компьютерная Энциклопедия Компьютерная Энциклопедия

USB

Хабы USB

Порты

Со стороны восходящего порта хаб выглядит как и любое устройство USB. Этот порт всегда включен и разрешен, для хабов USB 1.x он всегда полноскоростной, для USB 2.0 восходящий порт всегда высокоскоростной, хотя может работать и в полноскоростном режиме.

Нисходящие порты хаба имеют комплект приемопередатчиков, изображенный в левой части того же рисунка. Хост управляет нисходящими портами и определяет их состояние, посылая запросы к контроллеру хаба. Каждый из этих портов может определить, подключено ли к нему устройство и на какой скорости оно работает. Порт может быть селективно разрешен (enabled) или запрещен (disabled) по команде от хоста; запрещение может быть и аппаратным. Аппаратно порт запрещается по событию подключения-отключения, а также по ошибке, обнаруженной хабом. Хаб игнорирует сигналы от запрещенных портов и не транслирует на них трафик. На порт может быть подана команда сброса, инициирующая соответствующую сигнализацию и уточнение типа устройства (проверяется признак HS-устройства). Также селективно любой порт может быть приостановлен (suspended), после чего для него может быть подана команда возобновления (resume) с соответствующей сигнализацией. В плане подачи питания порт может быть запитан (powered) или нет. Управление подачей питания может быть как селективным, так и общим для всех портов. Порт может оказаться не запитанным по причине срабатывания токовой защиты, причем защита тоже может быть как селективной, так и общей. В последнем случае порт может оказаться не запитанным и из-за перегрузки другого нисходящего порта. Для HS-порта возможна еще и подача команды тестирования.

Каждый нисходящий порт может находиться в одном из нижеперечисленных состояний, наблюдаемых и управляемых хостом с помощью запросов к хабу:

  • не запитан (Not powered) — на порт не подается питание по запросу Clear_Port_Power от хоста или из-за аварии питания (срабатывание токовой защиты или потеря внешнего питания). Не запитанный порт не пригоден ни к каким интерфейсным взаимодействиям. Только после подачи питания он может распознать подключение устройства и с ним взаимодействовать. Питание включается запросом Set_Port_Power;
  • не подключен (Disconnected) — порт способен только к обнаружению подключения устройства. В это состояние порт переходит из любого последующего по обнаружению отключения устройства;
  • запрещен (Disabled) — устройство подключено, но трафик и сигналы возобновления не транслируются. В это состояние порт переходит из любого последующего по запросу Port_Disable, по сигналу сброса на восходящем порте, а также при обнаружении хабом серьезной ошибки, требующей изоляции данного порта;
  • разрешен (Enabled) — устройство подключено и с ним возможен полноценный обмен данными и сигналами. В это состояние из любого другого (запитанного) порт переводится сбросом (запросом Port_Reset); кроме того, из состояния запрещен — запросом Set_Port_Enable, из состояния приостановлен — запросом Clear_Port_Suspend;
  • приостановлен (Suspended) — порт подает сигнал приостановки, трафик не транслируется, от порта воспринимается только сигнал возобновления и отключения устройства. В это состояние порт переходит по запросу Set_Port_Suspend; вернуться в состояние разрешен можно по сигналу удаленного пробуждения, запросу Clear_Port_Suspend или запросу Port_Reset.

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

Хабы могут иметь световые индикаторы состояния нисходящих портов (пару светодиодов или один двухцветный), управляемые аппаратно (логикой хаба) или программно (хост-контроллером):

  • не светится — порт не используется;
  • зеленый — нормальная работа;
  • желтый — ошибка подключенного устройства или перегрузка порта (порт автоматически отключен);
  • зеленый мигающий — программа требует внимания пользователя (Software attention);
  • желтый мигающий — аппаратура требует внимания пользователя (Hardware attention), например, мощное устройство подключено к маломощному порту.


Общая информация

Хаб является ключевым элементом системы PnP в архитектуре USB. Хаб выполняет множество функций, в частности:

  • обеспечивает физическое подключение устройств, формируя и воспринимая сигналы в соответствии со спецификацией шины на каждом из своих портов и транслируя трафик с восходящего порта на нисходящие и наоборот;
  • обеспечивает управляемую информационную связь сегментов шины, включая и связь сегментов, работающих на разных скоростях. Каждому нисходящему порту может быть селективно разрешена или запрещена трансляция трафика;
  • отслеживает состояние подключенных к нему устройств, уведомляя хост об изменениях — подключении и отключении устройств;
  • обнаруживает ошибки на шине, выполняет процедуры восстановления и изолирует неисправные сегменты шины. Благодаря бдительности хабов неисправное устройство не может заблокировать всю шину;
  • управляет энергопотреблением: подает питающее напряжение на нисходящие порты; селективно генерирует сигнал приостановки портов, транслирует эти сигналы в разных направлениях.

Структура хаба USB 2.0 приведена на рисунке. Хаб состоит из набора портов, контроллера хаба (устройство-функция USB, подключенная к внутреннему порту), повторителя, транслятора транзакций, маршрутизирующей логики портов и цепей управления подачей питания. Хаб USB 1.x проще: в нем отсутствует транслятор транзакций и логика маршрутизации нисходящих портов — они все подключаются к повторителю.