Главная>Все статьи

Все статьи о USB.

История USB.

Увеличение числа устройств, подключаемых к персональному компьютеру, и, соответственно, развитие внешних интерфейсов привело к довольно неприятной ситуации: с одной стороны, компьютер должен иметь множество различных разъемов, а с другой - большая часть из них не используется. Такая ситуация определяется историческим развитием интерфейсов ПК - каждый интерфейс имел свой специализированный разъем. Например, к последовательному порту можно подключить мышь или модем, к параллельному - принтер или сканер, для клавиатуры стало необходимо иметь два порта - старый клавиатурный и PS/2 и так далее. Более того, к одному порту можно подключить только одно устройство. Кроме этой проблемы, многочисленность разнообразных подключений добавляет и другие неудобства:

  • практически для каждого из устройств необходимо выделение аппаратного прерывания (IRQ);
  • большей части устройств необходим внешний блок питания;
  • каждое устройство имеет свой, придуманный разработчиком, протокол обмена, многократно увеличивая необходимое количество драйверов как в памяти, так и в инсталляции операционной системы;
  • конфигурирование большого числа устройств, многие из которых не поддерживают спецификацию Plug and Play (сокращенно PnP), - практически невыполнимая работа для обычного пользователя;
  • огромное число разнокалиберных шлейфов, тянущихся от компьютера, превращает его перестановку в большую проблему.

Структура системы USB.

USB обеспечивает одновременный обмен данными между хостом (компьютером) и множеством периферийных устройств (ПУ). Распределение пропускной способности шины между ПУ планируется хостом и реализуется им с помощью посылки маркеров. Шина позволяет подключать, конфигурировать, использовать и отключать устройства во время работы хоста и самих устройств. Устройства USB могут являться хабами, функциями или их комбинацией. Хаб (Hub) обеспечивает дополнительные точки подключения устройств к шине. Функции (Function) USB предоставляют системе дополнительные возможности, например подключение к ISDN, цифровому джойстику, акустическим колонкам с цифровым интерфейсом и т. п. Устройство USB должно иметь интерфейс USB, обеспечивающий полную поддержку протокола USB, выполнение стандартных операций (конфигурирование и сброс) и предоставление информации, описывающей устройство. Многие устройства, подключаемые к USB, имеют в своем составе как хаб, так и функции. Работой всей системы USB управляет хост-контроллер (Host Controller), являющийся программно-аппаратной подсистемой хост-компьютера.

Передача данных.

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

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

Каналы USB

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

Спецификация шины определяет четыре различных типа передачи (transfer type) данных для конечных точек.

Управляющие передачи (Control Transfers) - используются хостом для конфигурирования устройства во время подключения, для управления устройством и получения статусной информации в процессе работы. Протокол обеспечивает гарантированную доставку таких посылок. Длина поля данных управляющей посылки не может превышать 64 байт на полной скорости и 8 байт на низкой. Для таких посылок хост гарантированно выделяет 10% полосы пропускания.

Передачи массивов данных (Bulk Data Transfers) - применяются при необходимости обеспечения гарантированной доставки данных от хоста к функции или от функции к хосту, но время доставки не ограничено. Taкая передача занимает всю доступную полосу пропускания шины. Пакеты имеют поле данных размером 8, 16, 32 или 64 байт. Приоритет у таких передач самый низкий, они могут приостанавливаться при большой загрузке шины. Допускаются только на полной скорости передачи. Такие посылки используются, например, принтерами или сканерами.

Формирование кадров обмена.

Любой обмен по шине USB инициируется хост-контроллером. Он организует обмены с устройствами согласно своему плану распределения ресурсов. Контроллер циклически (с периодом 1,0 ± 0,0005 мс) формирует кадры (frames), в которые укладываются все запланированные передачи.

Поток кадров

Конечные точки.

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

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

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

Транзакции.

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

Обмен данными

Кодирование данных.

Для передачи данных по шине используется дифференциальный способ передачи сигналов 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, то текущий потенциал повторяет предыдущий.

Типы кабелей.

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

Спецификация USB 2.0 определяет три возможных типа используемых кабелей:

  • стандартный съемный кабель;
  • высокоскоростной (полноскоростной) несъемный кабель;
  • низкоскоростной несъемный кабель.

Разъёмы USB 1 и USB 2.

Для предотвращения ошибочных соединений USB использует USB-кабели с различными разъемами. Согласно спецификации, все устройства, работающие с шиной USB, могут использовать только три типа разъёмов: "А", "В" и "mini-B". В связи с дальнейшей миниатюризацией устройств пришлось ввести еще и "микро-В".
Разъёмы "А" обозначают принадлежность к "ведущему" устройству, они используются в хостах и хабах. Их всегда можно встретить, например, на современных материнских платах персональных компьютеров.