Универсальная последовательная шина. Что такое шина USB? Спецификация usb напряжение на шине

Шины PCI и PCI Express подходят для соединения высокоскоро­стных периферийных устройств, но использовать интерфейс PCI для низкоско­ростных устройств ввода-вывода (например, мыши и клавиатуры) неэффективно.

Кроме того, для добавления новых уст­ройств использовались свободные ISA- и PCI-слоты, в которые вставлялись платы контроллеров УВВ.

При этом пользователь должен сам установить пе­реключатели и перемычки на, затем должен открыть систем­ный блок, вставить плату, закрыть системный блок и включить ком­пьютер.

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

В 1993 году представители семи компаний (Compaq, DEC, IBM, Intel, Micro­soft, NEC и Nothern Telecom) разработали шину, опти­мально подходящую для подсоединения низкоскоростных устройств.

Результатом их работы стала шина USB (Universal Serial Bus - универсальная последовательная шина), удовлетворяющую следующим требованиям:

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

Общая пропускная способность первой версии шины (USB 1.0) составляет 12 Мбит/с.

Версия 2.0 работает на скорости 480 Мбит/с что вполне достаточно для принтеров, цифровых камер и многих других устройств. Предел был выбран для того, чтобы снизить стоимость шипы.

Версия USB 3.0 повышает максимальную скорость передачи информации до 5 Гбит/с - что на порядок больше USB 2.0 (480 Мбит/с). Таким образ, скорость передачи возрастает с 60 Мбайт/с до 600 Мбайт/с

Шина USB состоит из корневого хаба (root hub), который вставляется в разъем главной шины (см, рис. 3.49). Этот корневой хаб (часто называемый корневым концентратором) содержит разъемы для кабелей, которые могут подсоединяться к устройствам ввода-вывода или к дополнительным хабам, чтобы увеличить ко­личество разъемов.

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



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

Кабель состоит из четырех проводов: два из них предназначены для переда­чи данных, один - для питания (+5 В) и один - для земли. Система передает 0 изменением напряжения, а 1 - отсутствием изменения напряжения» поэтому длинная последовательность нулевых битов порождает поток регулярных им­пульсов.

Когда соединяется новое устройство ввода-вывода, корневой хаб обнаружи­вает этот факт и прерывает работу операционной системы.

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

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

Таким образом, новые устройства могут подсоединяться *ша лету», при этом пользователю не нужно устанавливать новые платы ISA или PCI.

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

Шипа USB представляет собой ряд каналов между корневым хабом и устрой­ствами ввода-вывода. Каждое устройство может разбить свой канал максимум на 16 подканалов для различных типов данных (например, аудио и видео).

В ка­ждом канале или подканале данные перемещаются от корневого хаба к устройст­ву и обратно- Между двумя устройствами ввода-вывода обмена информацией не происходит.

Ровно через каждую миллисекунду (±0,05 мс) корневой хаб передает новый кадр, чтобы синхронизировать все устройства во времени. Кадр состоит из пакетов, первый из которых передается от хаба к устройству. Следующие пакеты кадра могут передаваться в том же направлении, а могут и в противоположном (от уст­ройства к хабу). На рис. 3,55 показаны четыре последовательных кадра.

В 1998 году была создана высокоскоростная версии USB, названной USB 2.0. Этот стандарт во многом аналогичен USB 1A и совместим с ним, однако к двум прежним скоростям в нем добавляется новая - 480 Мбайт/с.

3 Организации памяти в ЭВМ

3.1 Иерархическая организация памяти и принцип локальности ссылок

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

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

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

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


Р и с. 3.1. Иерархическая организация памяти

ОЗУ - оперативное запоминающее устройство;

ПЗУ - постоянное запоминаю­щее устройство;

CD/DVD - накопитель на оптических дисках;

HDD (Hard Disk Drive) - накопитель на жестком магнитном диске;

SSD (Solid State Drive) - накопитель на«твердом» диске

На рис. 3.1 видно, что на более высоких уровнях иерархии расположены устройства с меньшей емкостью памяти, но с большим быстродей­ствием.

Регистровая память или регистровый файл изготавливается в кри­сталле процессора по такой же технологии и имеет такое же быстро­действие, как и операционные элементы процессора.

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

Во многих моделях процессоров кэш- память второго уровня интегрирована в ядро процессора.

Кэш-память третьего уровня выполняется в виде отдельной ми­кросхемы с высоким быстродействием, либо в процессоре, как в ар­хитектуре Nehalem.

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

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

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

Кроме того, программы содержат множество не­больших циклов и подпрограмм, которые многократно повторяются в течение интервала времени.


На рис. 3.2 показаны размещенные в па­мяти два участка программы и соответствующие им области данных.

Р и с. 3.2. Расположение программы и данных в памяти и локальность ссылок

Это явление называется локальность ссылок или локальность по обращению. Известно правило «90/10» - то есть 90% времени работы программы связано с обращением к 10% адресного пространства этой программы.

3.2 Взаимодействие процессора и различных уровней памяти

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

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

Размер блока может быть либо фиксированным, либо переменным. Если этот размер за­фиксирован, то объем памяти является кратным размеру блока.

Успешное или неуспешное обращение к более высокому уровню называются соответственно попаданием (hit) или промахом (miss).

Попадание - обращение к объекту в памяти, который найден на более высоком уровне, в то время как промах означает, что он не найден на этом уровне.

Доля попаданий или коэффициент попаданий есть доля обращений, найденных на более высоком уровне.

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

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

Потери на промах включают в себя две компоненты: время доступа - время об­ращения к первому слову блока при промахе, и время пересылки - дополнительное время для пересылки оставшихся слов блока.

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

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

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

При этом процессор «не знает», на каком уровне памяти находится этот исполнительный адрес, поэтому сразу формируется обращение к ОП.

Будем рассматривать блочную организацию данных.

· В регистровой памяти данные записы­ваются блоками в виде слов длиной 16, 32, 64 и 128 бит .

· В кэш-памя­ти блоком является строка длиной 16, 32 или 64 байта . В ОП чаще всего используются страницы по 4 - 8 Кб .

· На жестких дисках блоки - это сектора по 512 байт . Как правило, размер страницы ОП кратен длине сектора винчестера.

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

Если в кэш-памяти нет данных с адресом А исп, то нужный блок ищется в оперативной памя­ти, затем загружается в кэш-память и одновременно передается в про­цессор.

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

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

3.3 Адресная память

В адресном запоминающем устройстве (ЗУ) каждый запоминаю­щий элемент памяти - ячейка, имеет адрес, который показывает его расположение в адресном пространстве.

Поиск информации произво­дится по номеру (адресу) запоминающей ячейки, хранящей данные.

Совокупность N запоминающих ячеек образует запоминающую матрицу ЗМ.

Для компактного расположения запоминающих ячеек и упроще­ния доступа к ним ЗМ организуется как трехмерный куб.

В нем име­ются две адресные координаты A 1 и A 2 , а по третьей координате рас­полагаются

n-разрядные слова.

Если адрес, поступающий с ША, име­ет разрядность к, то он разделяется на две компоненты по k/2 адрес­ных бита:

M= 2 k /2 х 2 k /2 = 2 k .

В этом случае вместо одного ДША с M выходами используются два дешифратора с 2 k /2 выходами, что значи­тельно упрощает схемную реализацию.

На рис. 3.3. показана структурная схема адресного запоминающе­го устройства.

Запоминающая матрица ЗМ имеет две координаты: строки и столбцы. Блок управления (БУ) управляет устройствами ЗУ, получая извне сигналы: RAS, CAS, СЕ, WE и OE.

Сигнал выбора микросхемы СЕ разрешает работу именно этой микросхемы памяти.

Режим чтения или записи определяется сигна­лом WE. На все время, пока микросхема не использует шину данных ШД, информационные выходы регистров переводятся сигналом OE в третье состояние с высоким выходным сопротивлением.

Адрес строки на шине ША сопровождается сигналом RAS, разре­шающим прием адреса и его дешифрацию. После этого сигнал CAS разрешает прием и дешифрацию адреса столбца.

Каждый столбец имеет вторую линию чтения/записи, - для данных. Эти линии на рис. 3.3 показаны пунктиром.

Управление операциями с памятью осуществляется контролле­ром памяти. На каждую операцию требуется, как минимум, пять тактов.

Указание типа операции (чтение или запись) и установка ад­реса строки.


Формирование сигнала RAS.

Установка адреса столбца.

Формирование сигнала CAS.

Запись или выдача данных и возврат сигналов RAS и CAS в неактивное состояние.

Р и с. 3.3. Адресное запоминающее устройство

ЗМ - запоминающая матрица;

RAS - сигнал строба строки (Row Address Strobe);

CAS - сигнал строба столбца(Column Address Strobe);

WE - разрешение записи (Write Enable);

OE - разрешение выдачи выходных сигналов (Output Enable);

CS - выбор микросхемы (Chip Select)

Латентность памяти и тайминги

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

Например, после выполнения команды чте­ния должна следовать задержка CAS (CAS La­tency). Это и есть ла­тентность (CL) - наиболее важная характеристика памяти.

Очевидно, чем меньше латентность, тем быстрее работает память.

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

Существует несколько видов таймингов памяти.

CL: CAS Latency - время, проходящее от момента подачи команды в память до начала ответа на этот запрос. Это вре­мя, которое проходит между запросом процессора на полу­чение некоторых данных из памяти и моментом выдачи этих данных памятью.

RAS-to-CAS (tRCD): задержка от RAS до CAS - время, ко­торое должно пройти с момента обращения к строке матри­цы (RAS), до момента обращения к ее столбцу матрицы (CAS), с целью выборки данных в которых хранятся нужные данные.

RAS Precharge(tRP) - интервал времени между моментом за­крытия доступа к одной строке и началом доступа к другой строке данных.

Active to Precharge или Cycle Time (tRAS) - пауза, которая нужна памяти, чтобы вернуться в состояние ожидания сле­дующего запроса.

CMD: Скорость поступления команды (Command Rate) - время с момента активации чипа памяти до момента, когда первая команда может обратиться к ней. Обычно это T1 (один тактовый цикл) или T2 (два тактовых цикла).

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

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

В течение последних 25-ти лет латентность оперативной памяти уменьшилась всего в три раза. При этом тактовая частота процессо­ров возросла в сотни раз.

3.4 Ассоциативная память

Понятие «ассоциация» относится, прежде всего, к памяти, в кото­рой выборка осуществляется не по адресному принципу, а по содер­жанию.

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


Поиск ведется с использованием ассоци­ативных признаков. Структура такой памяти представлена на рис. 3.4 .

Р и с. 3.4. Ассоциативная память

ЗМ - запоминающая матрица;

ШП - шина признака;

ШД - шина данных

Память хранит M ячеек для m+1 -разрядных слов, имеющих зна­чения признаков.

Служебный m +1-й разряд показывает: «0» - ячейка свободна для записи, «1» - ячейка занята. Значения ассоциативного признака формируются регистром маски из полей признаков, посту­пающих из шины признаков ШП в регистр ассоциативного признака.

Поиск в запоминающей матрице выполняется за один такт одновре­менно по полям ассоциативных признаков всех хранящихся слов.

Это является отличительной чертой ассоциативных устройств памяти.

Ре­ализация такого поиска осуществляется комбинационными схемами совпадения на базе элементов «сложение по модулю 2».

· Лекция 14. Универсальная последовательная шина USB.

Толковый словарь по вычислительным системам определяет понятие интерфейс (interface) как границу раздела двух систем, устройств или программ; элементы соединения и вспомогательные схемы управления, используемые для соединения устройств. Мы же поговорим о интерфейсах, позволяющих подключать к персональным (и не только) компьютерам разнообразные периферийные устройства и их контроллеры. По способу передачи информации интерфейсы подразделяются на параллельные и последовательные. В параллельном интерфейсе все биты передаваемого слова (обычно байта) выставляются и передаются по соответствующим параллельно идущим проводам одновременно. В PC традиционно используется параллельный интерфейс Centronics, реализуемый LPT-портами. В последовательном же интерфейсе биты передаются друг за другом, обычно по одной линии. СОМ порты PC обеспечивают последовательный интерфейс в соответствии со стандартом RS-232C. При рассмотрении интерфейсов важным параметром является пропускная способность.

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

Широко используемый последовательный интерфейс синхронной и асинхронной передачи данных.

2.Шина USB.Общая характеристика.

USB (Universal Serial Bus - универсальная последовательная шина) является промышленным стандартом расширения архитектуры PC, ориентированным на интеграцию с телефонией и устройствами бытовой электроники. Версия 1.0 была опубликована в январе 1996 года. Архитектура USB определяется следующими критериями:

Ø Легко реализуемое расширение периферии PC.

Ø Дешевое решение, поддерживающее скорость передачи до 12 M бит/с.

Ø Полная поддержка в реальном времени передачи аудио и (сжатых) видеоданных.

Ø Гибкость протокола смешанной передачи изохронных данных и асинхронных сообщений.

Ø Интеграция с выпускаемыми устройствами.

Ø Доступность в PC всех конфигураций и размеров.

Ø Обеспечение стандартного интерфейса, способного быстро завоевать рынок.

Ø Создание новых классов устройств, расширяющих PC.

Ø С точки зрения конечного пользователя, привлекательны следующие черты USB:

Ø Простота кабельной системы и подключений.

Ø Скрытие подробностей электрического подключения от конечного пользователя.

Ø Самоидентифицирующиеся ПУ, автоматическая связь устройств с драйверами и конфигурирование.

Ø Возможность динамического подключения и конфигурирования ПУ.

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

Структура USB

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

Ниже приводится авторский вариант перевода терминов из спецификации "Universal Serial Bus Specification", опубликованной Compaq , DEC , IBM , Intel , Microsoft , NEC и Northern Telecom . Более подробную и оперативную информацию можно найти по адресу:

Устройства (Device) USB могут являться хабами, функциями или их комбинацией. Хаб (Hub) обеспечивает дополнительные точки подключения устройств к шине. Функции (Function) USB предоставляют системе дополнительные возможности, например подключение к ISDN, цифровой джойстик, акустические колонки с цифровым интерфейсом и т. п. Устройство USB должно иметь интерфейс USB, обеспечивающий полную поддержку протокола USB, выполнение стандартных операций (конфигурирование и сброс) и предоставление информации, описывающей устройство. Многие устройства, подключаемые к USB, имеют в своем составе и хаб, и функции. Работой всей системы USB управляет хост-контроллер (Host Controller), являющийся программно-аппаратной подсистемой хост-компьютера.

Физическое соединение устройств осуществляется по топологии многоярусной звезды. Центром каждой звезды является хаб, каждый кабельный сегмент соединяет две точки - хаб с другим хабом или с функцией. В системе имеется один (и только один) хост-контроллер, расположенный в вершине пирамиды устройств и хабов. Хост-контроллер интегрируется с корневым хабом (Root Hub), обеспечивающим одну или несколько точек подключения - портов. Контроллер U SB, входящий в состав чипсетов, обычно имеет встроенный двухпортовый хаб. Логически устройство, подключенное к любому хабу USB и сконфигурированное (см. ниже), может рассматриваться как непосредственно подключенное к хост-контроллеру.

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

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

Примерами функций являются:

Ø Указатели - мышь, планшет, световое перо.

Ø Устройства ввода - клавиатура или сканер.

Ø Устройство вывода - принтер, звуковые колонки (цифровые).

Ø Телефонный адаптер ISDN.

Хаб - ключевой элемент системы РпР в архитектуре USB. Хаб является кабельным концентратором. Точки подключения называются портами хаба. Каждый хаб преобразует одну точку подключения в их множество. Архитектура допускает соединение нескольких хабов.

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

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

Система USB разделяется на три уровня с определенными правилами взаимодействия. Устройство USB содержит интерфейсную часть, часть устройства и функциональную часть. Хост тоже делится на три части - интерфейсную, системную и ПО устройства. Каждая часть отвечает только за определенный круг задач, логическое и реальное взаимодействие между ними иллюстрирует рис. 7.1.

В рассматриваемую структуру входят следующие элементы:

Ø Физическое устройство USB - устройство на шине, выполняющее функции, интересующие конечного пользователя.

Ø Client SW - ПО, соответствующее конкретному устройству, исполняемое на хост-компьютере. Может являться составной частью ОС или специальным продуктом.

Ø USB System SW - системная поддержка USB, независимая от конкретных устройств и клиентского ПО.

Ø USB Host Controller - аппаратные и программные средства для подключения устройств USB к хост-компьютеру.

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

Стандарт 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 приемопередатчиков (см. рис. 7.2 и 7.3)

Сигналы синхронизации кодируются вместе с данными по методу NRZI (Non Return to Zero Invert), его работу иллюстрирует рис. 7.4. Каждому пакету предшествует поле синхронизации SYNC, позволяющее приемнику настроиться на частоту передатчика. Кабель также имеет линии VBus и GND для передачи питающего напряжения 5 В к устройствам.

Сечение проводников выбирается в соответствии с длиной сегмента для обеспечения гарантированного уровня сигнала и питающего напряжения. Стандарт определяет два типа разъемов (см. табл. 7.1 и рис. 7.5).

Разъемы типа "А" применяются для подключения к хабам (Upstream Connector). Вилки устанавливаются на кабелях, не отсоединяемых от устройств (например, клавиатура, мышь и т. п.). Гнезда устанавливаются на нисходящих портах (Downstream Port) хабов. Разъемы типа "В" (Downstream Connector) устанавливаются на устройствах, от которых соединительный кабель может отсоединяться (принтеры и сканеры). Ответная часть (вилка) устанавливается на соединительном кабеле, противоположный конец которого имеет вилку типа "А".

Разъемы типов "А" и "В" различаются механически (рис. 7.5), что исключает недопустимые петлевые соединения портов хабов. Четырехконтактные разъемы имеют ключи, исключающие неправильное присоединение. Конструкция разъемов обеспечивает позднее соединение и раннее отсоединение сигнальных цепей по сравнению с питающими. Для распознавания разъема USB на корпусе устройства ставится стандартное символическое обозначение.

Рис. 7.5. Гнезда USB: а - типа "А", б - типа "В", в - символическое обозначение

Питание устройств USB возможно от кабеля (Bus-Powered Devices) или от собственного блока питания (Self-Powered Devices). Хост обеспечивает питанием непосредственно подключенные к нему ПУ. Каждый хаб, в свою очередь, обеспечивает питание устройств, подключенных к его нисходящим портам. При некоторых ограничениях топологии допускается применение хабов, питающихся от шины. На рис. 7.6 приведен пример схемы соединения устройств USB.

Здесь клавиатура, перо и мышь могут питаться от шины.

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 состоят из трех пакетов. Каждая транзакция планируется и начинается по инициативе контроллера, который посылает пакет-аркер (Token Packet). Он описывает тип и направление передачи, адрес ус-тройства USB и номер конечной точки. В каждой транзакции возможен обмен только между адресуемым устройством (его конечной точкой) и хостом. Адресуемое маркером устройство распознает свой адрес и готовится к обмену. Источник данных (определенный маркером) передает пакет данных (или уведомление об отсутствии данных, предназначенных для передачи). После успешного приема пакета приемник данных посылает пакет подтверждения (Handshake Packet).

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

Устойчивость к ошибкам обеспечивают следующие свойства USB:

Ø Высокое качество сигналов, достигаемое благодаря дифференциальным приемникам/передатчикам и экранированным кабелям.

Ø Защита полей управления и данных CRC-кодами.

Ø Обнаружение подключения и отключения устройств и конфигурирование ресурсов на системном уровне.

Ø Самовосстановление протокола с тайм-аутом при потере пакетов.

Ø Управление потоком для обеспечения изохронности и управления аппаратными буферами.

Ø Независимость функций от неудачных обменов с другими функциями.

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

Устройства USB - функции и хабы

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

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

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

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

Устройство USB должно поддерживать приостановку (Suspended Mode), в котором его потребляемый ток не превышает 500 мкА. Устройство должно автоматически приостанавливаться при прекращении активности шины.

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

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

Нисходящие (Downstream) порты хабов могут находиться в следующих состояниях:

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

Ø Disconnected (отсоединен) - порт не передает сигналы ни в одном направлении, но способен обнаружить подключение устройства (по отсутствию состояния SEO в течение 2,5 мкс). Тогда порт переходит в состояние Disabled, а по уровням входных сигналов {DiffO или Diff1 в состоянии Idle) он определяет скорость подключенного устройства.

Ø Disabled (запрещен) - порт передает только сигнал сброса (по команде от контроллера), сигналы от порта (кроме обнаружения отключения) не воспринимаются. По обнаружении отключения (2,5 мкс состояния SEO) порт переходит в состояние Disconnect, а если отключение обнаружено "спящим" хабом, контроллеру будет послан сигнал Resume.

Ø Enabled (разрешен) - порт передает сигналы в обоих направлениях. По команде контроллера или по обнаружении ошибки кадра порт переходит в состояние Disabled, а по обнаружении отключения - в состояние Disconnect.

Ø Suspended (приостановлен) - порт передает сигнал перевода в состояние останова ("спящий" режим). Если хаб находится в активном состоянии, сигналы через порт не пропускаются ни в одном направлении. Однако "спящий" хаб воспринимает сигналы смены состояния незапрещенных портов, подавая "пробуждающие" сигналы от активизировавшегося устройства даже через цепочку "спящих" хабов. Состояние каждого порта идентифицируется контроллером хаба с помощью отдельных регистров. Имеется общий регистр, биты которого отражают факт изменения состояния каждого порта (фиксируемый во время EOF). Это позволяет хост-контроллеру быстро узнать состояние хаба, а в случае обнаружения изменений специальными транзакциями уточнить состояние.

Хост-контроллер

Хост-компьютер общается с устройствами через контроллер. Хост имеет следующие обязанности:

Ø обнаружение подключения и отсоединения устройств USB;

Ø манипулирование потоком управления между устройствами и хостом;

Ø управление потоками данных;

Ø сбор статистики;

Ø обеспечение энергосбережения подключенными ПУ.

Ø Системное ПО контроллера управляет взаимодействием между устройствами и их ПО, функционирующим на хост-компьютере, для согласования:

Ø нумерации и конфигурации устройств;

Ø изохронных передач данных;

Ø асинхронных передач данных;

Ø управления энергопотреблением;

Ø информации об управлении устройствами и шиной.

USB обеспечивает обмен данными между хост-компьютером и множеством периферийных устройств (ПУ). Согласно спецификации USB, устройства (devices) могут являться хабами, функциями или их комбинацией. Устройство-хаб (hub) только обеспечивает дополнительные точки подключения устройств к шине. Устройство-функция (function) USB предоставляет системе дополнительные функциональные возможности, например подключение к ISDN, цифровой джойстик, акустические колонки с цифровым интерфейсом и т. п. Комбинированное устройство (compound device), содержащее несколько функций, представляется как хаб с подключенными к нему несколькими устройствами. Устройство USB должно иметь интерфейс USB, обеспечивающий полную поддержку протокола USB, выполнение стандартных операций (конфигурирование и сброс) и предоставление информации, описывающей устройство. Работой всей системы USB управляет хост-контроллер (host controller), являющийся программно-аппаратной подсистемой хост-компьютера. Шина позволяет подключать, конфигурировать, использовать и отключать устройства во время работы хоста и самих устройств. Шина USB является хостцентрической: единственным ведущим устройством, которое управляет обменом, является хост-компьютер, а все присоединенные к ней периферийные устройства - исключительно ведомые. Физическая топология шины USB - многоярусная звезда. Ее вершиной является хост-контроллер, объединенный с корневым хабом (root hub), как правило, двухпортовым. Хаб является устройством-разветвителем, он может являться и источником питания для подключенных к нему устройств. К каждому порту хаба может непосредственно подключаться периферийное устройство или промежуточный хаб; шина допускает до 5 уровней каскадирования хабов (не считая корневого). Поскольку комбинированные устройства внутри себя содержат хаб, их подключения к хабу 6-го яруса уже недопустимо. Каждый промежуточный хаб имеет несколько нисходящих (downstream) портов для подключения периферийных устройств (или нижележащих хабов) и один восходящий (upstream) порт для подключения к корневому хабу или нисходящему порту вышестоящего хаба. Логическая топология USB - про¬сто звезда: для хостконтроллера хабы создают иллюзию непосредственного подключения каждого устройства. В отличие от шин расширения (ISA, PCI, PC Card), где программа взаимодействует с устройствами посредством обращений по физическим адресам ячеек памяти, портов ввода-вывода, прерываниям и каналам DMA, взаимодействие приложений с устройствами USB выполняется только через программный интерфейс. Этот интерфейс, обеспечивающий независимость обращений к устройствам, предоставляется системным ПО контроллера USB.

В отличие от громоздких дорогих шлейфов параллельных шин AT А и особенно шины SCSI с ее разнообразием разъемов и сложностью правил подключения, кабельное хозяйство USB простое и изящное. Кабель USB содержит одну экранированную витую пару с импедансом 90 Ом для сигнальных цепей и одну неэкранированную для подачи питания (+5 В), допустимая длина сегмента - до 5 м. Для низкой скорости может использоваться невитой неэкранированный кабель длиной до 3 м (он дешевле). Система кабелей и коннекторов USB не дает возможности ошибиться при подключении устройств (рис. 13.1, а и б). Для распознавания разъема USB на корпусе устройства ставится стандартное символическое обозначение (рис. 13.1, в). Гнезда типа «А» устанавливаются только на нисходящих портах хабов, вилки типа «А» - на шнурах периферийных устройств или восходящих портов хабов. Гнезда и вилки типа «В» используются только для шнуров, отсоединяемых от периферийных устройств и восходящих портов хабов (от «мелких» устройств - мышей, клавиатур и т. п. кабели, как правило, не отсоединяются). Кроме стандартных разъемов, показанных на рисунке 19, применяются и миниатюрные варианты (рис. 20, в, г, д). Хабы и устройства обеспечивают возможность «горячего» подключения и отключения. Для этого разъемы обеспечивают более раннее соединение и позднее отсоединение питающих цепей по отношению к сигнальным, кроме того, предусмотрен протокол сигнализации подключения и отключения устройств. Назначение выводов разъемов USB приведено в табл. 9, нумерация контактов показана на рис. 20. Все кабели USB «прямые» - в них соединяются одноименные цепи разъемов.


Рис. 19. Коннекторы USB: a - вилка типа «А», б - вилка типа «В», в - символическое обозначение

Рис. 20. Гнезда USB: а - типа «А», б - типа «В» стандартное, в,г,д - миниатюрные типа «В»

Таблица 9. Назначение выводов разъема USB

В шине используется дифференциальный способ передачи сигналов D+ и D- по двум проводам. Скорость устройства, подключенного к конкретному порту, определяется хабом по уровням сигналов на линиях D+ и D-, смещаемых нагрузочными резисторами приемопередатчиков: устройства с низкой скоростью «подтягивают» к высокому уровню линию D-, с полной - D+. Подключение устройства HS определяется на этапе обмена конфигурационной информацией - физически на первое время устройство HS должно подключаться как FS. Передача по двум проводам в USB не ограничивается дифференциальными сигналами. Кроме дифференциального приемника, каждое устройство имеет линейные приемники сигналов D+ и D-, а передатчики этих линий управляются индивидуально. Это позволяет различать более двух состояний линии, используемых для организации аппаратного интерфейса.

Введение высокой скорости (480 Мбит/с - всего в 2 раза медленнее, чем Gigabit Ethernet) требует тщательного согласования приемопередатчиков и линии связи. На этой скорости может работать только кабель с экранированной витой парой для сигнальных линий. Для высокой скорости аппаратура USB должна иметь дополнительные специальные приемопередатчики. В отличие от формирователей потенциала для режимов FS и LS, передатчики HS являются источниками тока, ориентированными на наличие резисторов-терминаторов на обеих сигнальных линиях.

Скорость передачи данных (LS, FS или HS) выбирается разработчиком периферийного устройства в соответствии с потребностями этого устройства. Реализация низких скоростей для устройства обходится несколько дешевле (приемопередатчики проще, а кабель для LS может быть и неэкранированной невитой парой). Если в «старой» USB устройства можно было, не задумываясь, подключать в любой свободный порт любого хаба, то в USB 2.0 при наличии устройств и хабов разных версий появились возможности выбора между оптимальными, неоптимальными и неработоспособными конфигурациями.

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

В спецификации 2.0 скорость 480 Мбит/с должна уживаться с прежними, но при таком соотношении скоростей обмены на FS и LS «съедят» возможную полосу пропускания шины без всякого «удовольствия» (для пользователя). Чтобы этого не происходило, хабы USB 2.0 приобретают черты коммутаторов пакетов. Если к порту такого хаба подключено высокоскоростное устройство (или аналогичный хаб), то хаб работает в режиме повторителя, и транзакция с устройством на HS занимает весь канал до хост-контроллера на все время своего выполнения. Если же к порту хаба USB 2.0 подключается устройство или хаб 1.1, то по части канала до контроллера пакет проходит на скорости HS, запоминается в буфере хаба, а к старому устройству или хабу идет уже на его «родной» скорости FS или LS. При этом функции контроллера и хаба 2.0 (включая и корневой) усложняются, поскольку транзакции на FS и LS расщепляются и между их частями вклиниваются высокоскоростные передачи. От старых (1.1) устройств и хабов все эти тонкости скрываются, что и обеспечивает обратную совместимость. Вполне понятно, что устройство USB 2.0 сможет реализовать высокую скорость, только если по пути от него к хост-контроллеру (тоже 2.0) будут встречаться только хабы 2.0. Если это правило нарушить и между ним и контроллером 2.0 окажется старый хаб, то связь может быть установлена только в режиме FS. Если такая скорость устройство и клиентское ПО устроит (к примеру, для принтера и сканера это выльется только в большее время ожидания пользователя), то подключенное устройство работать будет, но появится сообщение о неоптимальной конфигурации соединений. По возможности ее (конфигурацию) следует исправить, благо переключения кабелей USB можно выполнять на ходу. Устройства и ПО, критичные к полосе пропускания шины, в неправильной конфигурации работать откажутся и категорично потребуют переключений. Если же хост-контроллер старый, то все преимущества USB 2.0 окажутся недоступными пользователю. В этом случае придется менять хост-контроллер (менять системную плату или приобретать PCI-карту контроллера). Контроллер и хабы USB 2.0 позволяют повысить суммарную пропускную способность шины и для старых устройств. Если устройства FS подключать к раз¬ным портам хабов USB 2.0 (включая и корневой), то для них суммарная пропускная способность шины USB возрастет по сравнению с 12 Мбит/с во столько раз, сколько используется портов высокоскоростных хабов.

Хаб является ключевым элементом системы PnP в архитектуре USB. Хаб выполняет множество функций:

  • обеспечивает физическое подключение устройств,

формируя и воспринимая

  • сигналы в соответствии со спецификацией шины на

каждом из своих портов;

  • управляет подачей питающего напряжения на

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

  • отслеживает состояние подключенных к нему устройств,

уведомляя хост об изменениях;

  • обнаруживает ошибки на шине, выполняет процедуры

восстановления и изолирует неисправные сегменты шины;

  • обеспечивает связь сегментов шины, работающих на

разных скоростях.

Хаб следит за сигналами, генерируемыми устройствами. Неисправное устройство может не вовремя «замолчать» (потерять активность) или, наоборот, что-то «бор¬мотать» (babble). Эти ситуации отслеживает ближайший к устройству хаб и за¬прещает восходящие передачи от такого устройства не позже, чем по границе (микро)кадра. Благодаря бдительности хабов эти ситуации не позволят неисправному устройству заблокировать всю шину.

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

  • не светится - порт не используется;
  • зеленый - нормальная работа;
  • желтый - ошибка;
  • зеленый мигающий - программа требует внимания

пользователя (Software attention);

  • желтый мигающий - аппаратура требует внимания

пользователя (Hardware attention).

Восходящий (upstream) порт хаба конфигурируется и внешне представляется как полноскоростной или высокоскоростной (только для USB 2.0). При подключении порт хаба USB 2.0 обеспечивает терминацию по схеме FS, в режим HS он переводится только по команде контроллера.

На рис. 13.3 приведен вариант соединения устройств и хабов, где высокоскоростным устройством USB 2.0 является только телекамера, передающая видеопоток без компрессии. Подключение принтера и сканера USB 1.1 к отдельным портам хаба 2.0, да еще и развязка их с аудиоустройствами, позволяет им использовать полосу шины по 12 Мбит/с каждому. Таким образом, из общей полосы 480 Мбит/с на «старые» устройства (USB 1.0) выделяется 3x12=36 Мбит/с. Вообще-то мож¬но говорить и о полосе в 48 Мбит/с, поскольку клавиатура и мышь подключены к отдельному порту хост-контроллера USB 2.0, но эти устройства «освоят» только малую толику из выделенных им 12 Мбит/с. Конечно, можно подключать клавиатуру и мышь к порту внешнего хаба, но с точки зрения повышения надежности системные устройства ввода лучше подключать наиболее коротким (по количеству кабелей, разъемов и промежуточных устройств) способом. Неудачной конфигурацией было бы подключение принтера (сканера) к хабу USB 1.1 - во время работы с аудиоустройствами (если они высокого качества) скорость печати (сканирования) будет падать. Неработоспособной конфигурацией явилось бы подключение телекамеры к порту хаба USB 1.1.

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

Управление энергопотреблением является весьма развитой функцией USB. Для устройств, питающихся от шины, мощность ограничена. Любое устройство при подключении не должно потреблять от шины ток, превышающий 100 мА. Рабо¬чий ток (не более 500 мА) заявляется в конфигурации. Если хаб не может обеспечить устройству заявленный ток, оно не конфигурируется и, следовательно, не может быть использовано.

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

Рис. 21. Пример конфигурации соединений

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

История появления и развития стандартов Universal Serial Bus (USB)

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

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

    Первая спецификация последовательного интерфейса USB (Universal Serial Bus) , получившая название USB 1.0 , появилась в 1996 г. , усовершенствованная версия на ее основе, USB 1.1 - в 1998 г. Пропускная способность шин USB 1.0 и USB 1.1 - до 12 Мбит/с (реально до 1 мегабайта в секунду) была вполне достаточной для низкоскоростных периферийных устройств, вроде аналогового модема или компьютерной мышки, однако недостаточной для устройств с высокой скоростью передачи данных, что являлось главным недостатком данной спецификации. Однако, практика показала, что универсальная последовательная шина - это очень удачное решение, принятое практически всеми производителями компьютерного оборудования в качестве магистрального направления развития компьютерной периферии.

В 2000 г. появилась новая спецификация - USB 2.0 , обеспечивающая уже скорость передачи данных до 480 Мбит/с (реально до 32 мегабайт в секунду). Спецификация предполагала полную совместимость с предыдущим стандартом USB 1.X и вполне приемлемое быстродействие для большинства периферийных устройств. Начинается бум производства устройств, оснащенных интерфейсом USB. "Классические" интерфейсы ввода - вывода были полностью вытеснены и стали экзотикой. Однако, для части высокоскоростного периферийного оборудования даже удачная спецификация USB 2.0 оставалась узким местом, что требовало дальнейшего развития стандарта.

В 2005 г. была анонсирована спецификация для беспроводной реализации USB - Wireless USB - WUSB , позволяющей выполнять беспроводное подключение устройств на расстоянии до 3-х метров с максимальной скоростью передачи данных 480 Мбит/сек, и на расстоянии до 10 метров с максимальной скоростью 110 Мбит/сек. Спецификация не получила бурного развития и не решала задачу повышения реальной скорости передачи данных.

В 2006 г. была анонсирована спецификация USB-OTG (USB O n-T he-G o, благодаря которой стала возможной связь двух USB-устройств друг с другом без отдельного USB-хоста. Роль хоста в данном случае выполняет одно из периферийных устройств. Смартфонам, цифровым фотоаппаратам и прочим мобильным устройствам приходится быть как хостом, так и периферийным устройством. Например, при подключении по USB к компьютеру фотоаппарата, он является периферийным устройством, а при подключении принтеру он является хостом. Поддержка спецификации USB-OTG постепенно стала стандартом для мобильных устройств.

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

В 2013 году была принята спецификация следующего интерфейса - USB 3.1 , скорость передачи данных которого может достигать 10 Гбит/с. Кроме того, появился компактный 24-контактный разъём USB Type-C , который является симметричным, позволяя вставлять кабель любой стороной.

После выхода стандарта USB 3.1 организация USB Implementers Forum (USB-IF) объявила, что разъёмы USB 3.0 со скоростью до 5 Гбит/с (SuperSpeed) теперь будут классифицироваться как USB 3.1 Gen 1, а новые разъёмы USB 3.1 со скоростью до 10 Гбит/с (SuperSpeed USB 10Gbps) - как USB 3.1 Gen 2. Стандарт USB 3.1 обратно совместим с USB 3.0 и USB 2.0.

В 2017 году организация USB Implementers Forum (USB-IF) опубликовала спецификацию USB 3.2 . Максимальная скорость передачи составляет 10 Гбит/с. Однако в USB 3.2 предусмотрена возможность агрегации двух подключений (Dual-Lane Operation ), позволяющая увеличить теоретическую пропускную способность до 20 Гбит/с. Реализация этой возможности сделана опциональной, то есть ее поддержка на уровне оборудования будет зависеть от конкретного производителя и технической необходимости, которая отличается, например, для принтера и переносного жесткого диска. Возможность реализации данного режима предусмотрена только при использовании USB Type-C .

www.usb.org - Документация по спецификациям USB для разработчиков на английском языке.

Нельзя не отметить, что существовала, и пока еще существует, альтернатива шине USB. Еще до ее появления, компания Apple разработала спецификацию последовательной шины FireWire (другое название - iLink ), которая в 1995 г. была стандартизована Американским Институтом инженеров по электротехнике и электронике (IEEE) под номером 1394. Шина IEEE 1394 может работать в трех режимах: со скоростью передачи данных до 100, 200 и 400 Мбит/с. Однако, по причине высокой стоимости и более сложной реализации, чем USB, эта разновидность высокоскоростной последовательной шины, большого распространения не получила, и постепенно вытесняется USB 2.0 – USB 3.2.

Общие принципы работы периферийных устройств Universal Serial Bus (USB)

    Интерфейс USB оказался настолько удачным решением, что им оснастили практически все классы периферийных устройств, от мобильного телефона до веб-камеры или переносного жесткого диска. Наибольшее распространение получили (пока) устройства с поддержкой USB 2.0. Однако, USB 3.0 – 3.1 более востребован для высокоскоростных устройств, где он становится основным, постепенно вытесняя USB 2.0.

    Периферийные устройства, с поддержкой USB при подключении к компьютеру автоматически распознаются системой (в частности, программное обеспечение драйвера и пропускную способность шины), и готовы к работе без вмешательства пользователя. Устройства с небольшим энергопотреблением (до 500мА) могут не иметь своего блока питания и запитываться непосредственно от шины USB.

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

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

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

Проще говоря, USB позволяет фактически реализовать все преимущества современной технологии "plug and play" ("включай и работай"). Устройства, разработанные для USB 1.x могут работать с контроллерами USB 2.0. и USB 3.0

При подключении периферийного устройства вырабатывается аппаратное прерывание и управление получает драйвер HCD (Host Controller Driver ) контроллера USB (USB Host Controller - UHC ), который на сегодняшний день интегрирован во все выпускаемые чипсеты материнских плат. Он опрашивает устройство и получает от него идентификационную информацию, исходя из которой управление передается драйверу, обслуживающему данный тип устройств. UHC контроллер имеет корневой (root) концентратор (Hub), обеспечивающий подключение к шине устройств USB.

Концентратор (USB HUB).

Точки подключения называются портами . К порту, в качестве устройства, может быть подключен другой концентратор. Каждый концентратор имеет исходящий порт (upstream port ), соединяющие его с главным контроллером и нисходящие порты (downstream port ) для подключения периферийных устройств. Концентраторы могут обнаруживать, выполнять соединение и отсоединение в каждом порте нисходящей связи и обеспечивать распределение напряжения питания в устройства нисходящего соединения. Каждый из портов нисходящей связи может быть индивидуально активизирован и сконфигурирован на полной или низкой скорости. Концентратор состоит из двух блоков: контроллера концентратора и ретранслятора концентратора. Ретранслятор - работающий под управлением протокола коммутатор между портом восходящей связи и портами нисходящей связи. Концентратор содержит также аппаратные средства поддержки перевода в исходное состояние и приостановки/возобновления подключения. Контроллер обеспечивает интерфейсные регистры, обеспечивающие передачу данных в главный контроллер и обратно. Определенное состояние и управляющие команды концентратора позволяют главному процессору конфигурировать концентратор, а также контролировать и управлять его портами.


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

Кабели и разъемы USB

Разъемы типа А используются для подключения к компьютеру или концентратору. Разъемы типа B используются для подключения к периферийным устройствам.

Все разъёмы USB, имеющие возможность входить в соединение друг с другом, рассчитаны на совместную работу.

Имеется электрическая совместимости всех контактов разъёма USB 2.0 с соответствующими контактами разъёма USB 3.0. При этом разъём USB 3.0 имеет дополнительные контакты, не имеющие соответствия в разъёме USB 2.0, и, следовательно, при соединении разъёмов разных версий "лишние" контакты не будут задействованы, обеспечивая нормальную работу соединения версии 2.0. Все гнёзда и штекеры между USB 3.0 Тип A и USB 2.0 Тип A рассчитаны на совместную работу. Размер гнезда USB 3.0 Тип B несколько больше, чем это могло бы потребоваться для штекера USB 2.0 Тип B и более ранних. При этом предусмотрено подключение в эти гнёзда и такого типа штекеров. Соответственно, для подключения к компьютеру периферийного устройства с разъёмом USB 3.0 Тип B можно использовать кабели обоих типов, но для устройства с разъёмом USB 2.0 Тип B - только кабель USB 2.0. Гнёзда eSATAp, обозначенные как eSATA/USB Combo, то есть имеющие возможность подключения к ним штекера USB, имеют возможность подключения штекеров USB Тип A: USB 2.0 и USB 3.0, но в скоростном режиме USB 2.0.

Разъёмы USB Type-C служат для подключения как к периферийным устройствам, так и к компьютерам, заменяя различные разъёмы и кабели типов A и B предыдущих стандартов USB, и предоставляя возможности расширения в будущем. 24-контактный двухсторонний разъём является достаточно компактным, близким по размерам к разъёмам микро-B стандарта USB 2.0. Размеры разъёма - 8,4 мм на 2,6 мм. Коннектор предоставляет 4 пары контактов для питания и заземления, две дифференциальные пары D+/D- для передачи данных на скоростях менее SuperSpeed (в кабелях Type-C подключена только одна из пар), четыре дифференциальные пары для передачи высокоскоростных сигналов SuperSpeed, два вспомогательных контакта (sideband), два контакта конфигурации для определения ориентации кабеля, выделенный канал конфигурационных данных (кодирование BMC - biphase-mark code) и контакт питания +5 V для активных кабелей.

Контакты разъёма и разводка кабеля USB Type-C

Type-C - штекер и гнездо

Кон. Название Описание Кон. Название Описание
A1 GND Заземление B12 GND Заземление
A2 SSTXp1 Диф. пара № 1 SuperSpeed, передача, положительный B11 SSRXp1 Диф. пара № 2 SuperSpeed, приём, положительный
A3 SSTXn1 Диф. пара № 1 SuperSpeed, передача, отрицательный B10 SSRXn1 Диф. пара № 2 SuperSpeed, приём, отрицательный
A4 V BUS Питание B9 V BUS Питание
A5 CC1 Канал конфигурации B8 SBU2 Sideband № 2 (SBU)
A6 Dp1 Диф. пара не-SuperSpeed, положение 1, положительный B7 Dn2 Диф. пара не-SuperSpeed, положение 2, отрицательный
A7 Dn1 Диф. пара не-SuperSpeed, положение 1, отрицательный B6 Dp2 Диф. пара не-SuperSpeed, положение 2, положительный
A8 SBU1 Sideband № 1 (SBU) B5 CC2 Канал конфигурации
A9 V BUS Питание B4 V BUS Питание
A10 SSRXn2 Диф. пара № 4 SuperSpeed, передача, отрицательный B3 SSTXn2 Диф. пара № 3 SuperSpeed, приём, отрицательный
A11 SSRXp2 Диф. пара № 4 SuperSpeed, передача, положительный B2 SSTXp2 Диф. пара № 3 SuperSpeed, приём, положительный
A12 GND Заземление B1 GND Заземление
  1. Неэкранированная дифференциальная пара, может использоваться для реализации USB Low Speed (1.0), Full Speed (1.0), High Speed (2.0) - до 480 Мбит/с
  2. В кабеле реализована только одна из дифференциальных пар не-SuperSpeed. Данный контакт не используется в штекере.
Назначение проводников в кабеле USB 3.1 Type-C
Разъём №1 кабеля Type-C Кабель Type-C Разъём №2 кабеля Type-C
Контакт Название Цвет оболочки проводника Название Описание Контакт Название
Оплётка Экран Оплётка кабеля Экран Внешняя оплётка кабеля Оплётка Экран
A1, B1, A12, B12 GND Лужёный GND_PWRrt1
GND_PWRrt2
Общая земля> A1, B1, A12, B12 GND
A4, B4, A9, B9 V BUS Красный PWR_V BUS 1
PWR_V BUS 2
V BUS питание A4, B4, A9, B9 V BUS
B5 V CONN Жёлтый
PWR_V CONN V CONN питание B5 V CONN
A5 CC Синий CC Канал конфигурирования A5 CC
A6 Dp1 Белый UTP_Dp Неэкранированная дифференциальная пара, positive A6 Dp1
A7 Dn1 Зелёный UTP_Dn Неэкранированная дифференциальная пара, negative A7 Dn1
A8 SBU1 Красный SBU_A Полоса передачи данных A B8 SBU2
B8 SBU2 Чёрный SBU_B Полоса передачи данных B A8 SBU1
A2 SSTXp1 Жёлтый * SDPp1 Экранированная дифференциальная пара #1, positive B11 SSRXp1
A3 SSTXn1 Коричневый * SDPn1 Экранированная дифференциальная пара #1, negative B10 SSRXn1
B11 SSRXp1 Зелёный * SDPp2 Экранированная дифференциальная пара #2, positive A2 SSTXp1
B10 SSRXn1 Оранжевый * SDPn2 Экранированная дифференциальная пара #2, negative A3 SSTXn1
B2 SSTXp2 Белый * SDPp3 Экранированная дифференциальная пара #3, positive A11 SSRXp2
B3 SSTXn2 Чёрный * SDPn3 Экранированная дифференциальная пара #3, negative A10 SSRXn2
A11 SSRXp2 Красный * SDPp4 Экранированная дифференциальная пара #4, positive B2 SSTXp2
A10 SSRXn2 Синий * SDPn4 Экранированная дифференциальная пара #4, negative B3 SSTXn2
* Цвета для оболочки проводников не установлены стандартом

Подключение ранее выпущенных устройств к компьютерам, оснащённым разъёмом USB Type-C, потребует кабеля или адаптера, имеющих штекер или разъём типа A или типа B на одном конце и штекер USB Type-C на другом конце. Стандартом не допускаются адаптеры с разъёмом USB Type-C, поскольку их использование могло бы создать «множество неправильных и потенциально опасных» комбинаций кабелей.

Кабели USB 3.1 с двумя штекерами Type-C на концах должны полностью соответствовать спецификации - содержать все необходимые проводники, должны быть активными, включающими в себя чип электронной идентификации, перечисляющий идентификаторы функций в зависимости от конфигурации канала и сообщения, определяемые вендором (VDM) из спецификации USB Power Delivery 2.0. Устройства с разъёмом USB Type-C могут опционально поддерживать шины питания с током в 1,5 или 3 ампера при напряжении 5 вольт в дополнение к основному питанию. Источники питания должны уведомлять о возможности предоставления увеличенных токов через конфигурационный канал либо полностью поддерживать спецификацию USB Power Delivery через конфигурационный контакт (кодирование BMC) или более старые сигналы, кодируемые как BFSK через контакт VBUS. Кабели USB 2.0, не поддерживающие шину SuperSpeed, могут не содержать чип электронной идентификации, если только они не могут передавать ток 5 ампер.

Спецификация коннекторов USB Type-C версии 1.0 была опубликована форумом разработчиков USB в августе 2014 года. Она была разработана примерно в то же время, что и спецификация USB 3.1.

Использование коннектора USB Type-C не обязательно означает, что устройство реализует высокоскоростной стандарт USB 3.1 Gen1/Gen2 или протокол USB Power Delivery.

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

· Лекция 15. Протокол работы USB-шины.

Общие сведения об USB -шине

У любого компьютера, выпущенного в последнее время, вы обязательно обнаружите либо на лицевой панели, либо на задней стенке разъем USB. Шина USB (Universal Serial Bus) первоначально была разработана для обеспечения легкого подключения компьютера к телефонным линиям и расширения числа портов. Первая версия стандарта (версия 1.0) была выпущена в январе 1996 года. Сейчас в основном используется версия 1.1. Стандарт USB 1.1 вполне удовлетворяет всем требованиям при работе с низко-скоростными устройствами, вроде мышей и клавиатур, и даже с устройствами, работающими на средних скоростях, вроде Ethernet-адаптеров (10 Mbit/sec) или устройств бытовой электроники (таких, как цифровые камеры и MP3-плейеры), которые пересылают только несколько мегабайт данных. Но если на периферийное устройство или в обратном направлении необходимо пересылать большие объемы информации (примеры - жесткие диски, видеокамеры высокого разрешения, или одновременное использование нескольких сетевых адаптеров стандарта 100BaseT), то скорости, обеспечиваемые USB 1.1, уже недостаточны. Поэтому в 1999 году была разработана версия 2.0 стандарта USB, обеспечивающая более высокие скорости обмена данными.

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

Стандарт USB предусматривает строгую иерархию устройств, управляемых основным хостом, и использование протокола master/slave для управления подключаемыми устройствами. На один USB-разъем могут быть последовательно подключены до 127 устройств. Но непосредственно подключать одно устройство к другому нельзя, поскольку питание таких устройств осуществляется по той же шине. Поэтому для подключения дополнительных устройств используются специальные хабы, обеспечивающие снабжение этих устройств необходимой энергией. В результате USB-устройства образуют как бы дерево, каждая не конечная вершина которого является хабом. Поскольку любой обмен данными инициируется только хостом, и периферийные устройства не могут начать взаимодействие, исключена возможность коллизий, вследствие чего снижается стоимость устройств. Правда, такое решение приводит к некоторому снижению производительности. В результате USB-устройства версии 1.1 могут работать в двух режимах: так называемом low speed, обеспечивающем скорость передачи данных до 1.5 Mбит/сек, и full speed, в котором скорость передачи данных может составлять 12 Мбит/сек. Это только теоретический предел, а реально производительность шины даже в идеальных условиях не превышает 8,5 Мбит/сек., а в среднем составляет около 2 Мбит/сек.

Интерфейс EHCI, используемый в устройствах версии 2, обеспечивает режим работы high speed, для которого скорость передачи данных может достигать 480 Мбит/сек. Для того чтобы USB-устройства могли обмениваться данными с такой скоростью, и хост-контроллер и само устройство должны соответствовать стандарту USB 2.0 и обеспечивать работу с интерфейсом EHCI. Однако хост-контроллеры 2.0 успешно работают с устройствами версии 1.1. И наоборот, вполне можно подключать устройства USB 2.0 к хосту (и к хабам) версии USB 1.1 и они будут прекрасно работать, но со скоростью не более 12, а не 480 Мбит/сек.

В настоящее время разработан широкий спектр устройств, подключаемых по шине USB. Это клавиатуры, мыши, джойстики, игровые приставки, сканеры, модемы, принтеры, цифровые камеры, устройства хранения информации – дисководы гибких и жестких дисков, дисководы Zip, LS120 и CD-ROM. Очень перспективный и интересный класс таких устройств образуют накопители на основе Flash-памяти .

Физическая среда

Шина USB , обладает полосой пропускания 1,5 или 12 Мбит/с.

USB -кабель состоит из 4 проводников:

Два провода формируют витую пару, применяемую в дифференциальных передачах данных;

Остальные два представляют собой линии питания и заземления устройств, не имеющих собственного питания 5 В постоянного напряжения.

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

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

USB шина позволяет подключать до 127 устройств. Использование такого количества устройств возможно при многоуровневом каскадировании. Наглядно это объясняет следующий рисунок:

Это первая архитектурная особенность шины USB: ее логическая топология - многоуровневая звезда.

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

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

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

Физическая топология шины - звезда

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

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

Хост, как уже было сказано ранее, программно-аппаратный комплекс.

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

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

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

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

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

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

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

Программные функции (перечисление устройств и их конфигурирование, управление энергопотреблением, процессами передачи, устройствами на шине и самой шиной) возложены на операционную систему. Первой популярной операционной системой, в которой поддержка USB реализована была в полном объеме стала Windows 98 Second Edition. Некоторые устройства могут быть работоспособными и под более ранними версиями (98 без SE, и изредка 95), но далеко не все и не всегда.

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

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

Описание протоколов используемых при передаче данных

Структура USB пакета

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

Каждая USB транзакция состоит из следующих частей:

· Признак пакета (Заголовок определяющий что далее будет следовать)

· Пакет данных (Опционально)

· Пакет статуса транзакции (Используется для подтверждения нормального завершения транзакции и обеспечения коррекции ошибок при передаче)

Мастером на USB шине является хост. Он и является инициатором всех транзакций. Первым передаваемым пакетом является Признак (Token Packet). Он генерируется хостом для определения что будет следовать далее, какая это будет транзакция: чтение или запись, к какому устройству и конечной точке будет обращение. Следующим пакетом, как обычно, следует пакет данных (Data Packet). И в завершении транзакции следует пакет статуса (Status Packet), который либо подтверждает успешное принятие данных, либо указывает что конечная точка приостановлена (STALL) или не готова принимать данные.

Поля USB пакета

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

· Поле синхронизации (Sync Field)

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

· Поле идентификатора пакета (PID Field)

Идентификатор пакета следует непосредственно после поля синхронизации в каждом передаваемом USB пакете. PID состоит из четырехбитного типа пакета, следующего за четырехбитным проверочным полем как показано на рисунке 4.

(LSB)

(MSB)

PID0

PID1

PID2

PID3

PID0

PID1

PID2

PID3

Рисунок 2. Формат поля PID.

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

PID Тип

Имя PID

PID

Описание

Признак (Token)

0001

Адрес + номер конечной точки для транзакции ХОСТ -->Функция

1001

Адрес + номер конечной точки для транзакции ХОCT <-- Функция

0101

Маркер начала пакета и его номер

SETUP

1101

Адрес + номер конечной точки для SETUP транзакции ХОСТ ® Функция в канале управления

Данные

DATA0

0011

Четный PID пакета данных

DATA1

1011

Нечетный PID пакета данных

Статус

0010

Приемник принял пакет данных без ошибок

1010

Принимающее устройство не может принять данные, или передающее не может их отправить

STALL

1110

Конечна точка приостановлена (HALT) или запрос по управляющему каналу не поддерживается

Спец.

1100

ХОСТ инициирует преамбулу, разрешая трафик для низкоскоростных устройств

Рисунок 3. Типы PID .

PID биты приведены в таблице в MSB порядке. Когда они передаются по шине, правый бит (бит 0) выдается первым.

· Поле адреса устройства (Addr Field)

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

· Поле адреса конечной точки (Endpoint Field)

Поле адреса конечной точки имеет размерность 4 бита и позволяет размещать в устройстве до 16 конечных точек. Все функции должны поддерживать одну управляющую "0" конечную точку. Низкоскоростные устройства поддерживают только три канала передачи: управляющий канал, связанный с нулевой конечной точкой и два дополнительных канала (две Interrupt конечные точки). Полноскоростные устройства поддерживают максимум до 16 конечных точек.

· Поле номера кадра (Frame Number Field)

Поле номера кадра представляет собой 11-битное поле, которое инкрементируется хостом при инициировании нового кадра. Поле номера кадра начинается заново с нуля при достижения максимального значения 0х7FF, и используется только для SOF маркеров в каждом начале кадра.

· Поле циклического контроля по избыточности (CRC)

Циклический контроль по избыточности (CRC) используются для защиты всех полей кроме PID в маркерах и пакетах данных. Защита Маркера и пакета данных обеспечивает 100% нахождение всех одиночных и двойных битовых ошибок. Для маркеров предусмотрено пяти-битное поле CRC, которое используется для защиты полей ADDR и ENDP пакетов IN, SETUP,OUT или поле отметки времени маркера SOF. Для пакета данных используется 16-битный полином, кодирующий всё поле данных пакета.

· Поле конца пакета (EOP)

Поле конца пакета представляет собой сигнал окончания пакета и устанавливается на шине путем выставления сигнала "Single Ended Zero " SE0 в течении двух битовых интервалов следующего за J состоянием, установленным на время одного битового интервала.

Типы USB пакетов

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

· Маркерные пакеты (Token Packets)

Существуют три типа маркерных пакетов:

1. In - информируют USB устройство, что хост хочет читать данные из устройства

2. Out - информирует USB устройство, что хост хочет передавать данные в устройство

3. Setup - используются для обозначения начала управляющего (Control Transfer) типа передачи данных

Все маркерные пакеты имеют следующий формат:

SYNC

ADDR

ENDP

CRC5

Рисунок 4 . Маркерный пакет.

· Пакеты данных (Token Packets)

Существуют два типа пакетов данных, каждый из которых способен содержать до 1024 байтов данных.

  1. DATA0
  2. DATA1

У высокоскоростных устройств для пакетов данных определены два других PID-a: DATA2 и MDATA. Пакет данных имеет нижеследующий формат:

SYNC

DATA

CRC16

Рисунок 5. Пакет данных.

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

· Пакеты подтверждения (Handshake Packets)

Существуют три типа пакетов подтверждения, структура которых имеет только PID поле:

ACK - подтверждение того, что пакет был успешно принят

NAK - информирует, что устройство в данный момент не может принимать либо отправлять данные. Также используется в Interrupt транзакциях для информирования хоста, что устройство не имеет новых данных для передачи. Хост никогда не может выдавать ответ NAK. NAK используется в целях управления потоком данных.

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

Пакет подтверждения имеет нижеследующий формат:

SYNC

Рисунок 6. Пакет подтверждения.

· Пакеты начала кадра (Start of Frame Packets)

SOF пакет состоит из 11-ти битного номера кадра и генерируется хостом каждую 1ms ± 500ns для полноскоростной шины и каждые 125 µs ± 0.0625 µs для высокоскоростной шины.

Пакет начала кадра имеет нижеследующий формат:

SYNC

Frame Number

CRC16

Рисунок 7. Пакет начала кадра.

USB функция

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

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

Большинство функций имеет буфера для приема/передачи данных. Обычно их размер составляет 8 байт. Каждый буфер закреплён за определеннной конечной точкой, например за EP0 Out и EP0 In. Например хост инициирует запрос дескриптора устройства. USB контроллер функции считывает Setup пакет и определяет по адресному полю был ли он направлен именно к ней. Если пакет был направлен именно по этому адресу, то USB контроллер считывает данные в соответствующий буфер (FIFO) указанный в поле конечной точки (Endpoint Field). После этого функция генерирует пакет подтверждения, в котором указывает статус принятия пакета и устанавливает сигнал прерывания для внешнего управляющего контроллера, указывающий, что произошло событие по приему данных в RXFIFO. Все эти действия происходят без внешнего вмешательства ПО пользователя, что разгружает микроконтроллер реализующий функцию управления. ПО микроконтроллера обрабатывает прерывание - считывает из RXFIFO запрос дескриптора и отвечает на него выдачей структуры соответствующей запрошенному дескриптору.

Конечные точки

Конечные точки функции могут принимать или передавать данные. Конечные точки USB функции являются самым последним звеном в коммуникационном канале. Например, в программном слое, ваш драйвер устройства посылает пакет данных в конечную точку EP1 функции. Данные будут последовательно поступать в функцию и складываться USB контроллером в буфер RXFIFO1. Как только у управляющего микроконтроллера появиться свободное время он может считать из RXFIFO1 полученные данные. Если он хочет ответить пакетом данных, USB контроллер не может просто выставить их шину, т.к. мастером и инициатором запросов на шине является хост. Следовательно, управляющий микроконтроллер записывает пакет данных в IN конечную точку, например в EP1. Данные будут находится в буфере первой конечной точки TXFIFO1 до тех пор, пока хост не выставит на шину IN транзакцию к этой конечной точке. Конечные точки - это интерфейс связи между аппаратными средствами и микропрограммой работающей на функциональном устройстве. Все USB устройства должны поддерживать нулевую конечную точку (EP0). Она получает все управляющие и статус запросы во время процесса энумерации и всего цикла работы, пока устройство присоединено к USB шине.

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

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

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

· Управляющие передачи . Используются для конфигурирования устройств во время подключения и выполнения других специфических функций над устройством, включая организацию новых каналов.

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

· Групповая пересылка . Используется для гарантированной передачи данных больших объемов без предъявленных требований к скоростям и задержкам. Занимает под себя всю свободную пропускную способность шины. В любой момент доступная полоса может быть урезана при необходимости осуществления передач других видов с более высоким приоритетом, или добавлена, при освобождении другими устройствами. Обычно такие передачи используется между принтерами, сканерами, накопителями и др.

· Изохронная передачи . Используются для потоковых передач данных в реальном времени. Резервируют определенную полосу пропускания шины, гарантируют определенные величины задержек доставки, но не гарантируют доставку (в случае обнаружения ошибки повторной передачи не происходит. Передачи этого вида используются для передачи аудио и видео трафика.

Обмен данными может осуществляться в трех скоростных режимах:

· Low Speed. Низкоскоростной режим. Скорость передачи составляет 1.5 Мбит/с.

· Full Speed. Полноскоростной режим. Скорость передачи 12 Мбит/с.

· High Speed. Высокоскоростной режим. Появился лишь в спецификации 2.0. Скорость передачи 480 Мбит/с.

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

Приоритеты передач по USB -шине

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

Изохронные передачи;

Передачи прерываний;

Передачи управляющих команд;

Передачи данных больших объемов.

Списки постоянно обновляются новыми запросами. Планирование операций по передаче информации в соответствии с упорядоченными в виде списков запросами выполняется хостом с 1-миллисекундным интервалом. В начале каждого такого интервала хост посылает по шине пакет SOF (Start Of Frame - начало кадра), после чего начинается обслуживание запросов из списка изохронных передач (т.к. они имеют наивысший приоритет).

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

По истечении 90% указанного 1-миллисекундного интервала хост автоматически переходит к обслуживанию запросов на передачу управляющих команд независимо от того, успел ли он полностью обслужить другие три списка или нет.

Тем самым гарантируется, что управляющим передачам всегда будет выделено не менее 10% пропускной способности шины. Если передача всех управляющих пакетов будет завершена до истечения выделенной для них доли интервала планирования, то оставшееся время будет использовано хостом для передачи данных большого объема (до конца указанного 1-миллисекундного интервала).

Таким образом:

Изохронные передачи гарантированно получают 90% пропускной способности шины;

Передачи прерываний занимают оставшуюся часть изохронных операций часть этой 90-процентной доли;

Под передачу данных большого объема выделяется все время, оставшееся после изохронных передач и передач прерываний (по-прежнему в рамках 90%-ой доли пропускной способности);

Управляющим передачам гарантируется 10% пропускной способности;

Если передача всех управляющих пакетов будет завершена до истечения выделенного для них 10%-го интервала, то оставшееся время будет использовано для передачи данных большого объема.

Источники информации

1. www.rus-linux.net (USB - Lin . html )

2. www.is.svitonline.com (USB Masters . htm )

3. Компьютерная документация от А до Я. (Технология USB 2.0. htm )

4. www.zyxel.ru – База знаний