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

USB

Физический интерфейс USB

Питание от шины

Шина USB обеспечивает устройства питанием по линии Vbus с номинальным напряжением 5 В относительно линии GND. Питание подается на нисходящие порты хабов; устройства-функции могут только потреблять питание (как и хаб по своему восходящему порту). Естественно, устройства могут пользоваться и собственным питанием. Мощность питания от шины выделяют единицами по 100 мА, устройству шина может предоставить максимум 5 единиц (0,5А). При начальном подключении (до конфигурирования) устройство может потреблять не более 1 единицы (100 мА). Порт, обеспечивающий 5 единиц, называют мощным (high-power port); маломощный порт (low-power port) обеспечивает лишь 1 единицу. По отношению к питанию от шины различают следующие типы устройств:

  • корневой хаб, получающий питание вместе с хост-контроллером. При питании от внешнего источника хаб должен иметь мощные порты; при автономном (от батарей) питании порты могут быть как мощными, так и маломощными;
  • хаб, питающийся от шины (Bus-powered hub), может иметь только маломощные порты (и не более четырех, поскольку одну единицу мощности потребляет его контроллер). Питание на нисходящие порты этот хаб подает только после того, как будет сконфигурирован (поскольку до того он может потреблять лишь 1 единицу);
  • хабы с собственным питанием (Self-powered hub) могут потреблять от шины лишь одну единицу. На свои нисходящие порты он подает питание от другого источника; эти порты могут быть как мощными, так и маломощными (у хаба с батарейным питанием);
  • маломощные устройства с питанием от шины (Low-power bus-powered functions) могут потреблять не более одной единицы;
  • мощные устройства с питанием от шины (High-power bus-powered functions) могут потреблять до пяти единиц;
  • устройства с собственным питанием (Self-powered functions) могут потреблять от шины не более одной единицы, даже если их собственное питание пропадает. Остальную мощность, необходимую для работы, они должны брать от других источников.

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

Питание на порты хабов подается с защитой от перегрузок, из расчета 5 А на порт (это не отменяет нормы потребления). Срабатывание токовой защиты может индицироваться, например, гудком динамика системной платы ПК. Управление подачей питания у хаба может быть как общим (на все порты сразу), так и селективным — эти возможности описаны в дескрипторе нулевой конечной точки хаба.

При питании от шины до устройств доходит напряжение меньшее, чем дает хаб, из-за сопротивления питающих проводов и контактов разъемов. На каждом кабеле (между вилками A и B) в каждой из линий GND и Vbus может падать напряжение до 0,125 В. Худший случай по питанию — когда между источником питания (хабом с собственным питанием) и устройством находится один хаб с питанием от шины, вносящий свое падение напряжения (до 350 мВ). Мощный порт хаба должен под нагрузкой выдавать напряжение в диапазоне 4,75–5,25 В, маломощный — 4,4–5,25 В. Устройство, питающееся от шины, должно быть способно сообщать конфигурационную информацию при напряжении питания на вилке «A» своего кабеля от 4,4 В; маломощное устройство при таких условиях должно и нормально работать. Для нормальной работы мощного устройства требуется как минимум 4,75 В на его вилке.



Управление потреблением: приостановка, возобновление и удаленное пробуждение

USB имеет развитую систему управления энергопотреблением. Хост-компьютер может иметь собственную систему управления энергопотреблением (power management system), к которой логически подключается и одноименная система USB. Программное обеспечение USB взаимодействует с этой системой компьютера, поддерживая такие системные события, как приостановка (suspend) или возобновление (resume). Кроме того, устройства USB могут сами являться источниками событий, отрабатываемых системой управления энергопотреблением хоста.

Все устройства USB должны поддерживать режим приостановки (suspended mode), в котором средний потребляемый от шины ток не превышает 500 мкА. Мощным устройствам, которые могут инициировать удаленное пробуждение, позволительно в этом режиме потреблять до 2,5 мА. Устройство должно автоматически приостанавливаться при прекращении активности шины. Приостановка выполняется всегда по инициативе хоста и может быть как глобальной, так и селективной. Возобновление (resume) может происходить по разным причинам и сценариям.

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

  • по инициативе хоста — командой к корневому хабу, что приведет к сигнализации возобновления для всех подключенных к нему сегментов;
  • по инициативе устройства — удаленным пробуждением (remote wakeup). Сигнал возобновления может подать любое устройство, которому управляющим запросом разрешена миссия «будильника». Этот сигнал воспринимается портом хаба, к которому подключено устройство-«будильник», после чего посылается хабом во все разрешенные порты («отражаясь» и на порт-источник сигнала) и на восходящий порт. Распространяясь таким образом, сигнал возобновления дойдет и до корневого хаба, который еще 20 мс транслирует этот сигнал на нисходящие порты, после чего завершает сигнализацию возобновления посылкой сигнала LS-EOP;
  • по событию порта хаба (подключению или отключению устройства), которому управляющим запросом разрешена генерация удаленного пробуждения;
  • сбросом шины, вызывающим реконфигурирование всех устройств.

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

  • по инициативе хоста — посылкой к хабу управляющего запроса отмены Port_Suspend. Это приведет к сигнализации возобновления на данный порт в течение 20 мс, завершающейся посылкой сигнала LS-EOP. После этого хаб возобновляет трансляцию нисходящего трафика на этот порт, а через 3 мс устанавливает в своем регистре состояния данного порта признак завершения процедуры возобновления. За это время подключенное устройство успеет засинхронизироваться с маркерами кадров;
  • по инициативе устройства — удаленным пробуждением. Здесь хаб, который ввел приостановку, ведет себя иначе: он не распространяет сигнал возобновления на другие порты (там могут находиться активно работающие устройства и передаваться трафик). Восприняв сигнал возобновления, хаб сам его посылает в течение 20 мс на тот же порт, затем посылает в него сигнал LS-EOP и через 3 мс устанавливает признак завершения возобновления для этого порта (сбрасывает бит Port_Suspend);
  • по событию порта хаба (подключению или отключению устройства), которому управляющим запросом разрешена генерация удаленного пробуждения;
  • сбросом шины, вызывающим реконфигурацию всех устройств.

Если на селективно приостановленном порте хаба происходит событие подключения-отключения, то этот порт из состояния suspended перейдет в connected или disconnected в соответствии с состоянием текущего подключения.

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