Как устроена система передачи информации по usb. Создаем простейшее usb-устройство для общения со своей программой. Ожидание подключения к ПК

  • 31.10.2019

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

Коннекторы USB типа B обычно используются для подключения периферийных устройств к компьютеру на стороне устройства. Сейчас этот тип разъема не распространен. Также существуют портативные разъемы типа B – Mini USB и Micro USB .

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

USB Type- C или USB-C – это последний из представленных стандартов разъемов USB. Релиз спецификации состоялся в 2014 году. Данная версия обеспечивает высокую скорость передачи данных, а также возможность двустороннего подключения.

Стандарты USB

15 января 1996 года была представлена первая спецификация стандарта универсальной последовательной шины — USB 1.0 . Скорость передачи данных не превышала 12 Мбит/c, а максимальная сила тока, подаваемая на подключенные устройства, составляла 500 мА.

Версия USB 1.1 лишь исправляла ошибки, допущенные при проектировании первой спецификации, однако именно 1.1 впервые была широко распространена. Стандарт USB 2.0 был анонсирован уже в апреле 2000 года и служил обновлением для USB 1.1.

USB 2.0 предоставил дополнительную пропускную способность для приложений, мультимедиа и хранения данных. Скорость передачи данных возросла в 40(!) раз. Для обеспечения плавного перехода на новый стандарт как для потребителей, так и для производителей, USB 2.0 имел полную совместимость с оригинальными USB-устройствами.

Данный стандарт поддерживает три режима скорости (1.5, 12 и 480 мегабит в секунду):

  • Low Speed (не более 1.5 Мбит/с) – клавиатуры, мыши, джойстики;
  • Full Speed (не более 12 Мбит/с) – аудио- и видеоустройства;
  • High Speed (не более 480 Мбит/с) – высокопроизводительные периферийные устройства;

Внедрение USB 2.0 позволило сильно продвинуться в развитии периферийных «девайсов» для персональных компьютеров. Этот стандарт позволил подключать несколько энергоемких устройств к хосту одновременно.

Стандарт USB 3.0 (SuperSpeed ​​ USB ) стал официальным 17 ноября 2008 года. Новая спецификация поддерживала скорость передачи в 10 раз большую (до 4.8 гигабит в секунду), нежели USB 2.0. Максимальная сила тока, подаваемая на периферийные устройства, возросла с 500 до 900 мА. Это позволило не использовать дополнительные источники питания для некоторых гаджетов, а также увеличить количество устройств, питающихся от одного порта.

Переход на USB 3.0 был очень медленным. Корпорация Intel отложила внедрение стандарта в свои чипсеты до 2011 года. Отсутствовала поддержка новой спецификации и со стороны софта: ни Windows, ни Linux на тот момент не могли работать с версией 3.0.

Летом 2013 года был разработан обновленный стандарт — USB 3.1 . Скорость передачи данных возросла до 10 Гбит/с. Стандарт 3.1 обратно совместим с версиями 2.0 и 3.0. Именно с этой версией стали появляться новые разъемы USB Type-C.

Версия USB 3.2 обещает снова увеличить скорость обмена данными вдвое – уже до 20 Гбит/с.

USB-хабы (USB-концентраторы, USB-разветвители)

Компьютеры, как минимум, имеют один или два USB-разъема. Но с таким количеством USB-устройств на рынке, вы быстро исчерпаете лимит доступных портов. У вас могут быть одновременно подключены клавиатура, мышь, принтер, микрофон и веб-камера, работающие через USB. Возникает очевидный вопрос: «Как подключить все устройства?»

Легкое решение проблемы — купить недорогой USB-концентратор (хаб). Что же такое USB-хаб?

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

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

Вы подключаете разветвитель к компьютеру, а затем подключаете свои устройства (или другие разветвители) непосредственно к нему. Соединяя концентраторы вместе, вы можете создавать десятки доступных USB-портов на одном компьютере.

Концентраторы могут питать или не питать подключенные устройства. У энергоемких устройств (принтеров, сканеров и т.д.) есть свой собственный источник питания, но устройства с низким энергопотреблением (мыши, клавиатуры и т.д.) получают питание от компьютера. Это сильно упрощает работу с ними. Мощность (до 500 миллиампер с напряжением 5 вольт для USB 2.0 и 900 миллиампер для USB 3.0) поступает с шины компьютера. Если у вас много устройств с автономным питанием (например, принтеры и сканеры), то ваш концентратор не нуждается в питании. Если же у вас много устройств без питания, таких как мыши и клавиатуры, вам, вероятно, нужен мощный концентратор с собственным блоком питания.

Как работает USB?

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

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

  • IN (хост готов принимать данные с устройства);
  • OUT (хост готов передавать данные на устройство);
  • SETUP (хост сообщает устройству о последующей передаче конфигурационной информации);

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

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

USB — разработанный в середине девяностых годов стандарт обмена данными между устройствами и их питания. Этот протокол используется для подключения к компьютеру периферии и пришел на замену нескольким разработанным ранее портам. Стандарт утвержден несколькими крупными компаниями, в том числе IBM, Intel, Microsoft и NEC. В июне 2009 года Еврокомиссия приняла разъем micro USB в качестве стандартного для зарядки смартфонов, выпускаемых 14 крупнейшими производителями.

USB используется для подключения к компьютеру Flash-накопителей, жестких дисков, звуковых карт, колонок, микрофонов, MIDI-клавиатур, адаптеров Wi-Fi, модемов, клавиатур, мышей, джойстиков, веб-камер, принтеров, кард-ридеров, оптических приводов и прочей техники, а также для зарядки аккумуляторов и питания маломощных устройств. Компания Microsoft ввела поддержу USB в Windows 98, Apple в начале века пыталась продвигать стандарт FireWire, однако впоследствии отдала предпочтение USB, а в некоторых продуктах использует собственную разработку - интерфейс Lightning, основанный на USB 2.0 и нескольких проприетарных протоколах.

Официально стандарт USB 1.x был утвержден в начале 1996 года. Он предусматривал обмен данными на двух скоростях: низкой - до 1,5 Мбит/с и высокой - до 12 Мбит/c. В 1998 стандарт был обновлен до версии 1.1, в которой был устранен ряд проблем первой версии.

USB 2.0 утвержден в апреле 2000 года и до настоящего момента наиболее распространен. Теоретически максимальная скорость обмена данными выросла до 480 Мбит/с, в реальной жизни она редко превышает 280 Мбит/с. Напряжение, подаваемое через плату составляет 5 В при силе тока 150 или 500 мА.

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

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

В 2013 году утвержден стандарт USB 3.1, в котором теоретическая скорость передачи информации выросла по сравнению с USB 3.0 вдвое - до 10 Гбит/с. Стандарт обратно совместим с USB 2.0 и 3.0. Сила тока при напряжении 5 В увеличена до 2 А, также предусмотрено питание с силой тока 5 А при напряжении 12 и 20 В.

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

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

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

На сегодняшний день флешки являются самыми популярными внешними носителями данных. В отличие от оптических и магнитных дисков (CD/DVD и винчестеры соответственно), флеш-накопители более компактны и устойчивы к механическим повреждениям. А за счет чего были достигнуты компактность и устойчивость? Давайте же разберемся!

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

Основные компоненты

Составные части большинства флешек можно разделить на основные и дополнительные.


К основным относятся:

  1. чипы NAND-памяти;
  2. контроллер;
  3. кварцевый резонатор.
  4. USB-разъем

NAND-память
Накопитель работает благодаря NAND-памяти: полупроводниковым микросхемам. Чипы такой памяти, во-первых, весьма компактны, а во-вторых — очень ёмкие: если на первых порах флешки по объему проигрывали привычным на тот момент оптическим дискам, то сейчас превышают по ёмкости даже диски Blu-Ray. Такая память, ко всему прочему, еще и энергонезависимая, то есть для хранения информации ей не требуется источник питания, в отличие от микросхем оперативной памяти, созданных по похожей технологии.


Однако у НАНД-памяти есть один недостаток, в сравнении с другими типами запоминающих устройств. Дело в том, что срок службы этих чипов ограничен определенным количеством циклов перезаписи (шагов чтения/записи информации в ячейках). В среднем количество read-write cycles равно 30 000 (зависит от типа чипа памяти). Кажется, это невероятно много, но на самом деле это равно примерно 5 годам интенсивного использования. Впрочем, даже если ограничение будет достигнуто, флешкой можно будет продолжать пользоваться, но только для считывания данных. Кроме того, вследствие своей природы, NAND-память очень уязвима к перепадам электричества и электростатическим разрядам, так что держите её подальше от источников подобных опасностей.

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


Контроллер (иначе называется микроконтроллер) представляет собой миниатюрный примитивный компьютер с собственным процессором и некоторым количеством RAM, используемыми для кэширования данных и служебных целей. Под процедурой обновления прошивки или BIOS подразумевается как раз обновление ПО микроконтроллера. Как показывает практика, наиболее частая поломка флешек — выход из строя контроллера.

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

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

USB-коннектор
В подавляющем большинстве случаев в современных флешках установлен разъем USB 2.0 типа A, ориентированный на прием и передачу. В самых новых накопителях используется USB 3.0 типа А и типа C.

Дополнительные компоненты

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

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


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

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


При попытке записать или удалить информацию с накопителя, в котором включена защита, ОС выдаст такое вот сообщение.

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

Этот элемент тоже может сломаться, в результате чего возникает досадная ситуация — девайс вроде работоспособен, но пользоваться им невозможно. У нас на сайте есть материал, который может помочь решить эту проблему.

Уникальные компоненты

К таковым можно отнести, например, наличие разъемов Lightning, microUSB или Type-C: флешки с наличием таковых предназначены для использования в том числе на смартфонах и планшетах.

Шина 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-х проводному кабелю

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

Предназначены только для подключения к периферийному устройству

Номер контакта

Назначение

Цвет провода

Здесь GND - цепь "корпуса" для питания периферийных устройств, VBus - +5V также для цепей питания. Шина D+ предназначена для передачи данных по шине, а шина D- для приема данных.

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

    Основные элементы USB . Физическая и логическая архитектура шины.

Шина USB (Universal Serial Bus, универсальная последовательная шина) появилась в начале 1996 года как попытка решения проблемы множественности интерфейсов. К тому времени персональные компьютеры (ПК) были оснащены большим количеством разнообразных внешних интерфейсов, полезных и необходимых, но обладающих одним недостатком: все они требовали своего специального разъема и, чаще всего, выделенного аппаратного прерывания (IRQ, Interrupt ReQuest).

Общая архитектура USB

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

Физическая и логическая архитектура USB

Физическая архитектура USB определяется следующими правилами:

o устройства подключаются к хосту;

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

o центром каждой звезды является хаб;

o каждый кабельный сегмент соединяет между собой две точки: хост с хабом или функцией, хаб с функцией илидругим хабом;

o к каждому порту хаба может подключаться периферийное USB-устройство или другой хаб, при этом допускаются до 5 уровней каскадирования хабов, не считая корневого.

Детали физической архитектуры скрыты от прикладных программ в системном программном обеспечении (ПО), поэтому логическая архитектура выглядит как обычная звезда, центром которой является прикладное ПО, а вершинами – набор конечных точек/ Прикладная программа ведет обмен информацией с каждой конечной точкой.

Составляющие USB

Шина USB состоит из следующих элементов:

    хост-контроллер (host controller) – это главный контроллер, который входит в состав системного блока компьютера и управляет работой всех устройств на шине USB. Для краткости мы будем писать просто хост. На шине USB допускается наличие только одного хоста. Системный блок персонального компьютера содержит один или несколько хостов, каждый из которых управляет отдельной шиной USB;

    устройство (device) может представлять собой хаб, функцию или их комбинацию (compound device);

    порт (port) – точка подключения;

    хаб (hub, другое название - концентратор ) – устройство, которое обеспечивает дополнительные порты на шине USB. Другими словами, хаб преобразует один порт (восходящий порт, upstream port) во множество портов (нисходящие порты, downstream ports). Архитектура допускает соединение нескольких хабов (не более 5). Хаб распознает подключение и отключение устройств к портам и может управлять подачей питания на порты. Каждый из портов может быть разрешен или запрещен и сконфигурирован на полную или ограниченную скорость обмена. Хаб обеспечивает изоляцию сигментов с низкой скоростью от высокоскоростных. Хаб может ограничивать ток, потребляемый каждым портом;

    корневой хаб (root hub) – это хаб, входящий в состав хоста;

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

    логическое USB-устройство (logical device) представляет собой набор конечных точек.

    Основные свойства USB -устройств и хабов.

Свойства USB-устройств

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

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

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

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

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

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

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

    Основные принципы передачи данных по интерфейсу USB .

Принципы передачи данных

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

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

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

Механизм прерываний

Для шины USB настоящего механизма прерываний (как, например, для последовательного порта) не существует. Вместо этого хост опрашивает подключенные устройства на предмет наличия данных о прерывании. Опрос происходит в фиксированные интервалы времени, обычно каждые 1 – 32 мс. Устройству разрешается посылать до 64 байт данных.

С точки зрения драйвера, возможности работы с прерываниями фактически определяются хостом, который и обеспечивает поддержку физической реализации 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):

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

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

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

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

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

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

В обязанности хоста входит:

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

    Организация управляющих потоков между USB-устройством и хостом.

    Организация потоков данных между USB-устройством и хостом

    Контроль состояния устроств и ведение статистики активности

    Снабжение подключенных устройств электропитанием Аппаратной частью является хост контроллер - посредник между хостом и устройствами на шине

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

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

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

* Data J State и Data К State - состояния передаваемого бита (или просто J и К), определяются через состояния Diff0 и 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 м. Низкоскоростные кабели и устройства дешевле высокоскоростных. Одна и та же система может одновременно использовать оба режима; переключение для устройств осуществляется прозрачно. Низкая скорость предназначена для работы с небольшим количеством ПУ, не требующих высокой скорости. Скорость, используемая устройством, подключенным к конкретному порту, определяется хабом по уровням сигналов на линиях D+ и D-, смещаемых нагрузочными резисторами R2 приемопередатчиков

    Кодирование данных при передаче по шине USB .

    Питание USB -устройств. Управление энергопотреблением.

    Внутренняя организация шины USB . Логические уровни обмена данными.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 . Использование микросхем фирмы FTDI в качестве преобразователей в последовательный и параллельный интерфейсы.

D0…D7– двунаправленная шина данных в прямом коде (1 – высокий уровень, 0 – низкий уровень) с тремя состояниями;

RD#– вход строба читаемых данных. Когда наRD# низкий уровень данные из приёмного буфера типаFIFOдлиной 128 байт микросхемыFT8U245AMпоявляются на шинеD0…D7, если хотя бы один байт присутствует в буфере. По переходу от низкого уровня к высокому уровню данные снимаются с шины данных;

WR– вход строба записываемых данных. Данные с шиныD0…D7 попадают в буфер передачи типаFIFOдлиной 384 байта микросхемыFT8U245AMпо переходу от высокого уровня к низкому уровню на выводеWRпри условии, что этот буфер не заполнен полностью;

TXE#– выход наличия места в буфере передачи микросхемыFT8U245AM. Когда на этом выводе низкий уровень, данные могут быть переданы в буфер передачи по шинеD0…D7;

RXF# – выход наличия данных в приёмном буфере микросхемыFT8U245AM. Когда на этом выводе низкий уровень, данные могут быть прочитаны по шинеD0…D7;

Рис. 1. Временная диаграмма цикла чтения.

Рис.2. Временная диаграмма цикла записи.

    Интерфейс I 2 C . Последовательные шины на базе I 2 C . Основные технические характеристики шины I 2 C .

I 2 C – двухпроводной интерфейс, разработанный корпорацией Philips. В первоначальном техническом требовании к интерфейсу максимальная скорость передачи данных составляла 100 Кбит/с. Однако со временем появились стандарты на более скоростные режимы работы I 2 C. К одной шине I 2 C могут быть подключены устройства с различными скоростями доступа, так как скорость передачи данных определяется тактовым сигналом.

Протокол передачи данных разработан таким образом, чтобы гарантировать надежный прием передаваемых данных.

При передаче данных одно устройство является «Master», которое инициирует передачу данных и формирует сигналы синхронизации. Другое устройство «Slave» - начинает передачу только по команде, пришедшей от «Master».В микроконтроллерах PIC16CXXX аппаратно реализован режим «Slave» устройства в модуле SSP. Режим «Master» реализуется программно.Основные термины, используемые при описании работы с шиной I 2 C:

Передатчик – устройство, передающее данные по шине

Приемник – устройство, получающее данные с шины

«Master» - устройство, которое инициирует передачу и формирует тактовый сигнал

«Slave» - устройство, к которому обращается «Master»

Multi-«Master» - режим работы шины I 2 C с более чем одним «Master»

Арбитраж – процедура, гарантирующая, что только один «Master» управляет шиной

Синхронизация – процедура синхронизации тактового сигнала от двух или более устройств

Выходные каскады формирователей сигналов синхронизации (SCL) и данных (SDA) должны быть выполнены по схемам с открытым коллектором (стоком) для объединения нескольких выходов и через внешний резистор подключены к плюсу питания для того, чтобы на шине был уровень «1», когда ни одно устройство не формирует сигнал «0». Максимальная емкостная нагрузка ограничена емкостью 400 пФ.

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

Каждое устройство распознается по уникальному адресу и может работать как передатчик или приёмник, в зависимости от назначения устройства.

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

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

Процедура синхронизации двух устройств Эта процедура основана на том, что все I2C-устройства подключаются к шине по правилу монтажного И. В исходном состоянии оба сигнала SDA и SCL находятся в высоком состоянии.

    Протокол передачи данных по шине I 2 C . Назначение сигналов шины I 2 C . Временные диаграммы процедуры передачи данных.

Принцип работы

Физически шина I2C представляет собой двухпроводный интерфейс с двунаправленными линиями последова-

тельной синхронизации (SCL) и линии передачи данных (SDA). Шина I2C поддерживает несколько ведомых и ведущих устройств, но одновременно может быть активно только одно ведущееустройство. Любое устройство I2Cможно подключить к шине и осуществлять обмен данными с ведущим устройством. Все устройства распознаются по уникальному адресу и могут использоваться в качестве передатчикаили приемника, в зависимости от ихфункций. Изначально в шине I2C использовались 7-разрядные адреса,сейчас – 10-разрядные. Поддержива-

ется три скорости передачи битов: 100кбит/с (стандартный режим), 400 кбит/с(быстрый режим) и 3,4 Мбит/с (быстро-действующий режим). Максимальноеколичество подключаемых устройствопределяется максимальной емкостью400 пФ или примерно 20-30 устройств.Стандарт I2C определяет следующийформат, представленный на рис. 4:

– Start (Старт) – указывает, что управление шиной передано устройству ибудет передано сообщение

– Address (Адрес) – 7- или 10разрядный номер, соответствующийадресу устройства, с которого будут

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

– R/W Bit (Бит чтения/записи) – одинбит, указывающий, что данные будут считываться с одного устройст-

ва или записываться в другое устройство

– Ack (Подтверждение) – один бит сведомого устройства с подтверждением действия ведущего устройст-

ва. Как правило, подтверждениетребуется для каждого адреса ибайта данных, но не всегда.

– Data (Данные) – целое число байт,считываемых или записываемыхустройством.

– Stop (Стоп) – указывает на завершение сообщения, ведущее устройство освобождает шину.

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

Сигналы START и STOP формируются «Master» для определения начала и окончания передачи данных соответственно.

Сигнал START формируется переходом сигнала SDA из высокого уровня в низкий при высоком уровне сигнала SCL. Сигнал STOP определяется как переход SDA из низкого уровня в высокий при высоком уровне SCL. Таким образом, при передаче данных сигнал SDA может изменяться только при низком уровне сигнала SCL.

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

  • Низкая скорость (Low Speed - LS) - 1,5 Мбит/с;
  • Полная скорость (Full Speed - FS) - 12 Мбит/с;
  • Высокая скорость (High Speed - HS) - 480 Мбит/с.
Для подключения периферийных устройств используется 4-жильный кабель: питание +5 В, сигнальные провода D+ и D- , общий провод.
Интерфейс USB соединяет между собой хост (host ) и устройства. Хост находится внутри персонального компьютера и управляет работой всего интерфейса. Для того, чтобы к одному порту USB можно было подключать более одного устройства, применяются хабы (hub - устройство, обеспечивающее подключение к интерфейсу других устройств). Корневой хаб (root hub ) находится внутри компьютера и подключен непосредственно к хосту. В интерфейсе USB используется специальный термин "функция" - это логически законченное устройств, выполняющее какую-либо специфическую функцию. Топология интерфейса USB представляет собой набор из 7 уровней (tier ): на первом уровне находится хост и корневой хаб, а на последнем - только функции. Устройство, в состав которого входит хаб и одна или несколько функций, называется составным (compaund device ).
Порт хаба или функции, подключаемый к хабу более высокого уровня, называется восходящим портом (upstream port ), а порт хаба, подключаемый к хабу более низкого уровня или к функции называется нисходящим портом (downstream port ).
Все передачи данных по интерфейсу иницируются хостом. Данные передаются в виде пакетов. В интерфейсе USB испольуется несколько разновидностей пакетов:
  • пакет-признак (token paket ) описывает тип и направление передачи данных, адрес устройства и порядковый номер конечной точки (КТ - адресуемая часть USB-устройства); пакет-признаки бывают нескольких типов: IN , OUT , SOF , SETUP ;
  • пакет с данными (data packet ) содержит передаваемые данные;
  • пакет согласования (handshake packet ) предназначен для сообщения о результатах пересылки данных; пакеты согасования бывают нескольких типов: ACK , NAK , STALL .
Таким образом каждая транзакция состоит из трех фаз: фаза передачи пакета-признака, фаза передачи данных и фаза согласования.
В интерфейсе USB используются несколько типов пересылок информации.
  • Управляющая пересылка (control transfer ) используется для конфигурации устройства, а также для других специфических для конкретного устройства целей.
  • Потоковая пересылка (bulk transfer ) используется для передачи относительно большого объема информации.
  • Пересылка с прерыванием (iterrupt transfer ) испольуется для передачи относительно небольшого объема информации, для которого важна своевременная его пересылка. Имеет ограниченную длительность и повышенный приоритет относительно других типов пересылок.
  • Изохронная пересылка (isochronous transfer ) также называется потоковой пересылкой реального времени. Информация, передаваемая в такой пересылке, требует реального масштаба времени при ее создании, пересылке и приеме.

Потоковые пересылки характеризуются гарантированной безошибочной передачей данных между хостом и функцией посредством обнаружения ошибок при передаче и повторного запроса информации.
Когда хост становится готовым принимать данные от функции, он в фазе передачи пакета-признака посылает функции IN -пакет. В ответ на это функция в фазе передачи данных передает хосту пакет с данными или, если она не может сделать этого, передает NAK - или STALL -пакет. NAK -пакет сообщает о временной неготовности функции передавать данные, а STALL -пакет сообщает о необходимости вмешательства хоста. Если хост успешно получил данные, то он в фазе согласования посылает функции ACK
Когда хост становится готовым передавать данные, он посылает функции OUT -пакет, сопровождаемый пакетом с данными. Если функция успешно получила данные, он отсылает хосту ACK -пакет, в противном случае отсылается NAK- или STALL -пакет.
Управляющие пересылки содержат не менее двух стадий: Setup-стадия и статусная стадия . Между ними может также располагаться стадия передачи данных . Setup-стадия используется для выполнения SETUP-транзакции , в процессе которой пересылается информация в управляющую КТ функции. SETUP-транзакция содержит SETUP -пакет, пакет с данным и пакет согласования. Если пакет с данными получен функцией успешно, то она отсылает хосту ACK -пакет. В противном случае транзакция завершается.
В стадии передачи данных управляющие пересылки содержат одну или несколько IN- или OUT- транзакций, принцип передачи которых такой же, как и в потоковых пересылках. Все транзакции в стадии передачи данных должны производиться в одном направлении.
В статусной стадии производится последняя транзакция, которая использует те же принципы, что и в потоковых пересылках. Направление этой транзакции противоположно тому, которое использовалось в стадии передачи данных. Статусная стадия служит для сообщения о результате выполнения SETUP-стадии и стадии передачи данных. Статусная информация всегда передается от функции к хосту. При управляющей записи (Control Write Transfer ) статусная информация передается в фазе передачи данных статусной стадии транзакции. При управляющем чтении (Control Read Transfer ) статусная информация возвращается в фазе согласовании статусной стадии транзакции, после того как хост отправит пакет данных нулевой длины в предыдущей фазе передачи данных.
Пересылки с прерыванием могут содержать IN - или OUT -пересылки. При получении IN -пакета функция может вернуть пакет с данными, NAK -пакет или STALL -пакет. Если у функции нет информации, для которой требуется прерывание, то в фазе передачи данных функция возвращает NAK -пакет. Если работа КТ с прерыванием приостановлена, то функция возвращает STALL -пакет. При необходимости прерывания функция возвращает необходимую информацию в фазе передачи данных. Если хост успешно получил данные, то он посылает ACK -пакет. В противном случае согласующий пакет хостом не посылается.
Изохронные транзакции содержат фазу передачи признака и фазу передачи данных , но не имеют фазы согласования . Хост отсылает IN - или OUT -признак, после чего в фазе передачи данных КТ (для IN -признака) или хост (для OUT -признака) пересылает данные. Изохронные транзакции не поддерживают фазу согласования и повторные посылки данных в случае возникновения ошибок.

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

Фирма-производитель Наименование Описание

Atmel
AT43301 Контроллер LS/FS-хаба 1-4 с общим управлением питанием нисходящих портов.
AT43312A Контроллер LS/FS-хаба 1-4 с индивидуальным управлением питанием нисходящих портов.
AT43320A Микроконтроллер на ядре AVR. Имеет встроенные USB-функцию и хаб с 4 внешними нисходящими портами, работающие в LS/FS-режимах, 512 байт ОЗУ, 32х8 регистров общего назначения, 32 программируемых вывода, последовательный и SPI-интерфейсы. Функция имеет 3 КТ с буферами FIFO размером 8 байт. Для нисходящих портов хаба предусмотрено индивидуальное управление питанием.
AT43321 Контроллер клавиатуры на ядре AVR. Имеет встроенные USB-функцию и хаб с 4 внешними нисходящими портами, работающие в LS/FS-режимах, 512 байт ОЗУ, 16 кбайт ПЗУ, 32х8 регистров общего назначения, 20 программируемых вывода, последовательный и SPI-интерфейсы. Функция имеет 3 КТ. Для нисходящих портов хаба предусмотрено индивидуальное управление питанием.
AT43324

Микроконтроллер на ядре AVR. Имеет встроенные USB-функцию и хаб с 2 внешними нисходящими портами, работающие в LS/FS-режимах, 512 байт ОЗУ, 16 кбайт ПЗУ, 32х8 регистров общего назначения, 34 программируемых вывода. Клавиатурная матрица может иметь размер 18х8. Контроллер имеет 4 выхода для подключения светодиодов. Функция имеет 3 КТ. Для нисходящих портов хаба предусмотрено индивидуальное управление питанием.

AT43355 Микроконтроллер на ядре AVR. Имеет встроенные USB-функцию и хаб с 2 внешними нисходящими портами, работающие в LS/FS-режимах, 1 кбайт ОЗУ, 24 кбайт ПЗУ, 32х8 регистров общего назначения, 27 программируемых выводов, последовательный и SPI-интерфейсы, 12-канальный 10-разрядный АЦП. Функция имеет 1 управлющую КТ и 3 программируемых КТ с буферами FIFO размером 64/64/8 байт.
Fairchild Semiconductor USB100 Контроллер манипуляторов (мышь, трекбол, джойстик). Поддерживает 2D/3D-мышь, джойстик с тремя потенциометрами, манипулятор с 16 кнопками.

Intel
8x931Ax Микроконтроллер с архитектурой MSC-51. Имеет встроенную USB-функцию, работающую в LS/FS-режимах, 256 байт ОЗУ, 0/8 кбайт ПЗУ, 8х4 регистра общего назначения, 32 программируемых вывода, последовательный интерфейс, интерфейс управления клавиатурой. Функция имеет 3 КТ с буферами FIFO размером 8/16/8 байт.
8x931Hx Микроконтроллер с архитектурой MSC-51. Имеет встроенную USB-функцию и хаб с 4 внешними нисходящими портами, работающие в LS/FS-режимах, 256 байт ОЗУ, 0/8 кбайт ПЗУ, 8х4 регистра общего назначения, 32программируемых вывода, последовательный интерфейс, интерфейс управления клавиатурой. Функция имеет 3 КТ с буферами FIFO размером 8/16/8 байт.
8x930Ax Микроконтроллер с архитектурой MSC-251. Имеет встроенную USB-функцию, работающую в LS/FS-режимах, 1024 байта ОЗУ, 0/8/16 кбайт ПЗУ, 40 регистров общего назначения, 32 программируемых вывода, последовательный интерфейс. Функция имеет 4(6) КТ с буферами FIFO размером 16/1024(256)/16(32)/16(32)/(32)/(16) байт.
8x930Hx Микроконтроллер с архитектурой MSC-251. Имеет встроенную USB-функцию и хаб с 4 внешними нисходящими портами, работающие в LS/FS-режимах, 1024 байта ОЗУ, 0/8/16 кбайт ПЗУ, 40 регистров общего назначения, 32 программируемых вывода, последовательный интерфейс. Функция имеет 4 КТ с буферами FIFO размером 16/1024/16/16 байт.

Microchip
PIC16C745 Микроконтроллер с архитектурой PIC. Имеет встроенную USB-функцию, работающую в LS-режиме, 256 байт ОЗУ, 14336 байт ПЗУ, 22 программируемых вывода, последовательный интерфейс, 5-канальный 8-битный АЦП.
PIC16C765 Микроконтроллер с архитектурой PIC. Имеет встроенную USB-функцию, работающую в LS-режиме, 256 байт ОЗУ, 14336 байт ПЗУ, 33 программируемых вывода, последовательный интерфейс, 8-канальный 8-битный АЦП.
PIC18F2450 Микроконтроллер с архитектурой PIC. Имеет встроенную USB-функцию, работающую в LS/FS-режиме, 1536 байт ОЗУ, 16384 байт ПЗУ, 19 программируемых выводов, последовательный и SPI-интерфейсы, 5-канальный 10-битный АЦП. Функция имеет 8 КТ.
PIC18F2550 Микроконтроллер с архитектурой PIC. Имеет встроенную USB-функцию, работающую в LS/FS-режиме, 1536 байт ОЗУ, 32768 байт ПЗУ, 19 программируемых выводов, последовательный, CAN- и SPI-интерфейсы, 5-канальный 10-битный АЦП. Функция имеет 8 КТ.
PIC18F4450 Микроконтроллер с архитектурой PIC. Имеет встроенную USB-функцию, работающую в LS/FS-режиме, 1536 байт ОЗУ, 16384 байт ПЗУ, 34 программируемых вывода, последовательный, CAN- и SPI-интерфейсы, 8-канальный 10-битный АЦП. Функция имеет 8 КТ.
PIC18F4550 Микроконтроллер с архитектурой PIC. Имеет встроенную USB-функцию, работающую в LS/FS-режиме, 1536 байт ОЗУ, 32768 байт ПЗУ, 34 программируемых вывода, последовательный, CAN- и SPI-интерфейсы, 8-канальный 10-битный АЦП. Функция имеет 8 КТ.
Texas Instruments TUSB2036 Контроллер LS/FS-хаба 1-3 с индивидуальным управлением питанием нисходящих портов.