USB

Транзакции и пакеты

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

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

 

 

 

Таблица. Типы пакетов и их идентификаторы PID

Имя
Код PID Содержимое и назначение
Пакеты-маркеры (Token)
OUT 0001 Маркер транзакции вывода, несет идентификатор конечной точки (адрес устройства и номер точки; направление точки определяется кодом PID)
IN 1001 Маркер транзакции ввода, несет идентификатор конечной точки (адрес устройства и номер точки; направление точки определяется кодом PID)
SETUP 1101 Маркер транзакции управления, несет идентификатор конечной точки (адрес устройства и номер точки)
SOF 0101 Маркер начала микрокадра, несет 11-битный номер кадра (вместо полей Addr и EndP)
PING 0100 Пробный маркер управления потоком (в USB 2.0)
Пакеты данных
DATA0 0011 Пакеты данных; чередование PID позволяет различать четные и нечетные пакеты для контроля правильности подтверждения
DATA1 1011
DATA2 0111 Дополнительные типы пакетов данных, используемые в транзакциях с широкополосными изохронными точками (в USB 2.0 для HS)
MDATA 1111
Пакеты квитирования (Handshake)
ACK 0010 Подтверждение безошибочного приема пакета
NAK 1010 Индикация занятости (неготовности конечной точки к обмену данными, незавершенности обработки транзакции управления)
STALL 1110 Конечная точка требует вмешательства хоста
NYET 0110 Подтверждение безошибочного приема, но указание на отсутствие места для приема следующего пакета максимального размера (в USB 2.0)
Специальные пакеты (Special)
PRE 1100 Преамбула (маркер) передачи на низкой скорости (разрешает трансляцию данных на низкоскоростной порт хаба)
ERR 1100 Сигнализация ошибки в расщепленной транзакции (в USB 2.0)
SPLIT (SS и CS) 1000 Маркер расщепленной транзакции (в USB 2.0). В зависимости от назначения обозначается как SS (маркер запуска) и CS (маркер завершения), назначение определяется битом SC в теле маркера

 

 



Sitelinkx by eXtro-media.de
Яндекс.Метрика