Какую топологию используют для подключения usb устройств

Обновлено: 01.07.2024

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

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

Тем не менее на сегодня у USB имеются недостатки, и самым главным из них является низкая пропускная способность. Все мы знаем, что интерфейс USB версии 2.0 поддерживает режим работы High Speed, обеспечивающий в теории скорость обмена в 480 Мбит/с (около 60 МБ/с). Но из-за особенностей протокола обмена данными и архитектурных решений, примененных в USB, реализовать такую скорость на практике не представляется возможным. Максимум, что мы можем получить от USB 2.0, — это порядка 35—38 МБ/с.

Этой пропускной способности уже не хватает внешним накопителям, особенно настольным жестким дискам, которые сегодня способны выдавать данные с постоянной скоростью выше 150 МБ/с. Совершенно не хватает скорости USB 2.0 для внешних видеокарт, устанавливаемых в мониторах с подключением по USB: доступные разрешения приходится ограничивать, а передаваемые данные — тем или иным способом сжимать. Не хватает скорости для веб-камер, устройств видеозахвата, ТВ-тюнеров с поддержкой HD.

Интерфейс USB 3.0 получил статус официального в 2008 году, но на рынок реально пришел в конце 2009-го. Как и раньше, он был разработан корпорацией Intel при поддержке консорциума USB IF. При создании новой версии универсального интерфейса разработчики ставили перед собой сразу четыре противоречивые задачи:

1) повысить скорость подключения устройств как минимум в 10 раз;
2) обеспечить полную совместимость с USB 2.0 как для устройств, так и для хоста;
3) обеспечить экономичный расход энергии шиной и устройствами;
4) улучшить возможности питания устройств по интерфейсу USB.

Заметим, что задача снижения энергопотребления стала особенно актуальной с развитием мобильных технологий. Дело в том, что во многих ноутбуках подключение внутренних устройств осуществляется по интерфейсу USB, проложенному внутри корпуса. Это касается прежде всего веб-камер, кардридеров, модулей Bluetooth, некоторых модулей Wi-Fi. В то же время интерфейс USB изначально не был рассчитан на мобильные системы и имеет достаточно простую схему управления энергопотреблением. Кроме того, в силу особенностей архитектуры он интенсивно «нагружает» все каналы (трафик, по сути, является широковещательным, доводится до всех устройств).

Все вышеперечисленные задачи были успешно решены, но не совсем стандартным способом.

Скорость

Интерфейс USB 3.0 — это фактически новый интерфейс, сохраняющий совместимость с прежними вариантами реализации универсального интерфейса. Принцип кодирования и модуляции был позаимствован у современных последовательных интерфейсов PCI Express и Serial ATA, хотя протокол обмена данными совершенно другой. Архитектурно USB 3.0 представляет собой все тот же хост-центрический интерфейс с физической топологией «многоуровневая звезда», но с логической топологией «шина» (все устройства равноудалены от центра и нумеруются последовательно). Для оптимизации прохождения трафика введена маршрутизация, которую осуществляют хабы (включая корневой хаб, объединенный с контроллером).

Пропускная способность USB 3.0 первой версии составляет 5 Гбит/с (как у шины PCI Express 2.0), или около 500 МБ/с (из-за применения кодирования 8b/10b каждый байт представлен 10 битами). Однако это еще не предел, и разработчики заявляют о возможности безболезненного масштабирования скорости в несколько раз. При этом больше не потребуется пересматривать основы интерфейса, как это было сделано с USB 3.0.

Для реализации требуемой пропускной способности не удалось использовать прежний электрический интерфейс, и USB 3.0 фактически представляет собой два различных интерфейса. Разъемы и кабели содержат электрические линии как старого USB 1.0/2.0, так и нового USB 3.0. Соответственно, новый интерфейс (режим работы) получил название SuperSpeed, или сокращенно SS. При подключении устройств на стадии согласования скоростей выбирается один из двух интерфейсов. При этом в режиме SuperSpeed из прежнего интерфейса USB 2.0 используется только питание.


Для обеспечения нормальной работы схемы «двойного» интерфейса пришлось придумать особые разъемы, которые, с одной стороны, были бы полностью совместимы с портами USB 1.0/2.0, а с другой — обеспечивали возможность использования нового интерфейса.


Кабель USB 3.0 содержит как неэкранированные линии старого интерфейса, так и экранированные — нового. В первой версии интерфейса линии по-прежнему электрические, однако стандарт допускает в перспективе их замену на оптические, с добавлением нового вида разъемов.

Порты USB 3.0

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

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


Внешне разъем выглядит почти так же (производители могут маркировать их цветом, обычно синим), но в его глубине можно обнаружить новые контактные площадки. Порт типа A допускает установку как старого кабеля, так и нового, с линиями SuperSpeed.


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



Тем не менее совместимость со старыми разъемами и кабелями сохранилась.

Кроме того, в стандарте USB 3.0 появилась возможность подачи дополнительного питания на устройство (до 5 Вт), с одновременным увеличением мощности, подаваемой по основным линиям питания (до 4,5 Вт). Для этих целей разработан особый вид разъема — Powered Type A/Type B.


Для компактных и портативных устройств создан разъем Micro USB 3.0, который представляет собой фактически два разъема рядом (из-за высокой плотности основной разъем не удалось дооснастить новыми контактами). Также сохранилась функция USB OTG, благодаря которой через один разъем можно подключать устройство и как хост, и как периферию.



Энергопотребление

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

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

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

Итоги

Таким образом, мы можем подвести промежуточные итоги.

1) USB 3.0 — это совершенно новый интерфейс, реализованный параллельно со старым.
2) Совместимость с USB 2.0 сохраняется в полном объеме.
3) Для работы USB 3.0 требуется новый кабель, содержащий новые разъемы и дополнительные линии. По стоимости он будет существенно отличаться от старого.
4) Хабы USB 3.0 реализуют более сложную логику, а потому будут ощутимо дороже.
5) Помимо достижения более высокой скорости (в 10,4 раза выше, чем у USB 2.0), новый интерфейс обеспечит более экономный расход энергии, что актуально для мобильных систем.

Спецификация периферийной шины USB разработана лидерами компьютерной и телекоммуникационной промышленности -- Compaq, DEC, IBM, Intel, Microsoft, NEC и Northern Telecom -- для подключения компьютерной периферии вне корпуса машины по стандарту plug'n'play, в результате отпадает необходимость в установке дополнительных плат в слоты расширения и переконфигурировании системы. Персональные компьютеры, имеющие шину USB, позволяют подключать периферийные устройства и осуществляют их автоматическое конфигурирование, как только устройство физически будет присоединено к машине, и при этом нет необходимость перезагружать или выключать компьютер, а так же запускать программы установки и конфигурирования. Шина USB позволяет одновременно подключать последовательно до 127 устройств, таких, как мониторы или клавиатуры, выполняющие роль дополнительно подключенных компонентов, или хабов (т.е. устройство, через которое подключается еще несколько).

USB была разработана группой из семи компаний, которые видели необходимость во взаимодействии для обеспечения дальнейшего роста и развития расцветающей индустрии интегрированных компьютеров и телефонии. Эти семь компаний, продвигающие USB, следующие: Compaq, Digital Equipment Corp, IBM PC Co., Intel, Microsoft, NEC и Northern Telecom.

– Как это работает?

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

– Какие виды периферийного оборудования поддерживает USB для подключения к моему PC?

Вы знаете эти устройства: телефоны, модемы, клавиатуры, мыши, устройства чтения CD ROM, джойстики, ленточные и дисковые накопители, сканеры и принтеры. Скорость прокачки в 12 мегабит/секунду позволяет подключать через USB все современное поколение периферийных устройств, включая аппаратуру для обработки видео данных формата MPEG-2, перчатки для управления виртуальными объектами и дигитайзеры. Также, с ожиданием большого роста в области интеграции компьютеров и телефонии, шина USB может выступать в качестве интерфейса для подключения устройств Цифровой сети с интегрированными услугами (ISDN) и цифровых устройств Private Branch eXchange (PBX), позволяющих подключать большое количество телефонов к небольшому количеству линий связи.

– Нужно ли мне покупать специальное программное обеспечение, что бы работала USB-совместимая периферия?

Операционная система Windows 95 (начиная с версии OSR 2.1, выпущенной 29 октября 1996г.) поставляется уже со встроенными драйверами, которые позволяет Вашему персональному компьютеру распознавать USB периферию. В результате, Вам не нужно покупать или инсталлировать дополнительное программное обеспеченте для каждого нового периферийного устройства. Тем не менее, вместе с новой USB периферией вы получите дискету с новыми драйверами. Однако, не все так радужно — например, корректную работу принтера с интерфейсом USB способна обеспечить только OC Windows 98 и выше.

– Что означает существование USB для поставщиков систем и периферии?

– Где я могу найти текущую версию спецификации USB?

Текущая версия спецификации доступна для загрузки со страницы сообщества по внедрению USB — USB Implementers Forum.

– Как много USB-совместимых компьютеров можно ожидать на рынке?

Компания Dataquest считает, что до 30 миллионов USB-совместимых персональных компьютеров будет продано в течении 1997, а в 1998 году, все персональные компьютеры будут оснащены шиной USB.

– Есть ли уже устройства для USB шины?

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

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

– Как может применяться USB при наличие двух систем, например ноутбука и настольного компьютера?

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

– Что такое сообщество по внедрению USB (USB-IF)?

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

– Могу ли я присоединиться к сообществу USB-IF?

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

– Как можно сравнить USB со стандартом Sony FireWire/IEEE 1394?

Основные отличия состоят в области применения, доступности и цене. Использование USB доступно уже сейчас для традиционных устройств, подключаемых к PC, таких, как клавиатуры, мыши, джойстики и ручные сканнеры. Тем не менее, пропускная возможность USB в 12 Mb/сек более чем достаточна для большинства применений ее пользователями, включая более продвинутые игровые устройства, высококачественный звук и сжатое видео стандартов MPEG-1 и MPEG-2. Но, что более важно, применение USB не увеличивает стоимость готовой системы в силу интегрирования контроллера в чипсет.

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

ШинаСкорость передачи данныхТопологияДлина соединительного кабеляПоддерживаемые устройства
USB12 Мб/сЗвезда5 м на сегментПериферия: устройства ввода, телекоммуникационное оборудование, принтеры, аудио/видео устройства
Firewire (IEEE P1394)100 Мб/сДерево4,5 мУстройства хранения данных и цифровая видеоэлектроника

– Заменит ли FireWire шину USB после своего появления?

Нет. Две технологии ориентированы на подключение разных периферийных устройств и следовательно будут дополнять друг друга. Если FireWire станет превалирующей, где-то через два года, все будет зависить от конкретного покупателя и его требований к своему новому компьютеру. Кажется вполне вероятным, что в будущем персональные компьютеры будут одновременно оснащены соединительными портами шины USB и FireWire.

– Что такое интеллектуальные вопросы собственности (Intellectual Property — IP) в отношении USB, лицензия ли это, сколько она стоит, что такое "Обратный Договор"(Reciprocal Covenent Agreement) о котором я слышал?

Использование USB свободно от авторского гонорара, т.е. создатели спецификации разрешают любому разрабатывать на ее основании продукцию без какой либо платы за это. Разработчики спецификации шины подписали IP соглашение, в котором обещается, что не будет никакого судебного преследования по любому включенному пункту в IP в пределах спецификации. Обратный Договор является копией этого соглашения с возможностью для любого, кто внедряет шину USB, подписать этот договор и вернуть его в администрацию USB-IF, для внесения записи о том, что соглашение прочитано и понято. Обратный Договор доступен каждому (членам USB-IF или нет) для разъяснения лицензионного соглашения на USB.

– Что такое сцпецификации OHCI и UHCI?

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

– Существует ли группа новостей про USB?

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

– Как я могу получить идентификационный индекс (ID) производителя USB?

Члены USB-IF получают ID производителя бесплатно, как только присоединяются к сообществу. Не члены сообщества могут получить ID производителя связавшись с администрацией USB-IF. С не членов сообщества взимается регистрационная пошлина в размере $200.

– Есть ли возможность увеличить длину соединения устройств через шину USB до 50-200 метров (например, используя оптоволокно), если это понадобится пользователям?

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

– Когда устройство отключено, его драйвер выгружается из памяти, если опять подключить это же устройство, будет ли его драйвер снова загружен?

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

– Существуют ли планы по увеличению пропускной способности шины USB вдвое, втрое?

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

– Может ли кто нибудь разъяснить разницу между соединителями серии "A" и "B"?

Коннекторы серии "A" разработаны для всех устройств USB, и являются разъемом для периферии и гнездом для персонального компьютера. В большинстве случаев, кабель USB должен быть встроен в периферийное устройство. Это снижает стоимость соединителей, избавляет от несовместимости, возможной в случае разного сопротивления кабелей, и упрощает действия пользователей по подключению. Однако в некоторых случаях встроенный кабель нельзя использовать. Хорошим примером могут служить очень большие и тяжелые устройства, плохо сочетатающиеся с тонким кабелем, который нельзя удалить, а так же устройства, подключаемые только изредка, которые интенсивно используются, когда не являются подключенными. Для таких случаев и были созданы коннекторы серии "B". Две серии коннекторов различаются внешне, это сделано для предотвращения соединений, которые бы могли нарушить топологию архитектуры USB.

– В чем разница между основным хабом и обычным с точки зрения аппаратной реализации и программного обеспечения?

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

– Возможно ли использование шины USB для подключения таких периферийных устройств, как CD-R, ленточных накопителей или жестких дисков?

Возможность применения основана на приемлемости уровня производительности. Если какое-то из этих устройств предполагается часто использовать, то, обычно предъявляются требования, что бы оно было механически интегрированно в систему и имело высокую производительность, опять же соответствующую уровню системы в целом. Шина USB не разрабатывалась для обеспечения постоянного соединения высокоскоростных периферийных устройств внутри корпуса компьютера. Если устройство используется время от времени или подключается к разным компьютерам, тогда, производительность, обеспечиваемая шиной USB будет более чем достаточной. Удобства использования и подключения устройств, обеспечиваемые USB с лихвой перевешивают параметры скорости предачи данных. Но все таки, USB обеспечивает скорость передачи на уровне 4x или 6x скоростных приводов CD (чего недостаточно для перезаписывающих устройств), но при этом лучшую, чем обеспечивают обычные ленточные накопители, подключенные через параллельный порт, дисководы для гибких магнитных дисков или съемные жесткие диски типа SyQuest.

Спецификация периферийной шины USB была разработана лидерами компьютерной и телекоммуникационной промышленности (Compaq, DEC , IBM , Intel, Microsoft, NEC и Northern Telecom ) для подключения компьютерной периферии вне корпуса ПК с автоматическим автоконфигурированием ( Plug & Play ). Первая версия стандарта появилась в 1996 г. Агрессивная политика Intel по внедрению этого интерфейса стимулирует постепенное исчезновение таких низкоскоростных интерфейсов, как RS 232C, Access. bus и т.п. Однако для высокоскоростных устройств с более строгими требованиями к производительности (например, доступ к удаленному накопителю или передача оцифрованного видео) конкурентом USB является интерфейс IEEE 1394 .

Интерфейс USB представляет собой последовательную, полудуплексную, двунаправленную шину со скоростью обмена:

  • USB 1.1 - 1,5 Мбит/с или 12 Мбит/с;
  • USB 2.0 - 480 Мбит/с.

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

Кабельная разводка USB начинается с узла ( host ) (рис. 15.3). Хост обладает интегрированным корневым концентратором ( root hub ), который предоставляет несколько разъемов USB для подключения внешних устройств. Затем кабели идут к другим устройствам USB , которые также могут быть концентраторами, и функциональным компонентам (например, модем или акустическая система). Концентраторы часто встраиваются в мониторы и клавиатуры (которые являются типичными составными устройствами). Концентраторы могут содержать до семи "исходящих" портов.


Рис. 15.3. Топология подключения устройств к USB

Для передачи сигналов шина USB использует четырехпроводной интерфейс . Одна пара проводников ("+5В" и "общий") предназначена для питания периферийных устройств с нагрузкой до 500 мА. Данные передаются по другой паре ("D+" "D"). Для передачи данных используются дифференциальные напряжения до 3 В (с целью снижения влияния шума) и схема кодирования NRZI 1 NRZI (Non-Return to Zero Inverted) - самосохранизующаяся схема кодирования без возвращения к нулю с инверсией. (что избавляет от необходимости выделять дополнительную пару проводников под тактовый сигнал ).

Интерфейс USB 1.1 декларирует два режима:

  • низкоскоростной подканал (пропускная способность - 1,5 Мбит/с), предназначенный для таких устройств, как мыши и клавиатуры;
  • высокопроизводительный канал, обеспечивающий максимальную пропускную способность 12 Мбит/с, что может использоваться для подключения внешних накопителей или устройств обработки и передачи аудио- и видеоинформации.

Все концентраторы должны поддерживать на своих исходящих портах устройства обоих типов, не позволяя высокоскоростному трафику достигать низкоскоростных устройств. Высокопроизводительные устройства подключаются с помощью экранированного кабеля, длина которого не должна превышать 3 м. Если же устройство не формулирует особых требований к полосе пропускания, его можно подключить и неэкранированным кабелем (который может быть более тонким и гибким). Максимальная длина кабеля для низкоскоростных устройств - 5 м. Требования устройства к питанию ( диаметр проводников, потребляемая мощность ) могут обусловить необходимость использования кабеля меньшей длины. Из-за особенностей распространения сигнала по кабелю число последовательно соединенных концентраторов ограничено шестью (и семью пятиметровыми отрезками кабеля).

Для индивидуального обращения к конкретным функциональным возможностям составного устройства применяется 4-битное поле конечной точки. В низкоскоростных устройствах за каждой функцией закрепляется не более двух адресов конечных точек: нулевая конечная точка используется для конфигурации и определения состояния USB , а также управления функциональным компонентом; а другая точка - в соответствии с функциональными возможностями компонента. Устройства с максимальной производительностью могут поддерживать до 16 конечных точек, резервируя нулевую точку для задач конфигурации и управления USB .

Хост опрашивает все устройства и выдает им разрешения на передачу данных (рассылая для этого пакет-маркер - Token Packet ). Таким образом, устройства лишены возможности непосредственного обмена данными - все данные проходят через хост . Это условие сильно мешало внедрению интерфейса USB на рынок портативных устройств . В результате в конце 2001 года было принято дополнение к стандарту USB 2.0 - спецификация USB OTG (On-The-Go), предназначенная для соединения периферийных USB-устройств друг с другом без необходимости подключения к хосту (например, цифровая камера и фотопринтер). Устройство, поддерживающее USB OTG , способно частично выполнять функции хоста и распознавать, когда оно подключено к полноценному хосту (на основе ПК), а когда - к другому периферийному устройству. Спецификация описывает также протокол согласования выбора роли хоста при соединении двух USB OTG -устройств.

Данные на шине передаются транзакциями, интервал между которыми составляет 1 мс. Предусмотрено четыре типа транзакций.

Групповая передача (bulk) используется для адресной пересылки данных большого объема (до 1023 байт ). В качестве примера можно привести передачу данных на принтер или от сканера. Устройства с низкой производительностью не поддерживают этот режим.

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

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

Следует также отметить, что разными производителями предлагались спецификации, описывающие интерфейс различных аппаратных реализаций контроллера USB . Фирмой Intel была предложена спецификация UHCI (Universal Host Controller Interface ), которая предусматривает чрезвычайно простую аппаратную реализацию контроллера USB . В рамках данной спецификации основные функции контроля и арбитража шины возлагаются на программный драйвер . Альтернативная спецификация была предложена компаниями Compaq, Microsoft и National Semiconductor - OHCI ( Open Host Controller Interface ). Контроллеры по спецификации OHCI обладают унифицированным абстрактным интерфейсом, предусматривающим аппаратную реализацию большинства управляющих функций, что облегчает их программирование .

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

Вебинар «Особенности применения литиевых батареек Fanso (EVE) в популярных решениях» (30.11.2021)

Публикация адресована начинающим разработчикам, тем, кто не знаком с USB, но хотел бы узнать больше. Статья носит учебный характер, и не является исчерпывающим справочным пособием. Для более простого вхождения в тему примеры основаны на стандарте USB 1.1. Если не сказано отдельно, то подразумевается режим FS (Full speed). В статье нет широко освещенных в других источниках сведений об общей топологии USB, о кабелях, хабах и разъемах. Здесь больше информации о том, что нужно знать разработчику устройств с микроконтроллерами о протоколе USB для своих разработок. Для устройств USB подключаемых к PC, таких, как мышь, клавиатура, микроконтроллер с поддержкой шины USB, использую термин USB-устройство. Персональный компьютер, к которому подключается USB-устройство, называю хостом. Доступное изложение теории, будет сопровождаться примерами программ на языке С для микроконтроллера AT90USB162 из популярной линейки megaAVR фирмы Atmel. В качестве источника справочной информации по USB рекомендую книгу Гук М. Ю. «Шины PCI, USB и FireWire. Энциклопедия», издательство «Питер».

Обзор темы

Программное обеспечение хоста делится на два отдельных типа: программное обеспечение инициализации канала связи и программное обеспечение поддержки рабочего режима обмена данными. Программное обеспечение инициализации начинает работать при подключении к хосту нового USB-устройства. Происходит обмен служебной информацией между хостом и USB-устройством. В результате обменов служебной информацией, хост определяет: тип устройства, его требования к энергопотреблению, возможность поддержки «спящего режима», тип драйверов для правильной работы USB-устройства, и, даже, возможна ли загрузка необходимых прикладных программ для работы с USB-устройством. Это новые веяния в духе спецификации PNP (plug and play). Устройства могут подключаться и отключаться в горячем режиме. При подключении и отключении происходит автоматическое переконфигурирование программного обеспечения хоста. Процесс настройки хоста на обмен данными, напоминает процесс раскрутки. Первоначально обмениваются простейшими сигналами по шине, затем процесс усложняется и, наконец, выход на рабочий режим.

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

В последнее время имеется тенденция к унификации не только протоколов обмена, но и устройств, взаимодействующих с персональным компьютером. Точнее, унификация требований к каналу связи. Идея такая. Придумывается универсальная шина для всего, что только можно подключить. Конечно, эта шина устроена сложно, она многоуровневая, гибкая и адаптируемая для разных конфигураций устройств. Унифицируются и драйверы операционной системы персонального компьютера, который взаимодействует с подключаемым устройством. Преимущество – отпадает необходимость в написании драйвера для ОС разработчиками USB-устройства. Это должно повышать надежность ОС, так как созданием драйверов могут заняться разработчики ОС, а не разработчики устройств. В общем, все плюсы унификации и стандартизации. Но есть и минусы. Очевидная сложность и связанная с ней избыточность, громоздкость технических решений. Тот же подход, что и в протоколах коммуникаций на большие расстояния. Академический стек протоколов OSI и знаменитый TCP/IP.

В связи с вышесказанным, в спецификации USB вводится понятие класса устройств. Все электронные устройства, подключаемые к персональному компьютеру, по своим функциональным качествам очень схожи. Например, звуковые платы предоставляют сервис приблизительно одного уровня. Поэтому устройства стали делить на унифицированные классы. Класс – это группа устройств, объединенных общими характеристиками и способных управляться общим для них программным драйвером операционной системы. Отдельное устройство может объединять функциональность сразу нескольких устройств, принадлежащих к разным классам. Если функциональность вашего устройства подходит к некоторому классу, и оно поддерживает спецификацию USB для устройств класса, то не нужно писать драйвер для ОС. Вероятнее всего, драйвер уже имеется в ОС. Функциональность устройства, подпадающего под определенный класс, может быть расширена разработчиком устройства добавлением отдельных команд. Точнее говоря, в стандарте USB предусмотрена возможность некоторого расширения функциональности. В стандарте предусмотрено множество возможностей, которые разработчик устройства может использовать для своих целей, добавляя к базовой функциональности функциональность расширенную. В спецификации USB есть две большие области, это собственно USB базового уровня и протоколы устройств классов. Протоколы устройств классов – это некоторая надстройка над протоколами нижнего уровня. Логично сначала разобраться с базовыми принципами, а уж потом со всем остальным.

Виртуальные каналы и конечные точки

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

В режиме передачи данных, когда процесс конфигурирования (энумерации) уже закончился, между USB-устройством и хостом должны быть налажены мосты. Это некий набор виртуальных каналов, по которым идет обмен данными и служебной информацией. Англоязычный термин pipe – труба. Каналы разделяют единственную среду передачи, а потому они являются мультиплексированными и, соответственно, виртуальными. Можно провести аналогию с локальной сетью. Шина Ethernet одна, но соединений TCP может быть несколько. Но в TCP/IP соединения TCP могут возникать и завершаться много раз в процессе работы. В USB типы каналов и их количество фиксируются на стадии процесса энумерации.

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

Управляющий канал используется для передачи команд протокола USB; передача данных с использованием канала управления не является стандартным использованием канала. Хотя можно приспособить канал управления для передачи данных прикладной программы. В каждом USB-устройстве должен быть хотя бы один управляющий канал.

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

Изохронные каналы – применяются для передачи потока данных, например аудио и видео. Характерной особенностью является отсутствие повторной передачи данных в случае ошибок. Поврежденные пакеты просто отбрасываются без запроса повторной передачи. Такая политика позволяет воспроизводить поток данных в реальном времени без временных задержек. С периодом в 1 миллисекунду хост запрашивает данные, и буфер USB-устройства передается на хост. В веб-камерах используются изохронные каналы.

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

У USB-устройства приемником и передатчиком данных служит буфер, который называется конечной точкой. Тип конечной точки определяет тип канала, который связывает ее с хостом. Например, контроллер USB микроконтроллера AT90USB162 фирмы Atmel имеет в общей сложности 4 конечных точки, не считая конечной точки управления (из 4 возможных буферов обмена). Программа микроконтроллера должна, соответственно, сконфигурировать необходимое количество конечных точек для своих нужд. Все конечные точки контроллера USB перенумерованы. Нулевая конечная точка всегда используется для нужд канала управления и не может быть переконфигурирована для других целей. Если не создается драйвер ОС, то на стороне хоста расположение буфера знать необязательно, так как взаимодействие программы на стороне хоста с USB-устройством происходит через системные вызовы операционной системы и скрыто от пользовательской программы.

Хабы, адреса, хост контроллеры

Кратко опишем аппаратуру хоста. На стороне хоста обязательно должен присутствовать хотя бы один контроллер хоста и связанный с этим контроллером корневой хаб. В современных PC имеется несколько контроллеров хоста и, соответственно, несколько корневых хабов. Основателем каждой шины USB является корневой хаб, поэтому, если на PC несколько корневых хабов, то и несколько шин. В Linux имеющиеся шины USB можно посмотреть с помощью команды lsusb. Ниже приведен дамп вывода на моем компьютере:

В колонке слева перенумерованы имеющиеся в компьютере шины USB, а, значит, и контроллеры хабов и корневые хабы. Каждое USB-устройство на шине имеет уникальный адрес в диапазоне от 1 до 127. Нулевой адрес выполняет служебные функции, и не может быть назначен USB-устройству постоянно. Адреса распределяются по USB-устройствам хостом в процессе энумерации и сохраняются на все время работы устройства на шине. Из работы программы lsusb видно, что мышь USB подключена к шине 03, и на этой шине ей назначен адрес 02. Устройство хранения данных подключено к шине 01 с адресом 03. Можно поиграть, поменять последовательность включения и посмотреть, как это отразится на выводе lsusb. В следующей колонке указан идентификационный код устройства ID. Этот код состоит из 2 частей: идентификатора изготовителя (vendor ID) и идентификатора изделия (product ID). Они представляют собой два уникальных числа, используемых для идентификации конкретного устройства. Операционная система по этим кодам может определять, какой драйвер требуется загрузить для работы. Значение кода изготовителя назначается форумом разработчиков USB по заказу фирмы. Код устройства устанавливает сам производитель. Программист микроконтроллеров может задать эти числа произвольно. Другое дело, что такие устройства, поступившие в широкую продажу, могут вызвать возражения фирмы собственника кода. Кроме этих чисел, для идентификации можно использовать номер версии устройства (ID Device).

Читайте также: