Универсальная последовательная шина
Система USB состоит из хоста USB и устройств USB. Категория устройств состоит из концентраторов (hub) и узлов (node). В любой системе существует один хост (host) USB. Этот модуль содержит интерфейс, который предоставляет контроллер хоста USB. Фактически котроллер представляет собой комбинацию аппаратного, программно-аппаратного и программного обеспечения.
Концентраторы — это устройства, которые предоставляют дополнительные точки подключения для других устройств USB. Специальный концентратор, называемый корневым концентратором, является неотъемлемой частью хост-системы и предоставляет одну или более точек подключения для устройств USB.
Порты соединяются со стандартными соединителями с помощью дополнительного кабеля задней панели, устанавливаемого в свободное отверстие в задней стенке системного блока.
С другой стороны, платы АТХ имеют пару соединителей порта USB, установленных в блоке соединителей портов АТХ. Существуют также порты USB, устанавливаемые на платы PCI, которые могут добавляться в систему, обеспечивая подключение к ней еще большего количества устройств USB. Эти хост-порты функционируют в качестве корневого концентратора системы.
Понятно, что некоторые компоненты системы одновременно служат и устройством USB, и концентратором USB (например, клавиатура и монитор). В этих устройствах имеются как компоненты, выполняющие заданную функцию, так и встроенный концентратор, к которому могут подключаться другие устройства. Подобного рода устройства называются комбинированными.
По своим возможностям передачи данных устройства USB разделяются на полноскоростные и низкоскоростные устройства. Предельная длина кабеля, обслуживающего полноскоростное устройство составляет 5 м. Предельная длина кабелей, используемых между низкоскоростными устройствами, равна 3 м.
Передача данных по шине USB
В отличие от традиционных последовательных интерфейсов, которые передают кадрированные символы по одному, по шине USB данные передаются в форме пакетов данных. Размеры пакета зависят от типа выполняемой передачи. Однако, как правило, они имеют длину, равную 8, 16, 32 или 64 байта. Для выполнения всех передач требуется, чтобы 2 или 3 пакета информации были переданы между хостом, исходным пунктом и пунктом назначения.
Все передачи данных выполняются между хостом и оконечным устройством. Поток данных может возникать в любом направлении. Транзакции USB начинаются, когда хост-контроллер посылает эстафетный пакет, содержащий информацию о типе выполняемой транзакции, направлении передачи, адресе устройства назначения USB и номере конечного пункта. Если устройство является источником транзакции, оно либо помещает пакет данных в шину, либо информирует хост о том, что оно не имеет данных для отправки. Если хост является источником, он просто помещает пакет данных в шину.
В любом случае, если передача оказалась успешной, пункт назначения возвращает пакет квитирования. При обнаружении ошибки во время передачи генерируется пакет отсутствия уведомления (NACK).
Пакет каждого типа начинается с 8-разрядного идентификатора пакета (PID). Пакет начала кадра добавляет 11-разрядный номер кадра и 5-разрядный код циклической избыточной проверки (cyclic redundancy check, CRC) на наличие ошибок. В пакете данных блок номера кадра заменяется блоком данных переменной длины, а длина кадра CRC увеличивается до 16 разрядов. Блок данных может иметь длину до 1023 байт. Пакет квитирования состоит только из байта идентификатора пакета (PID).
Программа управления USB динамически отслеживает, какие устройства подключены к шине и где они находятся. Этот процесс идентификации и номерации устройств шины известен под названием номерации шины. Спецификация USB допускает «горячую» замену периферийных устройств, для выполнения которой не требуется выключение системы. Система автоматически обнаруживает периферийные устройства и конфигурирует соответствующие драйверы. Вместо того, чтобы просто обнаруживать и регистрировать устройства во время начального запуска в стиле PnP, USB постоянно отслеживает шину и обновляет список при каждом добавлении или удалении устройств.
Спецификация USB допускает выполнение следующих четырех типов передачи:
- Управляющие передачи используются системой для конфигурирования во время начального запуска или во время подключения. Другие программы могут использовать управляющие передачи для выполнения других, характерных для устройства операций.
- Групповые передачи данных используются для обслуживания устройств, которые могут обрабатывать большие пакеты данных (например, от сканеров и принтеров). Как правило, групповые передачи образуются из больших потоков последовательных данных. Система настраивается на выполнение групповых передач, когда шина обладает достаточной пропускной способностью для реализации такой передачи.
- Передачи прерываний — короткие, беспорядочные передачи из устройства, которые используются для объявлений о событиях, предоставления входной информации о координатах или для передачи символов.
- Изохронные передачи используют большие потоки данных. Этот формат используется для передачи в реальном времени таких непрерывных потоков данных, как речь и видеоданные. Скорости передачи данных являются заранее определенными и соответствуют частоте выборки устройства.