Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Интерфейс USB в современных нестандандартных периферийных устройствах - Слизовский Е.В

..pdf
Скачиваний:
136
Добавлен:
24.05.2014
Размер:
1.07 Mб
Скачать

Приостановлен (Suspended) – порт передаёт сигнал перевода в состояние останова (Suspend Mode). Если хаб находится в состоянии Приостановлен, данные не пропускаются ни в одном направлении.

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

Обычно USB – устройство представляет собой USB – функцию с портом для подключения. Наиболее типичными функциями являются:

устройства вывода информации: принтеры, плоттеры, сканеры, акустические системы

устройства ввода информации: клавиатуры, сканеры, видеокамеры (WEB-камеры)

указывающие и игровые устройства: мышь, трекбол, джойстик, планшет

накопители: FLASH-диски (ЭСППЗУ), переносные жесткие диски

сетевые устройства: адаптер ISDN, адаптер ADSL, адаптер ЛВС (Ethernet-UTP)

преобразователи интерфейсов

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

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

рядового пользователя, поскольку для неё есть специальный портPS/2, который затруднительно использовать для подключения устройств кроме клавиатуры и мыши, но всёже мыши с интерфейсом USB можно встретить всё чаще. В основном, благодаря возможности конфигурирования частоты опроса (500Гц и более против 50Гц для PS/2) и введения дополнительных кнопок и колёсиков. Использование USB-клавиатуры также не всегда оправдано, интересна лишь возможность подключения USB-мыши, а также фотоаппарата, мобильного телефона и других часто переподключаемых устройств непосредственно к клавиатуре (благодаря встроенному хабу).

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

Преобразователи интерфейсов. В последнее время широкое распространение получили преобразователи интерфейсов USB-RS232, USB-IEE1284, предназначенные для относительно простого и недорого расширения количества «стандартных» портов COM, LPT (или замены испорченных , что с учётом отсутствия в них гальванической развязки весьма актуально). Для таких преобразователей появились даже специальные драйверы (например, VirtualComPort driver фирмы FTDI), позволяющие приложениям работать с преобразователем, как с настоящим портом.

Запоминающие устройства. В наши дни цены на Флеш-диски (ЭСППЗУ с интерфейсом USB) снижаются чуть-ли не ежедневно, вместе с тем их объём увеличивается. Уже не редкость флеш-диски объёмом 1ГБ (!), притом, что их размеры меньше размеров обычных 3,5” дискет. Флеш-диски с встроенным интерфейсом USB претендуют стать современным аналогом морально устаревшим и ненадёжным дискетам. Флеш-диск кроме всех преимуществ дискет обладает рядом значительных преимуществ: значительно больший объём, большая надёжность (отсутствие сбойных секторов), стойкость к внешним условиям (большая стойкость к магнитным полям, пылестойкость и механическая стойкость), большая скорость обмена данными (до 10 Мбайт/с против 20 Кбайт/с).

11

Измерительные устройства. В последнее время можно встретить всё больше измерительной техники с интерфейсом USB. Высокая скорость передачи данных позволяет подключать к USB цифровые осциллографы, генераторы сигналов, логические анализаторы, фактически представляющие собой высокоскоростные ЦАП и АЦП. Можно с уверенностью сказать, что интерфейс USB вытеснит в недалёком будущем многие другие интерфейсы (такие как RS232, IEE-1284) из измерительной техники. Примером измерительных устройств с интерфейсом USB могут служить осциллографы АСК-3106, АСК-3107 фирмы «Актаком» с частотой дискретизации до 10ГГц.

Адаптеры ЛВС. Конверторы USB-Ethernet обеспечивают подключение компьютера к локальной вычислительной сети без установки сетевой карты. Такой адаптер может поддерживать технологию Ethernet со скоростью 10/100 Мбит/с, но полностью поддерживать технологию Gigabyte Ethernet со скоростью передачи данных 1Гбит/с не сможет, поскольку скорость USB 2.0 составляет всего 480 Мбит/с. Такой преобразователь удобно использовать для подключения ноутбуков к ЛВС в случае, если PCMCIA-слот последнего занят другим адаптером.

12

1.1.4Механизм передачи данных

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

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

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

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

Интерфейсы хост-контроллера. На сегодняшний день существует три типа интерфейса хост-контроллеров (HC, Host Controller):

UHCI (Universal Host Controller Interface, универсальный интерфейс хост-

контроллера). Хост-контроллер UHCI отслеживает список кадров с 1024 указателями на структуры данных, соответствующих отдельному кадру. Он понимает два различных типа данных: описатели передач (TD, Transfer Description) и начала очереди (QH, Queue Heads).

Каждый TD представляет пакет, передаваемый из или в конечную точку устройства. QH имеет смысл для объединения TD вместе. Каждая передача состоит из одного или более пакетов.

OHCI (Open Host Controller Interface, открытый интерфейс хост-контроллера). В

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

EHCI (Enhanced Host Controller Interface, расширенный интерфейс хост-контроллера),

незначительно отличающийся от UHCI.

Возможность прямого доступа к памяти. Устройства USB-шины не имеют прямого доступа к системной памяти (DMA, Direct Memory Access). Они изолированы от системных ресурсов USB-интерфейсом хост-контроллера и не поддерживают способа DMA-передачи данных в привычном смысле. Тем не менее, USB-интерфейс хост-контроллера может обеспечивать «иллюзию» поддержки DMA для логических каналов, обеспечивающих доступ

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

Режимы передачи данных. Пропускная способность USB-шины, соответствующей спецификации 1.0 составляет 12 Мбит/с. Спецификация 2.0 определяет шину с пропускной способностью 400 Мбайт/с. Полоса пропускания делится между всеми устройствами, подключенными к шине.

По спецификации 2.0 шина USB имеет три режима передачи данных:

Низкоскоростной (LS, Low Speed) со скоростью до 1,5 Мбит/с

Полноскоростной (FS, Full Speed) со скоростью до 12 Мбит/с

Высокоскоростной (HS, High Speed) со скоростью до 400 Мбит/с

13

1.1.6 Ограничения USB.

Согласно спецификации USB, к одному хосту можно подключить до 127 устройств, но на практике это необязательно так. Ограничения накладывают два фактора: пропускная способность и мощность USB-шины. Для USB 1.1 между устройствами делится канал «шириной» всего 12 Мбит/с, поэтому одновременная работа наиболее «прожорливых» устройств будет затруднена. Интерфейс USB 2.0 более быстрый, но и здесь эта проблема остаётся актуальной. Ограничение мощности очень актуально для устройств, которые берут питание непосредственно от шины, однако от него легко избавится добавлением хаба с внешним питанием. Ещё одно ограничение связано с относительно малой длиной кабеля, о нём см. ниже

14

1.2 Аппаратное обеспечение

1.2.1 Кабели и разъемы.

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

Невозможность неправильного соединения разъёмов. Выходного порта одного хаба с выходным портом другого и входного порта одной функции (хаба) с входным портом другой функции (хаба).

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

Подключение сигнальных линий должно происходить после подключения заземления

ипитания (из-за необходимости выровнять потенциалы для «горячего» подключения и отключения устройств).

Простота и дешевизна кабелей и разъёмов.

Также спецификация USB 2.0 определяет три типа кабелей:

стандартный съёмный кабель. Служит для соединения хоста и хаба с устройством. С одной стороны заканчивается разъёмом типа «А» для подключения к хосту или хабу, а с другой стороны – разъём типа «В» для подключения к ПУ.

высокоскоростной (полноскоростной) несъёмный кабель.

низкоскоростной несъёмный кабель

Стандартный съёмный кабель служит для соединения хоста и хаба с устройством. С одной стороны заканчивается разъёмом типа «А» для подключения к хосту или хабу, а с другой стороны – разъём типа «В» для подключения к ПУ.

Несъёмный кабель заканчивается с одной стороны разъёмом типа «А» для подключения к хосту или хабу, а с другойжестко прикреплён к периферийному устройству.

Высокоскоростной и полноскоростной кабели имеют импеданс 90±15 Ом и полную задержку распространения сигнала 26 нс. Такой кабель обязательно должен иметь витую пару из сигнальных проводников и экран. Такой кабель можно использовать и для низкоскоростного соединения.

Низкоскоростной кабель предназначен для работы со скоростью до 1,5 Мбайт/с. В связи с этим требования к помехозащищённости такого кабеля значительно мягче: такой кабель может и не иметь витой пары из сигнальных проводников и экрана. Его ёмкость должна находиться в пределах 200-450 пФ, а задержка распространения сигнала не должна быть больше 18 нс.

Спецификации USB жёстко регламентируют цвета проводников в кабеле. Так линия питания (+5 В) имеет красный цвет, линии данных D+ и D- имеют соответственно зелёный и белый цвета, а заземление (Gnd) – черный.

15

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

Для передачи данных по шине используется дифференциальный способ передачи сигналов D+ и D- по двум проводам. Ещё по двум проводам к ПУ подводится питание и заземление.

Сигналы синхронизации кодируются по методу NRZI (Non Return to Zero Invert). В этой кодировке логическая «1» представляется неизменным уровнем напряжения на протяжении всего битового интервала, а логический «0» представляется сменой уровня на противоположный на протяжении битового интервала. Вообще говоря, этот метод представляет собой модификацию потенциального кодирования NRZ (Non Return to Zero, невозврат к нулю), когда для представления «1» и «0» используются потенциалы двух уровней, но в методе NRZI потенциал, используемый для кодирования текущего бита, зависит от потенциала, который использовался для кодирования предыдущего бита. Если текущий бит имеет значение «1», то текущий потенциал представляет собой инверсию потенциала предыдущего бита в независимости от его значения. Если же текущий бит имеет значение «0», то текущий потенциал повторяет предыдущий. Если данные содержат и «0» и «1», тогда приёмнику сравнительно несложно поддерживать синхронизацию – сигнал будет изменяться. Но в случае, если передаётся длинная последовательность единиц, то уровень сигнала меняться не будет, и станет возможной рассинхронизация. Следовательно, для надёжной передачи данных нужно исключить из кодов слишком длинные последовательности единиц. Это действие называется стаффинг (bit stuffing): после каждых шести единиц автоматически добавляется «0».

Несложно проверить, что существует всего три байта с шестью последовательно расположенными единицами: 00111111, 01111110, 11111100, поэтому стаффинг теоретически может занимать до 17% трафика, но несложный расчёт показывает, что в реальных условиях на стаффинг, в среднем, расходуется 0,2%.

Низкоскоростные и полноскоростные устройства различаются хостом с помощью подтягивающих резисторов, подключенных к линиям данных. Так в низкоскоростном устройстве линия D- должна быть подключена к напряжению 2,8-3,5 В через резистор с сопротивлением 15 Ком (14,25-24,8 КОм). В высокоскоростных устройствах вместо линии D- «подтягивается» D+, а в высокоскоростных устройствах подтягивающий резистор отключается после окончания конфигурирования для предотвращения рассогласования линии.

Дифференциальный «0» передаётся путём «подтяжки» линии D+ к напряжению <0,3 В, а линии D- к напряжению >2,8 В. Приемник определяет дифференциальную единицу только в том случае, когда напряжение на линии D+ больше на 200 мВ, чем на линии D-, а дифференциальный ноль – когда напряжение на линии D+ меньше на 200 мВ, чем на линии

D-.

Передача по паре проводов в USB не ограничивается дифференциальными сигналами. Кроме дифференциального приемника каждое устройство имеет линейные приёмники сигналов D- и D+, а передатчики таких линий могут управляться индивидуально. Это позволяет осуществлять первый шаг конфигурирования (определение скорости подключенного устройства) непосредственно при подключении устройства к шине.

Состояние, при котором разность потенциалов на обоих входах D+ и D- составляет более 200 мВ при условии, что на одной из линий потенциал выше порога переключения Vse, называются состоянием Diff0 или Diff1. Состояние, при котором на обоих входах D+ и D- присутствует низкий уровень, называются линейным нулём (SE0, Single Ended Zero).

Интерфейсом определяются следующие понятия:

Data J State и Data K State (или просто K и J) – состояния передаваемого бита, определяющиеся через состояния Diff0 и Diff1.

Idle State – состояние паузы на шине.

16

Resume State – сигнал «пробуждения» для вывода устройства из режима пониженного энергопотребления.

Start of Packet (SOP) – начало пакета (переход из Idle State в К)

End of Packet (EOP) – конец пакета

Disconnect устройство отключено от порта

Connect – устройство подключено к порту

Reset – сброс устройства

Состояния определяются сочетаниями дифференциальных и линейных сигналов. Для полной и низкой скоростей состояния Diff0 и Diff1 имеют противоположное назначение. При декодировании состояний Disconnect, Connect, Reset учитывается время нахождения линий (> 2,5 мс) в определённых состояниях.

17

1.2.3 Питание

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

с питанием от шины (Bus Powered Devices) и малым потреблением – до 100 мА

с питанием от шины и большим потреблением – должны потреблять не более 100 мА при подключении к шине и не более 500 мА после конфигурирования

с собственным питанием (Self Powered Devices) – должны потреблять ток от шины не более 100 мА, а остальную мощность потреблять от собственного блока питания.

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

Согласно спецификации USB потребляемая мощность измеряется в блоках (Unit). Один блок составляет 100 мА. Таким образом, устройства с малым потреблением могут использовать один блок, а с большим потреблением – до 5 блоков.

Все устройства должны поддерживать режим пониженного энергопотребления (Suspend Mode). USB-устройство должно входить в этот режим. Когда на шине нет активности более 3 мс. У USBустройства есть 7 мс для того, чтобы погрузить себя в состояние «сна» и установить ток потребления от шины не более заявленного значения. Для предотвращения погружения устройств в режим «сна» хост-контроллер может периодически выдавать на линию сигнал начала пакета SOF.

Ток, потребляемый устройством в таком режиме пропорционален указанному потреблению в блоках. Для устройства с потреблением тока в 1 блок (100 мА) ток в энергосберегающем режиме не должен превышать 500 мкА с учётом тока через подтягивающий резистор на одной из линий D+ или D-, который составляет: 3,3 В/15000 Ом

=0,00022 А= 220 мкА. Следовательно, управляющему контроллеру «остаётся» всего 280 мкА, поэтому в режиме энергосбережения обычно управляющий микроконтроллер и всю его периферию погружают в режим «сна» (Idle Mode). При превышении лимита хаб может отключить устройство от шины.

18

1.3Внутренняя организация шины.

1.3.1Логические уровни обмена данными

Вся система USB делится на три логических уровня с определёнными правилами взаимодействия. Устройство USB содержит интерфейсную, логическую и функциональную части. Хост также делится на три части – интерфейсную, системную и программное обеспечение (ПО). Каждая часть отвечает за определённый круг задач. Логическое и реальное взаимодействие между ними показано на рис. 1.4. (3.1)

Таким образом, операция обмена данными между прикладной программой и шиной USB выполняется путём передачи буферов памяти через следующие уровни:

уровень клиентского ПО в хосте:

представляется драйвером устройства USB

обеспечивает взаимодействие пользователя с операционной системой с одной стороны и системным драйвером с другой

уровень системного обеспечения USB в хосте (USBD, Universal Serial Bus Driver):

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

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

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

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

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

работает с регистрами хост контроллера.

19

1.3.2 Передача данных по уровням

Логически передача данных между конечной точкой и ПО производится с помощью выделения канала и обмена данными по нему, а с точки зрения представленных уровней, передача данных выглядит следующим образом:

клиентское ПО посылает IRP-запросы уровню USBD

драйвер USBD разбивает запросы на транзакции следующим образом:

выполнение запроса считается законченным, когда успешно завершены все составляющие его транзакции.

все подробности обработки транзакций (ожидание готовности, повтор транзакции при ошибке, неготовность приёмника и т. п.) до клиентского ПО не доводятся

ПО может лишь запустить запрос и ожидать выполнения запроса или выхода по

тайм-ауту

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

Драйвер контроллера хоста принимает от системного драйвера шины перечень транзакций и выполняет следующие действия:

планирует исполнение полученных транзакций, добавляя их к списку транзакций

извлекает из списка очередную транзакцию и передаёт её уровню хостконтроллера интерфейса шины USB

отслеживает состояние каждой транзакции вплоть до её завершения

Хост-контроллер интерфейса USB формирует кадры

Кадры передаются последовательной передачей по методу NRZI (см. выше)

Таким образом можно сформировать обобщённую схему составляющих USB-протокола , показанную на рис. 1.5. (3.3)

20