USB (англ. Universal Serial Bus — «универсальная последовательная шина», произносится «ю-эс-би») — последовательный интерфейс передачи данных для среднескоростных и низкоскоростных периферийных устройств в вычислительной технике.
Последовательные шины позволяют объединять множество устройств, используя всего 1-2 пары проводов. Функциональные возможности этих шин гораздо шире, чем у традиционных интерфейсов локальных сетей,
Последовательные шины по своей организации сильно отличаются от параллельных. В последовательных шинах нет отдельных линий для данных, адреса и управления — все протокольные функции приходится выполнять, пользуясь одной или двумя парами сигнальных проводов. Это накладывает отпечаток на построение шинного протокола, который в последовательных шинах строится на основе пересылок пакетов — определенным образом организованных цепочек бит. В параллельных шинах имеются возможности явной синхронизации интерфейсной части ведущих и ведомых устройств; исполнение каждого шага протокола обмена может быть подтверждено, и, при необходимости, некоторые фазы обмена могут продлеваться по «просьбе» не успевающего устройства. В последовательных шинах такой возможности нет — пакет пересылается целиком, а синхронизация возможна только по принимаемому потоку бит. Эти и другие особенности сближают последовательные шины с локальными сетями передачи данных.
Шина USB ориентирована на периферийные устройства, подключаемые к PC. Изохронные передачи USB позволяют передавать цифровые аудиосигналы, а шина USB 2.0 способна нести и видеоданные. Все передачи управляются централизованно, и PC является необходимым управляющим узлом, находящимся в корне древовидной структуры шины. Непосредственное соединение нескольких PC шиной USB не предусматривается, хотя выпускаются «активные кабели» для связи пары компьютеров и устройства-концентраторы.
Шина обеспечивет скорости передачи информации:
FS (full speed) — 12 Мбит/с
LS (Low Speed) — 1,5 Мбит/с
HS (High Speed) — 480 Мбит/с
USB 3.0 - 4,8 Гбит/с
Каждое устройство на шине USB (их может быть до 127) при подключении автоматически получает свой уникальный адрес.
Логически устройство представляет собой набор независимых конечных точек (endpoint, ЕР), с которыми хост-контроллер (и клиентское ПО) обменивается информацией.
Каждая конечная точка имеет свой номер и описывается следующими параметрами:
требуемая частота доступа к шине и допустимые задержки обслуживания;
требуемая полоса пропускания канала;
требования к обработке ошибок;
максимальные размеры передаваемых и принимаемых пакетов;
тип передачи;
направление передачи (для передач массивов и изохронного обмена).
Каждое устройство обязательно имеет конечную точку с номером 0, используемую для инициализации, общего управления и опроса состояния устройства. Эта точка всегда сконфигурирована при включении питания и подключении устройства к шине. Она поддерживает передачи типа «управление» (см. ниже). Кроме нулевой точки, устройства-функции могут иметь дополнительные точки, реализующие полезный обмен данными.
Низкоскоростные устройства могут иметь до двух дополнительных точек, полноскоростные — до 15 точек ввода и 15 точек вывода (протокольное ограничение). Дополнительные точки (а именно они и предоставляют полезные для пользователя функции) не могут быть использованы до их конфигурирования (установления согласованного с ними канала).
Каналом (pipe) в USB называется модель передачи данных между хост-контроллером и конечной точкой устройства. Имеются два типа каналов:
потоки
сообщения
Поток (stream) доставляет данные от одного конца канала к другому, он всегда однонаправленный. Один и тот же номер конечной точки может использоваться для двух поточных каналов — ввода и вывода. Поток может реализовывать следующие типы обмена: передача массивов, изрхронный и прерывания. Сообщение (message) имеет формат, определенный спецификацией USB. Хост посылает запрос к конечной точке, после которого передается (принимается) пакет сообщения, за которым следует пакет с информацией состояния конечной точки. Последующее сообщение нормально не может быть послано до обработки предыдущего, но при отработке ошибок возможен сброс необслуженных сообщений. Двусторонний обмен сообщениями адресуется к одной и той же конечной точке.
С каналами связаны характеристики, соответствующие конечной точке (полоса пропускания, тип сервиса, размер буфера и т. п.). Каналы организуются при конфигурировании устройств USB. Для каждого включенного устройства существует канал сообщений (Control Pipe 0), по которому передается информация конфигурирования, управления и состояния.
USB поддерживает несколько режимов связи, как однонаправленных, так и двунаправленных. Передача данных производится между ПО хоста и конкретной конечной точкой устройства. Устройство может иметь несколько конечных точек, связь с каждой из них устанавливается независимо от других.