USB- порт

Лекция 14. USB- порт

1.     Последовательные шины

2.     Шина USB

3.     Модель и протокол передачи данных

1.Последовательные шины

Последовательные шины позволяют объединять множество устройств, исполь­зуя всего 1-2 пары проводов. При этом достигается пропускная способность от 100 Кбит/с для шины ACCESS Bus, до 400 Мбит/с для FireWire, 480 Мбит/с для USB 2.0 и 1 Гбит/с для FCAL.

 Функциональные возможности этих шин гораздо шире, чем у традиционных интерфейсов локальных сетей — USB и FireWire спо­собны передавать изохронный график аудио- и видеоданных. Последовательные шины по своей организации сильно отличаются от параллельных. В последова­тельных шинах нет отдельных линий для данных, адреса и управления — все протокольные функции приходится выполнять, пользуясь одной (в USB и ACCESS.Bus) или двумя (в FireWire) парами сигнальных проводов или парой оптических волокон (Fibre Channel).

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

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

Наибольшую популярность имеют шины USB и FireWire, хотя последняя пока что в РС- совместимых компьютерах используется не повсеместно. Технологии последовательных шин FireWire и USB, имея общие черты, существенно разли­чаются. Обе шины обеспечивают простое; подключение большого числа ПУ (127 для USB и 63 для FireWire), допуская коммутации и включение/выключе­ние устройств при работающей системе. По структуре топология обеих шин дос­таточно близка, но FireWire  допускает большую свободу и пространственную протя­женность. Хабы USB входят в состав многих устройств и для пользователя их присутствие зачастую незаметно. Обе шины имеют линии питания устройств, но допустимая мощность для FireWire значительно выше. Обе шины поддержи­вают технологию РnР (автоматическое конфигурирование при включении/вы­ключении) и снимают проблему дефицита адресов, каналов DMA и прерываний. Различаются пропускная способность шин и управление ими.

Шина USB ориентирована на периферийные устройства, подключаемые к PC. Изохронные передачи USB позволяют передавать цифровые аудиосигналы, а USB 2.0 способна нести и видеоданные. Все передачи управляются централи­зованно, и PC является необходимым управляющим узлом, находящимся в кор­не древовидной структуры шины. Адаптер USB пользователи современных ПК получают почти бесплатно, поскольку он входит в состав всех современных чипсетов системных плат. Правда, адаптеры USB 2.0 первое время будут выпускать­ся в виде карт PCI. Непосредственное соединение нескольких PC шиной USB не предусматривается, хотя выпускаются «активные кабели» для связи пары ком­пьютеров и устройства-концентраторы.

Шина FireWire ориентирована на устройства бытовой электроники, которые с ее помощью могут быть объединены в единую домашнюю сеть. К этой сети может быть подключен компьютер, и даже не один. Принципиальным преиму­ществом шины  является отсутствие необходимости в специальном контрол­лере шины (компьютере). Любое передающее устройство может получить поло­су изохронного трафика и начинать передачу по сигналу автономного или дис­танционного управления — приемники «услышат» эту информацию. При нали­чии контроллера соответствующее ПО может управлять работой устройств, реа­лизуя, например, цифровую студию нелинейного видеомонтажа или снабжая тре­буемыми мультимедийными данными всех заинтересованных потребителей ин­формации.

2. Шина USB

USB (Universal Serial Bus — универсальная последовательная шина) является промышленным стандартом расширения архитектуры PC, ориентированным на интеграцию с телефонией и устройствами бытовой электроники. Шина USB со­всем молодая—версия 1.0 была опубликована в начале 1996 года, и скептики  иронично расшифровывали ее название как «неиспользуемая последовательная шина» (Unused Serial Bus).

Однако сейчас устройств с интерфейсом USB уже предостаточно. Большинство их поддерживает версию 1.1, которая вышла осе­нью 1998 года — в ней были устранены обнаруженные проблемы первой редак­ции. Весной 2000 года опубликована спецификация USB 2.0, в которой преду­смотрено 40-кратное повышение пропускной способности шины. Первоначаль­но (в версиях 1.0 и 1.1) шина обеспечивала две скорости передачи информации:

полную скорость FS (full speed) — 12 Мбит/с

низкую скорость LS (Low Speed) — 1,5-Мбит/с.

 В версии 2.0 определена еще и высокая скорость US (High Speed) — 480 Мбит/с, которая позволяет существенно расширить круг устройств, подклю­чаемых к шине. В одной и той же системе могут присутствовать и одновременно работать устройства со всеми тремя скоростями. Шина позволяет соединять ус­тройства, удаленные от компьютера на расстояние до 25 м (с использованием промежуточных хабов).

С середины 1996 года выпускаются PC со встроенным контроллером USB, реализуемым чипсетом системной платы. Подробную и оперативную информа­цию по USB (на английском языке) можно найти по адресу http://www.usb.org. Здесь приводятся данные, достаточные для понимания принципов работы и воз­можностей этой перспективной и недорогой шины подключения разнообразной периферии.

USB обеспечивает обмен данными между хост-компьютером и множеством пе­риферийных устройств (ПУ). Согласно спецификации USB, устройства (device) могут являться:

-  хабами;

 - функциями;

 - их комбинацией.

 Хаб (hub) только обес­печивает дополнительные точки подключения устройств к шине. Устройство-функция (function) USB предоставляет системе дополнительные функциональ­ные возможности, например подключение к ISDN, цифровой джойстик, акусти­ческие колонки с цифровым интерфейсом и т. п. Комбинированное устройство (compound device), реализующее несколько функций, представляется как хаб с подключенными к нему несколькими устройствами. Устройство USB должно иметь интерфейс USB, обеспечивающий полную поддержку протокола USB, вы­полнение стандартных операций (конфигурирование и сброс) и предоставление информации, описывающей устройство.

Работой всей системы USB управляет хост-контроллер (host controller), являющийся программно-аппаратной подсистемой хост-компьютера. Шина позволяет подключать, конфигурировать, исполь­зовать и отключать устройства во время работы хоста и самих устройств.

Шина USB является хост-центрической: единственным ведущим устройством, которое управляет обменом, является хост-компьютер, а все присоединенные к ней периферийные устройства — исключительно ведомые. В этим она отличает­ся от шины FireWire, где все устройства равноправны. Физическая топология шины USB — многоярусная звезда. Ее вершиной является хост-контроллер, объ­единенный с корневым хабом (root hub), как правило, двухпортовым. Хаб явля­ется устройством-разветвителем. Кроме того, он может являться источником питания для подключенных к нему устройств. К каждому порту хаба может непосредственно подключаться периферийное устройство или промежуточный хаб.

Шина допускает до 5 уровней каскадирования хабов (не считая корневого). По­скольку комбинированные устройства внутри себя содержат хаб, их подключе­ние к хабу 6-го яруса уже недопустимо. Каждый промежуточный хаб имеет не­сколько нисходящих (downstream) портов для подключения периферийных уст­ройств (или нижележащих хабов) и один восходящий (upstream) порт для под­ключения к корневому хабу или нисходящему порту вышестоящего хаба.

Логи­ческая топология USB — просто звезда: для хост-контроллера хабы создают ил­люзию непосредственного подключения каждого устройства. В отличие от шин расширения (ISA/EISA, PCI, PC Card), где программа взаимодействует с уст­ройствами путем обращений по физическим адресам ячеек памяти, портов вво­да-вывода, прерываниям и каналам DMA, взаимодействие приложений с уст­ройствами USB выполняется только через программный интерфейс. Этот ин­терфейс, обеспечивающий независимость обращений к устройствам, предостав­ляется системным ПО контроллера USB.

В отличие от громоздких дорогих шлейфов параллельных шин АТА и особен­но шины SCSI с ее разнообразием разъемов и сложностью правил подключения, кабельное хозяйство USB простое и изящное. Кабель USB содержит одну экра­нированную витую пару с импедансом 90 Ом для сигнальных цепей и одну не­экранированную для подачи питания (+5 В), допустимая длина сегмента — до -5 м. Для низкой скорости может использоваться невитой неэкранированный ка­бель длиной до 3 м (он дешевле). Система кабелей и коннекторов USB не дает возможности ошибиться при подключении устройств (рис. 1, а и б). Для рас­познавания разъема USB на корпусе устройства ставится стандартное символи­ческое обозначение (рис. 1 и рис. 2, а).

Гнезда типа «А» устанавливаются только на нисходящих портах хабов,  вилки типа «А» — на шнурах периферий­ных устройств или восходящих портов хабов. Гнезда и вилки типа «В» исполь­зуются только для шнуров, отсоединяемых от периферийных устройств и восхо­дящих портов хабов (от «мелких» устройств — мышей, клавиатур и т. п. кабели, как правило, не отсоединяются).

Хабы и устройства обеспечивают возможность «горячего» подключения и отключения. Для этого разъемы обеспечивают более раннее соединение и позднее отсоединение питающих цепей по отношению к сигнальным и предусмотрен протокол сигнализации подключения и отключе­ния устройств. Назначение выводов разъемов USB иллюстрирует табл. 1, ну­мерация контактов показана на рис. 2, а и б.

Рис. 1. Коннекторы USB: a — вилка типа «А»; б— вилка типа «В»

 

а

  б                                           в

Рис.2. Гнезда USB: а— типа «А»; б— типа «В»;

в— символическое обозначение

Таблица 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