о нас
Проекты
USBN960x Demo Board
Atmel AVR Prog
Cypress FX2 Demo Board
Скачать
Примеры


 

Обзор USB шины

сентябрь 2003

USB вытесняет паралельный и последовательный интерфейсы во всех сферах применения

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


USB - это последовательный протокол и физическое соединение, которое переносит все данные по витой паре проводов. Другая пара обеспечивает питание для устройств.


USB стандарт предполагает два вида кабеля и два варианта разьемов. High-speed (высокоскоростные) кабели, для связи 12Mb в секунду, лучше экранированы, чем их менее дорогие 1.5 Mb заменители. Каждый кабель имеет "А" разъем на одной стороне и "B" на другой. Рисунок 1 показывает как "А" раземы подсоединяются к исходящему, а "В" к нисходящему. Таким образом два типа физически различны и невозможно подключить их неправильно.


Рис 1. USB топрологоия "подключение звездой"

Управление питанием


"Пап, тебе надо выключить компьютер, до того как подсоединять дисковод". Даже ребенок понимает, что будет при подсоединении при включенном ПК. Но здесь эти переживания отсутствуют. Можно устанавливать и вынимать его на USB независимо от энергитического режима.
Два из четырех провода в USB кабеле снабжают энергией устройства. Несмотря на номинальных +5V, спецификация позволяет немного вариаций; разработчики должны учесть немного меньше, около +4V. Периферия, которая потребляет до 100ma может полностью питаться от шины. Выше рекомендации специфические. Если устройство нуждается в менее 500ma, и если host (ведущий) или hub (концентратор) может обеспечить столько энергии (это опционально), устройство может быть питаемо от шины, если во время подключения, при конфигурировании системы, оно потребляет менее 100ma. Если устройству необходимо более пол-ампера, оно должно быть само-питаемым.

USB ХОСТы и концентраторы управляют питанием путем включения и выключения питания индивидуальных устройств, електрически отключая проблемые устройства из системы. Позже, они смогут сообщать перефирии о переходе в режим ожидания, который понижает максимальное потребление до 500 микроампер для (низко-питаемых, 1.5 Mbps) или 2.5 ma для 12Mbps.

Длины кабелей ограничены до 5 метров для 12Mbps и 3 для 1.5Mbps. Это звучит ошибочно, но исходит из использования лучших кабелей при больших скоростях. Топология USB - "звездное" соединение (рис. 1). Концентраторы являются вершинами, соединяющими устройства. Одно и только одно ведущее устройство (обычно ПК) включает "Корневой концентратор", который является связующим звеном для всех.
Host - основной в USB и, следовательно, управляет всеми устройствами.

Устройства, контролируемые USB, являются "ведомыми", отвечая на команды (host a) "ведущего". Когда устройство подключается в USB сеть, host связывается с ним для определения: какой драйвер необходим (процес enumeration). Для избежания перемычек и проблем с прерываниями, host присваивет адрес устройства в процессе энумерации.

Спецификация определяет два вида устройств: stand-alone (одиночное, как мышь) и составное (имеющие более одного порта). Примером составного устройства является видео камера с отдельным аудио процессором.

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

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

Как только концентратор находит новую периферию (или отключение таковой), он подает информацию ХОСТу и позволяет соединение с подключенным устройством, на самом деле, он является невидимым "умным" проводом, распределяющим данные между устройствами и ведущим. Таким образом, физически соединение устанавливается "звездой", но для приложений прямое соединение существует между компьютером (ведущим) и каждым отдельным устройством.

Обзор соединения USB

USB соединение устанавливается между ХОСТом и endpoint (конечная точка), расположенной в периферии. Конечная точка - уникальная доступная часть периферии, являющаяся источником или приемником данных. Четыре бита определяют адрес конечной точки; коды также определяют направление передачи и является ли передача управляющей. Точка 0 зарезервирована для управляющих передач, предоставляющая до 15 двунаправленных источников и приемников данных для каждого устройства.

Идея конечных точек является важной составляющей концепции USB транзакций. Вся передача осуществляется через виртуальные каналы (pipe), которые соединяют периферийные конечные точки с ХОСТом. Когда устанавливается соединение с устройством, каждая конечная точка возвращает дескриптор, структура данных, которая описывает конфигурацию и предназначение. Дескрипторы включают вид передачи, максимальный размер пакетов данных, и в некоторых случаях, необходимую пропускную способность канала, который определяется размером, делая его аналогом водопроводной системы.

USB поддерживает четыре вида передачи данных: управляющий, изохронный, массовый (bulk) и через прерывание.

Управляющие запросы меняют конфигурацию, установки и управляют передачами данных. Осуществляется проверка CRC и инициация ре-трансмиссии, при необходимости коррекции пакетов.

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

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

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

Драйвер устройства


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

Большинство конечных соединений, в худшей или лучшей степени осуществляется на ПК с операционной системой Microsoft. USB не полностью поддерживается в DOS, Windows 3.x и Windows NT. Windows 95 обеспечивает несколько USB драйверов, и то только в поздних версиях начиная с OEM Software Release 2.1. Все версии Windows 98 и 2000 включают полный комплект драйверов для частых задач.

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

Реализация драйверов в Windows 98 основана на Win 32 Driver Model (WDM), которая распределяет различные части процесса передачи данных в стек драйверов (рис. 2). Приложение (с помощью API процедур) осуществляет связь с классовыми или дополнительными (собственными) драйверами в WDM. Внутри WDM стека данные передаются, используя низкоуровневые IRP (I/O request packets) взамен API.


Рис. 2: Windows USB WDM модель.

Низкоуровневый драйвер шины USB (USB Bus Driver) управляет питанием устройства, определением и различными USB транзакциями. Ниже, драйвер контроллера (Host Controller Driver) "общается" непосредственно с аппаратурой. Оба эти драйвера включены в поставке с Windows.

Windows, как и USB спецификация, подразделяет драйвера в "классы", где периферия, принадлежащая одному классу, поддерживает одинаковые интерфейсы. Определения классов основываются на документации из спецификации для данного набора характеристик; все устройства одного класса требуют подходящее программное обеспечение.

Примером является HID класс (устройства, взаимодействующие с пользователем), он поддерживает мышки, джойстики, клавиатуры. Еще есть Monitor класс, который управляет позицией, размером и выравниванием изображения на видео дисплеях. В Windows включен полноценный драйвер HID-класса. Если ваше оборудование нуждается в HID-образной поддержке, вы можете использовать встроенный драйвер без необходимости написания своего кода на PC.

Спецификации для HID драйверов можно найти на официальном сайте USB http://www.usb.org

Собственные драйверы являются альтернативой драйверам классов. Индивидуальный драйвер использует свойства отдельный частей оборудования, расположенных по ту сторону USB кабеля. Если вы сделали накопительное устройство, то драйверы класса вам не подойдут, придется писать собственные. Аналогично, если устройство имеет отличные от стандартного класса функции, придется писать драйвер для их поддержки. Компилировать драйвер можно в Visual C++, в любом случае необходимо скачать DDK, свободно доступное от Microsoft.
Если устройство отличается по функциональности от мышки, наверняка придется написать приложение, которое будет обмениваться данными с USB устройством и взаимодействовать с пользователем. Для обмена данными с USB устройством, приложение использует стандартные файл-подобные API вызовы, используя контекст (Handle), как идентификатор устройства.


Чипы


Так, как USB связана с многочисленными PC задачами, множество производителей предлагают сотни чипов.
Классифицировать составляющие USB можно на три вида:
ХОСТ - контроллер ("живет внутри PC"); устройства, разработанные как одиночные USB контроллеры (smart-UART) (обеспечивают связь, но нуждаются в главном процессоре как мозга устройства); и различные процессоры включающие USB интерфейс (используя метафору UART : процессор со встроенным uart-ом на борту). Ваш код и управляющий USB выполняется на одной стороне.
Помимо этих трех видов, производители предлагают специальные комплектующие : USB-камера контроллеры, аудио-устройства, мосты, которые соединяют USB с другими шинами и специализированные HID контроллеры.

Несколько ведущих продуктов :
Cypress Semiconductor ( http://www.cypress.com/) имеет различные high- и low- скоростные чипы базирующиеся на 8-бит RISC среде с набором инструкций оптимизирующих под USB код. С EEPROM и обычной памятью.

Cypress купили Anchor ( http://www.anchorchips.com/) ; Anchor's EZ-USB 8051-базирующиеся чипы используют стандартный набор команд имеют широкий ассортимент размеров RAM и ROM.

Scanlogic's SL16-USB ( http://www.scanlogic.com/) на индивидуальной архитектуре 12Mbps контроллер.

Philips' PDIUSBD11 подключает USB к I 2 C. I 2 C - двухжильный последовательный интерфейс, который многие давно уже используют. Таким образом, используя PDIUSBD11, вы можете безболезненно перевести ваш I 2 C продукт на USB.
Многие производители предлагают контроллеры со встроенным USB портом на борту, позволяя вам иметь доступ к USB без специального процессора. Продукты Motorola включают USB-aware 6805 (MC68HC05JB4) до PowerPC MPC850. AMD внесли USB в x86 архитектуру своим 186CC контроллером. И Atmel (AT43USB321) и Microchip (PIC 16C745) имеют микроконтроллеры с коммуникацией USB.

Некоторые поставщики предлагают низкоуровневые USB драйверы, которые вы можете встроить в ваши продукты. Phoenix ( http://www.phoenix.com), разрабатывающим на их BIOS, предлагается firmware USB стеки, которые используются во многих real-time (реального времени) операционных системах : Accelerated Technology, Lynx, и Integrated Systems/Wind River Systems.

Средства разработки также важны, как чипы и код. USB является комплексным протоколом, который переправляет множество данных. Отладка посредством просмотра последовательного потока на осциллографе не эффективна. Множество компаний предлагают протокол-анализаторы, которые отображают USB соединение и передаваемые данные в понятной форме. Два из них: Hitex's USB Agent ( http://www.hitex.de/465.html ) и CATC's USB Chief Bus & Protocol Analyzer ( http://www.catc.com/products/usb.html).
Заключение о соответствии поставщика
Организация, поддерживающая USB, создала программу "соответствия" для уверенности, что устройство отвечают стандартам спецификации. Хотя нет закона обязывающего проходить эти тесты, это обеспечивает гарантию беспроблемного использования устройства. Продукты, прошедшие программу добавляются в списки "Integrator's List", таким образом потребители могут убедиться в надежности продукции.
Ничто не стоит на месте, так и в изобретении новых USB стандартов. Версия 2.0 повышает скорость передачи до 480Mb/c. Несомненно, новые классы и продукты не за горами.


Ресурсы
http://www.embedded.com/

 

 

Rambler's Top100