Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции препода / лекция USB.doc
Скачиваний:
95
Добавлен:
30.04.2013
Размер:
215.55 Кб
Скачать

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

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

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

Рис. 1. Эмблема USB-устройств версии 1.1

Рис. 2. Эмблема USB-устройств версии 2.0

Современные компьютеры обычно имеют контроллер 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-памяти. [1]

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

Шина 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[3…0]

Описание

Признак (Token)

Out

0001

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

 

In

1001

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

 

SOF

0101

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

 

SETUP

1101

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

Данные

DATA0

0011

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

 

DATA1

1011

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

Статус

ACK

0010

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

 

NAK

1010

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

 

STALL

1110

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

Спец.

PRE

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 состоянием, установленным на время одного битового интервала.

Соседние файлы в папке Лекции препода