Программы Windows Устройства

Основы интерфейса USB. Типы и стандарты USB Протокол usb 2.0 описание

Интерфейс USB (Universal Serial Bus - Универсальный Последовательный Интерфейс) предназначен для подключения периферийных устройств к персональному компьютеру. Позволяет производить обмен информацией с периферийными устройствами на трех скоростях (спецификация USB 2.0 ):

  • Низкая скорость (Low Speed - LS) - 1,5 Мбит/с;
  • Полная скорость (Full Speed - FS) - 12 Мбит/с;
  • Высокая скорость (High Speed - HS) - 480 Мбит/с.
Для подключения периферийных устройств используется 4-жильный кабель: питание +5 В, сигнальные провода D+ и D- , общий провод.
Интерфейс USB соединяет между собой хост (host ) и устройства. Хост находится внутри персонального компьютера и управляет работой всего интерфейса. Для того, чтобы к одному порту USB можно было подключать более одного устройства, применяются хабы (hub - устройство, обеспечивающее подключение к интерфейсу других устройств). Корневой хаб (root hub ) находится внутри компьютера и подключен непосредственно к хосту. В интерфейсе USB используется специальный термин "функция" - это логически законченное устройств, выполняющее какую-либо специфическую функцию. Топология интерфейса USB представляет собой набор из 7 уровней (tier ): на первом уровне находится хост и корневой хаб, а на последнем - только функции. Устройство, в состав которого входит хаб и одна или несколько функций, называется составным (compaund device ).
Порт хаба или функции, подключаемый к хабу более высокого уровня, называется восходящим портом (upstream port ), а порт хаба, подключаемый к хабу более низкого уровня или к функции называется нисходящим портом (downstream port ).
Все передачи данных по интерфейсу иницируются хостом. Данные передаются в виде пакетов. В интерфейсе USB испольуется несколько разновидностей пакетов:
  • пакет-признак (token paket ) описывает тип и направление передачи данных, адрес устройства и порядковый номер конечной точки (КТ - адресуемая часть USB-устройства); пакет-признаки бывают нескольких типов: IN , OUT , SOF , SETUP ;
  • пакет с данными (data packet ) содержит передаваемые данные;
  • пакет согласования (handshake packet ) предназначен для сообщения о результатах пересылки данных; пакеты согасования бывают нескольких типов: ACK , NAK , STALL .
Таким образом каждая транзакция состоит из трех фаз: фаза передачи пакета-признака, фаза передачи данных и фаза согласования.
В интерфейсе USB используются несколько типов пересылок информации.
  • Управляющая пересылка (control transfer ) используется для конфигурации устройства, а также для других специфических для конкретного устройства целей.
  • Потоковая пересылка (bulk transfer ) используется для передачи относительно большого объема информации.
  • Пересылка с прерыванием (iterrupt transfer ) испольуется для передачи относительно небольшого объема информации, для которого важна своевременная его пересылка. Имеет ограниченную длительность и повышенный приоритет относительно других типов пересылок.
  • Изохронная пересылка (isochronous transfer ) также называется потоковой пересылкой реального времени. Информация, передаваемая в такой пересылке, требует реального масштаба времени при ее создании, пересылке и приеме.

Потоковые пересылки характеризуются гарантированной безошибочной передачей данных между хостом и функцией посредством обнаружения ошибок при передаче и повторного запроса информации.
Когда хост становится готовым принимать данные от функции, он в фазе передачи пакета-признака посылает функции IN -пакет. В ответ на это функция в фазе передачи данных передает хосту пакет с данными или, если она не может сделать этого, передает NAK - или STALL -пакет. NAK -пакет сообщает о временной неготовности функции передавать данные, а STALL -пакет сообщает о необходимости вмешательства хоста. Если хост успешно получил данные, то он в фазе согласования посылает функции ACK
Когда хост становится готовым передавать данные, он посылает функции OUT -пакет, сопровождаемый пакетом с данными. Если функция успешно получила данные, он отсылает хосту ACK -пакет, в противном случае отсылается NAK- или STALL -пакет.
Управляющие пересылки содержат не менее двух стадий: Setup-стадия и статусная стадия . Между ними может также располагаться стадия передачи данных . Setup-стадия используется для выполнения SETUP-транзакции , в процессе которой пересылается информация в управляющую КТ функции. SETUP-транзакция содержит SETUP -пакет, пакет с данным и пакет согласования. Если пакет с данными получен функцией успешно, то она отсылает хосту ACK -пакет. В противном случае транзакция завершается.
В стадии передачи данных управляющие пересылки содержат одну или несколько IN- или OUT- транзакций, принцип передачи которых такой же, как и в потоковых пересылках. Все транзакции в стадии передачи данных должны производиться в одном направлении.
В статусной стадии производится последняя транзакция, которая использует те же принципы, что и в потоковых пересылках. Направление этой транзакции противоположно тому, которое использовалось в стадии передачи данных. Статусная стадия служит для сообщения о результате выполнения SETUP-стадии и стадии передачи данных. Статусная информация всегда передается от функции к хосту. При управляющей записи (Control Write Transfer ) статусная информация передается в фазе передачи данных статусной стадии транзакции. При управляющем чтении (Control Read Transfer ) статусная информация возвращается в фазе согласовании статусной стадии транзакции, после того как хост отправит пакет данных нулевой длины в предыдущей фазе передачи данных.
Пересылки с прерыванием могут содержать IN - или OUT -пересылки. При получении IN -пакета функция может вернуть пакет с данными, NAK -пакет или STALL -пакет. Если у функции нет информации, для которой требуется прерывание, то в фазе передачи данных функция возвращает NAK -пакет. Если работа КТ с прерыванием приостановлена, то функция возвращает STALL -пакет. При необходимости прерывания функция возвращает необходимую информацию в фазе передачи данных. Если хост успешно получил данные, то он посылает ACK -пакет. В противном случае согласующий пакет хостом не посылается.
Изохронные транзакции содержат фазу передачи признака и фазу передачи данных , но не имеют фазы согласования . Хост отсылает IN - или OUT -признак, после чего в фазе передачи данных КТ (для IN -признака) или хост (для OUT -признака) пересылает данные. Изохронные транзакции не поддерживают фазу согласования и повторные посылки данных в случае возникновения ошибок.

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

Фирма-производитель Наименование Описание

Atmel
AT43301 Контроллер LS/FS-хаба 1-4 с общим управлением питанием нисходящих портов.
AT43312A Контроллер LS/FS-хаба 1-4 с индивидуальным управлением питанием нисходящих портов.
AT43320A Микроконтроллер на ядре AVR. Имеет встроенные USB-функцию и хаб с 4 внешними нисходящими портами, работающие в LS/FS-режимах, 512 байт ОЗУ, 32х8 регистров общего назначения, 32 программируемых вывода, последовательный и SPI-интерфейсы. Функция имеет 3 КТ с буферами FIFO размером 8 байт. Для нисходящих портов хаба предусмотрено индивидуальное управление питанием.
AT43321 Контроллер клавиатуры на ядре AVR. Имеет встроенные USB-функцию и хаб с 4 внешними нисходящими портами, работающие в LS/FS-режимах, 512 байт ОЗУ, 16 кбайт ПЗУ, 32х8 регистров общего назначения, 20 программируемых вывода, последовательный и SPI-интерфейсы. Функция имеет 3 КТ. Для нисходящих портов хаба предусмотрено индивидуальное управление питанием.
AT43324

Микроконтроллер на ядре AVR. Имеет встроенные USB-функцию и хаб с 2 внешними нисходящими портами, работающие в LS/FS-режимах, 512 байт ОЗУ, 16 кбайт ПЗУ, 32х8 регистров общего назначения, 34 программируемых вывода. Клавиатурная матрица может иметь размер 18х8. Контроллер имеет 4 выхода для подключения светодиодов. Функция имеет 3 КТ. Для нисходящих портов хаба предусмотрено индивидуальное управление питанием.

AT43355 Микроконтроллер на ядре AVR. Имеет встроенные USB-функцию и хаб с 2 внешними нисходящими портами, работающие в LS/FS-режимах, 1 кбайт ОЗУ, 24 кбайт ПЗУ, 32х8 регистров общего назначения, 27 программируемых выводов, последовательный и SPI-интерфейсы, 12-канальный 10-разрядный АЦП. Функция имеет 1 управлющую КТ и 3 программируемых КТ с буферами FIFO размером 64/64/8 байт.
Fairchild Semiconductor USB100 Контроллер манипуляторов (мышь, трекбол, джойстик). Поддерживает 2D/3D-мышь, джойстик с тремя потенциометрами, манипулятор с 16 кнопками.

Intel
8x931Ax Микроконтроллер с архитектурой MSC-51. Имеет встроенную USB-функцию, работающую в LS/FS-режимах, 256 байт ОЗУ, 0/8 кбайт ПЗУ, 8х4 регистра общего назначения, 32 программируемых вывода, последовательный интерфейс, интерфейс управления клавиатурой. Функция имеет 3 КТ с буферами FIFO размером 8/16/8 байт.
8x931Hx Микроконтроллер с архитектурой MSC-51. Имеет встроенную USB-функцию и хаб с 4 внешними нисходящими портами, работающие в LS/FS-режимах, 256 байт ОЗУ, 0/8 кбайт ПЗУ, 8х4 регистра общего назначения, 32программируемых вывода, последовательный интерфейс, интерфейс управления клавиатурой. Функция имеет 3 КТ с буферами FIFO размером 8/16/8 байт.
8x930Ax Микроконтроллер с архитектурой MSC-251. Имеет встроенную USB-функцию, работающую в LS/FS-режимах, 1024 байта ОЗУ, 0/8/16 кбайт ПЗУ, 40 регистров общего назначения, 32 программируемых вывода, последовательный интерфейс. Функция имеет 4(6) КТ с буферами FIFO размером 16/1024(256)/16(32)/16(32)/(32)/(16) байт.
8x930Hx Микроконтроллер с архитектурой MSC-251. Имеет встроенную USB-функцию и хаб с 4 внешними нисходящими портами, работающие в LS/FS-режимах, 1024 байта ОЗУ, 0/8/16 кбайт ПЗУ, 40 регистров общего назначения, 32 программируемых вывода, последовательный интерфейс. Функция имеет 4 КТ с буферами FIFO размером 16/1024/16/16 байт.

Microchip
PIC16C745 Микроконтроллер с архитектурой PIC. Имеет встроенную USB-функцию, работающую в LS-режиме, 256 байт ОЗУ, 14336 байт ПЗУ, 22 программируемых вывода, последовательный интерфейс, 5-канальный 8-битный АЦП.
PIC16C765 Микроконтроллер с архитектурой PIC. Имеет встроенную USB-функцию, работающую в LS-режиме, 256 байт ОЗУ, 14336 байт ПЗУ, 33 программируемых вывода, последовательный интерфейс, 8-канальный 8-битный АЦП.
PIC18F2450 Микроконтроллер с архитектурой PIC. Имеет встроенную USB-функцию, работающую в LS/FS-режиме, 1536 байт ОЗУ, 16384 байт ПЗУ, 19 программируемых выводов, последовательный и SPI-интерфейсы, 5-канальный 10-битный АЦП. Функция имеет 8 КТ.
PIC18F2550 Микроконтроллер с архитектурой PIC. Имеет встроенную USB-функцию, работающую в LS/FS-режиме, 1536 байт ОЗУ, 32768 байт ПЗУ, 19 программируемых выводов, последовательный, CAN- и SPI-интерфейсы, 5-канальный 10-битный АЦП. Функция имеет 8 КТ.
PIC18F4450 Микроконтроллер с архитектурой PIC. Имеет встроенную USB-функцию, работающую в LS/FS-режиме, 1536 байт ОЗУ, 16384 байт ПЗУ, 34 программируемых вывода, последовательный, CAN- и SPI-интерфейсы, 8-канальный 10-битный АЦП. Функция имеет 8 КТ.
PIC18F4550 Микроконтроллер с архитектурой PIC. Имеет встроенную USB-функцию, работающую в LS/FS-режиме, 1536 байт ОЗУ, 32768 байт ПЗУ, 34 программируемых вывода, последовательный, CAN- и SPI-интерфейсы, 8-канальный 10-битный АЦП. Функция имеет 8 КТ.
Texas Instruments TUSB2036 Контроллер LS/FS-хаба 1-3 с индивидуальным управлением питанием нисходящих портов.

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

Все транзакции (обмены) с устройствами USB состоят из двух-трех пакетов, типовые последовательности пакетов в транзакциях приведены на рис. 1. Каждая транзакция планируется и начинается по инициативе хост-контроллера, который посылает пакет-маркер транзакции (token packet). Маркер транзакции описывает тип и направление передачи, адрес выбранного устройства USB и номер конечной точки. Адресуемое маркером устройство распознает свой адрес и готовится к обмену. Источник данных, определенный маркером, передает пакет данных. На этом этапе транзакции, относящиеся к изохронным передачам, завершаются — здесь нет подтверждения приема пакетов. Для остальных типов передач работает механизм подтверждения, обеспечивающий гарантированную доставку данных. Форматы пакетов приведены на рис. 2, типы пакетов — в таблице. Во всех полях пакетов, кроме поля CRC, данные передаются младшим битом вперед (на временных диаграммах младший бит изображается слева). Пакет начинается с синхропоследовательности Sync и завершается признаком конца — EOP. Тип пакета определяется полем PID. Назначение остальных полей раскрывается далее. Длина полей Sync и EOP указана для передач на FS/LS, для высокоскоростных передач поле Sync удлинено до 32 битовых интервалов, а EOP до 8 (в пакетах SOF поле EOP имеет длину 40 бит).

Все принимаемые пакеты проверяются на наличие ошибок, что позволяют принятые форматы пакета и некоторые соглашения:

  • пакет начинается с синхронизирующей последовательности, за которой следует его идентификатор PID (Packet Identificator). За идентификатором следует его инверсная копия — Check. Несовпадение двух копий считается признаком ошибки;
  • тело пакета (все поля пакета, исключая PID и признак EOP) защищается CRCкодом: 5-битным для пакетов-маркеров, 16-битным — для пакетов данных. Несовпадение CRC с ожидаемым значением считается признаком ошибки;
  • пакет завершается специальным сигналом EOP; если в пакете оказывается не целое число байт, он считается ошибочным. Ложный EOP, даже на границе байта, не позволит принять пакет из-за практически неизбежной в данной ситуации ошибки по CRC-контролю;
  • на физический уровень (в шину) данные пакета передаются с использованием вставки бит (bit stuffing, после шести единичных бит вставляется нолик), что предотвращает потерю битовой синхронизации при монотонном сигнале. Прием более шести единичных бит подряд считается ошибкой (на HS — признаком конца кадра).

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

Для обнаружения отсутствия ответа партнера на пакет каждое устройство имеет счетчик тайм-аута, который прерывает ожидание ответа по истечении некоторого времени. В USB имеется ограничение на время оборота по шине (roundtrip time): время от конца EOP сформированного пакета до получения начала ответного пакета. Для конечного устройства (и хост-контроллера) нормируется максимальная задержка ответа (response time) от конца увиденного EOP до введения им начала пакета. Для хабов нормируется задержка трансляции пакетов, для кабелей — задержка распространения сигналов. Счетчик тайм-аута должен учитывать максимальную задержку, возможную для допустимой конфигурации шины: до 5 промежуточных хабов, до 5 метров каждый кабель. Допустимое значение тайм-аута, выражаемое в битовых интервалах (bt), зависит от скорости:

  • для скоростей FS/LS задержка, вводимая одним кабельным сегментом, по сравнению с битовым интервалом (bt) невелика. Исходя из этого в USB 1.0 для расчета допустимых задержек принимается следующая модель. На каждый кабельный сегмент отводится допустимая задержка 30 нс, на хаб — 40 нс. Таким образом, пять промежуточных хабов со своими кабелями вносят во время двойного оборота задержку 700 нс, что на FS соответствует примерно 8,5 bt. Для FS-устройства задержка ответа не должна превышать 6,5 bt (а с учетом его кабеля — 7,5 bt). Исходя из этого спецификация предписывает передатчикам на FS использовать счетчик тайм-аута на 16-18 bt;
  • на скорости HS задержка в кабельном сегменте много больше битового интервала, и в USB 2.0 модель расчета несколько иная. Здесь на каждый кабельный сегмент отводится по 26 нс, а на хаб — по 4 нс плюс 36 bt. Таким образом, двукратное прохождение 6 кабельных сегментов (2×6×26 = 312 нс ≈ 150 bt) и пять хабов (2×5×4 = 40 нс ≈ 19 bt плюс 2×5×36 = 360 bt) занимает до 529 bt. Задержка ответа устройства допустима до 192 bt, а полная задержка с учетом кабелей и хабов будет до 721 bt. Исходя из этого спецификация предписывает передатчикам на HS использовать счетчик тайм-аута на 736-816 bt.

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

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

ACK — подтверждение (положительное) успешного выполнения транзакции вывода или управления;
NAK — отрицательное подтверждение, является признаком неготовности устройства к выполнению данной транзакции (нет данных для передачи хосту, отсутствует место в буфере для приема, не завершена операция управления). Это является нормальным ответом, о котором не узнает никто, кроме хост-контроллера, вынужденного повторить данную транзакцию позже. В транзакциях ввода ответ NAK устройство дает вместо пакета данных, если они не готовы;
STALL — сообщение о серьезной ошибке, которое означает, что без специального программного вмешательства работа с данной конечной точкой становится невозможной. Этот ответ доводится до сведения и драйвера USBD, отменяющего дальнейшие транзакции с этой точкой, и до клиентского драйвера, от которого и ожидается программное вмешательство, разблокирующее точку. В управляющих транзакциях (Control) ответ STALL означает невыполнимость данного запроса; разблокирования точки при этом не требуется.

Управление потоком при выводе данных, основанное только на возможности ответа NAK в случае неготовности устройства, весьма неэффективно расходует пропускную способность шины: чтобы убедиться в неготовности устройства, по шине впустую передается большой пакет данных. В USB 2.0 этой неприятности в транзакциях Bulk-OUT и Control избегают, применив протокол проб (Ping Protocol). Хост может опросить готовность устройства к приему пакета максимального размера, послав ему маркер-пробник PING. На этот маркер устройство может ответить подтверждением ACK (при готовности) или NAK (если не способно принять пакет максимального размера). Отрицательный ответ заставит хост повторить пробу позже, положительный разрешит ему выполнить транзакцию вывода данных. На транзакцию вывода после положительного ответа на пробу ответы устройства более разнообразны:

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

Высокоскоростное устройство в дескрипторах конечных точек сообщает о возможной интенсивности посылок NAK: поле bInterval для конечных точек типа Bulk и Control указывает число микрокадров, приходящееся на один NAK (0 означает, что устройство никогда не ответит NAK’ом на транзакцию вывода).

Передачи массивов, прерываний и управления обеспечивают надежную доставку данных. После успешного приема пакета приемник данных посылает подтверждение — пакет квитирования ACK. Если приемник данных обнаружил ошибку, пакет игнорируется и никакого ответа на него не посылается. Источник данных считает, что очередной пакет передан успешно, когда получает от приемника подтверждение ACK. Если подтверждение не приходит, то в следующей транзакции источник повторяет посылку того же пакета. Однако пакет подтверждения может быть потерян из-за помехи; чтобы в этом случае повторная посылка пакета приемником не воспринималась как следующая порция данных, пакеты данных нумеруются. Нумерация ведется по модулю 2 (1-битный номер): пакеты делятся на четные (с идентификатором DATA0) и нечетные (DATA1). Для каждой конечной точки (кроме изохронных) у хоста и в устройстве имеются биты-переключатели (Toggle Bit), их начальные состояния тем или иным способом согласуются. В транзакциях IN и OUT передаются и ожидаются пакеты данных с идентификаторами DATA0 или DATA1, соответствующими текущему состоянию этих бит. Приемник данных переключает свой бит в случае безошибочного приема данных с ожидаемым идентификатором, источник данных — по приему подтверждения. Если приемник получает безошибочный пакет с неожидаемым идентификатором, он посылает подтверждение ACK, но данные пакета игнорирует, поскольку этот пакет — повторная посылка уже принятых данных.

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

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

Транзакции изохронного вывода состоят из двух пакетов, посылаемых хост-контроллером, — маркера OUT и пакета данных DATA. В транзакции ввода хост посылает маркер IN, на который устройство отвечает пакетом данных, возможно, и с нулевой длиной поля данных (если нет готовых данных). Любой другой ответ устройства (как и «молчание») хостом расценивается как ошибка, приводящая к остановке данного канала.

При изохронном обмене имеется контроль достоверности (отбрасывание пакетов с ошибками) и целостности данных (обнаружение факта пропажи пакета). Контроль целостности основан на строгой детерминированности темпа обмена — в соответствии со своим дескриптором точка ожидает транзакцию с периодом 2bInterval-1 микрокадров. Для обычной изохронной конечной точки в микрокадре возможна лишь одна транзакция, и ошибка при приеме пакета выражается в отсутствии принятых данных в микрокадре, в котором они ожидаются. Таким образом, нумерация пакетов (переключатель Toggle Bit) не требуется. Полноскоростные устройства и хостконтроллеры должны посылать пакеты только типа DATA01. Для широкополосных изохронных конечных точек (USB 2.0) в каждом микрокадре возможна передача до трех пакетов данных. Любой из этих пакетов может потеряться, и для обнаружения этой ситуации требуется нумерация пакетов внутри микрокадра. Для этой нумерации введено два новых типа пакетов данных: DATA2 и MDATA. Многообразие типов пакетов кроме нумерации позволяет еще и информировать партнера по связи о своих планах на данный микрокадр. В транзакциях IN идентификатором пакета устройство указывает, сколько еще пакетов оно собирается выдать в том же микрокадре, что позволяет хосту не делать лишних попыток ввода. Так, если в микрокадре передается один пакет, то это будет DATA0; если два — последовательность будет DATA1, DATA0; три — DATA2, DATA1, DATA0. В транзакциях OUT для вывода не последнего пакета в микрокадре используется пакет MDATA (More Data), а идентификатор последнего пакета показывает, сколько было до него передано пакетов. Так, при одной транзакции вывода используется пакет DATA0, при двух — последовательность MDATA, DATA1, при трех — MDATA, MDATA, DATA2. Во всех транзакциях, кроме последней в микрокадре, должны использоваться пакеты максимального размера. Отметим, что между широкополосными транзакциями в микрокадре могут вклиниваться другие транзакции.

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

USB OTG

USB 3.0

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


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

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

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

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

Недостатки USB

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

USB и FireWire/1394

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

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

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

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

См. также

  • FireWire
  • TransferJet

Источники

Ссылки

  • USB News (нем.)

Высокая скорость обмена (full-speed signaling bit rate) - 12 Мб/с - Максимальная длина кабеля для высокой скорости обмена - 5 м - Низкая скорость обмена (low-speed signaling bit rate) - 1.5 Мб/с - Максимальная длина кабеля для низкой скорости обмена - 3 м - Максимум подключенных устройств (включая размножители) - 127 - Возможно подключение устройств с различными скоростями обмена - Отсутствие необходимости в установке пользователем дополнительных элементов, таких как терминаторы для SCSI - Напряжение питания для периферийных устройств - 5 В - Максимальный ток потребления на одно устройство - 500 mA

Распайка разъема usb 1.1 и 2.0

Сигналы USB передаются по двум проводам экранированного четырёхпроводного кабеля.

Здесь:

GND - цепь «корпуса» для питания периферийных устройств V BUS - +5V также для цепей питания Шина D+ предназначена для передачи данных

Шина D- для приема данных.

Недостатки usb 2.0

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

Самым существенным преимуществом USB 3.0 является более высокая скорость (до 5 Гбит/с), которая в 10 раз выше скорости более устаревшего порта. У нового интерфейса улучшено энергосбережение. Это позволяет накопителю переходить в спящий режим при бездействии. Можно осуществить двустороннюю передачу данных одновременно. Это даст более высокую скорость, если на один порт подключить несколько устройств (разветвить порт). Разветвить можно с помощью хаба (хаб – устройство, которое из одного порта разветвляет на 3-6 портов). Вот если подключить хаб к порту USB 3.0, а к хабу подключите несколько устройств (например, флешек) и осуществите одновременную передачу данных, то вы увидите, что скорость будет значительно больше, чем было при интерфейсе USB 2.0. Есть характеристика, которая может являться плюсом и минусом. В интерфейсе USB 3.0 была повышена сила тока до 900 мА, а USB 2.0 работает с силой тока в 500 мА. Это будет плюсом для тех устройств, которые были адаптированы под USB 3.0, ну а небольшой минус состоит в том, что может возникать риск при подзарядке более слабых устройств, как телефон. Физическим недостатком нового интерфейса является размеры кабеля. Для поддержания высокой скорости кабель стал более толстым и по длине более коротким (не может быть длиннее 3 метров), чем USB 2.0. Следует отметить важное, что устройства с разными USB интерфейсами будут работать хорошо и не должно возникнуть проблем. Но не думайте, что скорость «разгонится», если вы подключите USB 3.0 к более устаревшему порту, или подключите к новому порту кабель устаревшего интерфейса. Скорость передачи данных будет равна скорости самого слабого порта.

USB (Universal Serial Bus - «универсальная последовательная шина») - последовательный интерфейс передачи данных для среднескоростных и низкоскоростных периферийных устройств. Для подключения используется 4-х проводный кабель, при этом два провода используются для приёма и передачи данных, а 2 провода - для питания периферийного устройства. Благодаря встроенным линиям питания USB позволяет подключать периферийные устройства без собственного источника питания.

Основные сведения

Кабель USB состоит из 4 медных проводников - 2 проводника питания и 2 проводника данных в витой паре, и заземленной оплётки (экрана).

Кабели USB имеют физически разные наконечники «к устройству» и «к хосту». Возможна реализация USB устройства без кабеля, со встроенным в корпус наконечником «к хосту». Возможно и неразъёмное встраивание кабеля в устройство (например, USB-клавиатура, Web-камера, USB-мышь) , хотя стандарт запрещает это для устройств full и high speed.

Шина USB строго ориентирована, т. е. имеет понятие «главное устройство» (хост, он же USB контроллер, обычно встроен в микросхему южного моста на материнской плате) и «периферийные устройства».

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

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

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

Оконечные точки , а значит, и каналы, относятся к одному из 4 классов:

1) поточный (bulk),

2) управляющий (control),

3) изохронный (isoch),

4) прерывание (interrupt).

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

Управляющий канал предназначен для обмена с устройством короткими пакетами «вопрос-ответ». Любое устройство имеет управляющий канал 0, который позволяет программному обеспечению ОС прочитать краткую информацию об устройстве, в том числе коды производителя и модели, используемые для выбора драйвера, и список других оконечных точек.

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

Изохронный канал позволяет доставлять пакеты без гарантии доставки и без ответов/подтверждений, но с гарантированной скоростью доставки в N пакетов на один период шины (1 КГц у low и full speed, 8 КГц у high speed). Используется для передачи аудио- и видеоинформации.

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

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

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

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


Технические характеристики

Возможности USB:

Высокая скорость обмена (full-speed signaling bit rate) - 12 Мб/с
- Максимальная длина кабеля для высокой скорости обмена - 5 м
- Низкая скорость обмена (low-speed signaling bit rate) - 1.5 Мб/с
- Максимальная длина кабеля для низкой скорости обмена - 3 м
- Максимум подключенных устройств (включая размножители) - 127
- Возможно подключение устройств с различными скоростями обмена
- Отсутствие необходимости в установке пользователем дополнительных элементов, таких как терминаторы для SCSI
- Напряжение питания для периферийных устройств - 5 В
- Максимальный ток потребления на одно устройство - 500 mA

Распайка разъема USB 1.1 и 2.0

Сигналы USB передаются по двум проводам экранированного четырёхпроводного кабеля.

Здесь:

GND - цепь «корпуса» для питания периферийных устройств
V BUS - +5V также для цепей питания
Шина D+ предназначена для передачи данных

Шина D- для приема данных.

Недостатки USB 2.0

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