Контакты

Универсальная последовательная шина USB. USB (Universal Serial Bus, универсальная последовательная шина) Спецификация usb напряжение на шине

Организация шины USB

USB (Universal Serial Bus — универсальная последовательная шина) является промышленным стандартом расширения архитектуры PC, ориентированным на интеграцию с телефонией и устройствами бытовой электроники. Версия стандарта 1.0 была опубликована в начале 1996 года, большинство устройств поддерживают стандарт 1.1, который вышел осенью 1998 года, — в нем были устранены обнаруженные проблемы первой редакции. Весной 2000 года опубликована спецификация USB 2.0, в которой предусмотрено 40-кратное увеличение пропускной способности шины. Первоначально (в версиях 1.0 и 1.1) шина обеспечивала две скорости передачи информации: полная скорость, FS (full speed) — 12 Мбит/с и низкая скорость, LS (low speed) — 1,5 Мбит/с. В версии 2.0 определена еще и высокая скорость, HS (high speed) — 480 Мбит/с, что позволяет существенно расширить круг устройств, подключаемых к шине. В одной и той же системе могут присутствовать и одновременно работать устройства со всеми тремя скоростями. Шина позволяет с использованием промежуточных хабов соединять устройства, удаленные от компьютера на расстояние до 25 м. Подробную и оперативную информацию по USB (на английском языке) можно найти на сайте http://www.usb.org . Разработку устройств и их классификацию и стандартизацию координирует USB-IF (USB Implementers Forum, Inc.).

Шина USB обеспечивает обмен данными между хост-компьютером и множеством периферийных устройств (ПУ). USB является единой централизованной аппаратно-программной системой массового обслуживания множества устройств и множества прикладных программных процессов. Связь программных процессов со всеми устройствами обеспечивает хост-контроллер с многоуровневой программной поддержкой. Этим USB существенно отличается от традиционных периферийных интерфейсов (портов LPT, COM, GAME, клавиатуры, мыши и т. п.), сравнение этих типов подключений приводится в таблице.

Таблица. Сравнение шины USB с традиционными периферийными интерфейсами

Традиционные интерфейсы (COM, LPT, Game…) Шина USB
Подключение каждого устройства в общем случае требует присутствия собственного контроллера (адаптера) 1 Все устройства подключены через один хостконтроллер
Каждый контроллер занимает свои ресурсы (области в пространстве памяти, ввода/вывода, а также запросы прерывания) Ресурсы занимает только хост-контроллер
Малое количество устройств, которые возможно одновременно подключить к компьютеру Возможность подключения до 127 устройств
Драйверы устройств могут обращаться непосредственно к контроллерам своих устройств, независимо друг от друга Драйверы устройств обращаются только к общему драйверу хост-контроллера
Независимость драйверов оборачивается непредсказуемостью результата одновременной работы с множеством устройств, отсутствием гарантий качества обслуживания (возможность задержек и уменьшения скорости передачи)
для различных устройств
Централизованный планируемый обмен обеспечивает гарантии качества обслуживания, что позволяет передавать мультимедийные изохронные данные наряду с обычным асинхронным обменом
Разнообразие интерфейсов, разъемов и кабелей, специфичных для каждого типа устройств Единый удобный и дешевый интерфейс для подключения устройств всех типов. Возможность выбора скорости работы устройства (1,5-15-480 Мбит/с) в зависимости от потребности
Отсутствие встроенных средств обнаружения подключения/отключения и идентификации устройств, сложность поддержки PnP Возможность «горячего» подключения/отключения устройств, полная поддержка PnP, динамическое конфигурирование
Отсутствие средств контроля ошибок Встроенные средства обеспечения надежной передачи данных
Отсутствие штатного питания устройств Возможность питания устройств от шины, а также наличие средств управления энергопотреблением

1 - Возможностью подключения к одному контроллеру множества устройств обладает и шина SCSI, но ее параллельный интерфейс по сравнению с USB слишком дорог, громоздок и более ограничен в топологии.

Архитектура USB допускает четыре базовых типа передач данных между хостом и периферийными устройствами:

  • изохронные передачи (isochronous transfers) — потоковые передачи в реальном времени, занимающие предварительно согласованную часть пропускной способности шины с гарантированным временем задержки доставки. На полной скорости (FS) можно организовать один канал с полосой до 1,023 Мбайт/с (или два по 0,5 Мбайт/с), заняв 70 % доступной полосы (остаток можно занять и менее емкими каналами). На высокой скорости (HS) можно получить канал до 24 Мбайт/с (192 Мбит/с). Надежность доставки не гарантируется — в случае обнаружения ошибки изохронные данные не повторяются, недействительные пакеты игнорируются. Шина USB позволяет с помощью изохронных передач организовывать синхронные соединения между устройствами и прикладными программами. Изохронные передачи нужны для потоковых устройств: видеокамер, цифровых аудиоустройств (колонки USB, микрофон), устройств воспроизведения и записи аудио- и видеоданных (CD и DVD). Видеопоток (без компрессии) шина USB способна передавать только на высокой скорости;
  • прерывания (interrupts) — передачи спонтанных сообщений, которые должны выполняться с задержкой не более, чем того требует устройство. Предел времени обслуживания устанавливается в диапазоне 10-255 мс для низкой и 1-255 мс для полной скорости. На высокой скорости можно заказать и 125 мкс. Доставка гарантирована, при случайных ошибках обмена выполняется повтор, правда, при этом время обслуживания увеличивается. Прерывания используются, например, при вводе символов с клавиатуры или для передачи сообщений о перемещениях мыши. Прерываниями можно передавать данные и к устройству (как только устройство сигнализирует о потребности в данных, хост своевременно их передает). Размер сообщения может составлять 0-8 байт для низкой скорости, 0-64 байт — для полной и 0-1024 байт — для высокой скорости передачи;
  • передачи массивов данных (bulk data transfers) — это передачи без каких-либо обязательств по своевременности доставки и по скорости. Передачи массивов могут занимать всю полосу пропускания шины, свободную от передач других типов. Приоритет этих передач самый низкий, они могут приостанавливаться при большой загрузке шины. Доставка гарантированная — при случайной ошибке выполняется повтор. Передачи массивов уместны для обмена данными с принтерами, сканерами, устройствами хранения и т. п.;
  • управляющие передачи (control transfers) используются для конфигурирования устройств во время их подключения и для управления устройствами в процессе работы. Протокол обеспечивает гарантированную доставку данных и подтверждение устройством успешности выполнения управляющей команды. Управляющая передача позволяет подать устройству команду (запрос, возможно, и с дополнительными данными) и получить на него ответ (подтверждение или отказ от выполнения запроса и, возможно, данные). Только управляющие передачи на USB обеспечивают синхронизацию запросов и ответов; в остальных типах передач явной синхронизации потока ввода с потоком вывода нет.

Аппаратная часть USB включает:

  • периферийные устройства USB, несущие полезные функции (USB-functions);
  • хост-контроллер (Host Controller), обеспечивающий связь шины с центром компьютера, объединенный с корневым хабом (Root Hub), обеспечивающим точки подключения устройств USB. Существует два варианта хост-контроллеров USB 1.x — UHC (Universal Host Controller) и OHC (Open Host Controller), поддерживающие скорости FS/LS; высокую скорость шины USB 2.0 (HS и только) поддерживает EHC (Enhanced Host Controller);
  • хабы USB (USB Hubs), обеспечивающие дополнительные точки подключения устройств;
  • кабели USB, соединяющие устройства с хабами.

Программная часть USB включает:

  • клиентское ПО (CSw, Client Software) — драйверы устройств USB, обеспечивающие доступ к устройствам со стороны прикладного ПО. Эти драйверы взаимодействуют с устройствами только через программный интерфейс с общим драйвером USB (USBD). Непосредственного обращения к каким-либо регистрам аппаратных средств драйверы устройств USB не выполняют;
  • драйвер USB (USBD, USB Driver), «заведующий» всеми USB-устройствами системы, их нумерацией, конфигурированием, предоставлением служб, распределением пропускной способности шины, мощности питания и т. п.;
  • драйвер хост-контроллера (HCD, Host Controller Driver), преобразующий запросы ввода/вывода в структуры данных, размещенные в коммуникационной области оперативной памяти, и обращающийся к регистрам хост-контроллера. Хост-контроллер выполняет физические транзакции, руководствуясь этими структурами данных.

Драйверы USBD и HCD составляют хост-часть ПО USB; спецификация USB очерчивает круг их задач, но не описывает интерфейс между ними. Физическое устройство USB должно иметь интерфейс USB, обеспечивающий полную поддержку протокола USB, выполнение стандартных операций (конфигурирование и сброс) и предоставление информации, описывающей устройство. Физические устройства USB могут быть комбинированными (compound devices): включать в себя несколько устройств-функций, подключенных к внутреннему хабу, а также предоставлять своим внутренним хабом дополнительные внешние точки подключения.

Работой всех устройств шины USB управляет хост-контроллер (host controller), являющийся программно-аппаратной подсистемой хост-компьютера. Хост-контроллер является интеллектуальным устройством шины PCI или составной частью «южного» хаба (моста) системной платы, интенсивно взаимодействующим с оперативной памятью.

Физическая топология шины USB — многоярусная звезда (см. рисунок, а). Ее вершиной является хост-контроллер, объединенный с корневым хабом (root hub). Хаб является устройством-разветвителем, он может служить и источником питания для подключенных к нему устройств. К каждому порту хаба может непосредственно подключаться периферийное устройство или промежуточный хаб; шина допускает до пяти уровней (ярусов) каскадирования хабов (не считая корневого). Поскольку комбинированные устройства содержат внутри себя хаб, их подключение к хабу пятого яруса уже недопустимо. Каждый промежуточный хаб имеет несколько нисходящих (downstream) портов для подключения периферийных устройств (или нижележащих хабов) и один восходящий (upstream) порт для подключения к корневому хабу или нисходящему порту вышестоящего хаба.

Логическая топология USB — звезда. Хабы (включая корневой) создают иллюзию непосредственного подключения каждого логического устройства к хост-контроллеру (см. рисунок ниже, б). В этой звезде устанавливаются сугубо подчиненные отношения по системе опроса-ответа: хост-контроллер по своей инициативе передает данные к выбранному устройству или принимает их. Устройство по своей инициативе передавать данные не может; непосредственные передачи данных между устройствами невозможны. Устройство по своей инициативе может лишь сигнализировать о «пробуждении» (wakeup), для чего используется специальная сигнализация, но не передача данных.

Физический интерфейс USB прост и изящен. Конструкция кабелей и коннекторов USB не дает возможности ошибиться при подключении устройств (см. рисунок ниже, а и б). Для распознавания разъема USB на корпусе устройства ставится стандартное символическое обозначение (см. рисунок ниже, в). Гнезда типа «A» устанавливаются только на нисходящих портах хабов, вилки типа «A» — на шнурах периферийных устройств или восходящих портов хабов. Гнезда и вилки типа «B» используются только для шнуров, отсоединяемых от периферийных устройств и восходящих портов хабов (от «мелких» устройств — мышей, клавиатур и т. п. кабели, как правило, не отсоединяются). Для малогабаритных устройств имеются разъемы mini-B, а для поддержки OTG (On-the-Go) имеются и вилки mini-A, и розетки miniAB. Хабы и устройства обеспечивают возможность «горячего» подключения и отключения с сигнализацией об этих событиях хосту.

При планировании соединений следует учитывать способ питания устройств: устройства, питающиеся от шины, как правило, подключают к хабам, питающимся от сети. К хабам, питающимся от шины, подключают лишь маломощные устройства — так, к клавиатуре USB, содержащей внутри себя хаб, подключают мышь USB и другие устройства-указатели (трекбол, планшет).

Логическое устройство USB представляет собой набор независимых конечных точек (Endpoint, EP), с которыми хост-контроллер (и клиентское ПО) обменивается информацией. Каждому логическому устройству USB (как функции, так и хабу) конфигурационная часть ПО хоста назначает свой адрес (1-127), уникальный на данной шине USB. Каждая конечная точка логического устройства идентифицируется своим номером (0-15) и направлением передачи (IN — передача к хосту, OUT — от хоста). Точки IN4 и OUT4, к примеру, представляют собой разные конечные точки, с которыми могут общаться даже модули клиентского ПО. Набор конечных точек зависит от устройства, но всякое устройство USB обязательно имеет двунаправленную конечную точку 0 (EP0), через которую осуществляется его общее управление. Для прикладных целей используются конечные точки с номерами 1-15 (1-2 для низкоскоростных устройств). Адрес устройства, номер и направление конечной точки однозначно идентифицируют приемник или источник информации при обмене хост-контроллера с устройствами USB. Каждая конечная точка имеет набор характеристик, описывающих поддерживаемый тип передачи данных (изохронные данные, массивы, прерывания, управляющие передачи), размер пакета, требования к частоте обслуживания.

Устройство может выполнять несколько различных функциональных задач: например, привод CD-ROM может обеспечивать проигрывание аудиодисков и работать как устройство хранения данных. Для решения каждой задачи в устройстве определяется интерфейс — набор конечных точек, предназначенных для выполнения данной задачи, и правила их использования. Таким образом, каждое устройство должно обеспечивать один или несколько интерфейсов. Наличие нескольких интерфейсов позволяет нескольким драйверам, каждый из которых обращается только к своему интерфейсу (представляющему часть устройства USB), работать с одним и тем же устройством USB. Каждый интерфейс может иметь один или несколько альтернативных вариантов (альтернативных установок — alternate settings), из которых в данный момент активным может быть только один. Варианты различаются наборами (возможно, и характеристиками) используемых конечных точек.

Набор одновременно поддерживаемых интерфейсов составляет конфигурацию устройства. Устройство может иметь одну или несколько возможных конфигураций, из которых на этапе конфигурирования хост выбирает одну, делая ее активной. От выбранной конфигурации зависит доступная функциональность, и зачастую — потребляемая мощность. Пока устройству не назначен номер выбранной конфигурации, оно не может функционировать в прикладном смысле и ток потребления от шины не должен превышать 100 мА. Хост выбирает конфигурацию исходя из доступности всех ресурсов, затребованных данной конфигурацией, включая и ток потребления от шины.

Каждая единица клиентского ПО (обычно представляемая драйвером) связывается с одним интерфейсом своего устройства (функции) монопольно и независимо (см. рисунок ниже). Связи на этом рисунке обозначают коммуникационные каналы (communication pipes), которые устанавливаются между драйверами устройств и их конечными точками. Каналы устанавливаются только с конечными точками устройств, относящимися к выбранным (из альтернативных) вариантам интерфейсов активной конфигурации. Другие конечные точки недоступны.

Запросы, пакеты и транзакции

Для передачи или приема данных клиентское ПО посылает к каналу пакет запроса ввода/вывода — IRP (Input/Output Request Packet) и ждет уведомления о завершении его отработки. Формат IRP определяется реализацией драйвера USBD в конкретной ОС. В IRP имеются только сведения о запросе (местоположение буфера передаваемых данных в оперативной памяти и длина передачи); от свойств конкретного текущего подключения (скорость, допустимый размер пакета) драйвер устройства абстрагируется. Отработкой запроса в виде транзакций на шине USB занимается драйвер USBD; при необходимости он разбивает на части длинные запросы (пакеты), пригодные для передачи за одну транзакцию. Транзакция на шине USB — это последовательность обмена пакетами между хостом и ПУ, в ходе которой может быть передан или принят один пакет данных (возможны транзакции, в которых данные не передаются). Отработка запроса считается завершенной, когда успешно выполняются все связанные с ним транзакции. «Временные трудности», встречающиеся при их выполнении (неготовность к обмену данными), до сведения клиентского драйвера не доводятся — ему остается только ждать завершения обменов (или выхода по тайм-ауту). Однако устройство может сигнализировать о серьезных ошибках (ответом STALL), что приводит к аварийному завершению запроса, о чем уведомляется клиентский драйвер. В этом случае отбрасываются и все последующие запросы к данному каналу. Возобновление работы с данным каналом возможно лишь после явного уведомления об обработке ошибочной ситуации, которое драйвер устройства делает с помощью специального запроса (тоже вызова USBD).

Длинные запросы разбиваются на транзакции так, чтобы использовать максимальный размер пакета. Последний пакет с остатком может оказаться короче максимального размера. Хост-контроллер имеет средства обнаружения приема от устройства «неполновесного» пакета, размер которого меньше ожидаемого. В запросе IRP указывается, следует ли особым образом реагировать на это событие. Особая реакция может быть двоякой:

  • считать короткий пакет разделителем, указывающим на конец блока данных. При этом данный IRP завершается нормально и исполняются следующие запросы к данному каналу;
  • считать короткий пакет признаком ошибки, по которому канал останавливается (все его последующие ожидающие запросы сбрасываются).

При передаче массивов использование укороченных пакетов в качестве разделителей наиболее естественно. Таким образом, например, в одном из вариантов протоколов для устройств хранения данных укороченные пакеты известной длины используются в качестве управляющих.

Коммуникационные каналы USB разделяются на два типа:

  • потоковый канал (streaming pipe) доставляет данные от одного конца канала к другому, он всегда однонаправленный. Один и тот же номер конечной точки может использоваться для двух разных потоковых каналов — ввода и вывода. Передачи данных в разных потоковых каналах друг с другом не синхронизированы. Это означает, что запросы клиентских драйверов для разных каналов, поставленные в определенном порядке друг относительно друга, могут выполняться другом порядке. Запросы для одного канала будут исполняться строго в порядке их поступления; если во время исполнения какого-либо запроса происходит серьезная ошибка (об этом устройство сообщает ответом STALL), поток останавливается. Поток может реализовывать передачи массивов, изохронные и прерывания. Потоки несут данные произвольного формата, определенного разработчиком устройства (но не спецификацией USB). В потоках типично использование транзакций, в которых длина поля данных соответствует максимальному размеру, допустимому для его конечной точки. Если требуется разделение потока на логические блоки данных, то это можно сделать, применяя в качестве признака конца блока укороченные пакеты. Если оказывается, что блок укладывается в целое число пакетов максимального размера, в качестве разделителя можно использовать пакеты с нулевой длиной поля данных;
  • канал сообщений (message pipe ) является двунаправленным. Передачи сообщений во встречных направлениях синхронизированы друг с другом и строго упорядочены. На каждое сообщение противоположная сторона обязана ответить подтверждением его приема и отработки. Последующее сообщение не может быть послано до обработки предыдущего, но при отработке ошибок возможен сброс необслуженных сообщений. Форматы сообщений определяются спецификацией USB: имеется набор стандартных сообщений (запросов и ответов) и зарезервированных идентификаторов сообщений, формат которых определяется разработчиком устройства или интерфейса.

С каналами связаны характеристики, соответствующие конечной точке (полоса пропускания, тип сервиса, размер буфера и т. п.). Каналы организуются при конфигурировании устройств USB. Полоса пропускания шины делится между всеми установленными каналами. Выделенная полоса закрепляется за каналом, и если установление нового канала требует такой полосы, которая не вписывается в уже существующее распределение, запрос на выделение канала отвергается.

Каналы различаются и по назначению:

  • основной канал сообщений (Default pipe, он же Control pipe 0) , владельцем которого является USBD, используется для доступа к конфигурационной информации всех устройств. Этот канал устанавливается с нулевой конечной точкой, EP0 (endpoint zero), которая у всех устройств всегда поддерживает только управляющие передачи;
  • клиентские каналы (Client pipes) , владельцами которых являются драйверы устройств. По этим каналам могут передаваться как потоки, так и сообщения; они поддерживают любые типы передач USB (изохронные, прерывания, массивы и управление).

Интерфейс устройства, с которым работает клиентский драйвер, представляет собой связку клиентских каналов (pipe’s bundle). Для этих каналов драйверы устройств являются единственными источниками и потребителями передаваемых данных.

Владельцем основных каналов сообщений всех устройств является драйвер USB (USBD); по этим каналам передается информация конфигурирования, управления и состояния. Основным каналом сообщений может пользоваться и клиентский драйвер для текущего управления и чтения состояния устройства, но опосредованно через USBD. Например, сообщения, передаваемые по основному каналу, используются драйвером принтера USB для опроса текущего состояния (передаются три признака в формате регистра состояния LPT-порта: ошибка ввода/вывода, принтер выбран, отсутствие бумаги).

Хост организует обмены с устройствами согласно своему плану распределения ресурсов. Для этого хост-контроллер циклически с периодом 1 мс формирует кадры (frames), в которые укладываются все запланированные транзакции (cм. рисунок ниже). Каждый кадр начинается с посылки пакета-маркера SOF (Start Of Frame), который является синхронизирующим сигналом для изохронных устройств, а также для хабов. Кадры нумеруются последовательно, в маркере SOF передаются 11 младших бит номера кадра. В режиме HS каждый кадр делится на 8 микрокадров, и пакеты SOF передаются в начале каждого микрокадра (с периодом 125 мкс). При этом во всех восьми микрокадрах SOF несет один и тот же номер кадра; новое значение номера кадра передается в нулевом микрокадре. В каждом микрокадре может быть выполнено несколько транзакций, их допустимое число зависит от скорости, длины поля данных каждой из них, а также от задержек, вносимых кабелями, хабами и устройствами. Все транзакции кадров должны быть завершены до начала интервала времени EOF (End of Frame). Период (частота) генерации микрокадров может немного варьироваться с помощью специального регистра хост-контроллера, что позволяет подстраивать частоту для изохронных передач.

Кадрирование используется и для обеспечения живучести шины. В конце каждого микрокадра выделяется интервал времени EOF (End Of Frame), на время которого хабы запрещают передачу по направлению к контроллеру. Если хаб обнаружит, что с какого-то порта в это время ведется передача данных (к хосту), этот порт отключается, изолируя «болтливое» устройство, о чем информируется USBD.

Счетчик микрокадров в хост-контроллере используется как источник индекса при обращении к таблице дескрипторов кадров. Обычно драйвер USB составляет таблицу дескрипторов для 1024 последовательных кадров1, к которой он обращается циклически. С помощью этих дескрипторов хост планирует загрузку кадров так, чтобы кроме запланированных изохронных транзакций и прерываний в них всегда находилось место для транзакций управления. Свободное время кадров может заполняться передачами массивов. Спецификация USB позволяет занимать под периодические транзакции (изохронные и прерывания) до 90% пропускной способности шины, то есть времени в каждом микрокадре.

Шина USB (Universal Serial Bus – универсальная последовательная шина) появилась по компьютерным меркам довольно давно – версия первого утвержденного варианта стандарта появилась 15 января 1996 года. Разработка стандарта была инициировна весьма авторитетными фирмами – Intel, DEC, IBM, NEC, Northen Telecom и Compaq.

Основная цель стандарта, поставленная перед его разработчиками – создать реальную возможность пользователям работать в режиме Plug&Play с периферийными устройствами. Это означает, что должно быть предусмотрено подключение устройства к работающему компьютеру, автоматическое распознавание его немедленно после подключения и последующей установки соответствующих драйверов.

Возможности USB следуют из ее технических характеристик: высокая скорость обмена (full-speed signaling bit rate) – 12 Mбит/с; максимальная длина кабеля для высокой скорости обмена – 5 м; низкая скорость обмена (low-speed signaling bit rate) – 1,5 Mбит/с; максимальная длина кабеля для низкой скорости обмена – 3 м; максимальное количество подключенных устройств (включая размножители) – 127; возможно подключение устройств с различными скоростями обмена; напряжение питания для периферийных устройств – 5 В; максимальный ток потребления на одно устройство – 500 мA (это не означает, что через USB можно запитать устройства с общим током потребления 127 ´ 500 мA = 63,5 A)

Топология USB практически не отличается от топологии обычной локальной сети на витой паре, обычно называемой «звездой». Даже терминология похожа – размножители шины также называются HUB.

Условно дерево подключения USB устройств к компьютеру можно изобразить так (см. рис. 5.22) (цифрами обозначены периферийные устройства с USB интерфейсом):

Вместо любого из устройств может также стоять HUB. Основное отличие от топологии обычной локальной сети – компьютер (или host устройство) может быть только один. HUB может быть как отдельным устройством с собственным блоком питания, так и встроенным в периферийное устройство. Наиболее часто HUB"ы встраиваются в мониторы и клавиатуры.

Сигналы USB передаются по 4-х проводному кабелю, схематично показанному на рис. 5.22:

Рис. 5.22. Передача сигнала по USB-кабелю

Здесь GND – цепь «корпуса» для питания периферийных устройств, VBus – +5 V также для цепей питания. Шина D+ предназначена для передачи данных по шине, а шина D – для приема данных. Кабель для поддержки полной скорости шины (full-speed) выполняется как витая пара, защищается экраном и может также использоваться для работы в режиме минимальной скорости (low-speed). Кабель для работы только на минимальной скорости (например, для подключения мыши) может быть любым и неэкранированным.

В 1999 году тот же консорциум компьютерных компаний, который инициировал разработку первой версии стандарта на шину USB, начал активно разрабатывать версию 2.0 USB, которая отличается тем, что полоса пропускания шины увеличена в 20 раз, до 250 Mбит/с, что делает возможным передачу видеоданных по USB и делает ее прямым конкурентом IEEE-1394 (FireWire). Совместимость всей ранее выпущенной периферии и высокоскоростных кабелей полностью сохраняется и сохраняется одно из самых главных достоинств USB – низкая стоимость контроллера.

История появления и развития стандартов Universal Serial Bus (USB)

    До появления первой реализации шины USB стандартная комплектация персонального компьютера включала один параллельный порт, обычно для подключения принтера (порт LPT), два последовательных коммуникационных порта (порты COM), обычно для подключения мыши и модема, и один порт для джойстика (порт GAME). Такая конфигурация была вполне приемлемой на заре появления персональных компьютеров, и долгие годы являлась практическим стандартом для производителей оборудования. Однако прогресс не стоял на месте, номенклатура и функциональность внешних устройств постоянно совершенствовались, что в конце концов привело к необходимости пересмотра стандартной конфигурации, ограничивающей возможность подключения дополнительных периферийных устройств, которых, с каждым днем становилось все больше и больше.

    Попытки увеличения количества стандартных портов ввода-вывода не могли привести к кардинальному решению проблемы, и возникла необходимость разработки нового стандарта, который бы обеспечивал простое, быстрое и удобное подключение большого количества разнообразных по назначению периферийных устройств к любому компьютеру стандартной конфигурации, что, в конце концов, привело к появлению универсальной последовательной шины Universal Serial Bus (USB)

    Первая спецификация последовательного интерфейса USB (Universal Serial Bus) , получившая название USB 1.0 , появилась в 1996 г. , усовершенствованная версия на ее основе, USB 1.1 - в 1998 г. Пропускная способность шин USB 1.0 и USB 1.1 - до 12 Мбит/с (реально до 1 мегабайта в секунду) была вполне достаточной для низкоскоростных периферийных устройств, вроде аналогового модема или компьютерной мышки, однако недостаточной для устройств с высокой скоростью передачи данных, что являлось главным недостатком данной спецификации. Однако, практика показала, что универсальная последовательная шина - это очень удачное решение, принятое практически всеми производителями компьютерного оборудования в качестве магистрального направления развития компьютерной периферии.

В 2000 г. появилась новая спецификация - USB 2.0 , обеспечивающая уже скорость передачи данных до 480 Мбит/с (реально до 32 мегабайт в секунду). Спецификация предполагала полную совместимость с предыдущим стандартом USB 1.X и вполне приемлемое быстродействие для большинства периферийных устройств. Начинается бум производства устройств, оснащенных интерфейсом USB. "Классические" интерфейсы ввода - вывода были полностью вытеснены и стали экзотикой. Однако, для части высокоскоростного периферийного оборудования даже удачная спецификация USB 2.0 оставалась узким местом, что требовало дальнейшего развития стандарта.

В 2005 г. была анонсирована спецификация для беспроводной реализации USB - Wireless USB - WUSB , позволяющей выполнять беспроводное подключение устройств на расстоянии до 3-х метров с максимальной скоростью передачи данных 480 Мбит/сек, и на расстоянии до 10 метров с максимальной скоростью 110 Мбит/сек. Спецификация не получила бурного развития и не решала задачу повышения реальной скорости передачи данных.

В 2006 г. была анонсирована спецификация USB-OTG (USB O n-T he-G o, благодаря которой стала возможной связь двух USB-устройств друг с другом без отдельного USB-хоста. Роль хоста в данном случае выполняет одно из периферийных устройств. Смартфонам, цифровым фотоаппаратам и прочим мобильным устройствам приходится быть как хостом, так и периферийным устройством. Например, при подключении по USB к компьютеру фотоаппарата, он является периферийным устройством, а при подключении принтеру он является хостом. Поддержка спецификации USB-OTG постепенно стала стандартом для мобильных устройств.

В 2008 г. появилась окончательная спецификация нового стандарта универсальной последовательной шины - USB 3.0 . Как и в предыдущих версиях реализации шины, предусмотрена электрическая и функциональная совместимость с предыдущими стандартами. Скорость передачи данных для USB 3.0 увеличилась в 10 раз - до 5 Гбит/сек. В интерфейсном кабеле добавились 4 дополнительные жилы, и их контакты были выведены отдельно от 4-х контактов предыдущих стандартов, в дополнительном контактном ряду. Кроме повышенной скорости передачи данных шина USB характеризуется еще и увеличившейся, по сравнению с предыдущими стандартами, силой тока в цепи питания. Максимальная скорость передачи данных по шине USB 3.0 стала приемлемой практически для любого, массово производимого периферийного компьютерного оборудования.

В 2013 году была принята спецификация следующего интерфейса - USB 3.1 , скорость передачи данных которого может достигать 10 Гбит/с. Кроме того, появился компактный 24-контактный разъём USB Type-C , который является симметричным, позволяя вставлять кабель любой стороной.

После выхода стандарта USB 3.1 организация USB Implementers Forum (USB-IF) объявила, что разъёмы USB 3.0 со скоростью до 5 Гбит/с (SuperSpeed) теперь будут классифицироваться как USB 3.1 Gen 1, а новые разъёмы USB 3.1 со скоростью до 10 Гбит/с (SuperSpeed USB 10Gbps) - как USB 3.1 Gen 2. Стандарт USB 3.1 обратно совместим с USB 3.0 и USB 2.0.

В 2017 году организация USB Implementers Forum (USB-IF) опубликовала спецификацию USB 3.2 . Максимальная скорость передачи составляет 10 Гбит/с. Однако в USB 3.2 предусмотрена возможность агрегации двух подключений (Dual-Lane Operation ), позволяющая увеличить теоретическую пропускную способность до 20 Гбит/с. Реализация этой возможности сделана опциональной, то есть ее поддержка на уровне оборудования будет зависеть от конкретного производителя и технической необходимости, которая отличается, например, для принтера и переносного жесткого диска. Возможность реализации данного режима предусмотрена только при использовании USB Type-C .

www.usb.org - Документация по спецификациям USB для разработчиков на английском языке.

Нельзя не отметить, что существовала, и пока еще существует, альтернатива шине USB. Еще до ее появления, компания Apple разработала спецификацию последовательной шины FireWire (другое название - iLink ), которая в 1995 г. была стандартизована Американским Институтом инженеров по электротехнике и электронике (IEEE) под номером 1394. Шина IEEE 1394 может работать в трех режимах: со скоростью передачи данных до 100, 200 и 400 Мбит/с. Однако, по причине высокой стоимости и более сложной реализации, чем USB, эта разновидность высокоскоростной последовательной шины, большого распространения не получила, и постепенно вытесняется USB 2.0 – USB 3.2.

Общие принципы работы периферийных устройств Universal Serial Bus (USB)

    Интерфейс USB оказался настолько удачным решением, что им оснастили практически все классы периферийных устройств, от мобильного телефона до веб-камеры или переносного жесткого диска. Наибольшее распространение получили (пока) устройства с поддержкой USB 2.0. Однако, USB 3.0 – 3.1 более востребован для высокоскоростных устройств, где он становится основным, постепенно вытесняя USB 2.0.

    Периферийные устройства, с поддержкой USB при подключении к компьютеру автоматически распознаются системой (в частности, программное обеспечение драйвера и пропускную способность шины), и готовы к работе без вмешательства пользователя. Устройства с небольшим энергопотреблением (до 500мА) могут не иметь своего блока питания и запитываться непосредственно от шины USB.

    Благодаря использованию USB отпадает необходимость снятия корпуса компьютера для установки дополнительных периферийных устройств, а также необходимость выполнения сложных настроек при их установке.

    USB устраняет проблему ограничения числа подключаемых устройств. При использовании USB с компьютером может одновременно работать до 127 устройств.

    USB позволяет выполнять "горячее" (оперативное) подключение. При этом не требуется предварительное выключение компьютера, затем подключение устройства, перезагрузка компьютера и настройка установленных периферийных устройств. Для отключения периферийного устройства не требуется выполнять процедуру, обратную описанной.

Проще говоря, USB позволяет фактически реализовать все преимущества современной технологии "plug and play" ("включай и работай"). Устройства, разработанные для USB 1.x могут работать с контроллерами USB 2.0. и USB 3.0

При подключении периферийного устройства вырабатывается аппаратное прерывание и управление получает драйвер HCD (Host Controller Driver ) контроллера USB (USB Host Controller - UHC ), который на сегодняшний день интегрирован во все выпускаемые чипсеты материнских плат. Он опрашивает устройство и получает от него идентификационную информацию, исходя из которой управление передается драйверу, обслуживающему данный тип устройств. UHC контроллер имеет корневой (root) концентратор (Hub), обеспечивающий подключение к шине устройств USB.

Концентратор (USB HUB).

Точки подключения называются портами . К порту, в качестве устройства, может быть подключен другой концентратор. Каждый концентратор имеет исходящий порт (upstream port ), соединяющие его с главным контроллером и нисходящие порты (downstream port ) для подключения периферийных устройств. Концентраторы могут обнаруживать, выполнять соединение и отсоединение в каждом порте нисходящей связи и обеспечивать распределение напряжения питания в устройства нисходящего соединения. Каждый из портов нисходящей связи может быть индивидуально активизирован и сконфигурирован на полной или низкой скорости. Концентратор состоит из двух блоков: контроллера концентратора и ретранслятора концентратора. Ретранслятор - работающий под управлением протокола коммутатор между портом восходящей связи и портами нисходящей связи. Концентратор содержит также аппаратные средства поддержки перевода в исходное состояние и приостановки/возобновления подключения. Контроллер обеспечивает интерфейсные регистры, обеспечивающие передачу данных в главный контроллер и обратно. Определенное состояние и управляющие команды концентратора позволяют главному процессору конфигурировать концентратор, а также контролировать и управлять его портами.


Внешние концентраторы могут иметь собственный блок питания или же запитываться от шины USB.

Кабели и разъемы USB

Разъемы типа А используются для подключения к компьютеру или концентратору. Разъемы типа B используются для подключения к периферийным устройствам.

Все разъёмы USB, имеющие возможность входить в соединение друг с другом, рассчитаны на совместную работу.

Имеется электрическая совместимости всех контактов разъёма USB 2.0 с соответствующими контактами разъёма USB 3.0. При этом разъём USB 3.0 имеет дополнительные контакты, не имеющие соответствия в разъёме USB 2.0, и, следовательно, при соединении разъёмов разных версий "лишние" контакты не будут задействованы, обеспечивая нормальную работу соединения версии 2.0. Все гнёзда и штекеры между USB 3.0 Тип A и USB 2.0 Тип A рассчитаны на совместную работу. Размер гнезда USB 3.0 Тип B несколько больше, чем это могло бы потребоваться для штекера USB 2.0 Тип B и более ранних. При этом предусмотрено подключение в эти гнёзда и такого типа штекеров. Соответственно, для подключения к компьютеру периферийного устройства с разъёмом USB 3.0 Тип B можно использовать кабели обоих типов, но для устройства с разъёмом USB 2.0 Тип B - только кабель USB 2.0. Гнёзда eSATAp, обозначенные как eSATA/USB Combo, то есть имеющие возможность подключения к ним штекера USB, имеют возможность подключения штекеров USB Тип A: USB 2.0 и USB 3.0, но в скоростном режиме USB 2.0.

Разъёмы USB Type-C служат для подключения как к периферийным устройствам, так и к компьютерам, заменяя различные разъёмы и кабели типов A и B предыдущих стандартов USB, и предоставляя возможности расширения в будущем. 24-контактный двухсторонний разъём является достаточно компактным, близким по размерам к разъёмам микро-B стандарта USB 2.0. Размеры разъёма - 8,4 мм на 2,6 мм. Коннектор предоставляет 4 пары контактов для питания и заземления, две дифференциальные пары D+/D- для передачи данных на скоростях менее SuperSpeed (в кабелях Type-C подключена только одна из пар), четыре дифференциальные пары для передачи высокоскоростных сигналов SuperSpeed, два вспомогательных контакта (sideband), два контакта конфигурации для определения ориентации кабеля, выделенный канал конфигурационных данных (кодирование BMC - biphase-mark code) и контакт питания +5 V для активных кабелей.

Контакты разъёма и разводка кабеля USB Type-C

Type-C - штекер и гнездо

Кон. Название Описание Кон. Название Описание
A1 GND Заземление B12 GND Заземление
A2 SSTXp1 Диф. пара № 1 SuperSpeed, передача, положительный B11 SSRXp1 Диф. пара № 2 SuperSpeed, приём, положительный
A3 SSTXn1 Диф. пара № 1 SuperSpeed, передача, отрицательный B10 SSRXn1 Диф. пара № 2 SuperSpeed, приём, отрицательный
A4 V BUS Питание B9 V BUS Питание
A5 CC1 Канал конфигурации B8 SBU2 Sideband № 2 (SBU)
A6 Dp1 Диф. пара не-SuperSpeed, положение 1, положительный B7 Dn2 Диф. пара не-SuperSpeed, положение 2, отрицательный
A7 Dn1 Диф. пара не-SuperSpeed, положение 1, отрицательный B6 Dp2 Диф. пара не-SuperSpeed, положение 2, положительный
A8 SBU1 Sideband № 1 (SBU) B5 CC2 Канал конфигурации
A9 V BUS Питание B4 V BUS Питание
A10 SSRXn2 Диф. пара № 4 SuperSpeed, передача, отрицательный B3 SSTXn2 Диф. пара № 3 SuperSpeed, приём, отрицательный
A11 SSRXp2 Диф. пара № 4 SuperSpeed, передача, положительный B2 SSTXp2 Диф. пара № 3 SuperSpeed, приём, положительный
A12 GND Заземление B1 GND Заземление
  1. Неэкранированная дифференциальная пара, может использоваться для реализации USB Low Speed (1.0), Full Speed (1.0), High Speed (2.0) - до 480 Мбит/с
  2. В кабеле реализована только одна из дифференциальных пар не-SuperSpeed. Данный контакт не используется в штекере.
Назначение проводников в кабеле USB 3.1 Type-C
Разъём №1 кабеля Type-C Кабель Type-C Разъём №2 кабеля Type-C
Контакт Название Цвет оболочки проводника Название Описание Контакт Название
Оплётка Экран Оплётка кабеля Экран Внешняя оплётка кабеля Оплётка Экран
A1, B1, A12, B12 GND Лужёный GND_PWRrt1
GND_PWRrt2
Общая земля> A1, B1, A12, B12 GND
A4, B4, A9, B9 V BUS Красный PWR_V BUS 1
PWR_V BUS 2
V BUS питание A4, B4, A9, B9 V BUS
B5 V CONN Жёлтый
PWR_V CONN V CONN питание B5 V CONN
A5 CC Синий CC Канал конфигурирования A5 CC
A6 Dp1 Белый UTP_Dp Неэкранированная дифференциальная пара, positive A6 Dp1
A7 Dn1 Зелёный UTP_Dn Неэкранированная дифференциальная пара, negative A7 Dn1
A8 SBU1 Красный SBU_A Полоса передачи данных A B8 SBU2
B8 SBU2 Чёрный SBU_B Полоса передачи данных B A8 SBU1
A2 SSTXp1 Жёлтый * SDPp1 Экранированная дифференциальная пара #1, positive B11 SSRXp1
A3 SSTXn1 Коричневый * SDPn1 Экранированная дифференциальная пара #1, negative B10 SSRXn1
B11 SSRXp1 Зелёный * SDPp2 Экранированная дифференциальная пара #2, positive A2 SSTXp1
B10 SSRXn1 Оранжевый * SDPn2 Экранированная дифференциальная пара #2, negative A3 SSTXn1
B2 SSTXp2 Белый * SDPp3 Экранированная дифференциальная пара #3, positive A11 SSRXp2
B3 SSTXn2 Чёрный * SDPn3 Экранированная дифференциальная пара #3, negative A10 SSRXn2
A11 SSRXp2 Красный * SDPp4 Экранированная дифференциальная пара #4, positive B2 SSTXp2
A10 SSRXn2 Синий * SDPn4 Экранированная дифференциальная пара #4, negative B3 SSTXn2
* Цвета для оболочки проводников не установлены стандартом

Подключение ранее выпущенных устройств к компьютерам, оснащённым разъёмом USB Type-C, потребует кабеля или адаптера, имеющих штекер или разъём типа A или типа B на одном конце и штекер USB Type-C на другом конце. Стандартом не допускаются адаптеры с разъёмом USB Type-C, поскольку их использование могло бы создать «множество неправильных и потенциально опасных» комбинаций кабелей.

Кабели USB 3.1 с двумя штекерами Type-C на концах должны полностью соответствовать спецификации - содержать все необходимые проводники, должны быть активными, включающими в себя чип электронной идентификации, перечисляющий идентификаторы функций в зависимости от конфигурации канала и сообщения, определяемые вендором (VDM) из спецификации USB Power Delivery 2.0. Устройства с разъёмом USB Type-C могут опционально поддерживать шины питания с током в 1,5 или 3 ампера при напряжении 5 вольт в дополнение к основному питанию. Источники питания должны уведомлять о возможности предоставления увеличенных токов через конфигурационный канал либо полностью поддерживать спецификацию USB Power Delivery через конфигурационный контакт (кодирование BMC) или более старые сигналы, кодируемые как BFSK через контакт VBUS. Кабели USB 2.0, не поддерживающие шину SuperSpeed, могут не содержать чип электронной идентификации, если только они не могут передавать ток 5 ампер.

Спецификация коннекторов USB Type-C версии 1.0 была опубликована форумом разработчиков USB в августе 2014 года. Она была разработана примерно в то же время, что и спецификация USB 3.1.

Использование коннектора USB Type-C не обязательно означает, что устройство реализует высокоскоростной стандарт USB 3.1 Gen1/Gen2 или протокол USB Power Delivery.

    Универсальная последовательная шина является самым распространенным, и наверно, самым удачным компьютерным интерфейсом периферийных устройств за всю историю развития компьютерного оборудования, что подтверждается огромным количеством USB - устройств, некоторые из которых могут показаться несколько

Последовательная шина USB (Universal Serial Bus – универсальная последовательная шина) компьютерным меркам довольно давно – версия первого утвержденного варианта стандарта появилась 15 января 1996 года. Разработка стандарта была инициирована весьма авторитетными фирмами – Intel, DEC, IBM, NEC, Northen Telecom и Compaq.

Основная цель стандарта, поставленная перед его разработчиками – создать реальную возможность пользователям работать в режиме Plug&Play с периферийными устройствами. Это означает, что должно быть предусмотрено подключение устройства к работающему компьютеру, автоматическое распознавание его немедленно после подключения и последующей установки соответствующих драйверов. Кроме этого, желательно питание маломощных устройств подавать с самой шины. Скорость шины должна быть достаточной для подавляющего большинства периферийных устройств. Попутно решается историческая проблема нехватки ресурсов на внутренних шинах IBM PC совместимого компьютера – контроллер USB занимает только одно прерывание независимо от количества подключенных к шине устройств.

Возможности последовательной шины USB следуют из ее технических характеристик:

Высокая скорость обмена (full-speed signaling bit rate) – 12 Mb/s

Максимальная длина кабеля для высокой скорости обмена – 5 m

Низкая скорость обмена (low-speed signaling bit rate) – 1.5 Mb/s

Максимальная длина кабеля для низкой скорости обмена – 3 m

Максимальное количество подключенных устройств (включая размножители) – 127.

Возможно подключение устройств с различными скоростями обмена

Отсутствие необходимости в установке пользователем дополнительных элементов, таких как терминаторы для SCSI

Напряжение питания для периферийных устройств – 5 V

Максимальный ток потребления на одно устройство – 500 mA.

Поэтому целесообразно подключать к USB практически любые периферийные устройства, кроме цифровых видеокамер и высокоскоростных жестких дисков. Конструкция разъемов для USB рассчитана на многократное сочленение/расчленение.

Возможность использования только двух скоростей обмена данными ограничивает применяемость шины, но существенно уменьшает количество линий интерфейса и упрощает аппаратную реализацию.

Питание непосредственно от USB возможно только для устройств с малым потреблением, таких как клавиатуры, мыши, джойстики и т.п.

Сигналы USB передаются по 4–х проводному кабелю.

Кабель для поддержки полной скорости шины (full-speed) выполняется как витая пара, защищается экраном и может также использоваться для работы в режиме минимальной скорости (low-speed). Кабель для работы только на минимальной скорости (например, для подключения мыши) может быть любым и неэкранированным.

Система USB разделяется на три уровня с определенными правилами взаимодействия. Устройство USB содержит интерфейсную часть, часть устройства и функциональную часть. Хост тоже делится на три части – интерфейсную, системную и ПО устройства. Каждая часть отвечает только за определенный круг задач, логическое и реальное взаимодействие между ними иллюстрирует рис. 69.

В рассматриваемую структуру входят следующие элементы:

Физическое устройство USB – устройство на шине, выполняющее функции, интересующие конечного пользователя.

Client SW – ПО, соответствующее конкретному устройству, исполняемое на хост–компьютере. Может являться составной частью ОС или специальным продуктом.

USB System SW – системная поддержка USB, независимая от конкретных устройств и клиентского ПО.

USB Host Controller – аппаратные и программные средства для подключения устройств USB к хост–компьютеру.

Рис. 69 Взаимодействие компонентов USB

Физический интерфейс

Информационные сигналы и питающее напряжение 5В передаются по четырехпроводному кабелю. Используется дифференциальный способ передачи сигналов D+ и D– по двум проводам. Уровни сигналов передатчиков в статическом режиме должны быть ниже 0,3 В (низкий уровень) или выше 2,8 В (высокий уровень). Приемники выдерживают входное напряжение в пределах – 0,5...+3,8 В. Передатчики должны уметь переходить в высокоимпедансное состояние для двунаправленной полудуплексной передачи по одной паре проводов.

Передача по двум проводам в USB не ограничивается дифференциальными сигналами. Кроме дифференциального приемника каждое устройство имеет линейные приемники сигналов D+ и D–, а передатчики этих линий управляются индивидуально. Это позволяет различать более двух состояний линии, используемых для организации аппаратного интерфейса. Состояния DiffO и Diff1 определяются по разности потенциалов на линиях D+ и D – более 200 мВ при условии, что на одной из них потенциал выше порога срабатывания VSE. Состояние, при котором на обоих входах D+ и D– присутствует низкий уровень, называется линейным ну– лем (SEO – Single–Ended Zero). интерфейс определяет следующие состояния:

DataJ State и Data К State – состояния передаваемого бита (или просто J и К), определяются через состояния DiffO и Diff1.

Idle State – пауза на шине.

Resume State – сигнал "пробуждения" для вывода устрой– ства из "спящего" режима.

Start of Packet (SOP) – начало пакета (переход из Idle State в К).

End of Packet (EOP) – конец пакета.

Disconnect – устройство отключено от порта.

Connect – устройство подключено к порту.

Reset – сброс устройства.

Состояния определяются сочетаниями дифференциальных и линейных сигналов; для полной и низкой скоростей состояния DiffO и Diff1 имеют противоположное назначение. В декодировании состояний Disconnect, Connect и Reset учитывается время нахождения линий (более 2,5 мс) в определенных состояниях.

Шина имеет два режима передачи. Полная скорость передачи сигналов USB составляет 12 Мбит/с, низкая – 1,5 Мбит/с. Для полной скорости используется экранированная витая пара с импедансом 90 Ом и длиной сегмента до 5 м, для низкой –невитой неэкранированньгй кабель до 3 м.

Сигналы синхронизации кодируются вместе с данными по методу NRZI (Non Return to Zero Invert), его работу иллюстрирует рис. 72. Каждому пакету предшествует поле синхронизации SYNC, позволяющее приемнику настроиться на частоту передатчика.

Кабель также имеет линии VBus и GND для передачи питающего напряжения 5 В к устройствам. Сечение проводников выбирается в соответствии с длиной сегмента для обеспечения гарантированного уровня сигнала и питающего напряжения.

Рис. 70 Подключение полноскоростного устройства

Рис. 71 Подключение низкоскоростного устройства

Рис. 72. Кодирование данных по методу NRZI

Стандарт определяет два типа разъемов (табл. 7 и рис.73).

Таблица 7

Разъемы типа "А" применяются для подключения к хабам (Upstream Connector). Вилки устанавливаются на кабелях, не отсоединяемых от устройств (например, клавиатура, мышь и т. п.). Гнезда устанавливаются на нисходящих портах (Downstream Port) хабов.

Разъемы типа "В" (Downstream Connector) устанавливаются на устройствах, от которых соединительный кабель может отсоединяться (принтеры и сканеры). Ответная часть (вилка) устанавливается на соединительном кабеле, противоположный конец которого имеет вилку типа "А".

Разъемы типов "А" и "В" различаются механически (рис. 73), что исключает недопустимые петлевые соединения портов хабов. Четырехконтактные разъемы имеют ключи, исключающие неправильное присоединение. Конструкция разъемов обеспечивает позднее соединение и раннее отсоединение сигнальных цепей по сравнению с питающими. Для распознавания разъема USB на корпусе устройства ставится стандартное символическое обозначение.

Рис. 73. Гнезда USB: а – типа "А", б – типа "В", в – символическое обозначение

Модель передачи данных

Каждое устройство USB представляет собой набор независимых конечных точек (Endpoint), с которыми хост–контроллер обменивается информацией. Конечные точки описываются следующими параметрами:

требуемой частотой доступа к шине и допустимыми задержками обслуживания;

требуемой полосой пропускания канала;

номером точки;

требованиями к обработке ошибок;

максимальными размерами передаваемых и принимаемых пакетов;

типом обмена;

направлением обмена (для сплошного и изохронного обменов).

Каждое устройство обязательно имеет конечную точку с номером 0, используемую для инициализации, общего управления и опроса его состояния. Эта точка всегда сконфигурирована при включении питания и подключении устройства к шине. Оно поддерживает передачи типа "управление".

Кроме нулевой точки, устройства–функции могут иметь дополнительные точки, реализующие полезный обмен данными. Низкоскоростные устройства могут иметь до двух дополнительных точек, полноскоростные – до 16 точек ввода и 16 точек вывода (протокольное ограничение). Точки не могут быть использованы до их конфигурирования (уста– новления согласованного с ними канала).

Каналом {Pipe) в USB называется модель передачи данных между хост–контроллером и конечной точкой (Endpoint) ус– тройства. Имеются два типа каналов: потоки (Stream) и со– общения (Message). Поток доставляет данные от одного конца канала к другому, он всегда однонаправленный. Один и тот же номер конечной точки может использоваться для двух поточных каналов – ввода и вывода. Поток может реализовывать следующие типы обмена: сплошной, изохронный и прерывания. Доставка всегда идет в порядке "первым вошел – первым вышел" (FIFO); с точки зрения USB, данные потока неструктурированы. Сообщения имеют формат, определенный спецификацией USB. Хост посылает запрос к конечной точке, после которого передается (принимается) пакет сообщения, за которым следует пакет с информацией состояния конечной точки. Последующее сообщение нормально не может быть послано до обработки предыдущего, но при отработке ошибок возможен сброс необслуженных сообщений. Двухсторонний обмен сообщениями адресуется к одной и той же конечной точке. Для доставки сообщений используется только обмен типа "управление".

С каналами связаны характеристики, соответствующие конечной точке (полоса пропускания, тип сервиса, размер буфера и т. п.). Каналы организуются при конфигурировании устройств USB. Для каждого включенного устройства существует канал сообщений (Control Pipe 0), по которому передается информация конфигурирования, управления и состояния.

Типы передачи данных

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.

Протокол

Все обмены (транзакции) по USB состоят из трех пакетов. Каждая транзакция планируется и начинается по инициативе контроллера, который посылает пакет–маркер {Token Packet). Он описывает тип и направление передачи, адрес устройства USB и номер конечной точки. В каждой транзакции возможен обмен только между адресуемым устройством (его конечной точкой) и хостом. Адресуемое маркером устройство распознает свой адрес и готовится к обмену. Источник данных (определенный маркером) передает пакет данных (или уведомление об отсутствии данных, предназначенных для передачи). После успешного приема пакета приемник данных посылает пакет подтверждения (Handshake Packet).

Планирование транзакций обеспечивает управление поточными каналами. На аппаратном уровне использование отказа от транзакции (NAck) при недопустимой интенсивности передачи предохраняет буферы от переполнения сверху и снизу. Маркеры отвергнутых транзакций повторно передаются в свободное для шины время. Управление потоками позволяет гибко планировать обслуживание одновременных разнородных потоков данных.

Устойчивость к ошибкам обеспечивают следующие свойства USB:

Высокое качество сигналов, достигаемое благодаря дифференциальным приемникам/передатчикам и экранированным кабелям.

Защита полей управления и данных CRC–кодами.

Обнаружение подключения и отключения устройств и конфигурирование ресурсов на системном уровне.

Самовосстановление протокола с тайм-аутом при потере пакетов.

Управление потоком для обеспечения изохронности и управления аппаратными буферами.

Независимость функций от неудачных обменов с другими функциями.

Для обнаружения ошибок передачи каждый пакет имеет контрольные поля CRC–кодов, позволяющие обнаруживать все одиночные и двойные битовые ошибки. Аппаратные средства обнаруживают ошибки передачи, а контроллер автоматически производит трехкратную попытку передачи. Если повторы безуспешны, сообщение об ошибке передается клиентскому ПО.

Форматы пакетов

Байты передаются по шине последовательно, начиная с младшего бита. Все посылки организованы в пакеты. Каждый пакет начинается с поля синхронизации Sync, которое представляется последовательностью состояний KJKJKJKK (кодированную по NRZI), следующую после состояния Idle. Последние два бита (КК) являются маркером начала пакета SOP, используемым для идентификации первого бита идентификатора пакета PID. Идентификатор пакета является 4–битным полем PID, идентифицирующим тип пакета (табл.8), за которым в качестве контрольных следуют те же 4 бита, но инвертированные.

В пакетах–маркерах IN, SETUP и OUT следующими являются адресные поля: 7–битный адрес функции и 4–битный адрес конечной точки. Они позволяют адресовать до 127 функций USB (нулевой адрес используется для конфигурирования) и по 16 конечных точек в каждой функции.

В пакете SOF имеется 11–битное поле номера кадра (Frame Number Field), последовательно (циклически) увеличиваемое для очередного кадра.

Поле данных может иметь размер от 0 до 1023 целых байт. Размер поля зависит от типа передачи и согласуется при установлении канала.

Поле СКС-кола присутствует во всех маркерах и пакетах данных, оно защищает все поля пакета, исключая PID. CRC для маркеров (5 бит) и данных (11 бит) подсчитываются по разным формулам.

Таблица 8

Содержимое и назначение

Адрес функции и номер конечной точки – маркер транзакции функции

Адрес функции и номер конечной точки – маркер транзакции хоста

Маркер начала кадра

Адрес функции и номер конечной точки – маркер транзакции с управляющей точкой

Пакеты данных с четным и нечетным PID чередуются для точной идентификации подтверждений

Подтверждение безошибочного приема пакета

Приемник не сумел принять или передатчик не сумел передать данные. Может использоваться для управления потоком данных (неготовность). В транзакциях прерываний является признаком отсутствия необслуженных прерываний

Конечная точка требует вмешательства хоста

Преамбула передачи на низкой скорости

Каждая транзакция инициируется хост–контроллером посылкой маркера и завершается пакетом квитирования. Последовательность пакетов в транзакциях иллюстрирует рис. 7.7.

Хост-контроллер организует обмены с устройствами согласно своему плану распределения ресурсов. Контроллер циклически (с периодом 1 мс) формирует кадры (Frames), в которые укладываются все запланированные транзакции. Каждый кадр начинается с посылки маркера SOF (Start Of Frame), который является синхронизирующим сигналом для всех устройств, включая хабы. В конце каждого кадра выделяется интервал времени EOF (End Of Frame), на время которого хабы запрещают передачу по направлению к контроллеру. Каждый кадр имеет свой номер. Хост–контроллер оперирует 32–битным счетчиком, но в маркере SOF передает только младшие 11 бит. Номер кадра увеличивается (циклически) во время EOF. Хост планирует загрузку кадров так, чтобы в них всегда находилось место для транзакций управления и прерывания. Свободное время кадров может заполняться сплошными передачами (Bulk Transfers).

Задание для выполнения работы

1. Описать функции управления шиной и портами

а) формирование адреса порта

б) организация сквозного канала в системном интерфейсе для передачи данных между портом устройства ввода-вывода и МП.

2. Структура микропроцессорной памяти.

3. Последовательная шина USB. Режимы передачи данных.

4. Чипсет. Его назначение. Диаграмма чипсета.

5. Микропроцессорная память. Регистры и их назначение.

6. Стандартные интерфейсы и форматы передачи данных.

7. Привести схемы подключение модемов, принтеров, плоттеров к COM-порту.

8. Нарисовать схему взаимодействия компонентов \USB.

16. Шина USB. Общие харак-тики

Универсальная последовательная шина имеет следующие характеристики:

 Главный компьютер выполняет функции хоста.

 К хосту можно подключить до 127 устройств, либо напрямую, либо с помощью USB-концентраторов.

 Отдельные USB-кабели могут иметь длину 5 метров, а при наличии концентраторов по протоколу USB можно подключить устройства, удаленные от хост-компьютера на расстояние до 30 метров (длина 6 кабелей).

 Стандарт USB 2. предусматривает максимальную скорость передачи данных 480 мегабит в секунду.

 Кабель USB снабжен двумя проводами для подачи электропитания (5 вольт и земля), а также витой парой для передачи данных.

 По проводам электропитания компьютер может обеспечить подачу питающего напряжения 5 В при токе до 500 мА.

 Устройства с небольшим энергопотреблением могут питаться непосредственно от шины. Устройства, отличающиеся большой потребляемой мощностью (например, принтеры), имеют собственные блоки питания и потребляют от шины минимальное количество энергии. Концентраторы для питания подключенных к ним устройств могут снабжаться собственными блоками питания.

 USB-устройства допускают "горячую" замену, то есть их можно подключать к шине и отключать от нее в любое время.

 Многие USB-устройства могут переводиться хост-компьютером в спящий режим, когда сам компьютер переводится в энергосберегающий режим. Подключенные к порту USB устройства получают питание и обмениваются данными по USB-кабелю.

17.Шина USB. Общая архитектура

USB (Universal Serial Bus - универсальная последовательная шина) является промышленным стандартом расширения архитектуры PC. Возможности USB определяется следующими тех. хар-ками: * Дешевое решение, поддерживающее скорость передачи до 12 Мбит/с. *мах длина кабеля для высокой скорости обмена – 5м * низкая скорость обмена – 1,5 Мбит/с. *мах длина кабеля для низкой скорости обмена – 3м *мах кол-во подключенных устройств – 127 *Возможно подключение устройств с различными скоростями обмена *напряжение питания для переферийных устройств – 5В

Особенно удобен этот интерфейс для подключения часто подключаемых\отключаемых приборов, таких как цифровые фотокамеры и др. Возможность использования только двух скоростей обмена данными ограничивает применяемость шины. USB поддерживает динамическое подключение и отключение устройств и конструкция разъемов рассчитана на многократное сочленение\расчленение. Питание непосредственно от USB возможно только для устройств с малым потреблением, таких как клавиатуры, мыши, джойстики и т.п. USB обеспечивает одновременный обмен данными между хост-компьютером и множеством периферийных устройств (ПУ).

18.Шина USB. Свойства устройств

Спецификация USB достаточно жестко определяет набор свойств, которые должно поддерживать любое USB-устройство:

o адресация – устройство должно отзываться на назначенный ему уникальный адрес и только на него;

o конфигурирование – после включения или сброса устройство должно предоставлять нулевой адрес для возможности конфигурирования его портов;

o передача данных – устройство имеет набор конечных точек для обмена данными с хостом. Для конечных точек, допускающих разные типы передач, после конфигурирования доступен только один из них;

o управление энергопотреблением – любое устройство при подключении не должно потреблять от шины ток, превышающий 100 мА. При конфигурировании устройство заявляет свои потребности тока, но не более 500 мА. Если хаб не может обеспечить устройству заявленный ток, устройство не будет использоваться;

o приостановка – USB-устройство должно поддерживать приостановку (suspended mode), при которой его потребляемый ток не превышает 500 мкА. USB-устройство должно автоматически приостанавливаться при прекращении активности шины;

o удаленное пробуждение – возможность удаленного пробуждения (remote wakeup) позволяет приостановленному USB-устройству подать сигнал хосту, который тоже может находиться в приостановленном состоянии. Возможность удаленного пробуждения описывается в конфигурации USB-устройства. При конфигурировании эта функция может быть запрещена.

19.Шина USB. Принципы передачи данных

Механизм передачи данных является асинхронным и блочным. Блок передаваемых данных называется USB-фреймом или USB-кадром и передается за фиксированный временной интервал. Оперирование командами и блоками данных реализуется при помощи логической абстракции, называемой каналом. Внешнее устройство также делится на логические абстракции, называемые конечными точками. Таким образом, канал является логической связкой между хостом и конечной точкой внешнего устройства. Канал можно сравнить с открытым файлом.

Для передачи команд (и данных, входящих в состав команд) используется канал по умолчанию, а для передачи данных открываются либо потоковые каналы, либо каналы сообщений.

Все операции по передачи данных по шине USB инициируются хостом. Периферийные USB-устройства сами начать обмен данными не могут. Они могут только реагировать на команды хоста.

20. Шина USB.Логические уровни обмена данными

Логические уровни обмена данными

логических уровня с определенными правилами взаимодействия. USB-устройство содержит интерфейсную, логическую и функциональную части. Хост тоже делится на три части – интерфейсную, системную и ПО. Каждая часть отвечает только за определенный круг задач. Таким образом, операция обмена данными между прикладной программой и шиной USB выполняется путем передачи буферов памяти через следующие уровни:уровень клиентского ПО в хосте:

· управляет нумерацией устройств на шине;

· управляет распределением пропускной способности шины и мощности питания;

· обрабатывает запросы пользовательских драйверов;

o уровень хост-контроллера интерфейса шины USB (HCD, Host Controller Driver):

· преобразует запросы ввода/вывода в структуры данных, по которым выполняются физические транзакции;

· работает с регистрами хоста.

21. Шина USB.Передача данных по уровням

Пропускная способность шины USB, соответствующей спецификации 1.1, составляет 12Мбит/с (т.е. 1,5 Мбит/с). Спецификация 2.0 определяет шину с пропускной способностью 400 Мбайт/с. Полоса пропускания делится между всеми устройствами, подключенными к шине.

Шина USB имеет три режима передачи данных:

o низкоскоростной (LS, Low-speed);

o полноскоростной (LF, Full-speed);

o высокоскоростной (HS, High-speed, только для USB 2.0).

Спецификация USB определяет три логических уровня с определенными правилами взаимодействия. USB-устройство содержит интерфейсную, логическую и функциональную части. Хост тоже делится на три части – интерфейсную, системную и ПО. Каждая часть отвечает только за определенный круг задач.

Таким образом, операция обмена данными между прикладной программой и шиной USB выполняется путем передачи буферов памяти через следующие уровни:

o уровень клиентского ПО в хосте:

· обычно представляется драйвером USB-устройства;

· обеспечивает взаимодействие пользователя с операционной системой с одной стороны и системным драйвером с другой;

o уровень системного драйвера USB в хосте(USB, Universal Serial Bus Driver):

21. Шина USB.Метод кодирования

Для передачи данных по шине используется дифференциальный способ передачи сигналов D+ и D- по двум проводам. Все данные кодируются с помощью метода, называемого NRZI with bit stuffing (NRZI - Non Return to Zero Invert, метод возврата к нулю с инвертированием единиц).

Вместо кодирования логических уровней как уровней напряжения USB определяет логический 0 как изменение напряжения, а логическую 1 как неизменение напряжения. Этот метод представляет собой модификацию обычного потенциального метода кодирования NRZ (Non Return to Zero, невозврат к нулю), когда для представления 1 и 0 используются потенциалы двух уровней, но в методе NRZI потенциал, используемый для кодирования текущего бита, зависит от потенциала, который использовался для кодирования предыдущего бита. Если текущий бит имеет значение 0, то текущий потенциал представляет собой инверсию потенциала предыдущего бита, независимо от его значения. Если же текущий бит имеет значение 1, то текущий потенциал повторяет предыдущий. Очевидно, что если данные содержат нули, то приемнику и передатчику достаточно легко поддерживать синхронизацию - уровень сигнала будет постоянно меняться. А вот если данные содержат длинную последовательность единиц, то уровень сигнала меняться те будет, и возможна рассинхронизация. Следовательно, для надежной передачи данных нужно исключить из кодов слишком длинные последовательности единиц. Это действие называется стаффинг (Bit stuffing): после каждых шести единиц автоматически добавляется 0.

Существует только три возможных байта с шестью последовательными единицами: 00111111, 01111110, 111111100.

Стаффинг может увеличить число передаваемых бит до 17%, но на практике эта величина значительно меньше. Для устройств, подключаемых к шине USB, кодирование происходит прозрачно: USB-контроллеры производят кодирование и декодирование автоматически.

Понравилась статья? Поделитесь ей