- •Глава 27. Интерфейс usb 2.0
- •27.1. Общая характеристика и структура интерфейса usb
- •27.2. Физический интерфейс
- •27.3. Модель передачи данных
- •27.4. Типы передачи данных
- •27.5. Протокол Фазы транзакций. Признаки и идентификаторы пакетов
- •Передача данных
- •Передача данных от хост-контроллера к устройству
- •Передача данных от пу хост-контроллеру
- •Обработка ошибочных ситуаций
- •27.6. Системное конфигурирование
- •Устройства интерфейса usb - функции и концентраторы
- •Хост-контроллер
- •27.7. Интерфейс usb otg
- •27.8. Интерфейс usb Wireless
- •27.9. Контрольные вопросы
27.4. Типы передачи данных
Система USB поддерживает как однонаправленные, так и двунаправленные режимы связи. Передача данных производится между программным обеспечением центральной части системы USB и конечной точкой устройства. Периферийное устройство может иметь несколько конечных точек, связь с каждой из них (канал) устанавливается независимо.
Архитектура интерфейса USB допускает четыре базовых типа передачи данных.
Управляющие посылки (Control Transfers). Используются для конфигурирования во время подключения и в процессе работы для управления периферийными устройствами. Протокол обеспечивает гарантированную доставку данных. Длина поля данных управляющей посылки не превышает 64 байт на полной скорости и 8 байт на низкой.
Сплошные передачи (Bulk Data Transfers). Это передачи сравнительно больших пакетов без жестких требований ко времени доставки. Передачи занимают всю свободную полосу пропускания интерфейса. Пакеты имеют поле данных размером 8, 16, 32 или 64 байт. Приоритет этих передач самый низкий, они могут приостанавливаться при большой загрузке интерфейса. Допускаются только на полной скорости передачи.
Прерывания (Interrupt). Это короткие (до 64 байт на полной скорости, до 8 байт на низкой скорости) передачи типа вводимых символов или координат. Прерывания имеют спонтанный характер и должны обслуживаться не медленнее, чем того требует устройство. Предел времени обслуживания устанавливается в диапазоне 1-255 мс для полной скорости и 10-255 мс - для низкой.
Изохронные передачи (Isochronous Transfers). Это непрерывные передачи в реальном времени, занимающие предварительно согласованную часть пропускной способности шины и имеющие заданную задержку доставки. В случае обнаружения ошибки изохронные данные передаются без повтора - недействительные пакеты игнорируются. Пример - цифровая передача голоса. Пропускная способность определяется требованиями к качеству передачи, а задержка доставки может быть критичной, например, при реализации телеконференций.
Полоса пропускания интерфейса USB делится между всеми установленными каналами. Выделенная полоса закрепляется за каналом, и если установление нового канала требует такой полосы, которая не вписывается в уже существующее распределение, запрос на выделение канала отвергается.
Архитектура интерфейса USВ предусматривает внутреннюю буферизацию во всех устройствах, причем чем большей полосы пропускания требует периферийное устройство, тем больше должен быть его буфер. Система USB должна обеспечивать обмен с такой скоростью, чтобы задержка данных в устройстве, вызванная буферизацией, не превышала нескольких миллисекунд.
Изохронные передачи классифицируются по способу синхронизации конечных точек - источников или получателей данных - с системой: различают асинхронный, синхронный и адаптивный классы устройств, каждому из которых соответствует свой тип канала USB.
27.5. Протокол Фазы транзакций. Признаки и идентификаторы пакетов
Каждая транзакция (обмен информацией) планируется и начинается по инициативе центральной части системы 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, показывая, что не поняло запрос.
