Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
ЛЕКЦІЯ №13. УНІВЕРСАЛЬНА ПОСЛІДОВНА ШИНА USB.
USB (Universal Serial Bus универсальная последовательная шина) является промышленным стандартом расширения архитектуры PC, ориентированным на интеграцию с телефонией и устройствами бытовой электроники. Версия стандарта 1.0 была опубликована в 1996 году, большинство устройств поддерживают стандарт 1.1 (1998 г.), в нем были устранены обнаруженные проблемы первой редакции. В спецификации USB 2.0 радикально повышена пропускная способность шины. Первоначально (в версиях 1.0 и 1.1) шина обеспечивала две скорости передачи информации: полную скорость (Full Speed, FS) 12 Мбит/с и низкую скорость (Low Speed, LS) 1,5 Мбит/с. В версии 2.0 определена еще и высокая скорость (High Speed, HS) 480 Мбит/с, что позволяет существенно расширить круг устройств, подключаемых к шине. В одной и той же системе могут присутствовать и одновременно работать устройства со всеми тремя скоростями. Шина позволяет с использованием промежуточных хабов соединять устройства, удаленные от компьютера на расстояние до 30 м. Подробную и оперативную информацию по USB (на английском языке) можно найти на сайте http://www.usb.org. Разработку устройств, их классификацию и стандартизацию координирует организация USB-IF (USB Implemented Forum, Inc.).
Архитектура USB.
Шина USB представляет собой хост-центрическую аппаратно-программную систему подключения множества периферийных устройств. Хост-центричность понимается в нескольких аспектах:
Ниже перечислены компоненты аппаратной части USB:
Хост-контроллер (host controller) обеспечивает связь шины с ядром компьютера. Хост-контроллер объединяется с корневым хабом (root hub), организующим точки подключения устройств USB. Существует 2 варианта хост- контроллеров USB 1.x универсальный (Universal Host Controller, UHC) и открытый (Open Host Controller, OHC). Оба варианта поддерживают скорости FS/LS; высокую скорость шины USB 2.0 (HS и только) поддерживает расширенный хост-контроллер (Enhanced Host Controller, ЕНС).
Ниже перечислены компоненты программной части USB:
Работой всех устройств шины USB управляет хост-контроллер программно-аппаратная подсистема хост-компьютера. Хост-контроллер является интеллектуальным устройством шины PCI или составной частью «южного» хаба (моста) системной платы, интенсивно взаимодействующей с оперативной памятью.
Программная часть хоста в полном объеме реализуется операционной системой. До загрузки ОС может функционировать лишь усеченный фрагмент программной части USB, поддерживающий только те устройства, которые требуются для загрузки. В спецификации РС'2001 к BIOS выдвигается требование поддержки USB в такой мере, чтобы ОС могла загружаться с устройств USB. Современные версии BIOS обеспечивают возможность загрузки с устройств хранения, подключенных к USB: винчестеров, CD/DVD и флэш-карт. После загрузки системы эта «дозагрузочная» поддержка игнорируется система начинает работу с контроллером «с чистого листа», то есть со сброса и определения всех подключенных устройств.
В BIOS современных системных плат имеется поддержка традиционного интерфейса клавиатуры и мыши, подключаемых через контроллер 8042. В хост- контроллерах UHC и ОН С для этого имеются аппаратные средства, перехватывающие обращения к портам 60h и 64h пространства ввода/вывода (это порты контроллера 8042). При разрешенной эмуляции старых устройств (legacy input devices) по обращениям ПО к этим портам контроллер вызывает прерывание SMI (System Management Interrupt прерывание системного управления), обрабатывающееся в ПК на процессорах х86 в режиме SMM (System Management Mode режим системного управления) невидимо для обычных программ. Обработчик SMI, перехватывающий эти обращения, формирует последовательности действий, необходимые для их исполнения с помощью клавиатуры и/или мыши USB. В ОНС имеются специальные регистры, упрощающие задачу эмуляции.
Топология шины
Физическое устройство USB должно иметь интерфейс USB, обеспечивающий полную поддержку протокола USB, выполнение стандартных операций (конфигурирование и сброс) и предоставление информации, описывающей устройство. Физические устройства USB могут быть комбинированными (compound devices): включать в себя несколько устройств-функций, подключенных к внутреннему хабу, а также предоставлять своим внутренним хабом дополнительные внешние точки подключения.
Физическая топология USB многоярусная «звезда» (рис.1, а). Ее вершиной является хост-контроллер, объединенный с корневым хабом. Хаб является устройством-разветвителем; к тому же он может служить источником питания для подключенных к нему устройств. К каждому порту хаба может непосредственно подключаться периферийное устройство или промежуточный хаб; шина допускает до 5 уровней каскадирования хабов (не считая корневого). Поскольку комбинированные устройства содержат внутри себя хаб, их подключение к хабу 5-го уровня уже недопустимо. Каждый промежуточный хаб имеет несколько нисходящих (downstream) портов для подключения периферийных устройств (или нижележащих хабов) и один восходящий (upstream) порт для подключения к корневому хабу или нисходящему порту вышестоящего хаба.
Рисунок 1 Различные взгляды на отношенияв USB: а) физическая топология, б) логическая.
Логическая топология USB «звезда». Хабы (включая корневой) создают иллюзию непосредственного подключения каждого логического устройства к хост- контроллеру (рис.1, б). В этой «звезде» устанавливаются сугубо подчиненные отношения по системе опроса-ответа: хост-контроллер по своей инициативе передает данные выбранному устройству или принимает их. Устройство по своей инициативе передавать данные не может; непосредственные передачи данных между устройствами невозможны. Устройство по своей инициативе может лишь сигнализировать о пробуждении (wakeup), для чего используется специальная сигнализация, но не передача данных.
Физический интерфейс USB прост и изящен. Конструкция кабелей и коннекторов USB (рис.2, а и б) не дает возможности ошибиться при подключении устройств. Для распознавания разъема USB на корпусе устройства ставится стандартное символическое обозначение (рис. 2, в). Гнезда типа А устанавливаются только на нисходящих портах хабов, вилки типа А на шнурах периферийных устройств или восходящих портов хабов. Гнезда и вилки типа В используются только для шнуров, отсоединяемых от периферийных устройств и восходящих портов хабов (от «мелких» устройств мышей, клавиатур и т. п. кабели, как правило, не отсоединяются). Для малогабаритных устройств имеются разъемы mini-B, а для поддержки расширения OTG имеются вилки mini-A и розетки mini-AB. Хабы и устройства обеспечивают возможность «горячего» подключения и отключения с сигнализацией об этих событиях хосту.
Рисунок 2 Конектор USB: а) вилка типа А, б) вилка типа В, в) символическое обозначение.
При планировании соединений следует учитывать способ питания устройств: устройства, питающиеся от шины, как правило, подключают к хабам, питающимся от сети. К хабам, питающимся от шины, подключают лишь маломощные устройства так, к клавиатуре USB, содержащей внутри себя хаб, подключают мышь USB и другие устройства-указатели (трекбол, планшет).
Логическое устройство USB представляет собой набор независимых конечных точек (Endpoint, ЕР), с которыми хост-контроллер (и клиентское ПО) обменивается информацией. Каждому логическому устройству USB (как функции, так и хабу) конфигурационная часть ПО хоста назначает свой адрес (1-127), уникальный на данной шине USB. Каждая конечная точка логического устройства идентифицируется своим номером (0-15) и направлением передачи (IN передача к хосту, OUT от хоста). Точки IN4 и OUT4, к примеру, представляют собой разные конечные точки, с которыми могут общаться даже разные модули клиентского ПО. Набор конечных точек зависит от устройства, но всякое устройство USB обязательно имеет двунаправленную конечную точку 0 (ЕР0)> через которую осуществляется его общее управление. Для прикладных целей используются конечные точки с номерами 1...15 (1, 2 для низкоскоростных устройств). Адрес устройства, номер и направление конечной точки однозначно идентифицируют приемник или источник информации на данной шине при обмене хост-контроллера с устройствами USB. Каждая конечная точка имеет набор характеристик, описывающих поддерживаемый тип передачи данных (изохронные данные, массивы, прерывания, управляющие передачи, см. далее), размер пакета, требования к частоте обслуживания.
Устройство может решать несколько функциональных задач: например, привод CD-ROM может обеспечивать проигрывание аудиодисков и работать как устройство хранения данных. При этом в устройстве определяются интерфейс набор конечных точек, предназначенных для решения данной задачи, и правила их использования. Таким образом, каждое устройство должно предоставлять один или несколько интерфейсов. Наличие нескольких интерфейсов позволяет нескольким драйверам, каждый из которых обращается только к своему интерфейсу (представляющему часть устройства USB), работать с одним и тем же устройством USB. Каждый интерфейс может иметь один или несколько альтернативных вариантов (альтернативных установок alternate settings), из которых в данный момент активным может быть только один. Варианты различаются наборами (возможно, и характеристиками) используемых конечных точек.
Набор одновременно поддерживаемых интерфейсов составляет конфигурацию устройства. Устройство может иметь одну или несколько возможных конфигураций, из которых на этапе конфигурирования хоcт выбирает одну, делая ее активной. От выбранной конфигурации зависят доступная функциональность и зачастую потребляемая мощность. Пока устройству не назначен номер выбранной конфигурации, оно не может функционировать в прикладном смысле, и ток потребления от шины не должен превышать 100 мА. Хост выбирает конфигурацию, исходя из доступности всех ресурсов, затребованных данной конфигурацией, включая и ток потребления от шины.
Модель передачи данных
Архитектура USB допускает четыре базовых типа передач данных между хостом и периферийными устройствами:
♦ Изохронные передачи (isochronous transfers) потоковые передачи в реальном времени, занимающие предварительно согласованную часть пропускной способности шины с гарантированным временем задержки доставки. На полной скорости (FS) можно организовать один канал с полосой до 1,023 Мбайт/с (или два по 0,5 Мбайт/с), заняв 70 % доступной полосы (остаток можно занять и менее емкими каналами). На высокой скорости (HS) можно получить канал до 24 Мбайт/с (192 Мбит/с). Надежность доставки не гарантаруется в случае обнаружения ошибки изохронные данные не повторяются, недействительные пакеты игнорируются. Шина USB позволяет с помощью изохронных передач организовывать синхронные соединения между устройствами и прикладными программами. Изохронные передачи нужны для потоковых устройств: видеокамер, цифровых аудиоустройств (колонки USB, микрофон), устройств воспроизведения и записи аудио- и видеоданных (CD и DVD). Видеопоток (без компрессии) шина USB способна передавать только на высокой скорости.
Каждая единица клиентского ПО (обычно представляемая драйвером) связывается с одним интерфейсом своего устройства (функции) монопольно и независимо (рис. 3). Связи на этом рисунке обозначают коммуникационные каналы (communication pipes), которые устанавливаются между драйверами устройств и их конечными точками. Каналы могут устанавливаться только с конечными точками устройств, относящимися к выбранным (из альтернативных) вариантам интерфейсов активной конфигурации. Другие конечные точки недоступны.
Рисунок 3 Отношение клиенского ПО(CSw) с интерфейсами устройств USB.
Запросы, пакеты и транзакции
Для передачи или приема данных клиентское ПО посылает каналу пакет запроса ввода-вывода (Input/Output Request, IRP) и ждет уведомления о завершении его отработки. Формат IRP определяется реализацией драйвера USBD в конкретной ОС. В IRP имеются только сведения о запросе (местоположение буфера передаваемых данных в оперативной памяти и длина передачи); от свойств конкретного текущего подключения (скорость, допустимый размер пакета) драйвер устройства абстрагируется. Отработкой запроса в виде транзакций на шине USB занимается драйвер USBD; он при необходимости длинные запросы разбивает на части (пакеты), пригодные для передачи за одну транзакцию. Транзакция на шине USB это последовательность обмена пакетами между хостом и ПУ, в ходе которой может быть передан или принят один пакет данных (возможны транзакции, в которых данные не передаются). Отработка запроса считается завершенной в случае успешного выполнения всех связанных с ним транзакций. «Временные трудности», встречающиеся при их выполнении (неготовность к обмену данными), до сведения клиентского драйвера не доводятся ему остается только ждать завершения обменов (или выхода по тайм-ауту). Однако устройство может сигнализировать о серьезных ошибках (ответом STALL), что приводит к аварийному завершению запроса; о последнем уведомляется клиентский драйвер. В этом случае отбрасываются и все последующие запросы к данному каналу. Возобновление работы с данным каналом возможно лишь после явного уведомления об обработке ошибочной ситуации, которое драйвер устройства делает с помощью специального запроса (тоже вызова USBD).
Длинные запросы разбиваются на транзакции так, чтобы размер пакета был максимальным. Последний пакет с остатком может оказаться короче максимального размера. Хост может считать короткий пакет либо разделителем, указывающим на конец блока данных, либо признаком ошибки, по которому канал останавливается. При передаче массивов использование укороченных пакетов в качестве разделителей наиболее естественно. Например, в одном из вариантов протоколов для устройств хранения данных укороченные пакеты известной длины применяются в качестве управляющих.
Кабели и разъемы
Кабель USB содержит две пары проводов: одну для сигнальных цепей (D+ и D-) и одну для схемной «земли» (GND) и питания +5 В (Vbus). Допустимая длина сегмента (кабеля от устройства до хаба) до 5 м. Ограничения на длину сегмента диктуются затуханием сигнала и вносимыми задержками. Максимальное удаление устройства от хост-контроллера составляет 30 м (5 хабов, 6 кабельных сегментов). Оно определяется задержкой, вносимой кабелями, промежуточными хабами и самими устройствами.
В кабеле USB 1.x используются витая пара проводов для сигнальных цепей и неперевитая пара для питания; требований к экранированию кабелей не выдвигалось. Для низкой скорости может применяться кабель с неперевитой парой сигнальных проводов (он тоньше и дешевле), но его длина не должна превышать 3 м.
В кабелях USB 2.0 обязателен экран и связанный с ним дополнительный проводник. Такой кабель пригоден для работы на любых скоростях, включая и HS (480 Мбит/с).
Разъемы USB сконструированы с учетом простоты подключения и отключения устройств. Для реализации «горячего» подключения разъемы обеспечивают более раннее соединение и более позднее отсоединение питающих цепей по отношению к сигнальным. В USB определено несколько типов разъемов:
Рисунок 4 Разъёмы USB: а) гнездо А, б) гнездо В, в) гнездо mini-B, г)вилка mini-В,
д) вилка mini-А, е) гнездо mini-АВ.
Назначение выводов разъемов USB приведено в табл.1, нумерация контактов показана на рис. 4. Штырьковые разъемы, устанавливаемые на системной плате (рис.5), предназначены для кабелей-«выкидышей», которыми подключаются дополнительные разъемы USB, устанавливаемые на передней или задней стенках корпуса компьютера (иногда на боковых). На эти разъемы порты выводятся парами, причем у разных производителей подход к универсальности и защите от ошибочных подключений различен. Подключение «выкидыша», не подходящего к разъему, приводит к неработоспособности порта (к счастью, как правило, временной). Ошибка в подключении цепей GND и +5V может приводить к нагреванию кабелей и разъемов из-за короткого замыкания питающей цепи.
Рисунок 5 Варианті USB на системной плате.
ВНИМАНИЕ
Ошибка в полярности подводимого питания может необратимо повредить подключаемое устройство. По этой причине наиболее безопасными для подключаемого устройства являются внешние разъемы USB, запаянные на системной плате или карте контроллера USB. Их неправильное подключение маловероятно.
Таблица 1.
Цепь |
Контакт стандартного разъема |
Контакт мини-разъема |
Vbus (+5 В) |
1 |
1 |
D- |
2 |
2 |
D+ |
3 |
3 |
GND |
4 |
5 |
ID |
- |
4 |
Все кабели USB «прямые» в них соединяются одноименные цепи разъемов, кроме цепи ID, используемой для идентификации роли устройства в OTG. На вилке mini-A контакт 4 (ID) соединен с контактом 5 (GND), что заставляет порт, к которому подсоединена такая вилка, взять на себя роль нисходящего порта хаба. На вилке mini-B такого соединения нет.