Универсальная последовательная шина

  • Mini-B Connector ECN : извещение выпущено в октябре 2000 года.
  • Errata, начиная с декабря 2000 : извещение выпущено в декабре 2000 года.
  • Pull-up/Pull-down Resistors ECN
  • Errata, начиная с мая 2002 : извещение выпущено в мае 2002 года.
  • Interface Associations ECN : извещение выпущено в мае 2003 года.
    • Были добавлены новые стандарты, позволяющие ассоциировать множество интерфейсов с одной функцией устройства.
  • Rounded Chamfer ECN : извещение выпущено в октябре 2003 года.
  • Unicode ECN : извещение выпущено в феврале 2005 года.
    • Данное ECN специфицирует, что строки закодированы с использованием UTF-16LE .
  • Inter-Chip USB Supplement : извещение выпущено в марте 2006 года.
  • On-The-Go Supplement 1.3 : извещение выпущено в декабре 2006 года.
    • USB On-The-Go делает возможным связь двух USB-устройств друг с другом без отдельного USB-хоста. На практике одно из устройств играет роль хоста для другого.

USB OTG

USB 3.0

USB 3.0 находится на финальных стадиях разработки. Созданием USB 3.0 занимаются компании: Microsoft, Texas Instruments, NXP Semiconductors. В спецификации USB 3.0 разъёмы и кабели обновлённого стандарта будут физически и функционально совместимы с USB 2.0. Кабель USB 2.0 содержит в себе четыре линии - пару для приёма/передачи данных, одну - для питания и ещё одну - для заземления. В дополнение к ним USB 3.0 добавляет пять новых линий (в результате чего кабель стал гораздо толще), однако новые контакты расположены параллельно по отношению к старым на другом контактном ряду. Теперь можно будет с лёгкостью определить принадлежность кабеля к той или иной версии стандарта, просто взглянув на его разъём. Спецификация USB 3.0 повышает максимальную скорость передачи информации до 4,8 Гбит/с - что на порядок больше 480 Мбит/с, которые может обеспечить USB 2.0. USB 3.0 может похвастаться не только более высокой скоростью передачи информации, но и увеличенной силой тока с 500 мА до 900 мА. Отныне пользователь сможет не только подпитывать от одного хаба гораздо большее количество устройств, но и само аппаратное обеспечение, ранее поставлявшееся с отдельными блоками питания, избавится от них.


Здесь GND - цепь «корпуса» для питания периферийных устройств, VBus - +5 В, так же для цепей питания. Данные передаются по проводам D+ и D− дифференциально (состояния 0 и 1 (в терминологии официальной документации diff0 и diff1 соответственно) определяются по разности потенциалов межу линиями более 0,2 В и при условии, что на одной из линий (D− в случае diff0 и D+ при diff1) потенциал относительно GND выше 2,8 В. Дифференциальный способ передачи является основным, но не единственным (например, при инициализации устройство сообщает хосту о режиме, поддерживаемом устройством (Full-Speed или Low-Speed), подтягиванием одной из линий данных к V_BUS через резистор 1.5 кОм (D− для режима Low-Speed и D+ для режима Full-Speed, устройства, работающие в режиме Hi-Speed, ведут себя на этой стадии как устройства в режиме Full-Speed). Так же иногда вокруг провода присутствует волокнистая обмотка для защиты от физических повреждений. .

Коннектор USB 3.0 тип B

Коннектор USB 3.0 тип А

Кабели и разъёмы USB 3.0

Недостатки USB

Хотя пиковая пропускная способность USB 2.0 составляет 480 Мбит/с (60 Мбайт/с), на практике обеспечить пропускную способность, близкую к пиковой, не удаётся. Это объясняется достаточно большими задержками шины USB между запросом на передачу данных и собственно началом передачи. Например, шина FireWire хотя и обладает меньшей пиковой пропускной способностью 400 Мбит/с, что на 80 Мбит/с меньше, чем у USB 2.0, в реальности позволяет обеспечить бо́льшую пропускную способность для обмена данными с жёсткими дисками и другими устройствами хранения информации.

USB и FireWire/1394

Протокол USB storage, представляющий собой метод передачи команд

Кроме того, USB storage не поддерживался в старых ОС (первоначальная Windows 98), и требовал установки драйвера. SBP-2 поддерживался и в них. Также в старых ОС (Windows 2000) протокол USB storage был реализован в урезанном виде, не позволяющем использовать функцию прожига CD/DVD дисков на подключенном по USB дисководе, SBP-2 никогда не имел таких ограничений.

Шина USB строго ориентирована, потому соединение 2 компьютеров или же 2 периферийных устройств требует дополнительного оборудования. Некоторые производители поддерживают соединение принтера и сканера, или же фотоапарата и принтера, но эти реализации сильно завязаны на конкретного производителя и не стандартизированы. Шина 1394/FireWire не подвержена этому недостатку (можно соединить 2 видеокамеры).

Тем не менее, ввиду лицензионной политики Apple, а также намного более высокой сложности оборудования, 1394 менее распространен, материнские платы старых компьютеров не имеют 1394 контроллера. Что касается периферии, то поддержка 1394 обычно не встречается ни в чем, кроме видеокамер и корпусов для внешних жестких дисков и CD/DVD приводов.

См. также

  • FireWire
  • TransferJet

Источники

Ссылки

  • USB News (нем.)
  • List of USB ID’s (Vendors, devices and interfaces) (англ.)

Первая спецификация (версия 1.0) USB была опубликована в начале 1996 года, а осенью 1998 года появилась спецификация 1.1, исправляющая проблемы, обнаруженные в первой редакции. Весной 2000 года была опубликована версия 2.0, в которой предусматривалось 40-кратное повышение пропускной способности шины. Так, спецификация 1.0 и 1.1 обеспечивает работу на скоростях 12 Мбит/с и 1,5 Мбит/с, а спецификация 2.0 - на скорости 480 Мбит/с. При этом предусматривается обратная совместимость USB 2.0 с USB 1.х.

Окончательная спецификация USB 3.0 появилась в 2008 году. Созданием USB 3.0 занимались компании Intel , Microsoft , Hewlett-Packard , Texas Instruments , NEC и. NXP Semiconductors В спецификации USB 3.0 разъёмы и кабели обновлённого стандарта физически и функционально совместимы с USB 2.0. В дополнение к четырем линиям USB 2.0 в USB 3.0 добавляется еще четыре линии связи (две витых пары). Новые контакты в разъемах USB 3.0 расположены отдельно от старых на другом контактном ряду. Спецификация USB 3.0 повышает максимальную скорость передачи информации до 4,8 Гбит/с, таким образом, скорость передачи возрастает с 60 Мбайт/с до 600 Мбайт/с и позволяет передать 1 Тб не за 8-10 часов, а за 40 минут-1 час. Версия 3.0 так же может похвастаться увеличенной силой тока с 500 мА до 900 мА, поэтому пользователь может не только подпитывать от одного хаба большее количество устройств, но и сами устройства во многих случаях смогут избавиться от отдельных блоков питания.

Общая архитектура USB

Физическая архитектура USB определяется следующими правилами:

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

Самым верхним уровнем является корневой концентратор, который обычно совмещается с USB контроллером.

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


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


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

Составляющие USB

Шина USB состоит из следующих элементов:


Свойства USB-устройств

  • адресация - устройство должно отзываться на назначенный ему уникальный адрес и только на него;
  • конфигурирование - после включения или сброса устройство должно предоставлять нулевой адрес для возможности конфигурирования его портов;
  • передача данных - устройство имеет набор конечных точек для обмена данными с хостом. Для конечных точек, допускающих разные типы передач, после конфигурирования доступен только один из них;
  • управление энергопотреблением - любое устройство при подключении не должно потреблять от шины ток, превышающий 100 мА. При конфигурировании устройство заявляет свои потребности тока, но не более 500 мА. Если хаб не может обеспечить устройству заявленный ток, устройство не будет использоваться;
  • приостановка - USB-устройство должно поддерживать приостановку (suspended mode), при которой его потребляемый ток не превышает 500 мкА. USB-устройство должно автоматически приостанавливаться при прекращении активности шины;
  • удаленное пробуждение - возможность удаленного пробуждения (remote wakeup) позволяет приостановленному USB-устройству подать сигнал хосту, который тоже может находиться в приостановленном состоянии. Возможность удаленного пробуждения описывается в конфигурации USB-устройства. При конфигурировании эта функция может быть запрещена.

Логические уровни обмена данными

Спецификация USB определяет три логических уровня с определенными правилами взаимодействия. USB-устройство содержит интерфейсную, логическую и функциональную части. Хост тоже делится на три части - интерфейсную, системную и ПО. Каждая часть отвечает только за определенный круг задач.

Таким образом, операция обмена данными между прикладной программой и шиной USB выполняется путем передачи буферов памяти через следующие уровни:

  • уровень клиентского ПО в хосте:
    • обычно представляется драйвером USB-устройства;
    • обеспечивает взаимодействие пользователя с операционной системой с одной стороны и системным драйвером с другой;
  • уровень системного драйвера USB в хосте(USB, Universal Serial Bus Driver):
    • управляет нумерацией устройств на шине;
    • управляет распределением пропускной способности шины и мощности питания;
    • обрабатывает запросы пользовательских драйверов;
  • уровень хост-контроллера интерфейса шины USB (HCD, Host Controller Driver):
    • преобразует запросы ввода/вывода в структуры данных, по которым выполняются физические транзакции;
    • работает с регистрами хоста.

Отношения клиентского программного обеспечения и USB устройств: USB предоставляет для взаимодействия программный интерфейс и только его, позволяя клиентскому ПО существовать в отрыве от конкретного подключенного к шине устройства и его конфигурации. Для клиентской программы USB - это лишь набор функций.

Взаимодействие компонентов USB представлено на схеме ниже:

В рассматриваемую структуру входят следующие элементы:

Физическое устройство USB — устройство на шине, выполняющее функции, интересующие конечного пользователя.

Client SW — ПО, соответствующее конкретному устройству, исполняемое на хост-компьютере. Может являться составной частью ОС или специальным продуктом.

USB System SW — системная поддержка USB, независимая от конкретных устройств и клиентского ПО.

USB Host Controller — аппаратные и программные средства для подключения устройств USB к хост-компьютеру.

Принципы передачи данных

Механизм передачи данных является асинхронным и блочным. Блок передаваемых данных называется USB-фреймом или USB-кадром и передается за фиксированный временной интервал. Оперирование командами и блоками данных реализуется при помощи логической абстракции, называемой каналом. Канал является логической связкой между хостом и конечной точкой внешнего устройства.

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

Поток доставляет данные от одного конца канала к другому, он всегда однонаправленный. Один и тот же номер конечной точки может использоваться для двух поточных каналов — ввода и вывода. Поток может реализовывать следующие типы обмена: сплошной, изохронный и прерывания. Доставка всегда идет в порядке «первым вошел — первым вышел» (FIFO); с точки зрения USB, данные потока неструктурированны. Сообщения имеют формат, определенный спецификацией USB. Хост посылает запрос к конечной точке, после которого передается (принимается) пакет сообщения, за которым следует пакет с информацией состояния конечной точки. Последующее сообщение нормально не может быть послано до обработки предыдущего, но при отработке ошибок возможен сброс необслуженных сообщений. Двухсторонний обмен сообщениями адресуется к одной и той же конечной точке. Для доставки сообщений используется только обмен типа «управление».

С каналами связаны характеристики, соответствующие конечной точке. Каналы организуются при конфигурировании устройств USB. Для каждого включенного устройства существует канал сообщений (Control Pipe 0), по которому передается информация конфигурирования, управления и состояния.

Любой обмен по шине USB инициируется хост-контроллером. Он организует обмены с устройствами согласно своему плану распределения ресурсов.

Контроллер циклически (с периодом 1,0 ± 0,0005 мс) формирует кадры (frames), в которые укладываются все запланированные передачи.

Каждый кадр начинается с посылки пакета-маркера SOF (Start Of Frame, начало кадра), который является синхронизирующим сигналом для всех устройств, включая хабы. В конце каждого кадра выделяется интервал времени EOF (End Of Frame, конец кадра), на время которого хабы запрещают передачу по направлению к контроллеру. Если хаб обнаружит, что с какого-то порта в это время ведется передача данных, этот порт отключается.

В режиме высокоскоростной передачи пакеты SOF передаются в начале каждого микрокадра (период 125 ± 0,0625 мкс).

Хост планирует загрузку кадров так, чтобы в них всегда находилось место для наиболее приоритетных передач, а свободное место кадров заполняется низкоприоритетными передачами больших объемов данных. Спецификация USB позволяет занимать под периодические транзакции (изохронные и прерывания) до 90% пропускной способности шины.

Каждый кадр имеет свой номер. Хост-контроллер оперирует 32-битным счетчиком, но в маркере SOF передает только младшие 11 бит. Номер кадра циклически увеличивается во время EOF.

Для изохронной передачи важна синхронизация устройств и контроллера. Есть три варианта синхронизации:

  • синхронизация внутреннего генератора устройства с маркерами SOF;
  • подстройка частоты кадров под частоту устройства;
  • согласование скорости передачи (приема) устройства с частотой кадров.

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

Информация по каналу передается в виде пакетов (Packet). Каждый пакет начинается с поля синхронизации SYNC (SYNChronization), за которым следует идентификатор пакета PID (Packet IDentifier). Поле Check представляет собой побитовую инверсию PID.

Структура данных пакета зависит от группы, к которой он относится.

1. Клиентское ПО посылает IPR-запросы уровню USBD.

2. Драйвер USBD разбивает запросы на транзакции по следующим правилам:

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

3. Драйвер контроллера хоста принимает от системного драйвера шины перечень транзакций и выполняет следующие действия:

  • планирует исполнение полученных транзакций, добавляя их к списку транзакций;
  • извлекает из списка очередную транзакцию и передает ее уровню хост-контроллера интерфейса шины USB;

4. Хост-контроллер интерфейса шины USB формирует кадры;

5. Кадры передаются последовательной передачей бит по методу NRZI

Таким образом, можно сформировать следующую упрощенную схему:

1. каждый кадр состоит из наиболее приоритетных посылок, состав которых формирует драйвер хоста;

2. каждая передача состоит из одной или нескольких транзакций;

3. каждая транзакция состоит из пакетов;

4. каждый пакет состоит из идентификатора пакета, данных (если они есть) и контрольной суммы.

Типы сообщений в USB

Спецификация шины определяет четыре различных типа передачи (transfer type) данных для конечных точек:

  • управляющие передачи (Control Transfers ) — используются хостом для конфигурирования устройства во время подключения, для управления устройством и получения статусной информации в процессе работы. Протокол обеспечивает гарантированную доставку таких посылок. Длина поля данных управляющей посылки не может превышать 64 байт на полной скорости и 8 байт на низкой. Для таких посылок хост гарантированно выделяет 10% полосы пропускания;
  • передачи массивов данных (Bulk Data Transfers ) — применяются при необходимости обеспечения гарантированной доставки данных от хоста к функции или от функции к хосту, но время доставки не ограничено. Такая передача занимает всю доступную полосу пропускания шины. Пакеты имеют поле данных размером 8, 16, 32 или 64 байт. Приоритет у таких передач самый низкий, они могут приостанавливаться при большой загрузке шины. Допускаются только на полной скорости передачи. Такие посылки используются, например, принтерами или сканерами;
  • передачи по прерываниям (Interrupt Transfers ) — используются в том случае, когда требуется передавать одиночные пакеты данных небольшого размера. Каждый пакет требуется передать за ограниченное время. Операции передачи носят спонтанный характер и должны обслуживаться не медленнее, чем того требует устройство. Поле данных может содержать до 64 байт на полной скорости и до 8 байт на низкой. Предел времени обслуживания устанавливается в диапазоне 1—255 мс для полной скорости и 10—255 мс — для низкой. Такие передачи используются в устройствах ввода, таких как мышь и клавиатура;
  • изохронные передачи (Isochronous Transfers ) — применяются для обмена данными в "реальном времени", когда на каждом временном интервале требуется передавать строго определенное количество данных, но доставка информации не гарантирована (передача данных ведется без повторения при сбоях, допускается потеря пакетов). Такие передачи занимают предварительно согласованную часть пропускной способности шины и имеют заданную задержку доставки. Изохронные передачи обычно используются в мультимедийных устройствах для передачи аудио- и видеоданных, например, цифровая передача голоса. Изохронные передачи разделяются по способу синхронизации конечных точек — источников или получателей данных — с системой: различают асинхронный, синхронный и адаптивный классы устройств, каждому из которых соответствует свой тип канала USB.

Механизм прерываний

Для шины USB настоящего механизма прерываний не существует. Вместо этого хост опрашивает подключенные устройства на предмет наличия данных о прерывании. Опрос происходит в фиксированные интервалы времени, обычно каждые 1 - 32 мс. Устройству разрешается посылать до 64 байт данных.

С точки зрения драйвера, возможности работы с прерываниями фактически определяются хостом, который и обеспечивает поддержку физической реализации USB-интерфейса.

Режимы передачи данных

Шина USB имеет три режима передачи данных:

  • низкоскоростной (LS, Low-speed) 1.5 Мбит/с;
  • полноскоростной (LF, Full-speed) 12 Мбит/с;
  • высокоскоростной (HS, High-speed, только для USB 2.0) 480 Мбит/с.

Подключение периферийных устройств к шине USB

Для подключения периферийных устройств к шине USB используется четырёхпроводный кабель, при этом два провода (витая пара) в дифференциальном включении используются для приёма и передачи данных, а два провода — для питания периферийного устройства.

Спецификация 1.0 регламентировала два типа разъёмов:


Впоследствии были разработаны миниатюрные разъёмы для применения USB в переносных и мобильных устройствах, получившие название Mini-USB.

Существуют также разъёмы типа Mini AB и Micro AB, с которыми соединяются соответствующие коннекторы как типа A, так и типа B.

Так же существуют миниатюрные разъёмы - Micro USB.

Тип USB 2.0 Значение контактов Цвет провода

Подключение полноскоростного устройства

Подключение низкоскоростного устройства

Сигналы синхронизации кодируются вместе с данными по методу NRZI (Non Return to Zero Invert). Каждому пакету предшествует поле синхронизации SYNC, позволяющее приемнику настроиться на частоту передатчика.

Кабель также имеет линии VBus и GND для передачи питающего напряжения 5 В к устройствам. Сечение проводников выбирается в соответствии с длиной сегмента для обеспечения гарантированного уровня сигнала и питающего напряжения.

· Лекция 14. Универсальная последовательная шина USB.

Толковый словарь по вычислительным системам определяет понятие интерфейс (interface) как границу раздела двух систем, устройств или программ; элементы соединения и вспомогательные схемы управления, используемые для соединения устройств. Мы же поговорим о интерфейсах, позволяющих подключать к персональным (и не только) компьютерам разнообразные периферийные устройства и их контроллеры. По способу передачи информации интерфейсы подразделяются на параллельные и последовательные. В параллельном интерфейсе все биты передаваемого слова (обычно байта) выставляются и передаются по соответствующим параллельно идущим проводам одновременно. В PC традиционно используется параллельный интерфейс Centronics, реализуемый LPT-портами. В последовательном же интерфейсе биты передаются друг за другом, обычно по одной линии. СОМ порты PC обеспечивают последовательный интерфейс в соответствии со стандартом RS-232C. При рассмотрении интерфейсов важным параметром является пропускная способность.

В архитектуре современных компьютеров все большее значение приобретают внешние шины, служащие для подключения различных устройств. Сегодня это могут быть, например, внешние жесткие диски, CD-, DVD-устройства, сканеры, принтеры, цифровые камеры и прочее.

Широко используемый последовательный интерфейс синхронной и асинхронной передачи данных.

2.Шина USB.Общая характеристика.

USB (Universal Serial Bus - универсальная последовательная шина) является промышленным стандартом расширения архитектуры PC, ориентированным на интеграцию с телефонией и устройствами бытовой электроники. Версия 1.0 была опубликована в январе 1996 года. Архитектура USB определяется следующими критериями:

Ø Легко реализуемое расширение периферии PC.

Ø Дешевое решение, поддерживающее скорость передачи до 12 M бит/с.

Ø Полная поддержка в реальном времени передачи аудио и (сжатых) видеоданных.

Ø Гибкость протокола смешанной передачи изохронных данных и асинхронных сообщений.

Ø Интеграция с выпускаемыми устройствами.

Ø Доступность в PC всех конфигураций и размеров.

Ø Обеспечение стандартного интерфейса, способного быстро завоевать рынок.

Ø Создание новых классов устройств, расширяющих PC.

Ø С точки зрения конечного пользователя, привлекательны следующие черты USB:

Ø Простота кабельной системы и подключений.

Ø Скрытие подробностей электрического подключения от конечного пользователя.

Ø Самоидентифицирующиеся ПУ, автоматическая связь устройств с драйверами и конфигурирование.

Ø Возможность динамического подключения и конфигурирования ПУ.

С середины 1996 года выпускаются PC со встроенным контроллером USB, реализуемым чипсетом. Уже появились модемы, клавиатуры, сканеры, динамики и другие устройства ввода/вывода с поддержкой USB, а также мониторов с USB-адаптерами - они играют роль концентраторов для подключения других устройств.

Структура USB

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

Ниже приводится авторский вариант перевода терминов из спецификации "Universal Serial Bus Specification", опубликованной Compaq , DEC , IBM , Intel , Microsoft , NEC и Northern Telecom . Более подробную и оперативную информацию можно найти по адресу:

Устройства (Device) USB могут являться хабами, функциями или их комбинацией. Хаб (Hub) обеспечивает дополнительные точки подключения устройств к шине. Функции (Function) USB предоставляют системе дополнительные возможности, например подключение к ISDN, цифровой джойстик, акустические колонки с цифровым интерфейсом и т. п. Устройство USB должно иметь интерфейс USB, обеспечивающий полную поддержку протокола USB, выполнение стандартных операций (конфигурирование и сброс) и предоставление информации, описывающей устройство. Многие устройства, подключаемые к USB, имеют в своем составе и хаб, и функции. Работой всей системы USB управляет хост-контроллер (Host Controller), являющийся программно-аппаратной подсистемой хост-компьютера.

Физическое соединение устройств осуществляется по топологии многоярусной звезды. Центром каждой звезды является хаб, каждый кабельный сегмент соединяет две точки - хаб с другим хабом или с функцией. В системе имеется один (и только один) хост-контроллер, расположенный в вершине пирамиды устройств и хабов. Хост-контроллер интегрируется с корневым хабом (Root Hub), обеспечивающим одну или несколько точек подключения - портов. Контроллер U SB, входящий в состав чипсетов, обычно имеет встроенный двухпортовый хаб. Логически устройство, подключенное к любому хабу USB и сконфигурированное (см. ниже), может рассматриваться как непосредственно подключенное к хост-контроллеру.

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

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

Примерами функций являются:

Ø Указатели - мышь, планшет, световое перо.

Ø Устройства ввода - клавиатура или сканер.

Ø Устройство вывода - принтер, звуковые колонки (цифровые).

Ø Телефонный адаптер ISDN.

Хаб - ключевой элемент системы РпР в архитектуре USB. Хаб является кабельным концентратором. Точки подключения называются портами хаба. Каждый хаб преобразует одну точку подключения в их множество. Архитектура допускает соединение нескольких хабов.

У каждого хаба имеется один восходящий порт (Upstream Port), предназначенный для подключения к хосту или хабу верхнего уровня. Остальные порты являются нисходящими (Downstream Ports), предназначенными для подключения функций или хабов нижнего уровня. Хаб может распознать подключение устройств к портам или отключение от них и управлять подачей питания на их сегменты. Каждый из портов может быть разрешен или запрещен и сконфигурирован на полную или ограниченную скорость обмена. Хаб обеспечивает изоляцию сегментов с низкой скоростью от высокоскоростных.

Хабы могут управлять подачей питания на нисходящие порты; предусматривается установка ограничения на ток, потребляемый каждым портом.

Система USB разделяется на три уровня с определенными правилами взаимодействия. Устройство USB содержит интерфейсную часть, часть устройства и функциональную часть. Хост тоже делится на три части - интерфейсную, системную и ПО устройства. Каждая часть отвечает только за определенный круг задач, логическое и реальное взаимодействие между ними иллюстрирует рис. 7.1.

В рассматриваемую структуру входят следующие элементы:

Ø Физическое устройство USB - устройство на шине, выполняющее функции, интересующие конечного пользователя.

Ø Client SW - ПО, соответствующее конкретному устройству, исполняемое на хост-компьютере. Может являться составной частью ОС или специальным продуктом.

Ø USB System SW - системная поддержка USB, независимая от конкретных устройств и клиентского ПО.

Ø USB Host Controller - аппаратные и программные средства для подключения устройств USB к хост-компьютеру.

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

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

Передача по двум проводам в USB не ограничивается дифференциальными сигналами. Кроме дифференциального приемника каждое устройство имеет линейные приемники сигналов D+ и D-, а передатчики этих линий управляются индивидуально. Это позволяет различать более двух состояний линии, используемых для организации аппаратного интерфейса. Состояния Diff0 и Diff1 определяются по разности потенциалов на линиях D+ и D- более 200 мВ при условии, что на одной из них потенциал выше порога срабатывания VSE. Состояние, при котором на обоих входах D+ и D- присутствует низкий уровень, называется линейным нулем (SEO - Single-Ended Zero). Интерфейс определяет следующие состояния:

Ø Data J State и Data К State - состояния передаваемого бита (или просто J и К), определяются через состояния Diff0 и Diff1.

Ø Idle State - пауза на шине.

Ø Resume State - сигнал "пробуждения" для вывода устройства из "спящего" режима.

Ø Start of Packet (SOP) - начало пакета (переход из Idle State в К).

Ø End of Packet (EOP) - конец пакета .

Ø Disconnect - устройство отключено от порта.

Ø Connect - устройство подключено к порту.

Ø Reset - сброс устройства.

Состояния определяются сочетаниями дифференциальных и линейных сигналов; для полной и низкой скоростей состояния DiffO и Diff1 имеют противоположное назначение.
В декодировании состояний Disconnect, Connect и Reset учитывается время нахождения линий (более 2,5 мс) в определенных состояниях.

Шина имеет два режима передачи. Полная скорость передачи сигналов USB составляет 12 Мбит/с, низкая - 1,5 Мбит/с. Для полной скорости используется экранированная витая пара с импедансом 90 Ом и длиной сегмента до 5 м, для низкой - невитой неэкранированньгй кабель до 3 м. Низкоскоростные кабели и устройства дешевле высокоскоростных. Одна и та же система может одновременно использовать оба режима; переключение для устройств осуществляется прозрачно.

Низкая скорость предназначена для работы с небольшим количеством ПУ, не требующих высокой скорости. Скорость, используемая устройством, подключенным к конкретному порту, определяется хабом по уровням сигналов

на линиях D+ и D-, смещаемых нагрузочными резисторами R2 приемопередатчиков (см. рис. 7.2 и 7.3)

Сигналы синхронизации кодируются вместе с данными по методу NRZI (Non Return to Zero Invert), его работу иллюстрирует рис. 7.4. Каждому пакету предшествует поле синхронизации SYNC, позволяющее приемнику настроиться на частоту передатчика. Кабель также имеет линии VBus и GND для передачи питающего напряжения 5 В к устройствам.

Сечение проводников выбирается в соответствии с длиной сегмента для обеспечения гарантированного уровня сигнала и питающего напряжения. Стандарт определяет два типа разъемов (см. табл. 7.1 и рис. 7.5).

Разъемы типа "А" применяются для подключения к хабам (Upstream Connector). Вилки устанавливаются на кабелях, не отсоединяемых от устройств (например, клавиатура, мышь и т. п.). Гнезда устанавливаются на нисходящих портах (Downstream Port) хабов. Разъемы типа "В" (Downstream Connector) устанавливаются на устройствах, от которых соединительный кабель может отсоединяться (принтеры и сканеры). Ответная часть (вилка) устанавливается на соединительном кабеле, противоположный конец которого имеет вилку типа "А".

Разъемы типов "А" и "В" различаются механически (рис. 7.5), что исключает недопустимые петлевые соединения портов хабов. Четырехконтактные разъемы имеют ключи, исключающие неправильное присоединение. Конструкция разъемов обеспечивает позднее соединение и раннее отсоединение сигнальных цепей по сравнению с питающими. Для распознавания разъема USB на корпусе устройства ставится стандартное символическое обозначение.

Рис. 7.5. Гнезда USB: а - типа "А", б - типа "В", в - символическое обозначение

Питание устройств USB возможно от кабеля (Bus-Powered Devices) или от собственного блока питания (Self-Powered Devices). Хост обеспечивает питанием непосредственно подключенные к нему ПУ. Каждый хаб, в свою очередь, обеспечивает питание устройств, подключенных к его нисходящим портам. При некоторых ограничениях топологии допускается применение хабов, питающихся от шины. На рис. 7.6 приведен пример схемы соединения устройств USB.

Здесь клавиатура, перо и мышь могут питаться от шины.

USB поддерживает как однонаправленные, так и двунаправленные режимы связи. Передача данных производится между ПО хоста и конечной точкой устройства. Устройство может иметь несколько конечных точек, связь с каждой из них (канал) устанавливается независимо.

Архитектура USB допускает четыре базовых типа передачи данных:

Ø Управляющие посылки (Control Transfers), используемые для конфигурирования во время подключения и в процессе работы для управления устройствами. Протокол обеспечивает гарантированную доставку данных. Длина поля данных управляющей посылки не превышает 64 байт на полной скорости и 8 байт на низкой.

Ø Сплошные передачи (Bulk Data Transfers) сравнительно больших пакетов без жестких требований ко времени доставки. Передачи занимают всю свободную полосу пропускания шины. Пакеты имеют поле данных размером 8, 16, 32 или 64 байт. Приоритет этих передач самый низкий, они могут приостанавливаться при большой загрузке шины. Допускаются только на полной скорости передачи.

Ø Прерывания (Interrupt) - короткие (до 64 байт на полной скорости, до 8 байт на низкой) передачи типа вводимых символов или координат. Прерывания имеют спонтанный характер и должны обслуживаться не медленнее, чем того требует устройство. Предел времени обслуживания устанавливается в диапазоне 1-255 мс для полной скорости и 10-255 мс - для низкой.

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

Полоса пропускания шины делится между всеми установленными каналами. Выделенная полоса закрепляется за каналом, и если установление нового канала требует такой полосы, которая не вписывается в уже существующее распределение, запрос на выделение канала отвергается.

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

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

Протокол

Все обмены (транзакции) по USB состоят из трех пакетов. Каждая транзакция планируется и начинается по инициативе контроллера, который посылает пакет-аркер (Token Packet). Он описывает тип и направление передачи, адрес ус-тройства USB и номер конечной точки. В каждой транзакции возможен обмен только между адресуемым устройством (его конечной точкой) и хостом. Адресуемое маркером устройство распознает свой адрес и готовится к обмену. Источник данных (определенный маркером) передает пакет данных (или уведомление об отсутствии данных, предназначенных для передачи). После успешного приема пакета приемник данных посылает пакет подтверждения (Handshake Packet).

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

Устойчивость к ошибкам обеспечивают следующие свойства USB:

Ø Высокое качество сигналов, достигаемое благодаря дифференциальным приемникам/передатчикам и экранированным кабелям.

Ø Защита полей управления и данных CRC-кодами.

Ø Обнаружение подключения и отключения устройств и конфигурирование ресурсов на системном уровне.

Ø Самовосстановление протокола с тайм-аутом при потере пакетов.

Ø Управление потоком для обеспечения изохронности и управления аппаратными буферами.

Ø Независимость функций от неудачных обменов с другими функциями.

Для обнаружения ошибок передачи каждый пакет имеет контрольные поля CRC-кодов, позволяющие обнаруживать все одиночные и двойные битовые ошибки. Аппаратные средства обнаруживают ошибки передачи, а контроллер автоматически производит трехкратную попытку передачи. Если повторы безуспешны, сообщение об ошибке передается клиентскому ПО.

Устройства 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) он определяет скорость подключенного устройства.

Ø Disabled (запрещен) - порт передает только сигнал сброса (по команде от контроллера), сигналы от порта (кроме обнаружения отключения) не воспринимаются. По обнаружении отключения (2,5 мкс состояния SEO) порт переходит в состояние Disconnect, а если отключение обнаружено "спящим" хабом, контроллеру будет послан сигнал Resume.

Ø Enabled (разрешен) - порт передает сигналы в обоих направлениях. По команде контроллера или по обнаружении ошибки кадра порт переходит в состояние Disabled, а по обнаружении отключения - в состояние Disconnect.

Ø Suspended (приостановлен) - порт передает сигнал перевода в состояние останова ("спящий" режим). Если хаб находится в активном состоянии, сигналы через порт не пропускаются ни в одном направлении. Однако "спящий" хаб воспринимает сигналы смены состояния незапрещенных портов, подавая "пробуждающие" сигналы от активизировавшегося устройства даже через цепочку "спящих" хабов. Состояние каждого порта идентифицируется контроллером хаба с помощью отдельных регистров. Имеется общий регистр, биты которого отражают факт изменения состояния каждого порта (фиксируемый во время EOF). Это позволяет хост-контроллеру быстро узнать состояние хаба, а в случае обнаружения изменений специальными транзакциями уточнить состояние.

Хост-контроллер

Хост-компьютер общается с устройствами через контроллер. Хост имеет следующие обязанности:

Ø обнаружение подключения и отсоединения устройств USB;

Ø манипулирование потоком управления между устройствами и хостом;

Ø управление потоками данных;

Ø сбор статистики;

Ø обеспечение энергосбережения подключенными ПУ.

Ø Системное ПО контроллера управляет взаимодействием между устройствами и их ПО, функционирующим на хост-компьютере, для согласования:

Ø нумерации и конфигурации устройств;

Ø изохронных передач данных;

Ø асинхронных передач данных;

Ø управления энергопотреблением;

Ø информации об управлении устройствами и шиной.


Стандарты USB 1.1 и 2.0

Универсальная последовательная шина USB (Universal Serial Bus) является еще одним последовательным интерфейсом. Поскольку это самый популярный последовательный интерфейс, то он заслуживает отдельной главы.

Шина USB позволяет последовательное подсоединение до 127 устройств (вы можете подключать устройство к устройству, если производитель устройства предусмотрел такую возможность). Как и в случае с IEEE, поддерживается «горячее» отключение/подключение устройств, то есть вам для подключения/отключения устройства не нужно выключать питание компьютера. Более того, как и в случае с IEEE, устройства могут получать питание по шине USB, что позволяет обходиться без дополнительных блоков питания.

Шина USB появилась в январе 1996 года – тогда была анонсирована версия USB 1.0. Два года спустя, в 1998 году, появилась шина USB 1.1. Практически все устройства версии 1.0 совместимы с USB 1.1, и наоборот – просто изменения были незначительные.

Шина USB 2.0 появилась в 2003 году. Она обратно совместима с версиями 1.0 и 1.1. Это означает, что к шине USB 2.0 можно подключить устройства версии 1.0 и 1.1. Определить версию устройства очень легко – по логотипу USB. На рис. 10.1 изображен логотип USB версий 1.0 и 1.1 (сейчас чаще встречается устройство версии 1.1), а на рис. 10.2 – логотип USB 2.0.

Рис. 10.1. Логотип usb 1.1: старый (слева) и новый (справа)

Рис. 10.2. Логотип usb 2.0

Технические характеристики шины USB 1.1 приведены в табл. 10.1.
//-- Таблица 10.1. Технические характеристики шины USB1.1 --//


Обратите внимание, что шина USB 1.1 может работать в двух режимах: в низкоскоростном и высокоскоростном. В первом скорость обмена составляет 1,5 Мбит/с, во втором – 12 Мбит/с.
Технические характеристики шины USB 2.0 практически такие же, но для USB 2.0 предусмотрено три скоростных режима:
Low-speed (скорость 10–1500 Кбит/c) – для устройств ввода (клавиатуры, мыши, джойстиков);
Full-speed (0,5–12 Мбит/с) – различные среднескоростные устройства;
Hi-speed (5–480 Мбит/с) – носители данных, видеоустройства.

Подключение USB-устройств

На задней стенке системного блока обычно можно обнаружить четыре USB-порта (иногда 6 или даже 8). Данные порты (рис. 10.3) принадлежат к корневым концентраторам USB. У каждого корневого концентратора есть два USB-порта. Следовательно, если у вас на системной плате четыре USB-порта, то всего в системе два корневых концентратора, если восемь портов – в системе четыре корневых концентратора.

//-- Рис. 10.3. USB-порты --//
Откройте Диспетчер устройств (для этого выполните команду Пуск, Настройка, Панель управления, Система, перейдите на вкладку Оборудование и нажмите кнопку Диспетчер устройств). В окне Диспетчера устройств раскройте группу Контроллеры универсальной последовательной шиныUSB (рис. 10.4).

//-- Рис. 10.4. Диспетчер устройств --//
Щелкните правой кнопкой по любому корневому концентратору и выберите команду Свойства. В появившемся окне перейдите на вкладку Питание. Вы увидите следующую информацию (рис. 10.5):
тип питания концентратора – наш концентратор корневой, поэтому имеет свое собственное питание;
информацию о подключенных к портам концентратора устройствах и об их питании – в нашем случае подключено одно устройство и оно требует питания в 100 мА. Максимум наш концентратор может передать до 500 мА на порт;
количество свободных портов – у корневого концентратора всего два порта, один из них занят (подключено запоминающее устройство – USB-диск), поэтому свободен один порт.

//-- Рис. 10.5. Подробная информация о концентраторе --//
Если у вас всего два концентратора и к каждому можно подключить всего два устройства, то как, спрашивается, можно подключить к компьютеру до 127 USB-устройств? Во-первых, к портам корневого концентратора вы можете подключить дополнительные USB-концентраторы (рис. 10.6). USB-концентратор подключается к USB-порту, но взамен предоставляет как минимум три свободных USB-порта. Бывают два типа USB-концентраторов: с собственным питанием и с питанием от родительского порта. Лучше покупать концентраторы с собственным питанием. Почему? Как мы знаем, на один порт передается сила тока максимум 500 мА; 100 мА потребуется для питания самого концентратора, поэтому для устройств останется 400 мА. Выходит, что к каждому порту такого концентратора вы уже не сможете подключить какое-либо мощное USB-устройство, а сможете подключать устройства вроде USB-дисков, которым необходимо всего 100 мА.

//-- Рис. 10.6. USB-концентратор --//
Если же концентратор будет обладать собственным питанием, то можно будет обеспечить по 500 мА на каждый порт, то есть USB-порты будут полноценными, как на корневых концентраторах.
Кроме того, некоторые устройства, например клавиатура, могут выступать в роли USB-концентратора (данные устройства должны быть USB-устройствами). Вы подключаете клавиатуру к USB-порту, а к ней можно подключить еще несколько устройств. Обычно к клавиатуре подключают USB-мыши и иногда USB-дис-ки. Понятно, что данные устрой ства должны быть не «обжорливыми», поскольку всего на порт подаются те самые 500 мА; 100 мА уходит на питание клавиатуры, а остальное делится между подключенными к клавиатуре устройствами. Учитывая такое иерархическое подключение устройств, несложно себе представить всего 127 подключенных к компьютеру устройств. Это же не 63 000, как в случае с IEEE-1394!
Теперь о разъемах USB. Разъемы, имеющиеся на задней стенке системного блока (самые обычные USB-разъемы), называются USB типа А. Кабель для разъема типа А изображен на рис. 10.7.

//-- Рис. 10.7. Кабель типа А --//
Разъем и кабель типа B изображены на рис. 10.8. Обычно разъем типа B используется на периферийных устройствах (принтерах, сканерах). USB-кабель для подключения периферийного устройства к компьютеру (рис. 10.9) оснащен разъемом типа B (для подклю че-ния к прин теру/сканеру) и разъемом типа A (для подключения к компьютеру).

//-- Рис. 10.8. Разъем (гнездо) и кабель типа B --//
//-- Рис. 10.9. Кабель для подключения USB-принтера --//
Кроме разъемов типа A и B, есть еще мини-разъем, который так и называется – mini-USB (рис. 10.10). Обычно он используется для подсоединения USB-кабеля к цифровому фотоаппарату, мобильному телефону. При этом один конец кабеля – mini-USB, а второй – типа A.

//-- Рис. 10.10. Кабель mini-USB --//

Модернизация старых компьютеров

На старых компьютерах нет USB-портов, но можно установить USB-кон-троллер, выполненный в виде PCI-платы расширения (рис. 10.11) или в виде PC-карты (для ноутбуков). При покупке контроллера убедитесь, что он поддер живает USB 2.0 (рис. 10.12) – если ставить, то самое новое.

//-- Рис. 10.11. USB-контроллер в виде PCI-платы (4 USB-порта) --//

//-- Рис. 10.12. Двухпортовая РС-карта (добавляет поддержку USB в старый ноутбук) --//
Иногда компьютер не очень старый – поддержка USB есть, но версии 1.1, а нужно подключить устройство USB 2.0. В этом случае тоже поможет PCI-контроллер. Еще раз повторюсь: при покупке нужно убедиться, что вы покупаете именно контроллер USB 2.0.

В настоящее время стандарт USB 3.0 еще не принят, но уже находится на стадии разработки. Предполагается, что он будет передавать сигналы с помощью оптоволоконного кабеля. USB 3.0 будет обратно совместим с версиями 2.0 и 1.1.
Сейчас над созданием USB 3.0 работают следующие компании: Intel, Microsoft, Hewlett-Packard, Texas Instruments, NEC и NXP Semiconductors. Планируемая скорость передачи данных (пиковая) – 4,8 Гбит/с.

Поддерживает ли ваша система USB

Казалось бы, если есть USB-порты, то и поддержка USB тоже должна быть. Но это не всегда так. Например, в Windows 2000 и в Windows XP SP1 нет драйвера для USB 2.0. Даже если у вас контроллер USB 2.0, то без установки драйвера для USB 2.0 шина USB будет работать как USB 1.1.
Скачайте программу USB Ready по адресу http://www.usb.org/about/ faq/ans3/usbready.exe, которая протестирует вашу систему на предмет наличия поддержки USB (рис. 10.13).

//-- Рис. 10.13. Программа usb ready --//
Что же делать тем, у кого новый USB-контроллер? Есть несколько вариантов:
установить новую версию ОС – Windows Vista, но это стоит не дешево;
обновить версию ОС до Windows XP SP2; установить драйвер USB 2.0.

Далеко не всегда хочется переустанавливать хорошо работающую систему. Тогда будем искать драйвер. Иногда он поставляется вместе с материнской платой – тогда вам повезло. Но если его в комплекте нет, тогда будем искать его в Интернете. Самое интересное, что на сайте Microsoft его уже нет. Я нашел нужный драйвер на сайте softodrom.ru:
http://soft.softodrom.ru/ap/p4515.shtml.
Если к моменту выхода книги из печати его там уже не будет, обращайтесь ко мне – я поделюсь им с вами.

· Лекция 15. Протокол работы USB-шины.

Общие сведения об USB -шине

У любого компьютера, выпущенного в последнее время, вы обязательно обнаружите либо на лицевой панели, либо на задней стенке разъем USB. Шина USB (Universal Serial Bus) первоначально была разработана для обеспечения легкого подключения компьютера к телефонным линиям и расширения числа портов. Первая версия стандарта (версия 1.0) была выпущена в январе 1996 года. Сейчас в основном используется версия 1.1. Стандарт USB 1.1 вполне удовлетворяет всем требованиям при работе с низко-скоростными устройствами, вроде мышей и клавиатур, и даже с устройствами, работающими на средних скоростях, вроде Ethernet-адаптеров (10 Mbit/sec) или устройств бытовой электроники (таких, как цифровые камеры и MP3-плейеры), которые пересылают только несколько мегабайт данных. Но если на периферийное устройство или в обратном направлении необходимо пересылать большие объемы информации (примеры - жесткие диски, видеокамеры высокого разрешения, или одновременное использование нескольких сетевых адаптеров стандарта 100BaseT), то скорости, обеспечиваемые USB 1.1, уже недостаточны. Поэтому в 1999 году была разработана версия 2.0 стандарта USB, обеспечивающая более высокие скорости обмена данными.

Современные компьютеры обычно имеют контроллер USB-шины, установленный на материнской плате. Для USB версии 1.1 было разработано два типа таких контроллеров, отличающихся интерфейсом взаимодействия с USB-устройствами: OHCI (Open Host Controller Interface) фирмы Compaq и UHCI (Universal Host Controller Interface) фирмы Intel. Оба типа имеют примерно одинаковые возможности и USB-устройства работают с обоими типами контроллеров. Аппаратная часть UHCI-контроллеров проще, а значит, они дешевле, но зато требуют более сложных драйверов, что увеличивает нагрузку на процессор. Версия 2.0 стандарта USB использует улучшенный вариант интерфейса - EHCI (Enhanced Host Controller Interface).

Стандарт USB предусматривает строгую иерархию устройств, управляемых основным хостом, и использование протокола master/slave для управления подключаемыми устройствами. На один USB-разъем могут быть последовательно подключены до 127 устройств. Но непосредственно подключать одно устройство к другому нельзя, поскольку питание таких устройств осуществляется по той же шине. Поэтому для подключения дополнительных устройств используются специальные хабы, обеспечивающие снабжение этих устройств необходимой энергией. В результате USB-устройства образуют как бы дерево, каждая не конечная вершина которого является хабом. Поскольку любой обмен данными инициируется только хостом, и периферийные устройства не могут начать взаимодействие, исключена возможность коллизий, вследствие чего снижается стоимость устройств. Правда, такое решение приводит к некоторому снижению производительности. В результате USB-устройства версии 1.1 могут работать в двух режимах: так называемом low speed, обеспечивающем скорость передачи данных до 1.5 Mбит/сек, и full speed, в котором скорость передачи данных может составлять 12 Мбит/сек. Это только теоретический предел, а реально производительность шины даже в идеальных условиях не превышает 8,5 Мбит/сек., а в среднем составляет около 2 Мбит/сек.

Интерфейс EHCI, используемый в устройствах версии 2, обеспечивает режим работы high speed, для которого скорость передачи данных может достигать 480 Мбит/сек. Для того чтобы USB-устройства могли обмениваться данными с такой скоростью, и хост-контроллер и само устройство должны соответствовать стандарту USB 2.0 и обеспечивать работу с интерфейсом EHCI. Однако хост-контроллеры 2.0 успешно работают с устройствами версии 1.1. И наоборот, вполне можно подключать устройства USB 2.0 к хосту (и к хабам) версии USB 1.1 и они будут прекрасно работать, но со скоростью не более 12, а не 480 Мбит/сек.

В настоящее время разработан широкий спектр устройств, подключаемых по шине USB. Это клавиатуры, мыши, джойстики, игровые приставки, сканеры, модемы, принтеры, цифровые камеры, устройства хранения информации – дисководы гибких и жестких дисков, дисководы Zip, LS120 и CD-ROM. Очень перспективный и интересный класс таких устройств образуют накопители на основе Flash-памяти .

Физическая среда

Шина USB , обладает полосой пропускания 1,5 или 12 Мбит/с.

USB -кабель состоит из 4 проводников:

Два провода формируют витую пару, применяемую в дифференциальных передачах данных;

Остальные два представляют собой линии питания и заземления устройств, не имеющих собственного питания 5 В постоянного напряжения.

USB стандарт предполагает два вида кабеля и два варианта разъемов. High-speed (высокоскоростные) кабели, для связи 12Mb в секунду, лучше экранированы, чем их менее дорогие 1.5 Mb заменители. Каждый кабель имеет "А" разъем на одной стороне и "B" на другой. Рисунок 1 показывает как "А" разъемы подсоединяются к исходящему, а "В" к нисходящему. Таким образом два типа физически различны и невозможно подключить их неправильно.

Рис 1. USB топологоия "подключение звездой"

USB шина позволяет подключать до 127 устройств. Использование такого количества устройств возможно при многоуровневом каскадировании. Наглядно это объясняет следующий рисунок:

Это первая архитектурная особенность шины USB: ее логическая топология - многоуровневая звезда.

Самым верхним уровнем является корневой концентратор, который обычно совмещается с USB контроллером. Если функции контроллера понятны, то концентратор - устройство для периферийных интерфейсов не привычное. В данном случае его функция такая же, что и концентраторов сетей передачи данных - добавление новых портов для подключения большего числа устройств. Ничего большего, чем просто разветвитель.

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

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

Физическая топология шины - звезда

Это объясняется тем, что каждый концентратор обеспечивает прозрачно для хоста соединение с устройством.

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

Хост, как уже было сказано ранее, программно-аппаратный комплекс.

В обязанности хоста входит:

· Слежение за подключением и отключением устройств

· Организация управляющих потоков между USB-устройством и хостом.

· Организация потоков данных между USB-устройством и хостом

· Контроль состояния устроств и ведение статистики активности

· Снабжение подключенных устройств электропитанием

Аппаратной частью является хост-контроллер - посредник между хостом и устройствами на шине.

Программные функции (перечисление устройств и их конфигурирование, управление энергопотреблением, процессами передачи, устройствами на шине и самой шиной) возложены на операционную систему. Первой популярной операционной системой, в которой поддержка USB реализована была в полном объеме стала Windows 98 Second Edition. Некоторые устройства могут быть работоспособными и под более ранними версиями (98 без SE, и изредка 95), но далеко не все и не всегда.

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

Хаб должен следить за подключением и отключением устройств, уведомляя хост об изменениях, управлять питанием портов. В концентраторе стандарта USB 2.0 можно выделить 3 функциональных блока: контроллер, повторитель, транслятор транзакций. Контроллер отвечает за соединения с хостом. Понятие повторитель в USB несколько отличается от принятого в сетях передачи данных. Его обязанность - соединять входной и какой-то нужный из выходных портов. Транслятор транзакций появился лишь в USB 2.0 и нужен, как всегда, из соображений совместимости с предыдущими версиями. Вкратце его суть в том, что бы обеспечивать максимальную скорость соединения с хостом. Подключенное к высокоскоростному (USB 2.0) порту старое медленное (USB 1.1) устройство съедало бы значительную часть времени, а следовательно и полезной пропускной способности шины, ведя обмен с хостом на низкой скорости (почему так происходит мы выясним позже при рассмотрении механизма обмена данными хост-устройство). Как метод борьбы транслятор транзакций буферизирует поступающий с медленного порта кадр, а затем на максимальной скорости передает его хосту, или же буферизирует получаемый на максимальной скорости кадр от хоста, передавая его затем устройству на меньшей, приемлемой для него скорости. Помимо разветвления и трансляции транзакций хаб должен осуществлять конфигурирование портов и слежение за корректным функционированием подключенных к ним устройств. Нужно сказать также, что при использовании старых и новых концентраторов вместе возможно создание неоптимальных с точки зрения производительности конфигураций. Для того что бы избежать создания узких мест в своей цепи, подключайте низкоскоростные устройства к низкоскоростным хабам, которые в свою очередь делайте последними уровнями ветвления и не подключайте их в середину высокоскоростной цепочки.

Описание протоколов используемых при передаче данных

Структура USB пакета

В отличие от аналогичных последовательных интерфейсов, где формат посылаемых данных не имеет четко организованной структуры, для USB шины разграничены различные слои протоколов.

Каждая USB транзакция состоит из следующих частей:

· Признак пакета (Заголовок определяющий что далее будет следовать)

· Пакет данных (Опционально)

· Пакет статуса транзакции (Используется для подтверждения нормального завершения транзакции и обеспечения коррекции ошибок при передаче)

Мастером на USB шине является хост. Он и является инициатором всех транзакций. Первым передаваемым пакетом является Признак (Token Packet). Он генерируется хостом для определения что будет следовать далее, какая это будет транзакция: чтение или запись, к какому устройству и конечной точке будет обращение. Следующим пакетом, как обычно, следует пакет данных (Data Packet). И в завершении транзакции следует пакет статуса (Status Packet), который либо подтверждает успешное принятие данных, либо указывает что конечная точка приостановлена (STALL) или не готова принимать данные.

Поля USB пакета

Данные по USB шине всегда передаются младшими битами вперед. USB пакет состоит из следующих полей:

· Поле синхронизации (Sync Field)

Все пакеты должны начинаться с поля синхронизации. Поле синхронизации имеет размер 8 бит для низкоскоростных и полноскоростных устройств или 32 бита для высокоскоростных устройств и используется для подсинхронизации тактового генератора, встроенного в USB контроллер. Последние два бита поля синхронизации являются маркером, который используется для идентификации конца области синхронизации и начала PID поля.

· Поле идентификатора пакета (PID Field)

Идентификатор пакета следует непосредственно после поля синхронизации в каждом передаваемом USB пакете. PID состоит из четырехбитного типа пакета, следующего за четырехбитным проверочным полем как показано на рисунке 4.

(LSB)

(MSB)

PID0

PID1

PID2

PID3

PID0

PID1

PID2

PID3

Рисунок 2. Формат поля PID.

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

PID Тип

Имя PID

PID

Описание

Признак (Token)

0001

Адрес + номер конечной точки для транзакции ХОСТ -->Функция

1001

Адрес + номер конечной точки для транзакции ХОCT <-- Функция

0101

Маркер начала пакета и его номер

SETUP

1101

Адрес + номер конечной точки для SETUP транзакции ХОСТ ® Функция в канале управления

Данные

DATA0

0011

Четный PID пакета данных

DATA1

1011

Нечетный PID пакета данных

Статус

0010

Приемник принял пакет данных без ошибок

1010

Принимающее устройство не может принять данные, или передающее не может их отправить

STALL

1110

Конечна точка приостановлена (HALT) или запрос по управляющему каналу не поддерживается

Спец.

1100

ХОСТ инициирует преамбулу, разрешая трафик для низкоскоростных устройств

Рисунок 3. Типы PID .

PID биты приведены в таблице в MSB порядке. Когда они передаются по шине, правый бит (бит 0) выдается первым.

· Поле адреса устройства (Addr Field)

Поле адреса используется для идентификации к какому устройству направлен текущий пакет. Размерность поля - 7 бит, что позволяет адресовать 127 уникальных USB устройств. После сброса или включения питания, адрес устройства устанавливается по умолчанию в 0 и должен быть запрограммирован хостом в ходе процесса энумерации. Адрес 0 (заданный по умолчанию) зарезервирован для вновь подключаемых устройств и не может быть назначен для нормальной работы.

· Поле адреса конечной точки (Endpoint Field)

Поле адреса конечной точки имеет размерность 4 бита и позволяет размещать в устройстве до 16 конечных точек. Все функции должны поддерживать одну управляющую "0" конечную точку. Низкоскоростные устройства поддерживают только три канала передачи: управляющий канал, связанный с нулевой конечной точкой и два дополнительных канала (две Interrupt конечные точки). Полноскоростные устройства поддерживают максимум до 16 конечных точек.

· Поле номера кадра (Frame Number Field)

Поле номера кадра представляет собой 11-битное поле, которое инкрементируется хостом при инициировании нового кадра. Поле номера кадра начинается заново с нуля при достижения максимального значения 0х7FF, и используется только для SOF маркеров в каждом начале кадра.

· Поле циклического контроля по избыточности (CRC)

Циклический контроль по избыточности (CRC) используются для защиты всех полей кроме PID в маркерах и пакетах данных. Защита Маркера и пакета данных обеспечивает 100% нахождение всех одиночных и двойных битовых ошибок. Для маркеров предусмотрено пяти-битное поле CRC, которое используется для защиты полей ADDR и ENDP пакетов IN, SETUP,OUT или поле отметки времени маркера SOF. Для пакета данных используется 16-битный полином, кодирующий всё поле данных пакета.

· Поле конца пакета (EOP)

Поле конца пакета представляет собой сигнал окончания пакета и устанавливается на шине путем выставления сигнала "Single Ended Zero " SE0 в течении двух битовых интервалов следующего за J состоянием, установленным на время одного битового интервала.

Типы USB пакетов

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

· Маркерные пакеты (Token Packets)

Существуют три типа маркерных пакетов:

1. In - информируют USB устройство, что хост хочет читать данные из устройства

2. Out - информирует USB устройство, что хост хочет передавать данные в устройство

3. Setup - используются для обозначения начала управляющего (Control Transfer) типа передачи данных

Все маркерные пакеты имеют следующий формат:

SYNC

ADDR

ENDP

CRC5

Рисунок 4 . Маркерный пакет.

· Пакеты данных (Token Packets)

Существуют два типа пакетов данных, каждый из которых способен содержать до 1024 байтов данных.

  1. DATA0
  2. DATA1

У высокоскоростных устройств для пакетов данных определены два других PID-a: DATA2 и MDATA. Пакет данных имеет нижеследующий формат:

SYNC

DATA

CRC16

Рисунок 5. Пакет данных.

Данные всегда посылаются целым числом байт. Данные CRC16 вычисляются только для поля данных в пакете и не включают PID, который имеет собственное поле проверки.

· Пакеты подтверждения (Handshake Packets)

Существуют три типа пакетов подтверждения, структура которых имеет только PID поле:

ACK - подтверждение того, что пакет был успешно принят

NAK - информирует, что устройство в данный момент не может принимать либо отправлять данные. Также используется в Interrupt транзакциях для информирования хоста, что устройство не имеет новых данных для передачи. Хост никогда не может выдавать ответ NAK. NAK используется в целях управления потоком данных.

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

Пакет подтверждения имеет нижеследующий формат:

SYNC

Рисунок 6. Пакет подтверждения.

· Пакеты начала кадра (Start of Frame Packets)

SOF пакет состоит из 11-ти битного номера кадра и генерируется хостом каждую 1ms ± 500ns для полноскоростной шины и каждые 125 µs ± 0.0625 µs для высокоскоростной шины.

Пакет начала кадра имеет нижеследующий формат:

SYNC

Frame Number

CRC16

Рисунок 7. Пакет начала кадра.

USB функция

Когда мы думаем о USB устройстве то мы представляем периферийное оборудование, но USB устройство само по себе не означает наличие только приемо-передатчика. USB устройство на самом деле представляет собой совокупность функций или законченных устройств, объединенных в одном изделии. Итак теперь мы знаем из каких составных частей состоит USB пакет.

К счастью, большинство USB контроллеров, весь физический протокол нижнего уровня поддерживают самостоятельно без вмешательства пользовательской программы. Вмешательство пользователя необходимо лишь тогда, когда на шине произошло одно из событий: прием или выдача пакета данных в/из FIFO, событие NAK или STALL, процесс энумерации или переход в режим пониженного энергопотребления.

Большинство функций имеет буфера для приема/передачи данных. Обычно их размер составляет 8 байт. Каждый буфер закреплён за определеннной конечной точкой, например за EP0 Out и EP0 In. Например хост инициирует запрос дескриптора устройства. USB контроллер функции считывает Setup пакет и определяет по адресному полю был ли он направлен именно к ней. Если пакет был направлен именно по этому адресу, то USB контроллер считывает данные в соответствующий буфер (FIFO) указанный в поле конечной точки (Endpoint Field). После этого функция генерирует пакет подтверждения, в котором указывает статус принятия пакета и устанавливает сигнал прерывания для внешнего управляющего контроллера, указывающий, что произошло событие по приему данных в RXFIFO. Все эти действия происходят без внешнего вмешательства ПО пользователя, что разгружает микроконтроллер реализующий функцию управления. ПО микроконтроллера обрабатывает прерывание - считывает из RXFIFO запрос дескриптора и отвечает на него выдачей структуры соответствующей запрошенному дескриптору.

Конечные точки

Конечные точки функции могут принимать или передавать данные. Конечные точки USB функции являются самым последним звеном в коммуникационном канале. Например, в программном слое, ваш драйвер устройства посылает пакет данных в конечную точку EP1 функции. Данные будут последовательно поступать в функцию и складываться USB контроллером в буфер RXFIFO1. Как только у управляющего микроконтроллера появиться свободное время он может считать из RXFIFO1 полученные данные. Если он хочет ответить пакетом данных, USB контроллер не может просто выставить их шину, т.к. мастером и инициатором запросов на шине является хост. Следовательно, управляющий микроконтроллер записывает пакет данных в IN конечную точку, например в EP1. Данные будут находится в буфере первой конечной точки TXFIFO1 до тех пор, пока хост не выставит на шину IN транзакцию к этой конечной точке. Конечные точки - это интерфейс связи между аппаратными средствами и микропрограммой работающей на функциональном устройстве. Все USB устройства должны поддерживать нулевую конечную точку (EP0). Она получает все управляющие и статус запросы во время процесса энумерации и всего цикла работы, пока устройство присоединено к USB шине.

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

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

· Потоковые каналы . Являются однонаправленными. В отличие от четко определенных сообщений не имеют определенного закрепленного в стандарте формата, что означает возможность передачи данных любого вида. Эти передачи могут контролироваться не только хостом, но и устройством. Используется для передач данных типа прерывание, групповая пересылка, изохронная (смотрим ниже). В спецификации в зависимости от типа передаваемых данных, предъявляемых требований к скорости обработки, задержки доставки и т.п. определены следующие типы передач.

· Управляющие передачи . Используются для конфигурирования устройств во время подключения и выполнения других специфических функций над устройством, включая организацию новых каналов.

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

· Групповая пересылка . Используется для гарантированной передачи данных больших объемов без предъявленных требований к скоростям и задержкам. Занимает под себя всю свободную пропускную способность шины. В любой момент доступная полоса может быть урезана при необходимости осуществления передач других видов с более высоким приоритетом, или добавлена, при освобождении другими устройствами. Обычно такие передачи используется между принтерами, сканерами, накопителями и др.

· Изохронная передачи . Используются для потоковых передач данных в реальном времени. Резервируют определенную полосу пропускания шины, гарантируют определенные величины задержек доставки, но не гарантируют доставку (в случае обнаружения ошибки повторной передачи не происходит. Передачи этого вида используются для передачи аудио и видео трафика.

Обмен данными может осуществляться в трех скоростных режимах:

· Low Speed. Низкоскоростной режим. Скорость передачи составляет 1.5 Мбит/с.

· Full Speed. Полноскоростной режим. Скорость передачи 12 Мбит/с.

· High Speed. Высокоскоростной режим. Появился лишь в спецификации 2.0. Скорость передачи 480 Мбит/с.

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

Приоритеты передач по USB -шине

Все операции по передаче данных инициируются хост-системой независимо от того, принимает ли она данные или пересылает в периферийное устройство. Все не выполненные операции хранятся в виде четырех списков по типам передач:

Изохронные передачи;

Передачи прерываний;

Передачи управляющих команд;

Передачи данных больших объемов.

Списки постоянно обновляются новыми запросами. Планирование операций по передаче информации в соответствии с упорядоченными в виде списков запросами выполняется хостом с 1-миллисекундным интервалом. В начале каждого такого интервала хост посылает по шине пакет SOF (Start Of Frame - начало кадра), после чего начинается обслуживание запросов из списка изохронных передач (т.к. они имеют наивысший приоритет).

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

По истечении 90% указанного 1-миллисекундного интервала хост автоматически переходит к обслуживанию запросов на передачу управляющих команд независимо от того, успел ли он полностью обслужить другие три списка или нет.

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

Таким образом:

Изохронные передачи гарантированно получают 90% пропускной способности шины;

Передачи прерываний занимают оставшуюся часть изохронных операций часть этой 90-процентной доли;

Под передачу данных большого объема выделяется все время, оставшееся после изохронных передач и передач прерываний (по-прежнему в рамках 90%-ой доли пропускной способности);

Управляющим передачам гарантируется 10% пропускной способности;

Если передача всех управляющих пакетов будет завершена до истечения выделенного для них 10%-го интервала, то оставшееся время будет использовано для передачи данных большого объема.

Источники информации

1. www.rus-linux.net (USB - Lin . html )

2. www.is.svitonline.com (USB Masters . htm )

3. Компьютерная документация от А до Я. (Технология USB 2.0. htm )

4. www.zyxel.ru – База знаний