Фазы транзакций. Признаки и идентификаторы пакетов
Каждая транзакция (обмен информацией) планируется и начинается по инициативе центральной части системы 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, показывая, что не поняло запрос.