Фазы транзакций. Признаки и идентификаторы пакетов

 

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

фазы оповещения о типе транзакции на шине;

фазы передачи данных в соответствии с указанным в первой фазе типом транзакции;

фазы согласования (квитирования) – завершающей фазы транзакции.

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

 

Таблица 27.2. Типы пакетов

Тип Имя
Token IN, OUT, SOF, SETUP
Data DATA0, DATA1
Handshake ACK, NAK, STALL
Special PRE

 

В пакете «маркер» (Token Packet), начинающем очередной обмен (транзакцию) на интерфейсе USB, задается:

адрес устройства на интерфейсе USB;

номер конечной точки (функции) в периферийном устройстве;

идентификатор, определяющий тип транзакции (IN, OUT, SOF, SETUP);

контрольная информация.

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

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

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

Признак SOF приходит каждую миллисекунду (при работе на скорости 12.5 Мбит/с), обозначая начало очередного кадра на интерфейсе USB.

Существуют три типа пакетов согласования с идентификаторами фазы согласования: ACK, NAK и STALL:

ACK - означает, что данные были приняты без ошибок;

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

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