Поток кадров USB
Рисунок 7.8. Поток кадров USB
Для изохронной передачи
важна синхронизация устройств и контроллера. Есть три варианта:
синхронизация внутреннего генератора устройства с мар- керами SOF;
подстройка частоты кадров под частоту устройства;
согласование скорости передачи (приема) устройства с частотой кадров.
Подстройка частоты кадров контроллера возможна, есте- ственно, под частоту внутренней синхронизации только од- ного устройства. Подстройка осуществляется через механизм обратной связи, который позволяет изменять период кадра в пределах ±1 битового интервала.
7.1.2. Системное конфигурирование
USB поддерживает динамическое подключение и отключе- ние устройств. Нумерация устройств шины является посто- янным процессом, отслеживающим изменения физической топологии.
Все устройства подключаются через порты хабов. Хабы определяют подключение и отключение устройств к своим портам и сообщают состояние портов при запросе от кон- троллера. Хост разрешает работу порта и адресуется к уст- ройству через канал управления, используя нулевой адрес - USB Default Address. При начальном подключении или пос- ле сброса все устройства адресуются именно так.
Хост определяет, является новое подключенное устройство хабом или функцией, и назначает ему уникальный адрес USB. Хост создает канал управления (Control Pipe) с этим устрой- ством, используя назначенный адрес и нулевой номер точки назначения.
Если новое устройство является хабом, хост определяет под- ключенные к нему устройства, назначает им адреса и уста-
навливает каналы. Если новое устройство является функ- цией, уведомление о подключении передается диспетчером USB заинтересованному ПО.
Когда устройство отключается, хаб автоматически запреща- ет соответствующий порт и сообщает об отключении кон- троллеру, который удаляет сведения о данном устройстве из всех структур данных. Если отключается хаб, процесс уда- ления выполняется для всех подключенных к нему устройств. Если отключается функция, уведомление посылается заин- тересованному ПО.
Нумерация устройств,
подключенных к шине (Bus Enumeration), осуществляется динамически по мере их под- ключения (или включения их питания) без какого-либо вме- шательства пользователя или клиентского ПО. Процедура нумерации выполняется следующим образом:
1. Хаб, к которому подключилось устройство, информиру- ет хост о смене состояния своего порта ответом на опрос состояния. С этого момента устройство переходит в со- стояние Attached (подключено), а порт, к которому оно подключилось, в состояние Disabled.
2. Хост уточняет состояние порта.
3. Узнав порт, к которому подключилось новое устройство, хост дает команду сброса и разрешения порта.
4. Хаб формирует сигнал Reset для данного порта (10 мс) и переводит его в состояние Enabled.
Подключенное устройство может потреблять от шины ток питания до 100 мА. Устройство переходит в состояние Powered
(пи- тание подано), все его регистры переводятся в исходное состояние, и оно отзывается на обращение по нулевому адресу.
5. Пока устройство не получит уникальный адрес, оно до- ступно по дежурному каналу, по которому хост-контрол- лер определяет максимально допустимый размер поля данных пакета.
6. Хост сообщает устройству его уникальный адрес, и оно переводится в состояние Addressed (адресовано).
7. Хост считывает конфигурацию устройства, включая за- явленный потребляемый ток от шины. Считывание мо- жет затянуться на несколько кадров.
8. Исходя из полученной информации, хост конфигуриру- ет все имеющиеся конечные точки данного устройства, которое переводится в состояние Configured
(сконфигу- рировано). Теперь хаб позволяет устройству потреблять от шины полный ток, заявленный в конфигурации. Уст- ройство готово.
Когда устройство отключается от шины, хаб уведомляет об этом хост и работа порта запрещается, а хост обновляет свою текущую топологическую информацию.
7.1.3. Устройства USB - функции и хабы
Возможности шины USB позволяют использовать ее для подключения разнообразных устройств. Не касаясь "полез- ных" свойств ПУ, остановимся на их интерфейсной части, связанной с шиной USB.
Все устройства должны поддержи- вать набор общих операций, перечисленных ниже.
Динамическое подключение и отключение. Эти события от- слеживаются хабом, который сообщает о них хост-контрол- леру и выполняет сброс подключенного устройства. Устрой- ство после сигнала сброса должно отзываться на нулевой адрес, при этом оно не сконфигурировано и не приостанов- лено. После назначения адреса, за которое отвечает хост-кон- троллер, устройство должно отзываться только на свой уни- кальный адрес.
Конфигурирование
устройств, выполняемое хостом, являет- ся необходимым для их использования. Для конфигуриро- вания обычно используется информация, считанная из самого устройства. Устройство может иметь множество ин- терфейсов, каждому из которых соответствует собственная конечная точка, представляющая хосту функцию устройства. Интерфейс в конфигурации может иметь альтернативные наборы характеристик; смена наборов поддерживается про- токолом. Для поддержки адаптивных драйверов дескрипто- ры устройств и интерфейсов имеют поля класса, подкласса и протокола.
Передача данных
возможна посредством одного из четырех типов передач (см. выше). Для конечных точек, допускаю- щих разные типы передач, после конфигурирования досту- пен только один из них.
Управление энергопотреблением является весьма развитой функцией USB. Для устройств, питающихся от шины, мощ- ность ограничена. Любое устройство при подключении не должно потреблять от шины ток, превышающий 100 мА. Рабочий ток (не более 500 мА) заявляется в конфигурации, и если хаб не сможет обеспечить устройству заявленный ток, оно не конфигурируется и, следовательно, не может быть использовано.
Устройство USB должно поддерживать приостановку (Suspended Mode), в котором его потребляемый ток не пре- вышает 500 мкА. Устройство должно автоматически приос- танавливаться при прекращении активности шины.
Возможность удаленного пробуждения (Remote Wakeup) по- зволяет приостановленному устройству подать сигнал хост- компьютеру, который тоже может находиться в приостанов- ленном состоянии.
Возможность удаленного пробуждения описывается в конфигурации устройства. При конфигури- ровании эта функция может быть запрещена.
Хаб в USB выполняет коммутацию сигналов и выдачу пи- тающего напряжения, а также отслеживает состояние под- ключенных к нему устройств, уведомляя хост об изменени- ях. Хаб состоит из двух частей - контроллера (Hub Controller) и повторителя (Hub Repeater). Повторитель
представляет собой управляемый ключ, соединяющий выходной порт со входным. Он имеет средства поддержки сброса и приоста- новки передачи сигналов. Контроллер содержит регистры для взаимодействия с хостом. Доступ к регистрам осуществля- ется по специфическим командам обращения к хабу. Коман- ды позволяют конфигурировать хаб, управлять нисходящи- ми портами и наблюдать их состояние.
Нисходящие (Downstream) порты
хабов могут находиться в следующих состояниях:
Powered ((питание отключено) - на порт не подается питание (возможно только для хабов, коммутирующих
питание). Выходные буферы переводятся в высокоимпе- дансное состояние, входные сигналы игнорируются.
Disconnected (отсоединен) - порт не передает сигналы ни в одном направлении, но способен обнаружить подключе- ние устройства (по отсутствию состояния SEO в течение 2,5 мкс). Тогда порт переходит в состояние Disabled,
а по уровням входных сигналов {DiffO или Diff1 в состоянии Idle) он определяет скорость подключенного устройства.
s Disabled (запрещен) - порт передает только сигнал сбро- са (по команде от контроллера), сигналы от порта (кро- ме обнаружения отключения) не воспринимаются. По обнаружении отключения (2,5 мкс состояния SEO)
порт переходит в состояние Disconnect, а если отключение об- наружено "спящим" хабом, контроллеру будет послан сигнал Resume.
ш Enabled (разрешен) - порт передает сигналы в обоих на- правлениях. По команде контроллера или по обнаруже- нии ошибки кадра порт переходит в состояние Disabled, а по обнаружении отключения - в состояние Disconnect.
Suspended (приостановлен) - порт передает сигнал пере- вода в состояние останова ("спящий" режим).
Если хаб находится в активном состоянии, сигналы через порт не пропускаются ни в одном направлении. Однако "спящий" хаб воспринимает сигналы смены состояния незапрещен- ных портов, подавая "пробуждающие" сигналы от акти- визировавшегося устройства даже через цепочку "спя- щих" хабов.
Состояние каждого порта идентифицируется контроллером хаба с помощью отдельных регистров. Имеется общий ре- гистр, биты которого отражают факт изменения состояния каждого порта (фиксируемый во время EOF). Это позволяет хост-контроллеру быстро узнать состояние хаба, а в случае обнаружения изменений специальными транзакциями уточ- нить состояние.
7.1.4. Хост-контроллер
Хост-компьютер общается с устройствами через контроллер. Хост имеет следующие обязанности:
обнаружение подключения и отсоединения устройств USB;
манипулирование потоком управления между устройства- ми и хостом;
управление потоками данных;
сбор статистики;
обеспечение энергосбережения подключенными ПУ.
Системное ПО контроллера управляет взаимодействием меж- ду устройствами и их ПО, функционирующим на хост-ком- пьютере, для согласования:
нумерации и конфигурации устройств;
изохронных передач данных;
асинхронных передач данных;
управления энергопотреблением;
информации об управлении устройствами и шиной.
По возможности ПО USB использует существующее систем- ное ПО хост-компьютера - например, Advanced Power Management для управления энергопотреблением.
7.2. Шина IEEE 1394-FireWire
Стандарт для высокопроизводительной последовательной шины (High Performance Serial Bus), получивший офици- альное название IEEE 1394, был принят в 1995 году. Целью являлось создание шины, не уступающей современным стан- дартным параллельным шинам, при существенном удешев- лении и повышении удобства подключения (за счет перехо- да на последовательный интерфейс). Стандарт основан на шине FireWire, используемой Apple Computer в качестве де- шевой альтернативы SCSI в компьютерах Macintosh и PowerMac. Название FireWire ("огненный провод") теперь применяется и к реализациям IEEE 1394, оно сосуществует с кратким обозначением 1394.
Преимущества FireWire
перед другими последовательными шинами:
s? Многофункциональность: шина обеспечивает цифровую связь до 63 устройств без применения дополнительной аппаратуры (хабов). Устройства - цифровые камкодеры, сканеры, принтеры, камеры для видеоконференций, дис- ковые накопители - могут обмениваться данными не только с PC, но и между собой. FireWire по инициативе VESA позиционируется и для "домашних сетей".
Высокая скорость обмена и изохронные передачи позво- ляют даже на начальном уровне (100 Мбит/с) передавать одновременно два канала видео (30 кадров в секунду) широковещательного качества и стереоаудиосигнал с ка- чеством CD.
s§ Низкая цена компонентов и кабеля.
si Легкость установки и использования. FireWire расши- ряет систему РпР. Устройства автоматически распозна- ются и конфигурируются при включении/отключении. Питание от шины (ток до 1,5 А) позволяет ПУ общать- ся с системой даже при отключении их питания. Управ- лять шиной и другими устройствами могут не только PC, но и другие "интеллектуальные" устройства, напри- мер VCR.
7.2.1. Структура и взаимодействие устройств шины
Стандарт 1394 определяет две категории шин: кабельные шины и кросс-шины (Backplane). Под кросс-шинами
обычно подразумеваются параллельные интерфейсы, объединяющие внутренние подсистемы устройства, подключенного к кабелю 1394.
В отличие от USB, управляемой одним хост-контроллером, стандарт 1394 допускает соединение равноправных устройств в сеть. Сеть может состоять из множества шин, соединенных мостами. В пределах одной шины устройства объединяются соединительными кабелями без применения дополнительных устройств. Мосты представляют собой специальные интел- лектуальные устройства. Интерфейсная карта шины FireWire для PC представляет собой мост PCI - 1394. Мостами яв- ляются также соединения кабельной шины 1394 с кросс- шинами устройств, 16-битная адресация узлов сети допус-
кает до 63 устройств в каждой шине, адресуемых 6-битным полем идентификатора узла. 10-битное поле идентификато- ра шины допускает использование в системе до 1023 мос- тов, соединяющих шины разного типа.
Кабельная шина
представляет собой сеть, состоящую из уз- лов и кабельных мостов. Гибкая топология позволяет стро- ить сети, сочетающие древовидную и цепочечную ар- хитектуры (Рисунок 7.9). Каждый узел обычно имеет три равноправных соединительных разъема. Допускается мно- жество вариантов подключения устройств со следующими ограничениями:
ssi между любой парой узлов может быть не более 16 ка- бельных сегментов;
длина сегмента стандартного кабеля не должна превы- шать 4,5 м;
2Й суммарная длина кабеля не должна превышать 72 м (при- менение более качественного кабеля позволяет ослабить это ограничение).
Некоторые устройства могут иметь только один разъем, что ограничивает возможные варианты их местоположения. Стандарт допускает до 27 разъемов на одном устройстве.