Таблица 1. Назначение выводов разъема USB
|
Контакт
|
Цепь
|
1
|
Vbus
|
2
|
D-
|
3
|
D+ .
|
4
|
GND
|
В шине используется дифференциальный способ передачи сигналов D+ и D- по двум
проводам. Скорость, используемая устройством, подключенным к конкретному
порту, определяется хабом по уровням сигналов на линиях D+ и D-, смещаемых
нагрузочными резисторами приемопередатчиков: устройства с низкой скоростью
«подтягивают» к высокому уровню линию D-, с полной — D+.
Подключение устройства HS определяется на этапе обмена конфигурационной
информацией — физически на первое время устройство HS должно подключаться как
FS. Передача по двум проводам в USB не
ограничивается дифференциальными сигналами. Кроме дифференциального приемника
каждое устройство имеет линейные приемники сигналов D+ и D-, а передатчики этих
линий управляются индивидуально. Это позволяет различать более двух состояний
линии, используемых для организации аппаратного интерфейса.
Введение высокой скорости (480 Мбит/с — всего в 2 раза медленнее, чем
предлагает технология Gigabit Ethernet) требует тщательного согласования приемопередатчиков
и линии связи. На этой скорости может работать только кабель с экранированной
витой парой для сигнальных линий. Для высокой скорости аппаратура 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) устройств и хабов все эти тонкости
скрываются, что и обеспечивает обратную совместимость.
Вполне понятно, что устройство USB 2.0 сможет реализовать
высокую скорость, только если по пути от него к хост-контроллеру (тоже 2.0)
будут встречаться только хаб» 2.0. Если это правило нарушить и между ним и
контроллером 2.0 окажется старый хаб, то связь может быть установлена только в
режиме FS. Если такая скорость, устройство и клиентское ПО устроит (к
примеру, для принтера и сканера это выльется только в большее время ожидания
пользователя), то подключенное устройство работать будет, но появится сообщение о неоптимальной
конфигурации соединений. По возможности ее следует исправить, благо переключения
кабелей USB можно выполнять «на ходу». Устройства и ПО, критичные к
полосе пропускания шины, в неправильной конфигурации работать откажутся и
категорично потребуют переключений. Если же хост-контроллер старый, то все
прелести USB 2.0 окажутся недоступными пользователю. В этом случае
придется менять хост-контроллер (менять системную плату или приобретать
PCI-карту контроллера). Контроллер и хабы USB 2.0 позволяют повысить
суммарную пропускную способность шины и для старых устройств. Если устройства
FS подключать к разным портам хабов USB 2.0 (включая и корневой), то для
них суммарная пропускная способность шины USB возрастет по сравнению с 12
Мбит/с во столько раз, сколько используется портов высокоскоростных хабов.
На рис. 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.
Рис. 3. Пример
конфигурации соединений
При планировании соединений следует учитывать способ питания устройств:
устройства, питающиеся от шины, как правило, подключают к хабам, питающимся от
сети. К хабам, питающимся от шины, подключают лишь маломощные устройства —
так, к клавиатуре USB, содержащей внутри себя хаб, подключают мышь USB и
другие устройства-указатели (трекбол, планшет).
2. Модель и протокол
передачи данных
Каждое устройство на шине USB (их может быть до 127) при
подключении автоматически получает свой уникальный адрес. Логически устройство
представляет собой набор независимых конечных точек (endpoint),
с которыми хост-контроллер (и клиентское ПО) обменивается информацией. Каждая
конечная точка имеет свой номер и описывается следующими параметрами:
·
требуемая частота доступа
к шине и допустимые задержки обслуживания;
·
требуемая полоса
пропускания канала;
·
требования к обработке
ошибок;
·
максимальные размеры
передаваемых и принимаемых пакетов;
·
тип передачи;
·
направление передачи (для
передач массивов и изохронного обмена).
Каждое устройство обязательно имеет конечную точку с номером 0, используемую
для инициализации, общего управления и опроса его состояния. Эта точка всегда
оказывается сконфигурированной при включении питания и подключении устройства
к шине. Она поддерживает передачи типа «управление».
Кроме нулевой точки устройства-функции могут иметь дополнительные точки,
реализующие полезный обмен данными. Низкоскоростные устройства могут иметь до
двух дополнительных точек, полноскоростные — до 15 точек ввода и 15 точек
вывода (протокольное ограничение). Дополнительные точки (а именно они и
предоставляют полезные для пользователя функции) не могут быть использованы до
их конфигурирования (установления согласованного с ними канала).
Каналом (pipe) в USB называется модель передачи данных между
хост-контроллером и конечной точкой устройства. Имеются два типа каналов:
- потоки;
- сообщения.
Поток (stream) доставляет данные от одного конца канала к другому,
он всегда однонаправленный. Один и тот же номер конечной точки может
использоваться для двух поточных каналов — ввода и вывода. Поток может реализовывать
следующие типы обмена:
-передача массивов;
прерывания.
Сообщения (message) имеют формат,
определенный спецификацией USB. Хост посылает запрос к конечной точке, после
которого передается (принимается) пакет сообщения, за которым следует пакет с
информацией состояния конечной точки. Последующее сообщение нормально не может
быть послано до обработки предыдущего, но при отработке ошибок возможен сброс
не обслуженных сообщений. Двусторонний обмен, сообщениями адресуется к одной и
той же конечной точке.
С каналами связаны характеристики, соответствующие конечной точке (полоса
пропускания, тип сервиса, размер буфера и т. п.). Каналы организуются при
конфигурировании устройств USB. Для каждого включенного устройства существует
канал сообщений (Control Pipe 0), по которому передается информация конфигурирования,
управления и состояния.
Протокол. Все обмены (транзакции)
с устройствами USB состоят из
двух-трех пакетов. Каждая транзакция планируется и начинается по инициативе
контроллера, который посылает пакет-маркер (token packet). Он описывает тип и направление передачи,
адрес устройства USB и номер
конечной точки. В каждой транзакции возможен обмен только между адресуемым
устройством (его конечной точкой) и хостом.
Адресуемое
маркером устройство распознает свой адрес и готовится к обмену. Источник
данных (определенный маркером) передает пакет данных (или уведомление об
отсутствии данных, предназначенных для передачи). После успешного приема
пакета приемник данных посылает пакет квитирования (handshake packet). Последовательность
пакетов в транзакциях иллюстрирует рис. 4.
Рис.
4. Последовательности пакетов
Хост-контроллер организует обмены с устройствами согласно своему плану
распределения ресурсов. Контроллер циклически (с периодом 1,0 ± 0,0005 мс)
формирует кадры (frames), в которые укладываются все запланированные транзакции (рис. 4).
Каждый кадр начинается с посылки маркера SOP (Start Of Frame), который является синхронизирующим сигналом для всех устройств, включая
хабы.
В конце каждого кадра выделяется интервал времени EOF
(End Of Frame), на время которого хабы запрещают передачу по направлению к контроллеру.
В режиме HS пакеты SOF передаются в начале каждого микрокадра
(период 125 ± 0,0625 мкс). Хост планирует загрузку кадров так, чтобы в них
всегда находилось место для транзакций управления и прерывания. Свободное
время кадров может заполняться передачами массивов (bulk transfers). В каждом (микрокадре)
может быть выполнено несколько транзакций, их допустимое число зависит от
длины поля данных каждой из них.
Рис.5 Поток кадров USB
Для обнаружения ошибок передачи каждый пакет имеет контрольные поля CRC-кодов,
позволяющие обнаруживать все одиночные и двойные битовые ошибки. Аппаратные
средства обнаруживают ошибки передачи, а контроллер автоматически производит
трехкратную попытку передачи. Если повторы безуспешны, сообщение об ошибке
передается клиентскому ПО.
Все подробности организации транзакций изолируются от клиентского ПО
контроллером USB и его системным программным обеспечением.
Лекция 14. USB- порт
Рис. 1. Коннекторы USB: a — вилка типа «А»;
б— вилка типа «В»
а
б в
Рис.2. Гнезда USB: а— типа «А»; б—
типа «В»;
в— символическое
обозначение
Таблица 1. Назначение выводов разъема USB
|
Контакт
|
Цепь
|
1
|
Vbus
|
2
|
D-
|
3
|
D+ .
|
4
|
GND
|
Рис. 3. Пример
конфигурации соединений
Рис.
4. Последовательности пакетов
Рис.5 Поток кадров USB