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

USB широко используется во встраиваемых системах всех типов, USB-устройства легко соединяются и взаимодействуют между собой. Но за этой простой скрываются сложности внутренних функций данного интерфейса. Для пользователей USB-устройств это не имеет никакого значения, но разработчикам встраиваемых систем приходится лезть во все нюансы внутреннего строения USB. Даже если производитель оборудования поставляет рабочий USB-стек, понимание «как оно работает» позволит оптимизировать функционирование устройства.
Перво-наперво
Любой, кому за последнее десятилетие удалось хоть немного поработать за компьютером, знаком со словом из трех букв — USB или Universal Serial Bus или универсальная последовательная шина. Более того, тот, кто был знаком с компьютером раньше этого срока, понимает все преимущества USB, основным из которых является соединение устройств по принципу plug-and-play, позволяющему практически незамедлительно работать с подключенным оборудованием. Подсистема USB может поддерживать до 127 устройств, это вполне адекватная цифра, и она устраивает практически всех пользователей.
USB 2.0 имеет три возможных скорости передачи данных:
Low Speed – 1.5 Мб/с
Full Speed – 12 Мб/с
High Speed- 480 Мб/с
Указанные скорости передачи данных являются теоретически максимальными скоростями. Даже если USB-протоколы используют полосу пропускания очень эффективно, все равно передать данные на указанных скоростях не получится. Кстати, USB 3.0 предлагает еще одну скорость, но об этом позже.
Различают два типа USB-устройств: хост (host) и функцию (function). Обычно в повседневной жизни USB-хостом служит компьютер, а функцией — периферийное устройство.
Топология USB
Подсистема USB имеет топологию в виде многоуровневой звезды, как показано на рисунке 1. Хост, который инициализирует и управляет всей деятельностью интерфейса, включает в себя корневой хаб (root hub), являющийся связующим звеном всех коммуникационных точек. Корневой хаб соединяется с функциями или другими хабами, которые дальше разветвляют шину.

Система связи по USB
В составе USB-функции, то есть в устройстве с интерфейсом USB, имеется периферийный контроллер USB. Как показано на рисунке 2, этот контроллер имеет две основные функции: он взаимодействует с USB-системой (соединяясь с хостом или хабом) и содержит в себе буферы в количестве от одного до шестнадцати, называемые конечными точками.]

Конечные точки (endpoints). Это базовый объект связи интерфейса USB. Устройство может иметь до 16 конечных точек, нумерация начинается с 0 и заканчивается 15. Каждая конечная точка может включать в себя два буфера (адреса): входной и выходной. То есть устройство может обладать 32 адресами конечных точек. Каждая USB-функция должна содержать как минимум одну (нулевую) конечную точку с входным и выходным буфером.
Каналы (pipes). USB это протокол, построенный по принципу master/slave. Все общение инициализируется хостом. Хост определяет каналы, которые связаны с конечными точками функции. В отличие от конечной точки, которая имеет физическую сущность в нашем мире, канал является всего лишь логической концепцией, правилом. После установки канала, становится определенным и тип передачи данных, который он поддерживает.
Передачи (transfers). Данные отправляются и принимаются посредством передач или сообщений, состоящих из ряда транзакций, каждая из которых в свою очередь состоит из пакетов. В любой момент времени система USB может поддерживать несколько передач и связанные с ними транзакции. Существует 4 типа передач:
Управляющие передачи (control) используются для идентификации и конфигурации, но могут иметь немного полезных данных. Они обеспечивают коррекцию ошибок, основаны на сообщениях и могут работать при любой скорости. Такой тип передачи поддерживается всеми устройствами.
Передачи массивов данных (bulk) используются в устройствах с большим объемом данных, где желательна высокая скорость, а вопросы синхронизации не являются столь критическими. Такой тип передачи обеспечивает коррекцию ошибок, является потоковым и может работать при любой скорости, за исключением Low Speed.
Передачи по прерываниям (interrupts) используются для устройств с малым объемом данных. Они обеспечивают коррекцию ошибок, являются потоковыми и могут работать на любой скорости.
Изохронные передачи (isochronous) используются для устройств с очень большим объемом данных, где синхронизация по времени является более критической, чем точность передаваемых данных. То есть здесь доставка информации не гарантирована. Соответственно, нет никакой коррекции ошибок, передачи являются потоковыми и могут работать при любых скоростях кроме Low Speed. Этот тип передачи обеспечивает гарантированное время доставки.
Использование USB 3.0 во встраиваемых системах
Хотя встраиваемая система может быть как USB-хостом, так и USB-функцией, в большинстве своем она играет роль периферийного устройства, для которого логично поведение USB-функции.
В любом случае очень важно выбрать подходящий USB-стек хоста или функции. Большинство поставщиков программного обеспечения (обычно это разработчики операционных систем) предлагают оба вида продукта.
А что, если устройству нужно некоторое время работать в качестве USB-функции, а потом как хост? В качестве примера может выступать цифровая камера. Когда нужно выгрузить фотографии на компьютер, она работает как функция, а когда прямо с нее нужно распечатать изображение на принтере, она — хост. При таких обстоятельствах было бы необходимо реализовать стеки хоста и функции, и аппаратуре нужно было бы поддерживать оба интерфейса. Но существует стандарт USB On-The-Go, который позволяет быстро переключаться между хостом и функцией, хотя он распространен не столь широко.
USB 3.0: больше чем USB 2.0
USB 3.0 намного превосходит по своим возможностям и скорости USB 2.0. Это двухшинный интерфейс с дополнительными физическими каналами. То есть, теперь мы имеем шесть проводов, а не два, как было в предыдущих версиях USB. Два провода обеспечивают функциональность интерфейса USB 2.0, остальные четыре предназначены для передачи данных в соответствии с новым стандартом на очень высокой скорости, называемой SuperSpeed. Теоретический максимум для SuperSpeed составляет 5 Гб/с — это десятикратное увеличение по сравнению с USB 2.0. Трафик также является двунаправленным, по этой причине и сделали четыре провода. В USB 2.0 данные передавались только в одном направлении в определенный момент времени.
Скорость и совместимость
Хост USB 3.0 поддерживает все четыре скоростных опции — Low, Full, High и SuperSpeed. Хаб USB 3.0 включает в себя два компонента: хаб SuperSpeed и хаб USB 2.0. Передача данных между хостом USB 3.0 и периферией может осуществляться на скорости SuperSpeed, если каждый компонент (кабели, хабы) полностью поддерживают эту возможность.
Обратная совместимость в большинстве случаев обеспечивается довольно хорошо, поскольку хосты и хабы поддерживают скорости USB 2.0. Разъемы для USB 2.0 и для USB 3.0 также могут быть взаимозаменяемы, но дополнительные линии для стандарта SuperSpeed есть только в новых компонентах USB 3.0.
Типичная схема сети USB 3.0 показана на рисунке 3. На рисунке 4 показан эффект замены хаба USB 3.0 устройством USB 2.0.


Питание
USB-устройства всегда имели возможность получать питание от шины. Зачастую устройства используют разъем USB в качестве источника питания. USB-устройства разделяются на многопотребляющие (high power) и малопотребляющие (low power) и идентифицируют себя при инициализации, что позволяет хабу оценить возможную нагрузку по питанию. В USB 2.0 максимальная токовая нагрузка для мощных и маломощных устройств соответственно равна 500 мА и 100 мА. В USB 3.0 эти лимиты увеличены — 900 мА и 150 мА, соответственно. При этом у разработчиков имеются предложения по повышению лимита отдаваемой мощности.
Другим аспектом в плане питания через USB 3.0 является улучшенная возможность управления питанием периферийных устройств. Существуют новые протоколы, позволяющие хосту требовать соблюдения периферийными устройствами своих текущих режимов энергосбережения.
Сложности реализации USB
Реализация USB является сложной задачей и USB 3.0 только усугубляет ее. Простота использования обеспечивается внутренней сложностью. Кроме того, если одно USB-устройство хочет взаимодействовать с другими устройствами, оно должно полностью соответствовать опубликованным стандартам, а зачастую еще требуется сертификация такого соответствия.
По обеим этим причинам реализация USB редко выполняется с нуля. Микросхемы с интерфейсом USB предлагают различные производители электронных компонентов, а программные стеки USB предоставляют разработчики операционных систем.
Заключение
Интерфейс USB всегда был объектом для улучшений и расширений, и USB 3.0 является последней основной спецификацией этого интерфейса. Есть основания полагать, что этот новый стандарт найдет широкое применение, а может и станет универсальным во многих областях. Он уже поддерживается новыми ПК, а значит и потребности в USB 3.0 будут расти и во встраиваемых системах.
USB 3.0 обеспечивает очень высокую скорость передачи данных, новые возможности управления питанием и выдает больше тока для питания периферии. Конечно, это приводит к некоторым трудностям в плане совместимости в виде необходимости использования усовершенствованных кабелей, разъемов и хабов.
Перевод © digitrode.ru