Шина usb описание. Последовательная шина usb

Шина usb описание. Последовательная шина usb

· Лекция 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 – База знаний


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

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

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

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

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

* Интеграция с выпускаемыми устройствами. ^ Доступность в PC всех конфигураций и размеров.

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

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

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

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

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

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

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

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

1.1. Структура USB

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

Ниже приводится авторский вариант перевода терминов из спецификации "Universal Serial Bus Specification. Revi- sion I.O.January 15, 1996", опубликованной Compaq, DEC, IBM, Intel, Microsoft, NEC и Northern Telecom. Более подробную и оперативную информацию можно найти по адресу: http://www.usb.org .

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Физическое устройство USB - устройство на шине, выполняющее функции, интересующие конечного пользователя.
  • Client SW - ПО, соответствующее конкретному устройству, исполняемое на хост-компьютере. Может являться составной частью ОС или специальным продуктом.
  • USB System SW - системная поддержка USB, независимая от конкретных устройств и клиентского ПО.
  • USB Host Controller - аппаратные и программные средства для подключения устройств USB к хост-компьютеру.

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

Стандарт USB определяет электрические и механические спецификации шины.

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

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

йа DataJ State и Data К State - состояния передаваемого бита (или просто J и К), определяются через состояния DiffO и 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.4. Кодирование данных по методу NRZI

Стандарт определяет два типа разъемов (см. табл. 7.1 и рис. 7.5).

Контакт Цепь Контакт Цепь
1 VBus 3 D+
2 D- 4 GND

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

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

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

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

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

Модель передачи данных

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

^ требуемой частотой доступа к шине и допустимыми задержками обслуживания;

^ требуемой полосой пропускания канала;

^ номером точки;

^ требованиями к обработке ошибок;

^ максимальными размерами передаваемых и принимаемых пакетов;

^ типом обмена;

^ направлением обмена (для сплошного и изохронного об- менов).

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

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

Каналом {Pipe) в USB называется модель передачи данных между хост-контроллером и конечной точкой (Endpoint) устройства. Имеются два типа каналов: потоки (Stream) и со- общения (Message). Поток доставляет данные от одного конца канала к другому, он всегда однонаправленный. Один и тот же номер конечной точки может использоваться для двух поточных каналов - ввода и вывода. Поток может реализовывать следующие типы обмена: сплошной, изохронный и прерывания. Доставка всегда идет в порядке "первым во- шел - первым вышел" (FIFO); с точки зрения USB, данные потока неструктурированы. Сообщения имеют формат, определенный спецификацией USB. Хост посылает запрос к конечной точке, после которого передается (принимается) па- кет сообщения, за которым следует пакет с информацией состояния конечной точки. Последующее сообщение нормально не может быть послано до обработки предыдущего, но при отработке ошибок возможен сброс необслуженных сообщений. Двухсторонний обмен сообщениями адресуется к одной и той же конечной точке. Для доставки сообщений используется только обмен типа "управление".

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

Типы передачи данных

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-кодов, позволяющие обнаруживать все одиночные и двойные битовые ошибки. Аппаратные средства обнаруживают ошибки передачи, а контроллер автоматически производит трехкратную попытку передачи. Если повторы безуспешны, сообщение об ошибке передается клиентскому ПО.

Форматы пакетов

Байты передаются по шине последовательно, начиная с младшего бита. Все посылки организованы в пакеты. Каждый пакет начинается с поля синхронизации Sync, которое представляется последовательностью состояний KJKJKJKK (кодированную по NRZI), следующую после состояния Idle. Последние два бита (КК) являются маркером начала пакета SOP, используемым для идентификации первого бита идентификатора пакета PID. Идентификатор пакета является 4-битным полем PID, идентифицирующим тип пакета (табл. 7.2), за которым в качестве контрольных следуют те же 4 бита, но инвертированные.

Тип PID Имя PID PID Содержимое и назначение
Token OUT 0001 Адрес функции и номер конечной точки - маркер транзакции функ- ции
Token IN 1001 Адрес функции и номер конечной точки - маркер транзакции хоста
Token SOF 0101 Маркер начала кадра
Token SETUP 1101 Адрес функции и номер конечной точки - маркер транзакции с управляющей точкой
Data DataO Datal 0011 1011 Пакеты данных с четным и нечетным PID чередуются для точной идентификации подтверждений
Handshake Ack 0010 Подтверждение безошибочного приема пакета
Handshake NAK 1010 Приемник не сумел принять или передатчик не сумел передать данные. Может использоваться для управления потоком данных (неготовность). В транзакциях прерываний является признаком отсутствия необслуженных прерываний
Handshake STALL 1110 Конечная точка требует вмешательства хоста
Special PRE 1100 Преамбула передачи на низкой скорости

В пакетах-маркерах IN, SETUP и OUT следующими являются адресные поля: 7-битный адрес функции и 4-битный адрес конечной точки. Они позволяют адресовать до 127 функций USB (нулевой адрес используется для конфигурирования) и по 16 конечных точек в каждой функции.

В пакете SOF имеется 11-битное поле номера кадра (Frame Number Field), последовательно (циклически) увеличиваемое для очередного кадра.

Поле данных может иметь размер от 0 до 1023 целых байт. Размер поля зависит от типа передачи и согласуется при установлении канала.

Поле СКС-кола присутствует во всех маркерах и пакетах данных, оно защищает все поля пакета, исключая PID. CRC для маркеров (5 бит) и данных (11 бит) подсчитываются по разным формулам.

Каждая транзакция инициируется хост-контроллером посылкой маркера и завершается пакетом квитирования. Последовательность пакетов в транзакциях иллюстрирует рис. 7.7.

Хост-контроллер организует обмены с устройствами согласно своему плану распределения ресурсов. Контроллер цикли- чески (с периодом 1 мс) формирует кадры (Frames), в которые укладываются все запланированные транзакции. Каж- дый кадр начинается с посылки маркера SOF (Start Of Frame), который является синхронизирующим сигналом для всех устройств, включая хабы. В конце каждого кадра выделяет- ся интервал времени EOF (End Of Frame), на время которого хабы запрещают передачу по направлению к контроллеру. Каждый кадр имеет свой номер. Хост-контроллер оперирует 32-битным счетчиком, но в маркере SOF передает только младшие 11 бит. Номер кадра увеличивается (циклически) во время EOF. Хост планирует загрузку кадров так, чтобы в них всегда находилось место для транзакций управления и прерывания. Свободное время кадров может заполняться сплошными передачами (Bulk Transfers).

Рис. 7.8. Поток кадров USB

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

^ синхронизация внутреннего генератора устройства с маркерами SOF;

^ подстройка частоты кадров под частоту устройства;

^ согласование скорости передачи (приема) устройства с частотой кадров.

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

1.2. Системное конфигурирование

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

Все устройства подключаются через порты хабов. Хабы определяют подключение и отключение устройств к своим портам и сообщают состояние портов при запросе от контроллера. Хост разрешает работу порта и адресуется к устройству через канал управления, используя нулевой адрес - USB Default Address. При начальном подключении или пос- ле сброса все устройства адресуются именно так.

Хост определяет, является новое подключенное устройство хабом или функцией, и назначает ему уникальный адрес USB. Хост создает канал управления (Control Pipe) с этим устрой- ством, используя назначенный адрес и нулевой номер точки назначения.

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

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

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

1. Хаб, к которому подключилось устройство, информирует хост о смене состояния своего порта ответом на опрос состояния. С этого момента устройство переходит в состояние Attached (подключено), а порт, к которому оно подключилось, в состояние Disabled.

2. Хост уточняет состояние порта.

3. Узнав порт, к которому подключилось новое устройство, хост дает команду сброса и разрешения порта.

4. Хаб формирует сигнал Reset для данного порта (10 мс) и переводит его в состояние Enabled. Подключенное устройство может потреблять от шины ток питания до 100 мА. Устройство переходит в состояние Powered (питание подано), все его регистры переводятся в исходное состояние, и оно отзывается на обращение по нулевому адресу.

5. Пока устройство не получит уникальный адрес, оно доступно по дежурному каналу, по которому хост-контроллер определяет максимально допустимый размер поля данных пакета.

6. Хост сообщает устройству его уникальный адрес, и оно переводится в состояние Addressed (адресовано).

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

8. Исходя из полученной информации, хост конфигурирует все имеющиеся конечные точки данного устройства, которое переводится в состояние Configured (сконфигурировано). Теперь хаб позволяет устройству потреблять от шины полный ток, заявленный в конфигурации. Устройство готово.

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

1.3. Устройства USB - функции и хабы

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

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

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

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

Управление энергопотреблением является весьма развитой функцией USB. Для устройств, питающихся от шины, мощность ограничена. Любое устройство при подключении не должно потреблять от шины ток, превышающий 100 мА. Рабочий ток (не более 500 мА) заявляется в конфигурации, и если хаб не сможет обеспечить устройству заявленный ток, оно не конфигурируется и, следовательно, не может быть использовано.

Устройство USB должно поддерживать приостановку (Suspended Mode), в котором его потребляемый ток не превышает 500 мкА. Устройство должно автоматически приостанавливаться при прекращении активности шины.

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

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

Нисходящие (Downstream) порты хабов могут находиться в следующих состояниях:

^ Powered (^(питание отключено) - на порт не подается питание (возможно только для хабов, коммутирующих

питание). Выходные буферы переводятся в высокоимпедансное состояние, входные сигналы игнорируются.

^ Disconnected (отсоединен) - порт не передает сигналы ни в одном направлении, но способен обнаружить подключение устройства (по отсутствию состояния SEO в течение 2,5 мкс). Тогда порт переходит в состояние Disabled, а по уровням входных сигналов {DiffO или Diff1 в состоянии Idle) он определяет скорость подключенного устройства.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

По возможности ПО USB использует существующее систем- ное ПО хост-компьютера - например, Advanced Power Management для управления энергопотреблением.

2. Шина IEEE 1394-FireWire

Стандарт для высокопроизводительной последовательной шины (High Performance Serial Bus), получивший официальное название IEEE 1394, был принят в 1995 году. Целью являлось создание шины, не уступающей современным стандартным параллельным шинам, при существенном удешевлении и повышении удобства подключения (за счет перехода на последовательный интерфейс). Стандарт основан на шине FireWire, используемой Apple Computer в качестве дешевой альтернативы SCSI в компьютерах Macintosh и PowerMac. Название FireWire ("огненный провод") теперь применяется и к реализациям IEEE 1394, оно сосуществует с кратким обозначением 1394.

Преимущества FireWire перед другими последовательными шинами:

s? Многофункциональность: шина обеспечивает цифровую связь до 63 устройств без применения дополнительной аппаратуры (хабов). Устройства - цифровые камкодеры, сканеры, принтеры, камеры для видеоконференций, дисковые накопители - могут обмениваться данными не только с PC, но и между собой. FireWire по инициативе VESA позиционируется и для "домашних сетей".

^ Высокая скорость обмена и изохронные передачи позволяют даже на начальном уровне (100 Мбит/с) передавать одновременно два канала видео (30 кадров в секунду) широковещательного качества и стереоаудиосигнал с качеством CD.

s§ Низкая цена компонентов и кабеля.

si Легкость установки и использования. FireWire расширяет систему РпР. Устройства автоматически распознаются и конфигурируются при включении/отключении. Питание от шины (ток до 1,5 А) позволяет ПУ общаться с системой даже при отключении их питания. Управлять шиной и другими устройствами могут не только PC, но и другие "интеллектуальные" устройства, например VCR.

2.1. Структура и взаимодействие устройств шины

Стандарт 1394 определяет две категории шин: кабельные шины и кросс-шины (Backplane). Под кросс-шинами обычно подразумеваются параллельные интерфейсы, объединяющие внутренние подсистемы устройства, подключенного к кабелю 1394.

В отличие от USB, управляемой одним хост-контроллером, стандарт 1394 допускает соединение равноправных устройств в сеть. Сеть может состоять из множества шин, соединенных мостами. В пределах одной шины устройства объединяются соединительными кабелями без применения дополнительных устройств. Мосты представляют собой специальные интеллектуальные устройства. Интерфейсная карта шины FireWire для PC представляет собой мост PCI - 1394. Мостами являются также соединения кабельной шины 1394 с кросс- шинами устройств, 16-битная адресация узлов сети допускает до 63 устройств в каждой шине, адресуемых 6-битным полем идентификатора узла. 10-битное поле идентификатора шины допускает использование в системе до 1023 мостов, соединяющих шины разного типа.

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

ssi между любой парой узлов может быть не более 16 кабельных сегментов;

^ длина сегмента стандартного кабеля не должна превышать 4,5 м;

2Й суммарная длина кабеля не должна превышать 72 м (применение более качественного кабеля позволяет ослабить это ограничение).

Некоторые устройства могут иметь только один разъем, что ограничивает возможные варианты их местоположения. Стандарт допускает до 27 разъемов на одном устройстве.

Рис. 7.9. Соединение устройств на шине FireWire

Рис. 7.10. Разъем FireWire

Стандарт предусматривает связь узлов с помощью 6-проводного кабеля, заключенного в общий экран. Две витые пары используются для передачи сигналов (раздельные для приемника и передатчика), два провода задействованы для питания устройств (8-40 В, до 1,5 А). Для гальванической развязки интерфейса используются трансформаторы (напряжение изоляции развязки до 500 В) или конденсаторы (в дешевых устройствах с напряжением развязки до 60 В относительно общего провода). Представление о разъемах дает рис. 7.10. Некоторые устройства (камкодеры Sony DCR- VX700 и DCR-VX1000, а также DHR-1000 DVCR) имеют только один 4-контактный разъем меньшего размера, у которого реализованы только сигнальные цепи. Эти устройства подключаются к шине через специальный переходной кабель только как оконечные (хотя возможно применение специальных адаптеров-разветвителей).

Стандарт 1394 определяет три возможные частоты передачи сигналов по кабелям: 98,304, 196,608 и 393,216 Мбит/с, которые округляют до 100, 200 и 400 Мбит/с. Частоты в стандарте обозначаются как S100, S200 и S400 соответствен- но. Бытовые устройства обычно поддерживают S100, большинство адаптеров допускают S200. К одной шине могут подключаться устройства, рассчитанные на разные скорости. Обмен будет происходить на минимальной для всех активных узлов скорости. Однако, если хост-контроллер реализует карту топологии и скоростей (Topology_Мар и Speed_Map), возможно использование нескольких частот в одной шине, в соответствии с возможностями конкретной пары, участвующей в обмене.

Система допускает динамическое (горячее) подключение и отключение устройств. Идентификаторы подключаемым

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

Протокол IEEE 1394

Протокол 1394 реализуется на трех уровнях (рис. 7.11).

^ Уровень транзакций (Transaction Layer) преобразует пакеты в данные, предоставляемые приложениям, и наоборот. Он реализует протокол запросов-ответов, соответствующий стандарту ISO/IEC 13213:1994 (ANSI/IEEE 1212, редакции 1994 г.), архитектуры регистров управления и состояния CSR (Control and Status Register) для микро-компьютерных шин (чтение, запись, блокировка). Это облегчает связь шины 1394 со стандартными параллельными шинами.

^ Уровень связи (Link Layer) из данных физического уровня формирует пакеты и выполняет обратные преобразования. Он обеспечивает обмен узлов датаграммами с подтверждениями. Уровень отвечает за передачу пакетов и управление изохронными передачами.

Аппаратная часть FireWire обычно состоит из двух специализированных микросхем - трансиверов физического уровня PHY Transceiver и моста связи с шиной LINK Chip. Связь между ними возможна, например, по интерфейсу IBM-Apple LINK-PHY. Микросхемы уровня связи выполняют все функции своего уровня и часть функций уровня транзакций, остальная часть уровня транзакций выполня ется программно.

Коннекторы

Рис. 7.11. Трехуровневая структура FireWire

Управление шиной

Протокол 1394 имеет гибкий механизм управления связью между различными устройствами. Для этого не обязательно присутствие на шине PC или иного контроллера шины. Управление включает три сервиса:

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

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

^ Необязательный контроллер шины (Bus Master) - им может являться PC или редактирующий DVCR.

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

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

Изохронная транспортировка данных

Изохронная транспортировка шины 1394 обеспечивает гарантированную пропускную способность и ограниченную задержку при высокоскоростной передаче по множеству каналов. Диспетчер изохронных ресурсов содержит регистр BANDWIDTH^AVAILABLE, который определяет доступность оставшейся части полосы пропускания для узлов с изохронной передачей. По сбросу вновь появившийся узел с изо- хронной передачей запрашивает выделение полосы. Для цифрового видео, например, требуется полоса 30 Мбит/с (25 Мбит/с на видеоданные и 3-4 Мбит/с на аудио, синхронизацию и заголовки пакетов). Полоса измеряется в специальных единицах распределения, число которых в 125-миллисекундном цикле составляет 6144. Единица занимает около 20 нс, что соответствует времени, требуемому для передачи одного квадлета (Quadlet) на частоте 1600 Мбит/с. Квадлет (32-битное слово) является единицей передачи данных по шине. 25 мс цикла резервируется под асинхронный трафик, поэтому начальное значение регистра после сброса состав- ляет 4915 единиц. В S100 устройства цифрового видео запрашивают около 1800 единиц, в S200 - около 900. Если со- ответствующая полоса недоступна, запрашивающее ее устройство будет периодически повторять запрос.

Диспетчер изохронных ресурсов каждому изохронному узлу назначает номер канала (0-63) из числа доступных (регистр

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

2.2. Синонимы и дополнения стандарта IEEE 1394

Шина IEEE 1394 имеет множество псевдонимов:

^ IEEE 1394-1995 Standard for a High Performance Serial Bus - полное название документа, описывающего стандарт, действующий в настоящее время.

т FireWire - торговая марка реализации IEEE-1394 фирмой Apple Computer, Inc.

^ Р1394 - название предварительной версии IEEE-1394 (до принятия в декабре 1995 г.).

^ DigitalLink - торговая марка Sony Corporation, используемая применительно к реализации IEEE-1394 в цифровых камерах.

ш MultiMedia Connection - имя, используемое в логотипе 1394 High Performance Serial Bus Trade Association (1394TA).

Поскольку фирма Apple разрабатывала концепцию FireWire еще с 1986 года, имя FireWire является самым распространенным синонимом IEEE 1394.

Кроме основного стандарта IEEE 1394-1995, имеется несколько его модификаций:

^ 1394а рассматривается как чистовой документ, заполняющий некоторые пробелы исходного стандарта и имеющий небольшие изменения (например, ускоренную операцию сброса на шине). Продуктам 1394а обеспечена обратная совместимость с устройствами, выпущенными до принятия основного стандарта. Версия вводилась для повышения скорости до 800 Мбит/с и выше, высокоскоростные версии входят и в 1394Ь.

^ 1394.1 определяет 4-проводной соединитель и устанавливает стандарт на шинные мосты.

^ 1394.2 предполагается как стандарт на соединение кластера станций со скоростью обмена 1 Гбит/с и выше, не- совместимый с 1394. Этот стандарт проистекает из IEEE 1596 SCI (Scalable Coherent Interface - масштабируемый когерентный интерфейс) для суперкомпьютеров и иногда называется Serial Express или SCILite. Сигнальный интерфейс 1394.2 похож на FCAL и допускает кольцевую топологию, запрещаемую стандартом 1394.

2.3. Сравнение FireWire и USB

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

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

FireWire ориентирована на интенсивный обмен между любыми подключенными к ней устройствами. Изохронный трафик позволяет передавать "живое" видео. Шина не требует централизованного управления со стороны PC. Возможно использование шины для объединения нескольких PC и ПУ в локальную сеть.

Новые устройства цифрового видео и аудио имеют встроенные адаптеры 1394. Подключение к шине FireWire традиционных аналоговых и цифровых устройств (плееров, камер, мониторов) возможно через адаптеры-преобразователи ин терфейсов и сигналов. Стандартные однотипные кабели и разъемы FireWire заменяют множество разнородных соединений устройств бытовой электроники с PC. Разнотипные цифровые сигналы мультиплексируются в одну шину. В от личие от сетей Ethernet, высокоскоростные передачи потоков данных по FireWire в реальном времени не требуют дополнительных протоколов. Кроме того, имеются средства арбитража, гарантирующие доступ к шине за заданное время. Применение мостов в сетях FireWire позволяет изолировать трафик групп узлов друг от друга.

7.3. Шина ACCESS.Bus и интерфейс PC

Последовательная шина ACCESS.Bus (Accessory Bus), разработанная фирмой DEC, является шиной взаимодействия компьютера с его аксессуарами - например, монитором (канал VESA DDC), интеллектуальными источниками питания (Smart Battery) и т. п. Шина позволяет по двум сигнальным и двум питающим (12 В, 500 мА) проводам подключить до 14 устройств ввода/вывода, длина шины может достигать 8 м. Аппаратной основой является интерфейс PC, характеризуемый простотой реализации, но, даже по сравнению с USB, низкой производительностью. Над аппаратным протоколом PC для шины ACCESS.Bus имеется базовый программный протокол, с которым взаимодействуют протоколы конкретных подключенных устройств. Протоколы обеспечивают подключение/отключение устройств без перезагрузки ОС. Назначение сигналов разъема ACCESS.Bus, предложенное VESA, приведено в табл. 7.3.

Интерфейс К, разработанный фирмой Philips, в PC появился недавно и используется как внутренняя вспомогательная шина системной платы для общения с энергонезависимой памятью идентификации установленных компонентов (мо- дулей памяти DIMM). Шина отличается предельной простотой реализации - две сигнальные линии, с которыми работают программно. По прямому назначению эту шину применяет пока только BIOS при определении аппаратных средств, но использование перезаписываемой памяти конфигурирования открывает новые возможности для привязки ПО к конкретной системе (точнее, установленному модулю) и... для вирусов. Способ программного доступа к шине пока не стандартизован, но при желании его можно "вычислить", изучив документацию на чипсет.

Рис. 7.12. Протокол передачи данных PC

Последовательный интерфейс УС обеспечивает двунаправленную передачу данных между парой устройств, используя два сигнала: данные SDA (Serial Data) и синхронизацию SCL (Serial Clock). В обмене участвуют два устройства - ведущее (Master) и ведомое (Slave). Каждое из них может вы- ступать в роли передатчика, помещающего на линию SDA информационные биты, или приемника. Протокол обмена иллюстрирует рис. 7.12. Синхронизацию задает ведущее устройство - контроллер. Линия данных - двунаправленная с выходом типа "открытый коллектор" - управляется обоими устройствами поочередно. Частота обмена (не обязательно постоянная) ограничена сверху величиной 100 кГц для стандартного режима и 400 кГц для скоростного, что позволяет организовать программно-управляемую реализацию контроллера интерфейса.

Начало любой операции - условие Start - инициируется переводом сигнала SDA из высокого в низкий при высоком уровне SCL. Завершается операция переводом сигнала SDA

из низкого уровня в высокий при высоком уровне SCL - условие Stop. При передаче данных состояние линии SDA может изменяться только при низком уровне SCL, биты данных стробируются положительным перепадом SCL Каждая посылка состоит из 8 бит данных, формируемых передатчиком (старший бит - MSB - передается первым), после чего передатчик на один такт освобождает линию данных для получения подтверждения. Приемник во время девятого так- та формирует нулевой бит подтверждения Ack. После пере- дачи бита подтверждения приемник может задержать следующую посылку, удерживая линию SCL на низком уровне. Приемник также может замедлить передачу по шине на уровне приема каждого бита, удерживая SCL на низком уровне после его спада, сформированного передатчиком.

Каждое ведомое устройство имеет свой адрес, разрядность которого по умолчанию составляет 7 бит. Адрес А передается ведущим устройством в битах первого байта, бит 0 содержит признак операции Я1У(Я1/У=1 - чтение, RW=Q -запись). 7-битный адрес содержит две части: старшие 4 бита А не- сут информацию о типе устройства (например, для EEPROM - 1010), а младшие 3 бита А определяют номер устройства данного типа. Многие микросхемы с интерфейсом PC имеют три адресных входа, коммутацией которых на логические уровни 1 и 0 задается требуемый адрес. Некоторые значения полного адреса зарезервированы (табл. 7.4).

Общий вызов позволяет включившемуся устройству заявить о себе широковещательным способом. Байт Start предназначен для привлечения внимания процессора к интерфейсу, если в устройстве он организован программным (не аппаратным) способом. До получения этого байта микроконтроллер устройства не опрашивает состояние и не следит за сигналами интерфейса. При использовании 10-битной адресации биты содержат старшую часть адреса, а младшие 8 бит будут переданы в следующем байте, если признак RW=0.

Адрес ведомого устройства и тип обращения задается кон- троллером при инициировании обмена. Обмен с памятью иллюстрирует рис. 7.13. Здесь SA - адрес устройства, DA - адрес данных, D - данные, W - признак записи (0), R - признак чтения (1).

Рис. 7.13. Обмен с памятью по интерфейсу PC: a - запись, б - чтение с текущего адреса, в - чтение с произвольного адреса

Выполнив условие Start, контроллер передает байт, содержащий адрес устройства и признак операции RW, и ожидает подтверждения. При операции записи следующей посылкой от контроллера будет 8-битный адрес записываемой ячейки, а за ней - байт данных (для микросхем объемом памяти более 256 байт адрес ячейки посылается двумя байтами). Получив подтверждения, контроллер завершает цикл условием Stop, а адресованное устройство может начать свой внутренний цикл записи, во время которого не реагирует на сигналы интерфейса. Контроллер проверяет готовность устройства посылкой команды записи (байт адреса устройства) и анализом бита подтверждения, формируя затем условие Stop. Если устройство откликнулось битом подтверждения, значит, оно завершило внутренний цикл и готово к следую- щей операции.

Операция считывания инициируется так же, как и запись, но с признаком RW=\. Возможно чтение по заданному адресу, по текущему адресу или последовательное. Текущий адрес хранится во внутреннем счетчике ведомого устройства, он содержит увеличенный на единицу адрес ячейки, участвовавшей в последней операции.

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

Интерфейс позволяет контроллеру с помощью пары сигналов обращаться к любому из 8 однотипных устройств, подключенных к данной шине и имеющих уникальный адрес (рис. 7.14). При необходимости увеличения количества устройств возможно подключение групп. При этом допустимо как использование общего сигнала SCL и раздельных сигналов SDA (двунаправленных), так и общего сигнала SDA и раздельных однонаправленных сигналов SCL. Для обращения к одной из нескольких микросхем (или устройств), не имеющих выводов для задания собственного адреса, также применяют разделение линий SCL (или SDA).

Протокол PC позволяет нескольким контроллерам использовать одну шину, определяя коллизии и выполняя арбитраж. Эти функции реализуются достаточно просто: если два передатчика пытаются установить на линии SDA различные

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

Рис.7.14. Подключение устройств к контроллеру

Приложение А. Системотехника IBM PC-совместимых компьютеров

Здесь рассмотрено взаимодействие программ с интерфейсными адаптерами. Приведены краткие сведения по архитектуре PC. Описаны организация пространств памяти и ввода/вывода, система прерываний и прямой доступ к памяти. Более подробные сведения можно найти в книге "Аппаратные средства IBM PC. Энциклопедия" ("Питер", 1998).

А.1. Пространство памяти

Логическая структура памяти PC обусловлена системой адресации процессоров семейства х86. Процессоры 8086/88, применявшиеся в первых моделях IBM PC, имели адресное пространство 1 Мбайт (20 бит шины адреса). Начиная с процессора 80286 шина адреса была расширена до 24 бит, затем (386DX, 486, Pentium) до 32 и, наконец, до 36 бит (Pentium Pro, Pentium II). В реальном режиме процессора, используемом в DOS, формально доступен лишь 1 Мбайт памяти. Однако из-за ошибки эмуляции процессора 8086 в реальном режиме процессоры 80286 и выше имеют максимально доступный адрес lOFFEFh, что на (64К-16) байт больше. Область lOOOOOh-lOFFEFh называется высокой памятью - High Memory Area (HMA). В нее помещают часть ОС реального режима и небольшие резидентные программы. Для полной совместимости с процессором 8086/88 имеется вентиль линии А20 шины адреса - GateA20, который либо пропускает сигнал от процессора, либо принудительно обнуляет линию А20 системной шины адреса.

– Что такое USB?

Спецификация периферийной шины USB разработана лидерами компьютерной и телекоммуникационной промышленности -- Compaq, DEC, IBM, Intel, Microsoft, NEC и Northern Telecom -- для подключения компьютерной периферии вне корпуса машины по стандарту plug"n"play, в результате отпадает необходимость в установке дополнительных плат в слоты расширения и переконфигурировании системы. Персональные компьютеры, имеющие шину USB, позволяют подключать периферийные устройства и осуществляют их автоматическое конфигурирование, как только устройство физически будет присоединено к машине, и при этом нет необходимость перезагружать или выключать компьютер, а так же запускать программы установки и конфигурирования. Шина USB позволяет одновременно подключать последовательно до 127 устройств, таких, как мониторы или клавиатуры, выполняющие роль дополнительно подключенных компонентов, или хабов (т.е. устройство, через которое подключается еще несколько).

– Кто создал USB?

USB была разработана группой из семи компаний, которые видели необходимость во взаимодействии для обеспечения дальнейшего роста и развития расцветающей индустрии интегрированных компьютеров и телефонии. Эти семь компаний, продвигающие USB, следующие: Compaq, Digital Equipment Corp, IBM PC Co., Intel, Microsoft, NEC и Northern Telecom.

– Как это работает?

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

– Какие виды периферийного оборудования поддерживает USB для подключения к моему PC?

Вы знаете эти устройства: телефоны, модемы, клавиатуры, мыши, устройства чтения CD ROM, джойстики, ленточные и дисковые накопители, сканеры и принтеры. Скорость прокачки в 12 мегабит/секунду позволяет подключать через USB все современное поколение периферийных устройств, включая аппаратуру для обработки видео данных формата MPEG-2, перчатки для управления виртуальными объектами и дигитайзеры. Также, с ожиданием большого роста в области интеграции компьютеров и телефонии, шина USB может выступать в качестве интерфейса для подключения устройств Цифровой сети с интегрированными услугами (ISDN) и цифровых устройств Private Branch eXchange (PBX), позволяющих подключать большое количество телефонов к небольшому количеству линий связи.

– Нужно ли мне покупать специальное программное обеспечение, что бы работала USB-совместимая периферия?

Операционная система Windows 95 (начиная с версии OSR 2.1, выпущенной 29 октября 1996г.) поставляется уже со встроенными драйверами, которые позволяет Вашему персональному компьютеру распознавать USB периферию. В результате, Вам не нужно покупать или инсталлировать дополнительное программное обеспеченте для каждого нового периферийного устройства. Тем не менее, вместе с новой USB периферией вы получите дискету с новыми драйверами. Однако, не все так радужно - например, корректную работу принтера с интерфейсом USB способна обеспечить только OC Windows 98 и выше.

– Что означает существование USB для поставщиков систем и периферии?

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

  • "Готовая платформа" позволяет логично связать аппаратное и программное обеспечение для совместной поставки покупателю.
  • USB может снизить риск возможной несовместимости периферийного и программного обеспечения, поставляемого с компьютерами, за счет поставки готовых систем по ключ, которые удовлетворяют требованиям специализированных рыночных ниш.
  • USB-совместимая периферия может предложить частным и корпоративным покупателям больший выбор оборудования, без страха снижения функциональных возможностей аппаратных средств.
  • Реселлеры получают большую гибкость в подборе аппаратуры и готовых систем, для стимуляции покупательского спроса, за счет возможности комбинирования комплектов поставляемой периферии, без опасений, что что-то с чем-то не будет работать в паре.
  • USB может обеспечить поставщикам периферии дополнительную выгоду, за счет поставки нового оборудования для систем, использующих технологию MMX™.
  • USB может помочь поставщикам снизить их затраты на разработки, что в свою очередь позволит им устанавливать новые, более конкурентноспособные, цены.

– Где я могу найти текущую версию спецификации USB?

Текущая версия спецификации доступна для загрузки со страницы сообщества по внедрению USB - .

– Как много USB-совместимых компьютеров можно ожидать на рынке?

Компания Dataquest считает, что до 30 миллионов USB-совместимых персональных компьютеров будет продано в течении 1997, а в 1998 году, все персональные компьютеры будут оснащены шиной USB.

– Есть ли уже устройства для USB шины?

Персональные компьютеры с шиной USB начали поставляться на рынок еще в середине 1996 года, и первая волна периферии с подключением через USB шину уже доступна пользователям.

Так же доступны технологии, используемые для разработки и создания USB систем, таких как коннекторов, чипсетов и материнских плат.

– Как может применяться USB при наличие двух систем, например ноутбука и настольного компьютера?

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

– Что такое сообщество по внедрению USB (USB-IF)?

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

– Могу ли я присоединиться к сообществу USB-IF?

В принципе да. Вы можете узнать об условиях вступления из этого документа .

– Как можно сравнить USB со стандартом Sony FireWire/IEEE 1394?

Основные отличия состоят в области применения, доступности и цене. Использование USB доступно уже сейчас для традиционных устройств, подключаемых к PC, таких, как клавиатуры, мыши, джойстики и ручные сканнеры. Тем не менее, пропускная возможность USB в 12 Mb/сек более чем достаточна для большинства применений ее пользователями, включая более продвинутые игровые устройства, высококачественный звук и сжатое видео стандартов MPEG-1 и MPEG-2. Но, что более важно, применение USB не увеличивает стоимость готовой системы в силу интегрирования контроллера в чипсет.

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

– Заменит ли FireWire шину USB после своего появления?

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

– Что такое интеллектуальные вопросы собственности (Intellectual Property - IP) в отношении USB, лицензия ли это, сколько она стоит, что такое "Обратный Договор"(Reciprocal Covenent Agreement) о котором я слышал?

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

– Что такое сцпецификации OHCI и UHCI?

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

– Существует ли группа новостей про USB?

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

– Как я могу получить идентификационный индекс (ID) производителя USB?

Члены USB-IF получают ID производителя бесплатно, как только присоединяются к сообществу. Не члены сообщества могут получить ID производителя связавшись с администрацией USB-IF. С не членов сообщества взимается регистрационная пошлина в размере $200.

– Есть ли возможность увеличить длину соединения устройств через шину USB до 50-200 метров (например, используя оптоволокно), если это понадобится пользователям?

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

– Когда устройство отключено, его драйвер выгружается из памяти, если опять подключить это же устройство, будет ли его драйвер снова загружен?

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

– Существуют ли планы по увеличению пропускной способности шины USB вдвое, втрое?

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

– Может ли кто нибудь разъяснить разницу между соединителями серии "A" и "B"?

Коннекторы серии "A" разработаны для всех устройств USB, и являются разъемом для периферии и гнездом для персонального компьютера. В большинстве случаев, кабель USB должен быть встроен в периферийное устройство. Это снижает стоимость соединителей, избавляет от несовместимости, возможной в случае разного сопротивления кабелей, и упрощает действия пользователей по подключению. Однако в некоторых случаях встроенный кабель нельзя использовать. Хорошим примером могут служить очень большие и тяжелые устройства, плохо сочетатающиеся с тонким кабелем, который нельзя удалить, а так же устройства, подключаемые только изредка, которые интенсивно используются, когда не являются подключенными. Для таких случаев и были созданы коннекторы серии "B". Две серии коннекторов различаются внешне, это сделано для предотвращения соединений, которые бы могли нарушить топологию архитектуры USB.

– В чем разница между основным хабом и обычным с точки зрения аппаратной реализации и программного обеспечения?

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

– Возможно ли использование шины USB для подключения таких периферийных устройств, как CD-R, ленточных накопителей или жестких дисков?

Возможность применения основана на приемлемости уровня производительности. Если какое-то из этих устройств предполагается часто использовать, то, обычно предъявляются требования, что бы оно было механически интегрированно в систему и имело высокую производительность, опять же соответствующую уровню системы в целом. Шина USB не разрабатывалась для обеспечения постоянного соединения высокоскоростных периферийных устройств внутри корпуса компьютера. Если устройство используется время от времени или подключается к разным компьютерам, тогда, производительность, обеспечиваемая шиной USB будет более чем достаточной. Удобства использования и подключения устройств, обеспечиваемые USB с лихвой перевешивают параметры скорости предачи данных. Но все таки, USB обеспечивает скорость передачи на уровне 4x или 6x скоростных приводов CD (чего недостаточно для перезаписывающих устройств), но при этом лучшую, чем обеспечивают обычные ленточные накопители, подключенные через параллельный порт, дисководы для гибких магнитных дисков или съемные жесткие диски типа SyQuest.

Первая спецификация (версия 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 В к устройствам. Сечение проводников выбирается в соответствии с длиной сегмента для обеспечения гарантированного уровня сигнала и питающего напряжения.

Шина USB предназначена для сопряжения ПК с различными устройствами типа телефона, факса, модема, сканера, автоответчика, клавиатуры, мыши и т.д. Эта шина для настольных систем отвечает требованиям технологии plug and play и является среднескоростной, двунаправленной дешевой шиной, повышающей взаимосвязность компонентов ПК и расширяющей его архитектуру.

Основные свойства шины USB:

Возможность подключения до 127 физических устройств;

Автоматическое распознавание периферии;

Образование различных конфигураций;

Реализация как изохронных, так и синхронных типов передач с широким диапазоном скоростей;

Наличие механизма обработки ошибок;

Управление питанием и т.д.

Технология шины USB представлена на рис.7.1 и имеет многоуровневую звездообразную структуру (древовидную конфигурацию).

Рис.7.1. Топология шины USB

Каждую звезду образует хаб (пункт присоединения), обеспечивающий подключение одного или несколько функционеров (функ), периферийных устройств. Шина USB содержит один хост (контроллер), образующий корневой уровень и управляющий работой функционеров. Хаб является основным элементом в архитектуре USB, поддерживающей соединение нескольких хабов. В состав хаба входит один верхний потоковый порт ВПП, необходимый для подключения хаба к «хвосту», и несколько нижних потоковых портов (НПП), соединяющих его с другими хабами и (или) функционерами (рис.7.2).

Рис.7.2. Общий вид хаба

Хаб выполняет следующие функции: обнаружение присоединения (отсоединения) другого хаба или функционера; управление питанием и конфигурированием устройств, подключенных к соответствующим НПП. Хаб содержит контроллер и репитер (управляемый протоколом переключатель портов между ВПП и НПП1-НПП7). Контроллер использует интерфейсные регистры для выполнения связи с хостом, который с помощью управляющих команд конфигурирует хаб и следит за его партнерами. На рис.7.3 показана система типа «рабочий стол», содержащая хабы и функционеры.

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

Рис.7.3. Система рабочий стол, содержащая хабы и функционеры

USB-хост (центральная ЭВМ) осуществляет доступ к USB-устройствам с помощью хост-контроллера, который выполняет следующие действия:

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

Обнаружение подключенных (отключенных) устройств;

Сбор информации о состоянии системы;

Управление питанием.

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

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

Сигналы данных D+ и D- и питание (V и G – земля) в шине USB передаются от точки к точке по четырем проводам 90-омного кабеля (рис. 7.4.) с максимальной длиной 5м. Номинальное напряжение питания – 5v.

Рис.7.4. Кабель USB

Хост (хаб) обеспечивает питанием устройства USB, которые подключены к нему. Кроме того, устройства USB могут иметь автономное питание. Питание по шине USB имеет ограниченную величину.

Шина USB обеспечивает два диапазона скоростей передачи информации: низкая скорость (1,5 Мбит/с) и высокая скорость (12 Мбит/с). Низкоскоростной режим применяется для взаимодействия с интерактивными устройствами (мышью, трекболом и т.п.), а высокоскоростной режим – с адаптером телефона, аудио- или видеоустройствами. Каждому пакету данных предшествует поле синхронизации, которое позволяет приемникам согласовывать во времени их таймеры (генераторы) для приема данных. Поле синхронизации содержит синхроимпульсы, закодированные по методу NRZI с битовым заполнением.

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

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

Управляющую спонтанную (непериодическую) передачу по типу запрос/ответ, используемую для передачи команд/состояния и обычно применяемую с целью конфигурирования устройства в момент его подключения;

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

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

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

Все устройства USB содержат конечную точку О, к которой имеет доступ по умолчанию канал управления. Информация конечной точки О описывает устройство USB и состоит из следующих частей: стандарта, использующего дескрипторы устройства, его структуры, интерфейса и конечных точек; класса устройства и сведений о поставщике. Конечная точка О применяется для инициализации и конфигурирования устройства USB.

Через каналы перемещается информация между хостом и конечной точкой с использованием буферной памяти. Различают два режима работы канала: поток – данные, не имеющий определенной структуры, и сообщение – данные, передаваемые в соответствии с заданным порядком. Системное программное обеспечение (ПО) монопольно владеет каналом и представляет его другим ПО. Пользователь ПО запрашивает передачи по каналу, ждет их и затем уведомляется о завершении передач данных. Конечная точка сигналом NAK может сообщить хосту о том, что она занята.

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

Управляющая передача разрешает доступ к какой-либо части устройства и предназначена для обмена информацией, типа конфигурация / команды / состояние, между пользовательским ПО и функционером. Управляющая передача в общем случае содержит информацию запроса (установочный пакет), данные и возвращаемую в хост информацию состояния функционера. Установочный пакет имеет определенную структуру, состоящую из набора команд, необходимых для установления связи между хостом и устройством USB. Описание состояния устройства имеет также определенную структуру, а данные управления, следующие за установочным пакетом, не имеют какой-либо структуры и содержат информацию о запрошенном доступе. Управляющая передача выполняется как двунаправленный поток информации по каналам сообщений. Стандарт шины USB ограничивает размеры пакета данных для высокоскоростных устройств 8, 16, 32 или 64 байтами, а низкоскоростные устройства могут иметь пакет данных не более 8 байтов. Установочный пакет всегда содержит 8 байтов. Вначале (после сброса) хост использует пакет данных размером в 8 байтов, который является достаточным для стандартных операций, а после определения типа конечной точки по ее конфигурационной информации может быть использован пакет большого размера для выполнения специфических операций. Таким образом, все данные при передаче делятся на равные части (пакеты), кроме последней части, которая содержит оставшиеся данные.

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

На рис.7.5 представлена общая схема взаимодействия компонентов шины USB.

Рис.7.5. Общая схема взаимодействия компонентов шины USB

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

В шине USB используется метод кодирования NRZI (без возвращения к нулю с инверсией). В этом случае метод кодирования NRZI состоит в том, что если бит передаваемых данных равен 0, то происходит изменение уровня напряжения, а - если равен 1, то уровень напряжения сохраняется. На рис.7.6 показан пример кодирования данных методом NRZI.

Рис.7.6. Пример кодирования методом NRZI

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

На диаграмме вначале показаны необработанные данные, содержащие поле синхрокомбинаций и пакет данных, причем синхрокомбинация имеет 7 нулей и заканчивается единичным битом, после которого начинается пакет данных. Затем на диаграмме изображены заполненные данные, которые дополнительно содержат после шести единиц вставленный бит 0. В число шести единиц входит и последний единичный бит синхрокомбинации. После этого выполняется кодирование заполненных данных методом NRZI с учетом и поля синхрокомбинации. Правило заполнения требует, чтобы бит 0 был вставлен, даже если этот бит будет последним, перед сигналом EOP (конец пакета).

Рис.7.7. Временная диаграмма этапов кодирования данных

Рассмотрим некоторые электрические требования шины USB. На рис.7.8 представлена схема симметричного шинного формирователя (драйвера) USB, содержащего два одинаковых буфера, выполненных по технологии КМОП.

Рис.7.8. Схема дифференциального формирователя

Симметричный дифференциальный формирователь содержит два разно-полярных выхода D+ и D-, имеющих три состояния, чтобы реализовать двунаправленную полудуплексную работу. Один из выходов представляет буферизованный повторитель входа, а другой является его дополнением. Эти выходы соединяются парой скрещенных проводов со входами дифференциального приемника. Таким образом, по проводам передаются два сигнала, которые подвергаются в одинаковой мере воздействию синфазных помех, устраняемых дифференциальным приемником.

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

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

На рис.7.9 показана диаграмма сигналов на выходах формирователя для скорости передачи 12 Мбит/с (а) и 1.5 Мбит/с (б).

Рис.7.9. Диаграммы сигналов на выходах формирователей для скоростей передачи данных 12 Мбит/с (а) и 1.5 Мбит/с (б)

При скорости передачи данных 12 Мбит/с используется витая пара экранированного кабеля, а для скорости 1.5 Мбит/с – неэкранированный кабель с нескрученной парой проводников. Сопряжение приемопередатчиков (ПП) с помощью кабеля USB в случае высокоскоростной (а) и низкоскоростной (б) передач изображено на рис.7.10.

Из схем видно, что высокоскоростные устройства содержат резистор нагрузки (R Н) на линии D+, а низкоскоростные – на линии D-, что позволяет определить тип подключенного устройства USB. Когда устройство USB не управляет линиями D+ и D-, то на линии с R Н имеется напряжение около 3В, а на другой – близкое к 0В. Такое состояние шины называется пассивным состоянием.

Рис.7.10. Схемы сопряжения ПП хоста (хаба) и функционера (хаба) для высокоскоростной (а) и низкоскоростной (б) передач

Если устройство не подключено к нижнему порту хоста (хаба) (или отсутствует питание), то на обоих линиях D+ и D- устанавливается асимметричный низкий уровень напряжения (0,6В), который используется для определения условия рассоединения или сообщения о конце пакета (EOP). Для высокоскоростных передач условием рассоединения является наличие асимметричного нуля в течение 2,5 мс (30 единиц времени передачи бита).

Считается, что связь с устройством установлена, если напряжение на одной из линий D+ (D-) достигает выше асимметричного высокого порога в 1,5В за время 2,5 мс.

Определение факта рассоединения и связанности устройства USB показано на рис.7.11.

Рис.7.11. Установление факта рассоединения (а) и связи устройства USB (б)

Общее время передачи данных оценивается числом битов данных, умноженным на период (Т), определяемый скоростью передачи данных. На рис.7.12 представлена временная диаграмма передачи данных по дифференциальным линиям данных D+ и D-.

Рис.7.12. Временная диаграмма передачи данных

В соответствии с кодом NRZI бит 0 вызывает переключение уровней напряжения, а бит 1 сохраняет соответствующие уровни напряжения на линиях D+ и D-. Длительность асимметричного нуля в EOP равна 2Т без учета времени задержки.

Начало пакета (SOF) определяется первым битом поля синхронизации, когда пассивное состояние линий D+ и D- переходит в активное. Устройства USB поддерживают режим приостановки, который вызывается тем, что пассивное состояние линий D+ и D- удерживается более 3 мс.

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

В зависимости от источника потребления питания различают следующие типы устройств:

Хабы, получающие питание от шины и обеспечивающие питанием внутренние функциональные устройства и низшие порты;

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

Маломощные (с нагрузкой одного модуля) и высокомощные (с нагрузкой пяти модулей) устройства, потребляющие питание из шины;

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

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

Рис.7.13. Формат опознавательного пакета

Вслед за полем синхронизации для каждого пакета передается 8-битный идентификатор (ИД) младшим битом вперед. Биты D0-D3 поля ИД задают тип пакета (формат и способ обнаружения ошибок соответствующего пакета), а биты D4-D7 являются инверсными значениями младших четырех битов и служат в качестве поля проверки правильности передачи поля ИД, которые делятся на опознавательные, информационные, квитирования и специальные.

Для выбора устройства и конечной точки (КТ) в нем используется 7-битный адрес устройства и 4-битный номер КТ. Поле адреса предназначено для ввода (вывода) данных и установочных опознавателей. При сбросе или отключении питания адрес устройства принимает значение 0 и затем программируется хостом. Низкоскоростные устройства содержат до двух точек, а высокоскоростные – до 16 конечных точек. Поле адреса и номера КТ защищены 5-битовым контрольным циклическим кодом (КЦК). Циклический избыточный контроль состоит в том, что биты поля КЦК представляют собой коэффициенты двоичного полинома (5-битовый эквивалент), а байты контроля ошибок получаются путем деления этого полинома на заданный 16-битный полином. По двоичному коду остатка определяют наличие или отсутствие ошибки.

Пакет поля данных состоит из 8-битного поля ИД, поля данных (0-1023 байтов) и 16-битного поля КЦК (рис.7.14).

Рис.7.14. Формат пакета данных

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

Пакет квитирования содержит только поле ИД и предназначен для проверки успешности передачи данных. Различают три типа этого пакета: ACK (подтверждение) – пакет данных получен без ошибок и пакет ИД верен (пакет применяется при передаче данных); NAK (неподтверждение) – пакет, показывающий на невозможность устройством принять данные от хоста (временный отказ) или устройство не имеет данных для передачи хосту (кроме того, пакет используется для сообщения о временной паузе в передаче или приеме данных устройством); STALL – ответный пакет, говорящий о постоянном отказе и необходимости вмешательства программы хоста.

Опознавательный пакет SOF (начало фрейма) позволяет хабам или устройствам идентифицировать начало фрейма и синхронизировать их внутренние таймеры с таймером главной ЭВМ. Формат опознавательного пакета показан на рис.7.15.

Рис.7.15. Формат опознавательного пакета

Фрейм состоит из ряда транзакций (действий на шине), имеющих начало от одного SOF-маркера, и продолжается до начала следующего SOF-маркера. Устройство или хаб определяют начало фрейма по 8-битному ИД SOF-пакета.

Существуют следующие транзакции: массива данных, управления, прерывания и изохронного типа.

Транзакция массива данных при вводе данных в хост состоит из опознавательного пакета с запросом ввода, пакета данных (Данные (0/1)) из устройства и пакета квитирования (NAK или STALL), посылаемого устройством вслед за данными. Если пакет данных принят верным, то хост отвечает устройству пакетом ACK.

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

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

Рис.7.16. Последовательность действий хоста и устройства

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

Рис.7.17. Последовательность идентификаторов при записи и чтении массива данных

С целью синхронизации компонентов шины USB выполняется чередование пакетов с идентификатором Данные(0) и пакетов с идентификатором Данные(1). Переключение пакетов данных в передатчике выполняется после получения пакета квитирования ACK, а в приемнике – после получения очередного пакета.

Переходы управления содержат две стадии: Установка и Состояние, между которыми может присутствовать информационная стадия. Во время стадии Установки выполняется передача данных только с форматом поля ИД Данные(0) к конечной точке управления устройства.

Транзакция Установки изображена на рис.7.18.

Рис.7.18. Транзакция Установки

Сигнал квитирования ACK не выдается, если данные являются неверными. При наличии стадии данных выполняется их передача в одном направлении в соответствии с требованиями протокола. Эта стадия может состоять из нескольких транзакций ввода и вывода и размер массива данных задается в пакете Установка.

Стадия Состояния является последней в рассматриваемой последовательности и использует идентификатор Данные 0.

На рис.7.19 показана очередность транзакций и идентификаторов данных для управления чтением или записью.

Рис.7.19. Очередность транзакций и ИД данных

В стадии Состояние от устройства к хосту передается следующая информация: устройство выполнило задачу (ACK), устройство не содержит ошибок (STALL) и устройство занято (NACK).

Транзакции прерываний содержат опознаватели ввода. На рис.7.20 изображены последовательности транзакций прерываний.

Рис.7.20. Последовательности транзакций прерываний

Если устройство получает опознаватель ввода, то оно выдает данные по прерыванию в виде пакета и получает ACK или передает NACK/STALL. Пакет квитирования NAK направляется устройством, когда оно не содержит информации для нового прерывания, а пакет квитирования STALL – устройством, если оно временно приостановило работу.

Изохронные транзакции не имеют стадии квитирования. На рис.7.21 представлены стадии изохронных транзакций.

Рис.7.21. Стадии изохронных транзакций

При выполнении изохронного режима меняется поочередно пакеты данных с соответствующими идентификаторами, т.е. сначала следует пакет данных Данные(0), а за ним – пакет Данные(1) и т.д.

Предыдущая
просмотров