Типы передачи данных
USB поддерживает как однонаправленные, так и двунаправленные режимы связи. Передача данных производится между ПО хоста и конечной точкой устройства. Устройство может иметь несколько конечных точек, связь с каждой из них (канал) устанавливается независимо.
Каждая транзакция (элементарный акт передачи информации) инициируется хост-контроллером и выполняется в три этапа:
Хост-контроллер передает пакет-маркер, в котором задается адресат и тип транзакции.
Устройство, которое в этой транзакции будет источником данных, передает пакет с данными. Если это периферийное устройство, а данных у него нет, то оно пошлет пакет-отказ.
Устройство, принимающее данные в этой транзакции, посылает пакет-подтверждение. Хост-контроллер организует транзакции в кадры (frames), следующие регулярно с периодом 1 мс. Начало каждого кадра отмечается специальным пакетом-маркером SOF (Start Of Frame), который обеспечивает синхронизацию всех устройств шины. В высокоскоростном режиме кадр состоит из 8 микрокадров (microframe) длительностью по 125 мкс. В каждом (микро) кадре может быть выполнено несколько транзакций, их допустимое число зависит от длины поля данных. Все подробности организации транзакций от клиентского ПО изолируются контроллером USB и его системным программным обеспечением.
Архитектура USB допускает четыре базовых типа передачи данных:
^ Управляющие посылки (Control Transfers), используемые для конфигурирования во время подключения и в процессе работы для управления устройствами. Протокол обеспечивает гарантированную доставку данных. Длина поля данных управляющей посылки не превышает 64 байт на полной скорости и 8 байт на низкой.
^ Сплошные передачи (Bulk Data Transfers) сравнительно больших пакетов без жестких требований ко времени до- ставки. Передачи занимают всю свободную полосу про- пускания шины. Пакеты имеют поле данных размером 8, 16, 32 или 64 байт. Приоритет этих передач самый низкий, они могут приостанавливаться при большой за- грузке шины. Допускаются только на полной скорости передачи.
^ Прерывания (Interrupt) - короткие (до 64 байт на полной скорости, до 8 байт на низкой) передачи типа вводимых символов или координат. Прерывания имеют спонтанный характер и должны обслуживаться не медленнее, чем того требует устройство. Предел времени обслуживания устанавливается в диапазоне 1-255 мс для полной скорости и 10-255 мс - для низкой.
^ Изохронные передачи (Isochronous Transfers) - непрерывные передачи в реальном времени, занимающие предварительно согласованную часть пропускной способности шины и имеющие заданную задержку доставки. В случае обнаружения ошибки изохронные данные передаются без повтора - недействительные пакеты игнорируются. Пример - цифровая передача голоса. Пропускная способность определяется требованиями к качеству передачи, а задержка доставки может быть критичной, например, при реализации телеконференций.
Архитектура USВ предусматривает внутреннюю буферизацию всех устройств, причем чем большей полосы пропускания требует устройство, тем больше должен быть его буфер. USB должна обеспечивать обмен с такой скоростью, чтобы задержка данных в устройстве, вызванная буферизацией, не превышала нескольких миллисекунд.
Изохронные передачи классифицируются по способу синхронизации конечных точек - источников или получателей данных - с системой: различают асинхронный, синхронный и адаптивный классы устройств, каждому из которых соответствует свой тип канала USB.