Какую функцию выполняет хост в интерфейсе usb
Перейти к содержимому

Какую функцию выполняет хост в интерфейсе usb

  • автор:

Шпаргалка для ГОСов 2012 АСОИ

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

Для подключения периферийных устройств используется 4-жильный кабель: питание +5 В, сигнальные провода D+ и D-, общий провод.

Интерфейс USB соединяет между собой хост (host) и устройства. Хост находится внутри персонального компьютера и управляет работой всего интерфейса. Для того, чтобы к одному порту USB можно было подключать более одного устройства, применяются хабы (hub — устройство, обеспечивающее подключение к интерфейсу других устройств). Корневой хаб (root hub) находится внутри компьютера и подключен непосредственно к хосту. В интерфейсе USB используется специальный термин «функция» — это логически законченное устройств, выполняющее какую-либо специфическую функцию. Топология интерфейса USB представляет собой набор из 7 уровней (tier): на первом уровне находится хост и корневой хаб, а на последнем — только функции. Устройство, в состав которого входит хаб и одна или несколько функций, называется составным (compaund device)

Устройство – функция принимает участие в следующих пересылках:

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

Пересылки с прерыванием — могут содержать IN- или OUT-пересылки. При получении IN-пакета функция может вернуть пакет с данными, NAK-пакет или STALL-пакет. Если у функции нет информации, для которой требуется прерывание, то в фазе передачи данных функция возвращает NAK-пакет. Если работа КТ с прерыванием приостановлена, то функция возвращает STALL-пакет. При необходимости прерывания функция возвращает необходимую информацию в фазе передачи данных. Если хост успешно получил данные, то он посылает ACK-пакет. В противном случае согласующий пакет хостом не посылается.

Интерфейс USB: описание и основы устройств сопряжения. Контроллеры для USB

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

  • Низкая скорость (Low Speed — LS) — 1,5 Мбит/с;
  • Полная скорость (Full Speed — FS) — 12 Мбит/с;
  • Высокая скорость (High Speed — HS) — 480 Мбит/с

Для подключения периферийных устройств используется 4-жильный кабель: питание +5 В, сигнальные провода D+ и D-, общий провод. Интерфейс USB соединяет между собой хост (host) и устройства. Хост находится внутри персонального компьютера и управляет работой всего интерфейса. Для того, чтобы к одному порту USB можно было подключать более одного устройства, применяются хабы (hub — устройство, обеспечивающее подключение к интерфейсу других устройств). Корневой хаб (root hub) находится внутри компьютера и подключен непосредственно к хосту. В интерфейсе USB используется специальный термин «функция» — это логически законченное устройств, выполняющее какую-либо специфическую функцию. Топология интерфейса USB представляет собой набор из 7 уровней (tier): на первом уровне находится хост и корневой хаб, а на последнем — только функции. Устройство, в состав которого входит хаб и одна или несколько функций, называется составным (compaund device). Порт хаба или функции, подключаемый к хабу более высокого уровня, называется восходящим портом (upstream port), а порт хаба, подключаемый к хабу более низкого уровня или к функции называется нисходящим портом (downstream port). Все передачи данных по интерфейсу инициируются хостом. Данные передаются в виде пакетов. В интерфейсе USB используется несколько разновидностей пакетов:

  • пакет-признак (token paket) описывает тип и направление передачи данных, адрес устройства и порядковый номер конечной точки (КТ — адресуемая часть USB-устройства); пакет-признаки бывают нескольких типов: IN, OUT, SOF, SETUP;
  • пакет с данными (data packet) содержит передаваемые данные;
  • пакет согласования (handshake packet) предназначен для сообщения о результатах пересылки данных; пакеты согласования бывают нескольких типов: ACK, NAK, STALL.

Интерфейс USB

Таким образом каждая транзакция состоит из трех фаз: фаза передачи пакета-признака, фаза передачи данных и фаза согласования

В интерфейсе USB используются несколько типов пересылок информации.

  • Управляющая пересылка (control transfer) используется для конфигурации устройства, а также для других специфических для конкретного устройства целей
  • Потоковая пересылка (bulk transfer) используется для передачи относительно большого объема информации.
  • Пересылка с прерыванием (iterrupt transfer) используется для передачи относительно небольшого объема информации, для которого важна своевременная его пересылка. Имеет ограниченную длительность и повышенный приоритет относительно других типов пересылок
  • Изохронная пересылка (isochronous transfer) также называется потоковой пересылкой реального времени. Информация, передаваемая в такой пересылке, требует реального масштаба времени при ее создании, пересылке и приеме.

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

Когда хост становится готовым передавать данные, он посылает функции OUT-пакет, сопровождаемый пакетом с данными. Если функция успешно получила данные, он отсылает хосту ACK-пакет, в противном случае отсылается NAK- или STALL-пакет.

Управляющие пересылки содержат не менее двух стадий: Setup-стадия и статусная стадия. Между ними может также располагаться стадия передачи данных. Setup-стадия используется для выполнения SETUP-транзакции, в процессе которой пересылается информация в управляющую КТ функции. SETUP-транзакция содержит SETUP-пакет, пакет с данным и пакет согласования. Если пакет с данными получен функцией успешно, то она отсылает хосту ACK-пакет. В противном случае транзакция завершается.

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

В статусной стадии производится последняя транзакция, которая использует те же принципы, что и в потоковых пересылках. Направление этой транзакции противоположно тому, которое использовалось в стадии передачи данных. Статусная стадия служит для сообщения о результате выполнения SETUP-стадии и стадии передачи данных. Статусная информация всегда передается от функции к хосту. При управляющей записи (Control Write Transfer) статусная информация передается в фазе передачи данных статусной стадии транзакции. При управляющем чтении (Control Read Transfer) статусная информация возвращается в фазе согласовании статусной стадии транзакции, после того как хост отправит пакет данных нулевой длины в предыдущей фазе передачи данных

Пересылки с прерыванием могут содержать IN- или OUT-пересылки. При получении IN-пакета функция может вернуть пакет с данными, NAK-пакет или STALL-пакет. Если у функции нет информации, для которой требуется прерывание, то в фазе передачи данных функция возвращает NAK-пакет. Если работа КТ с прерыванием приостановлена, то функция возвращает STALL-пакет. При необходимости прерывания функция возвращает необходимую информацию в фазе передачи данных. Если хост успешно получил данные, то он посылает ACK-пакет. В противном случае согласующий пакет хостом не посылается

Изохронные транзакции содержат фазу передачи признака и фазу передачи данных, но не имеют фазы согласования. Хост отсылает IN- или OUT-признак, после чего в фазе передачи данных КТ (для IN-признака) или хост (для OUT-признака) пересылает данные. Изохронные транзакции не поддерживают фазу согласования и повторные посылки данных в случае возникновения ошибок.

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

Фирма-производитель

Наименование

Описание

Fairchild Semiconductor

Texas Instruments

PersCom — Компьютерная ЭнциклопедияКомпьютерная Энциклопедия

Станок пристрелочный 51 купить www.huntmania.ru.

Хост USB

Общая информация о хосте USB

Подробности Родительская категория: USB Категория: Хост USB

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

«Классический» хост USB делится на три основных уровня:

  • интерфейс шины USB обеспечивает физический интерфейс и протокол шины. Интерфейс шины реализуется хост-контроллером, имеющим встроенный корневой хаб, обеспечивающий точки физического подключения к шине (гнезда USB типа «A»). Хост-контроллер отвечает за генерацию микрокадров. На аппаратном уровне хост-контроллер обменивается информацией с основной памятью компьютера, используя прямое управление шиной (bus-mastering) с целью минимизации нагрузки на центральный процессор;
  • система USB, используя хост-контроллер(ы), транслирует клиентское «видение» обмена данными с устройствами — запросы IRP (I/O Request Packet — пакет запроса ввода/вывода) — в транзакции, выполняемые с реальными устройствами шины. Система отвечает и за распределение ресурсов USB — полосы пропускания и мощности источников питания (для устройств, питающихся от шины). Система состоит из трех основных частей:
  1. драйвер хост-контроллера — HCD (Host Controller Driver) — модуль, привязанный к конкретной модели контроллера, обеспечивающий абстрагирование драйвера USB и позволяющий в одну систему включать несколько разнотипных контроллеров;
  2. драйвер USB — USBD (USB Driver) — обеспечивает основной интерфейс (USBDI) между клиентами и устройствами USB. Интерфейс HCDI (Host Controller Driver Interface) между USBD и HCD спецификацией USB не регламентируется. Он определяется разработчиками ОС и должен поддерживаться разработчиками хост-контроллеров, желающих иметь поддержку своих изделий конкретными ОС. Клиенты не могут пользоваться интерфейсом HCDI; для них предназначен интерфейс USBDI. USBD обеспечивает механизм обмена в виде пакетов IRP, запрашивающих транспортировку данных по заданному каналу. Кроме того, USBD отвечает за некоторое абстрактное представление устройства USB клиенту, которое позволяет выполнять конфигурирование и управление состоянием устройств (включая и стандартное управление через конечную точку «0»). Реализация интерфейса USBDI определяется операционной системой; в спецификации USB излагаются только общие идеи;
  3. программное обеспечение хоста реализует функции, необходимые для функционирования системы USB в целом: обнаружение подключения и отключения устройств и выполнение соответствующих действий по этим событиям (загрузки требуемых драйверов), нумерацию устройств, распределение полосы пропускания и потребляемой мощности, управление состоянием энергопотребления и т. п.
  • клиенты USB — программные элементы (приложения или системные компоненты), взаимодействующие с устройствами USB. Клиенты могут взаимодействовать с любыми устройствами (наборами их доступных конечных точек, входящих в выбранные интерфейсы), подключенными к системе USB. Однако система USB изолирует клиентов от непосредственного обмена с какими-либо портами (в пространстве ввода/вывода) или ячейками памяти, представляющими интерфейсную часть контроллера USB.

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

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

Программная часть хоста в полном объеме реализуется операционной системой. До загрузки ОС может функционировать лишь усеченная часть ПО USB, поддерживающая только устройства, требующиеся для загрузки. Так, в BIOS современных системных плат имеется поддержка клавиатуры USB, реализующая функции сервиса Int 9h. После загрузки системы USB эта «дозагрузочная» поддержка игнорируется — система начинает работу с контроллером «с чистого листа», то есть со сброса и определения всех подключенных устройств. В спецификации PC’2001 выдвигается ряд требований к BIOS, в частности требование поддержки загрузки ОС с устройств USB.

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

Подробности Родительская категория: USB Категория: Хост USB

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

  • UHC (Universal Host Controller) — универсальный хост-контроллер для шины USB 1.x, разработанный Intel;
  • OHC (Open Host Controller) — «открытый» хост-контроллер для шины USB 1.x, разработанный Compaq, Microsoft и National Semiconductor;
  • EHC (Enhanced Host Controller) — расширенный хост-контроллер для поддержки высокой скорости шины USB 2.0.

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

План распределения времени в кa)адре: a — UHC; б — OHC; в — EHC (в микрокадре)
SOF Изохронные транзакции Транзакции прерываний Транзакции управления Транзакции передач массивов Свободное время
SOF Непереодические транзакции (Т1) Переодические транзакции Непереодические транзакци
SOF Непереодические транзакци Переодические транзакции

«Универсальный» хост-контроллер — UHC

Подробности Родительская категория: USB Категория: Хост USB

Хост-контроллер UHC от Intel появился в микросхеме PIIX3 (мост PCI-ISA) чипсетов системных плат для процессоров Pentium и используется во многих последующих изделиях Intel. Это FS/LS хост-контроллер, который большую часть забот по планированию транзакций перекладывает на ПО, — драйвер контроллера UHC (UHCD). Интерфейс контроллера UHC описан в документе Universal Host Controller Interface (UHCI) Design Guide, версия 1.1 вышла в 1996 году.

Драйвер UHC формирует для хост-контроллера дескрипторы, называемые в UHCI «дескрипторами передач» (TD — Transfer Descriptor), на самом деле описывающие каждую шинную транзакцию. Напомним, что в терминах спецификации USB одна передача (transfer) может состоять из нескольких транзакций, а в управляющих передачах используется еще и свой тип транзакции для каждой фазы. Для транзакций передач с гарантированной доставкой дескрипторы TD приходится организовывать в очереди. Очереди нужны для таких передач, поскольку заранее не известно, сколько раз придется пытаться их исполнить. Продвижение очереди возможно только по успешному выполнению транзакции, находящейся в голове очереди, — это правило обеспечивает гарантированный порядок (в пределах своей очереди) доставки пакетов. Каждая очередь имеет свой заголовок (QH). Изохронные передачи исполняются всегда однократно (здесь нет гарантированной доставки), что упрощает их планирование. Драйвер размещает дескрипторы TD и QH в памяти и связывает их между собой в соответствии с планом выполнения транзакций в каждом кадре. Драйверу UHC приходится составлять детальное «расписание» для каждого будущего кадра, для чего используется список Frame List на 1024 кадра. Хост-контроллер обходит списки дескрипторов, начиная с точки, на которую указывает Frame List для текущего кадра, и выполняет соответствующие транзакции. Результат исполнения транзакции помечается в ее дескрипторе, отработанная транзакция помечается как «неактивная», и контроллер, встретив ее при очередном обходе, просто переходит к следующей. Драйвер должен периодически просматривать дескрипторы, извлекая уже отработанные и передавая результаты выполнения клиентскому драйверу. Логика работы контроллера подразумевает, что одному запросу ввода/вывода (IRP) от клиентского драйвера может соответствовать несколько «передач» — элементов очереди. Драйвер UHC разбивает запрос на транзакции и помещает дескрипторы этих транзакций в соответствующую очередь, а очередь включает в ближайшие планы. Драйвер отвечает за балансировку загрузки шины в каждом кадре, в частности, за гарантию предоставления не менее 10% полосы для транзакций управляющих передач. Планированием кадров также обеспечивается требуемая частота обращений к точкам периодических передач.

Контроллер UHC является активным устройством PCI (Bus-Master). Основное взаимодействие драйвера с хост-контроллером происходит с помощью дескрипторов, расположенных в памяти. Контроллер имеет регистры (в пространстве ввода/вывода), с помощью которых можно управлять его поведением: выполнять сброс, глобальную приостановку и пробуждение, подстраивать частоту кадров, управлять запросами прерываний, управлять портами встроенного корневого хаба. Контроллер позволяет работать в отладочном режиме, останавливаясь после выполнения каждой транзакции.

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

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

В контроллере UHC имеется специальная поддержка традиционного интерфейса клавиатуры и мыши через контроллер 8042 — перехват обращений к портам 60h и 64h пространства ввода/вывода. При разрешенной эмуляции по обращениям ПО к этим портам UHC вызывает системное прерывание SMI (System Management Interrupt), обрабатывающееся в ПК на процессорах x86 в режиме SMM (System Management Mode), невидимо для обычных программ. Обработчик SMI, перехватывающий эти обращения, формирует последовательности действий, необходимые для их исполнения с помощью клавиатуры и (или) мыши USB. Единственное исключение делается при перехвате команд, управляющих вентилем GateA20, — вместо генерации SMI манипуляции этим вентилем выполняются аппаратно (как это давно делается и в 8042). Эта аппаратная поддержка включается установкой соответствующих параметров CMOS Setup.

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

Структуры данных и регистры контроллера UHC

Подробности Родительская категория: USB Категория: Хост USB

Драйвер в системной памяти создает список кадров Frame List, состоящий из 1024 элементов. Каждый элемент этого списка содержит 32-битный указатель на связанный список структур данных, по которым контроллер выполняет транзакции в данном кадре. Хост-контроллер имеет регистр базового адреса списка кадров, указывающий на начало списка. Текущий номер отрабатываемого элемента определяется десятью младшими битами счетчика кадров, находящегося в контроллере и инкрементируемого каждую миллисекунду. Период счета кадров можно немного варьировать, изменяя константу, занесенную в регистр модификации длительности кадра (SOF Modify Register), что обеспечивает возможность подстройки частоты кадров для синхронизации изохронных обменов.

Элемент списка кадров может указывать либо на дескриптор изохронной передачи TD (Transfer Descriptor), либо (если в данном кадре изохронный обмен не планируется) на заголовок очереди QH (Queue Head). Если в данном кадре вообще не планируются передачи, то в элементе устанавливается признак-«заглушка» T (Terminate, конец связанного списка, в данном случае — пустого). Еще раз напомним, что здесь слово «передача» (Transfer, согласно спецификации UHCI) употребляется в узком смысле — она соответствует одной транзакции (передаче не более одного пакета данных). Элемент (32-битное слово) имеет формат, приведенный на рисунке ниже. Поле FLLP (Frame List Link Pointer) — указатель на элемент; бит T — признак последнего элемента (при T = 1 указатель FLLP недействителен). Бит Q задает класс связанного элемента, на который указывает FLLP (0 — TD, 1 — QH).

Для каждого кадра из списка устанавливается своя цепочка дескрипторов изохронных передач (возможно и пустая), последний из этой цепочки должен ссылаться на цепочку заголовков очередей. Цепочки заголовков QH могут быть общими для группы кадров или даже для всех кадров списка. Общая идея построения очередей состоит в том, чтобы создавать свою очередь для каждого установленного канала (для всех сконфигурированных точек, кроме изохронных). «Дежурный» метод обслуживания — по горизонтали, тогда после выполнения транзакции с одной точкой контроллер перейдет к другой точке (другой очереди). Связывание TD и QH через указатели позволяет формировать произвольные конфигурации переходов от одной очереди к другой и даже делать петли — в последнем случае возможно, что с одной точкой в кадре успеют пройти несколько транзакций. Однако это нетипичный способ планирования. Если очередей много (установлено много каналов), то они распределяются по кадрам (из 1024-элементного списка) так, чтобы цепочка каждого кадра обязательно прошла по горизонтали до конца. Это можно спланировать, поскольку максимальное время для отработки одного элемента каждой очереди (как и изохронных транзакций) заранее известно (оно определяется типом передачи, максимальным размером пакета и скоростью устройства, что известно системе USB). При необходимости «горизонтальную справедливость» можно нарушить, задав вертикальный порядок обслуживания, — контроллер, успешно обработав из очереди передачу с признаком V = 1, перейдет к следующему дескриптору из этой же очереди, а не к следующей очереди.

Дескрипторы передач и заголовки очередей размещаются драйвером в ОЗУ по адресам, выровненным по границе параграфа, поскольку в качестве указателей используются лишь старшие 28 бит (биты [3:0] используются для служебных признаков).

Дескриптор передачи (TD) состоит из 32 байтов, из которых хост-контроллер использует только первые четыре 32-битных слова DW0–DW3. Слова DW4–DW7 зарезервированы для использования драйвером UHC (для организации «сборки мусора» — повторного использования отработанных областей). Формат дескриптора передачи приведен на рисунке ниже. Серым цветом выделены поля, модифицируемые хост-контроллером.

В слове DW0 поле Link Pointer аналогично полю FLLP, а биты T и Q аналогичны одноименным битам элемента списка кадров. Бит V — метод обслуживания TD (1 — в глубину, 0 — в ширину).

Слово DW1 используется для управления и определения состояния выполнения передачи, модифицируется хост-контроллером. Поле ActLen — действительная длина переданных данных; поле Status — состояние выполнения передачи:

длина переданных данных; поле Status — состояние выполнения передачи:

  • бит 23: Active — «надо исполнять», устанавливается драйвером, сбрасывается контроллером по успешному исполнению или исчерпанию лимита повторов;
  • бит 22: Stalled — точка ответила пакетом STALL;
  • бит 21: Data Buffer Error — ошибка буфера данных (переполнение или переопустошение FIFO при выполнении транзакции), транзакция остается активной (при переопустрошении контроллер генерирует пакет с ошибочным CRC, при переполнении не отвечает подтверждением);
  • бит 20: Babble — при выполнении данной транзакции обнаружена «болтливость» устройства (оно отключается и устанавливается бит Stalled);
  • бит 19: NAK — получение соответствующего ответа (в транзакции SETUP получение NAK устанавливает и признак ошибки тайм-аута);
  • бит 18: CRC/Time Out Error — обнаружена ошибка передачи (CRC или таймаут);
  • бит 17: Bitstuff Error — обнаружена ошибка вставки бит.

Биты [24:31] используются для управления передачей. Бит IOC заказывает прерывание по исполнению (прерывание генерируется в конце кадра, даже если транзакция уже неактивна, выборка ее дескриптора вызовет прерывание). Бит ISO — признак изохронной передачи (указание не делать повторных попыток). Бит LS — признак LS-устройства, использовать преамбулу перед передачей. Поле C_ERR — счетчик повторных попыток, декрементируемый по каждой ошибке. Переход в 1 или 0 вызывает перевод дескриптора в неактивное состояние. Если драйвер устанавливает нулевое значение, то число повторов неограниченно. Бит SPD — детектор короткого пакета: если в транзакции IN, стоящей в очереди, успешно принято меньше данных, чем ожидалось, то в конце кадра вырабатывается условие прерывания.

В слове DW2 содержится информация для выполнения транзакции: Packet ID — тип используемого маркера IN (69h), OUT (E1h) или SETUP (2Dh); Device Address— адрес устройства USB; EndPt — номер и направление конечной точки. Бит D (Data Toggle) — состояние переключателя для передаваемого или посылаемого пакета. Поле MaxLength — длина передаваемых данных (максимальная длина принимаемых), 000 — 1 байт, 001 — 2, 3FF — 1024; 7FFh — 0 (пустой пакет). Допустимые значения до 4FFh — 1280 байт, теоретический предел емкости кадра. Значения 500–7FEh недопустимы, вызывают фатальную ошибку контроллера.

В слове DW3 содержится Buffer Pointer — указатель на буфер в ОЗУ, используемый для данных этой передачи.

Заголовок очереди (QH) связывает очереди друг с другом (по горизонтали) и ссылается на первый элемент (TD) данной очереди. Хост-контроллер использует два 32-битных слова (см. следующий рисунок). В поле QHLP (Queue Head Link Pointer) содержится указатель на следующий заголовок очереди (горизонтальная связка). В поле QELP (Queue Element Link Pointer) содержится указатель на элемент очереди (вертикальная связка). Признаки последнего элемента (T) и класс связанного элемента (Q) аналогичны одноименным признакам и классам в вышеприведенных структурах.

Дескриптор заголовка очереди создается драйвером; хост-контроллер модифицирует в памяти указатель QELP: успешно отработав транзакцию, контроллер берет из DW0 ее дескриптора указатель на следующий элемент и помещает его на место QELP в заголовке очереди. Таким образом, успешно отработанный TD удаляется из очереди. Когда удаляется последний TD, в QELP устанавливается признак пустой очереди (T). В случае неисправимой ошибки при отработке какого-то дескриптора в QELP также устанавливается «заглушка» T — поток с гарантированной доставкой не позволяет пропустить какую-либо транзакцию. Поле QELP может ссылаться как на TD (тривиальный вариант планирования), так и на QH — очередь сама может содержать очереди.

Регистровая модель UHC поясняется в таблице ниже, где представлены регистры, отображенные на пространство ввода/вывода. Кроме того, как всякое устройство PCI, контроллер UHC имеет регистры в конфигурационном пространстве, в которых, в частности, задаются коды класса (0Ch — контроллер последовательной шины), подкласса (03 — USB) и программного интерфейса (00) в классификации PCI SIG.

Таблица. Регистры контроллера UHC

USBCMD — регистр команд USB

Биты 15:8 — резерв
Бит 7: MAXP (Max Packet) — допустимый размер пакета (для FS), с которым
возможна транзакция при подходе к концу кадра: 1 = 64 байт, 0 = 32 байта

Бит 6: CF (Configure Flag) — флаг, которым драйвер отмечает окончание процесса
конфигурирования контроллера (программный семафор для ПО)
Бит 5: SWDBG (Software Debug) — управление отладкой: 1=режим отладки (останов
после каждой транзакции), 0 — нормальный
Бит 4: FGR (Force Global Resume) — подача сигнала глобального
пробуждения.Устанавливается программно, сбрасывается аппаратно по окончании
пробуждения
Бит 3: EGSM (Enter Global Suspend Mode) — перевод в режим глобальной
приостановки
Бит 2: GRESET (Global Reset) — общий сброс контроллера и шины USB
Бит 1: HCRESET (Host Controller Reset) — сброс хост-контроллера
Бит 0 RS (Run/Stop) управление работой контроллера: 1=Run — выполнение
транзакций по плану, 0=Stop — останов

USBSTS — регистр состояния USB

Биты [15:6] — резерв
Бит 5: HCHalted — контроллер остановлен, программно или аппаратно (по ошибке
или при отладке)
Бит 4: Host Controller Process Error — фатальная ошибка исполнения (может
возникать и из-за некорректного задания PID в дескрипторе транзакций), вызывает
прерывание
Бит 3: Host System Error — системная ошибка (неполадки в интерфейсе PCI),
вызывает прерывание
Бит 2: Resume Detect — получение сигнала возобновления (при глобальной
приостановке)
Бит 1: USB Error Interrupt — признак прерывания по ошибке выполнения
транзакции (переполнение или переопустошение FIFO буфера шины PCI)
Бит 0: USBINT (USB Interrupt) — прерывание по выполнению транзакции
с установленным битом IOC или приему короткого пакета (при включенном
обнаружении короткого пакета)

USBINTR — регистр разрешения прерываний

Биты [15:4] — резерв
Бит 3: Short Packet Interrupt Enable — разрешение прерываний по приему
короткого пакета
Бит 2: IOC (Interrupt On Complete Enable) — разрешение прерываний по завершении
транзакции
Бит 1: Resume Interrupt Enable — разрешение прерываний по приему сигнала
возобновления
Бит 0: Timeout/CRC Interrupt Enable — разрешение прерываний по ошибке
тайм-аута и CRC-контролю

SOFMOD — регистр управления частотой кадров

Биты [6:0] — управление длительностью кадра: 0 — 11936 бит, 1 — 11937 бит, …
63 — 11999 бит, 64 — 12000 бит (номинал), 65 — 12001 бит, 127 — 12063 бит

PORTSC1 — регистр управления и состояния порта 1

Биты [15:13] — резерв (0)
Бит 12: (R/W) Suspend — приостановка порта
Биты [11:10] — резерв (0)
Бит 9: (R/W) Port Reset — сброс порта

Бит 8: (RO) Low Speed Device Attached — признак подключения LS-устройства
Бит 7 — резерв (1)
Бит 6: (RW) Resume Detect — обнаружение сигнала возобновления. Запись «1»
вызывает генерацию сигнала возобновления на порте, последующая запись
«0» — завершение сигнала возобновления и посылка LS-EOP Биты [5:4]: (RO) —
текущее состояние линий D- и D+
Бит 3: (R/WC) Port Enable/Disable Change — признак автоматического запрета
порта по ошибке, сбрасывается записью «1»
Бит 2: (R/W) Port Enabled/Disabled — разрешение работы порта
Бит 1: (R/WC) Connect Status Change — признак события подключения/
отключения устройства
Бит 0: (RO) Current Connect Status — признак подключенного устройства

«Открытый» хост-контроллер — OHC

Подробности Родительская категория: USB Категория: Хост USB

Спецификация интерфейса «открытого» хост-контроллера OpenHCI (OHCI) разработана компаниями Compaq, Microsoft и National Semiconductor и описана в документе «Open Host Controller Interface Specification for USB». Версия 1.0a этого документа опубликована в 1999 году. Контроллер OHC, как и UHC, предназначен для поддержки скоростей FS/LS. Однако аппаратные средства OHC берут на себя большую часть забот планирования, разгружая ЦП от рутины постоянной обработки дескрипторов. Контроллер OHC оперирует дескрипторами конечных точек и дескрипторами передач.

Дескрипторы конечных точек ED (Endpoint Descriptor) создаются для всех сконфигурированных конечных точек всех подключенных устройств. Эти дескрипторы размещаются в памяти и связываются между собой; конфигурация связей задает порядок их обслуживания хост-контроллером. Дескриптор конечной точки описывает ее полный адрес и направление, тип, допустимый размер пакета, скорость, состояние точки и дескриптора, указатели на очереди передач, связанных с данной точкой, указатель на дескриптор следующей точки. Для всех точек управления (Control) и всех точек передач массивов (Bulk) создаются отдельные цепочки ED, на начала этих цепочек указывают специальные регистры OHC. Дескрипторы точек периодических передач организуются в «поваленное» двоичное дерево (см. рисунок ниже), в «ветвях» которого размещаются дескрипторы точек прерываний, а в «стволе» — дескрипторы точек прерываний с минимальным интервалом обслуживания и все дескрипторы точек изохронных передач. У дерева имеются 32 конечных ветви, проход по дереву осуществляется от конечных ветвей к стволу. В каждом из 32 смежных кадров вход осуществляется со своей ветви. Для этого в OHC имеется регистр базового адреса HCCA (Host Controller Communication Area, область коммуникаций хост-контроллера), указывающий на ветвь с номером 0, и счетчик кадров, 5 младших бит которого задают номер ветви входа для очередного кадра. Таким образом, через каждую ветвь пятого уровня (конечного) обработчик дескрипторов проходит 1 раз за 32 кадра (T = 32 мс), четвертого — 1 раз за 16 кадров (T = 16 мс), для третьего уровня — T = 8 мс, для второго — T = 4 мс, для первого — T = 2 мс, для нулевого (ствола) — T = 1 мс.

Дескрипторы передач TD (Transfer Descriptor), в отличие от TD UHC, для OHC действительно описывают передачи USB. Каждая передача может разбиваться на несколько транзакций, и это разбиение выполняет хост-контроллер исходя из размера пакета, установленного в дескрипторе конечной точки. Буфер данных для передачи может располагаться в одной или двух физических страницах памяти, возможно, разрозненных. В виртуальном пространстве логических адресов буфер должен быть непрерывной областью. Размер передачи может достигать 8 Кбайт, но если буфер начинается не с начала страницы, то допустимый размер передачи сократится (в худшем случае до 4097 байт). Дескрипторы передач собираются в очереди, которые прикрепляются к дескрипторам конечных точек.

Хост-контроллер OHC имеет таймеры, с помощью которых он осуществляет планирование транзакций в кадре. После SOF контроллер начинает обход цепочки ED для управляющих передач и выполняет столько из них, сколько успеет за время T1. Далее он начинает обход дерева периодических передач, от n-й конечной ветви до ствола, пока не пройдет по всем встретившимся ED. Если у него еще остается время в кадре, он снова берется за непериодические передачи (Bulk и Control). Отработанные (успешно или снятые по превышению порога ошибок) дескрипторы контроллер собирает в специальную очередь обработанных дескрипторов Done Queue, откуда их без труда извлекает драйвер. Контроллер может вырабатывать прерывания по завершению обработки TD, причем с заданной (для каждого TD) задержкой (или не вырабатывать запрос). Контроллер OHC имеет регистр для подстройки частоты кадров. В контроллер входит и корневой хаб на 2 или более порта.

Контроллер OHC, как и UHC, обычно является активным устройством PCI (Bus Master), но по сравнению с UHC наделен большим интеллектом. В контроллере предусмотрена поддержка контроллера клавиатуры и мыши (KBC) с помощью прерываний SMI, но, в отличие от UHC, в OHC имеются и специальные регистры, упрощающие задачу эмуляции.

Еще статьи.

  1. Структуры данных и регистры контроллера OHC
  2. «Расширенный» хост-контроллер — EHC
  3. Структуры данных и регистры EHC
  4. USB без ПК — расширение On-The-Go

ИНТЕРФЕЙС USB, ПРОТОКОЛ, ТЕХНИЧЕСКАЯ РЕАЛИЗАЦИЯ

шнтерфейс USB: описание и основы устройств сопряжения

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

0. Низкая скорость (Low Speed — LS) — 1,5 Мбит/с;
1. Полная скорость (Full Speed — FS) — 12 Мбит/с;
2. Высокая скорость (High Speed — HS) — 480 Мбит/с.

Для подключения периферийных устройств используется 4-жильный
кабель: питание +5 В, сигнальные провода D+ и D-, общий провод.
шнтерфейс USB соединяет между собой хост (host) и устройства. Хост
находится внутри персонального компьютера и управляет работой всего
интерфейса. Для того, чтобы к одному порту USB можно было подключать
более одного устройства, применяются хабы (hub — устройство,
обеспечивающее подключение к интерфейсу других устройств). Корневой хаб
(root hub) находится внутри компьютера и подключен непосредственно к
хосту. В интерфейсе USB используется специальный термин «функция» — это
логически законченное устройств, выполняющее какую-либо специфическую
функцию. Топология интерфейса USB представляет собой набор из 7 уровней
(tier): на первом уровне находится хост и корневой хаб, а на последнем —
только функции. Устройство, в состав которого входит хаб и одна или
несколько функций, называется составным (compaund device).
Порт хаба или функции, подключаемый к хабу более высокого уровня,
называется восходящим портом (upstream port), а порт хаба, подключаемый
к хабу более низкого уровня или к функции называется нисходящим портом
(downstream port).
Все передачи данных по интерфейсу иницируются хостом. Данные
передаются в виде пакетов. В интерфейсе USB испольуется несколько
разновидностей пакетов:
пакет-признак (token paket) описывает тип и направление передачи
данных, адрес устройства и порядковый номер конечной точки (КТ —
адресуемая часть USB-устройства); пакет-признаки бывают нескольких
типов: IN, OUT, SOF, SETUP;
пакет с данными (data packet) содержит передаваемые данные;
пакет согласования (handshake packet) предназначен для сообщения о
результатах пересылки данных; пакеты согасования бывают нескольких
типов: ACK, NAK, STALL.
Таким образом каждая транзакция состоит из трех фаз: фаза передачи
пакета-признака, фаза передачи данных и фаза согласования.
В интерфейсе USB используются несколько типов пересылок
информации.
Управляющая пересылка (control transfer) используется для
конфигурации устройства, а также для других специфических для
конкретного устройства целей.
Потоковая пересылка (bulk transfer) используется для передачи
относительно большого объема информации.
Пересылка с прерыванием (iterrupt transfer) испольуется для передачи
относительно небольшого объема информации, для которого важна
своевременная его пересылка. Имеет ограниченную длительность и
повышенный приоритет относительно других типов пересылок.
Изохронная пересылка (isochronous transfer) также называется
потоковой пересылкой реального времени. Информация, передаваемая в такой
пересылке, требует реального масштаба времени при ее создании, пересылке
и приеме.
Потоковые пересылки характеризуются гарантированной безошибочной
передачей данных между хостом и функцией посредством обнаружения ошибок
при передаче и повторного запроса информации.
Когда хост становится готовым принимать данные от функции, он в
фазе передачи пакета-признака посылает функции IN-пакет. В ответ на это
функция в фазе передачи данных передает хосту пакет с данными или, если
она не может сделать этого, передает NAK- или STALL-пакет. NAK-пакет
сообщает о временной неготовности функции передавать данные, а STALL-
пакет сообщает о необходимости вмешательства хоста. Если хост успешно
получил данные, то он в фазе согласования посылает функции ACK-пакет. В
противном случае транзакция завершается.
Когда хост становится готовым передавать данные, он посылает
функции OUT-пакет, сопровождаемый пакетом с данными. Если функция
успешно получила данные, он отсылает хосту ACK-пакет, в противном случае
отсылается NAK- или STALL-пакет.
Управляющие пересылки содержат не менее двух стадий: Setup-стадия
и статусная стадия. Между ними может также располагаться стадия передачи
данных. Setup-стадия используется для выполнения SETUP-транзакции, в
процессе которой пересылается информация в управляющую КТ функции. SETUP-
транзакция содержит SETUP-пакет, пакет с данным и пакет согласования.
Если пакет с данными получен функцией успешно, то она отсылает хосту ACK-
пакет. В противном случае транзакция завершается.
В стадии передачи данных управляющие пересылки содержат одну или
несколько IN- или OUT-транзакций, принцип передачи которых такой же, как
и в потоковых пересылках. Все транзакции в стадии передачи данных должны
производиться в одном направлении.
В статусной стадии производится последняя транзакция, которая
использует те же принципы, что и в потоковых пересылках. Направление
этой транзакции противоположно тому, которое использовалось в стадии
передачи данных. Статусная стадия служит для сообщения о результате
выполнения SETUP-стадии и стадии передачи данных. Статусная информация
всегда передается от функции к хосту. При управляющей записи (Control
Write Transfer) статусная информация передается в фазе передачи данных
статусной стадии транзакции. При управляющем чтении (Control Read
Transfer) статусная информация возвращается в фазе согласовании
статусной стадии транзакции, после того как хост отправит пакет данных
нулевой длины в предыдущей фазе передачи данных.
Пересылки с прерыванием могут содержать IN- или OUT-пересылки. При
получении IN-пакета функция может вернуть пакет с данными, NAK-пакет или
STALL-пакет. Если у функции нет информации, для которой требуется
прерывание, то в фазе передачи данных функция возвращает NAK-пакет. Если
работа КТ с прерыванием приостановлена, то функция возвращает STALL-
пакет. При необходимости прерывания функция возвращает необходимую
информацию в фазе передачи данных. Если хост успешно получил данные, то
он посылает ACK-пакет. В противном случае согласующий пакет хостом не
посылается.
Изохронные транзакции содержат фазу передачи признака и фазу
передачи данных, но не имеют фазы согласования. Хост отсылает IN- или
OUT-признак, после чего в фазе передачи данных КТ (для IN-признака) или
хост (для OUT-признака) пересылает данные. Изохронные транзакции не
поддерживают фазу согласования и повторные посылки данных в случае
возникновения ошибок.
В связи с тем, что в интерфейсе USB реализован сложный протокол
обмена информацией, в устройстве сопряжения с интерфейсом USB необходим
микропроцессорный блок, обеспечивающий поддержку протокола. Поэтому
основным вариантом при разработке устройства сопряжения является
применение микроконтроллера, который будет обеспечивать поддержку
протокола обмена. В настоящее время все основные производители
микроконтроллеров выпускают продукцию, имеющую в своем составе блок USB
,например фирма Atmel производит контроллёр AT43355 на ядре AVR. Имеет
встроенные USB-функцию и хаб с 2 внешними нисходящими портами,
работающие в LS/FS-режимах, 1 кбайт ОЗУ, 24 кбайт ПЗУ, 32х8 регистров
общего назначения, 27 программируемых выводов, последовательный и SPI-
интерфейсы, 12-канальный 10-разрядный АЦП. Функция имеет 1 управлющую КТ
и 3 программируемых КТ с буферами FIFO размером 64/64/8 байт.

Спецификация USB

Спецификация периферийной шины USB разработана лидерами компьютерной и
телекоммуникационной промышленности — Compaq, DEC, IBM, Intel, Microsoft,
NEC и Northern Telecom — для подключения компьютерной периферии вне
корпуса машины по стандарту plug’n’play, в результате отпадает
необходимость в установке дополнительных плат в слоты расширения и
переконфигурировании системы. Персональные компьютеры, имеющие шину USB,
позволяют подключать периферийные устройства и осуществляют их
автоматическое конфигурирование, как только устройство физически будет
присоединено к машине, и при этом нет необходимость перезагружать или
выключать компьютер, а так же запускать программы установки и
конфигурирования. Шина USB позволяет одновременно подключать
последовательно до 127 устройств, таких, как мониторы или клавиатуры,
выполняющие роль дополнительно подключенных компонентов, или хабов (т.е.
устройство, через которое подключается еще несколько).
Создатели.
USB была разработана группой из семи компаний, которые видели необходимость
во взаимодействии для обеспечения дальнейшего роста и развития расцветающей
индустрии интегрированных компьютеров и телефонии. Эти семь компаний,
продвигающие USB, следующие: Compaq, Digital Equipment Corp, IBM PC Co.,
Intel, Microsoft, NEC и Northern Telecom.
Работа USB.
USB определяет, добавлено устройство или отключено, благодаря
своей
разумности, обеспечиваемой основной системой. Шина автоматически
определяет, какой системный ресурс, включая программный драйвер и
пропускную способность, нужен каждому периферийному устройству и делает
этот ресурс доступным без вмешательства пользователя. Владельцы
компьютеров, оснащенных шиной USB имеют возможность переключать совместимые
периферийные устройства, так же просто, как они вкручивают новую лампочку в
лампу.

Виды периферийного оборудования, которые поддерживает USB

Вы знаете эти устройства: телефоны, модемы, клавиатуры, мыши, устройства
чтения CD ROM, джойстики, ленточные и дисковые накопители, сканеры и
принтеры, MP3-плееры и флаш-драйвы. Скорость прокачки в 480 мегабит/секунду
позволяет подключать через USB все современное поколение периферийных
устройств, включая аппаратуру для обработки видео данных формата MPEG-2,
перчатки для управления виртуальными объектами и дигитайзеры. Также, с
ожиданием большого роста в области интеграции компьютеров и телефонии, шина
USB может выступать в качестве интерфейса для подключения устройств
Цифровой сети с интегрированными услугами (ISDN) и цифровых устройств
Private Branch eXchange (PBX), позволяющих подключать большое количество
телефонов к небольшому количеству линий связи.
Программное обеспечение, которое нужно для работы USB.
Операционная система Windows 95 (начиная с версии OSR 2.1, выпущенной 29
октября 1996г.) поставляется уже со встроенными драйверами, которые
позволяет Вашему персональному компьютеру распознавать USB периферию. В
результате, Вам не нужно покупать или инсталлировать дополнительное
программное обеспеченье для каждого нового периферийного устройства. Тем не
менее, вместе с новой USB периферией вы получите дискету с новыми
драйверами. Однако, не все так радужно — например, корректную работу
принтера с интерфейсом USB способна обеспечить только OC Windows 98 и выше.

Значение USB для поставщиков систем и периферии

Совместимость USB строится на основе технологически целостной и открытой
спецификации, которая удовлетворяет потребностям потребителей в легко
расширяемых компьютерах. В свою очередь, для поставщиков и реселлеров
компьютеров, периферии и программного обеспечения, совместимость USB
принесет прибыль, за счет использования новых методов маркетинга:
. «Готовая платформа» позволяет логично связать аппаратное и
программное обеспечение для совместной поставки покупателю.
. USB может снизить риск возможной несовместимости периферийного и
программного обеспечения, поставляемого с компьютерами, за счет
поставки готовых систем по ключ, которые удовлетворяют
требованиям специализированных рыночных ниИ.
. USB-совместимая периферия может предложить частным и
корпоративным покупателям больший выбор оборудования, без страха
снижения функциональных возможностей аппаратных средств.
. Реселлеры получают большую гибкость в подборе аппаратуры и
готовых систем, для стимуляции покупательского спроса, за счет
возможности комбинирования комплектов поставляемой периферии,
без опасений, что что-то с чем-то не будет работать в паре.
. USB может обеспечить поставщикам периферии дополнительную
выгоду, за счет поставки нового оборудования для систем,
использующих технологию MMX™.
. USB может помочь поставщикам снизить их затраты на разработки,
что в свою очередь позволит им устанавливать новые, более
конкурентоспособные, цены.
Применение USB при наличие двух систем, например ноутбука и настольного
компьютера.
Применение маленького адаптера, который будет определен в качестве
устройства для каждой USB системы, которая входит в соединение. Два USB
контроллера периферии с общим буфером памяти будет наиболее оптимальным
решением, стоимость которого не должна превысить $50. Корпус адаптера может
выглядеть, как маленькая капля в середине кабеля или, может быть, небольшое
утолщение, расположенное на одном из его концов. Кабель, подобный
описанному, сможет выполнять так же и функции хаба, всего лишь за небольшую
дополнительную плату, а это уже гораздо более ценный продукт.
Возможность увеличения длины соединения устройств через шину USB до 50-200
метров (например, используя оптоволокно).
Периферийный интерфейс USB предназначен для настольных систем, а расстояние
в 200 метров, похоже, соответствует очень большему столу. Многие компании,
входящие в сообщество внедрения USB, уже долгое время обсуждают проблему
применения шины на больших расстояниях и думают о создании продуктов,
которые позволили бы сделать это возможным. Устройство расширения выглядит
как два хаба для шины USB, однако использует другие протоколы (например,
для оптоволокна) между точками соединения кабеля. На каждом конце
электрический сигнал в USB должен быть транслирован в или из сигнала для
длинных расстояний. Для того, что бы все это стало возможным, необходимо
решить вопросы, связанные с протоколом передачи пакетов данных и временными
задержками, которые должны быть совместимы и соответствовать спецификации.
Разница между соединителями серии «A» и «B».
Коннекторы серии «A» разработаны для всех устройств USB, и являются
разъемом для периферии и гнездом для персонального компьютера. В
большинстве случаев, кабель USB должен быть встроен в периферийное
устройство. Это снижает стоимость соединителей, избавляет от
несовместимости, возможной в случае разного сопротивления кабелей, и
упрощает действия пользователей по подключению. Однако в некоторых случаях
встроенный кабель нельзя использовать. Хорошим примером могут служить очень
большие и тяжелые устройства, плохо сочетатающиеся с тонким кабелем,
который нельзя удалить, а так же устройства, подключаемые только изредка,
которые интенсивно используются, когда не являются подключенными. Для таких
случаев и были созданы коннекторы серии «B». Две серии коннекторов
различаются внешне, это сделано для предотвращения соединений, которые бы
могли нарушить топологию архитектуры USB.
Разница между основным хабом и обычным с точки зрения аппаратной реализации
и программного обеспечения.
Все хабы совершенно одинаковы с точки зрения программного обеспечения
(кроме разницы, как устройств имеющих питание и нет). Основной хаб (или
корневой), это просто первый хаб, обнаруженный при нумерации. Во многих
реализациях основной хаб может быть интегрирован в ту же микросхему, что и основной контроллер, это позволяет снизить стоимость.

Технология USB 2.0

Следующий год, по прогнозам аналитиков, должен стать переломным в пользу
нового (относительно) USB 2.0. А ведь многие еще и с первым-то незнакомы.
Скорости с которой производители «компьютерных железяк» разрождаются новыми
творениями можно только удивляться.
Пользователь в таком огромном потоке высокотехнологичных устройств
часто теряется, и многие технологии остаются за гранью его внимания. Так
вот и шина USB, какой бы новой многим она ни казалась, — технология в
возрасте. Десятилетний юбилей не за горами. Жизнь ее началась в далеком
1995 году, когда многие компании, стремясь следовать провозглашенному
принципу Plug’n’Play стремились создать нечто, позволяющее сделать
процедуру добавления новых устройств в систему настолько простой, насколько
это вообще возможно, да и к тому же универсальное, пригодное для большого
числа разного вида устройств. Эта идея объединила лидеров компьютерной и
телекоммуникационной промышленности в лицах Compaq, DEC, IBM, Intel,
Microsoft, NEC и Northern Telecom. Мы же простые пользователи, с трепетом
ожидали окончания разработок.
Ведь если новая технология действительно будет работать, то это позволит
забыть о проблеме постоянной нехватки коммуникационных портов, с которой в
те годы благодаря значительно увеличившейся доступности периферии многим
уже довелось столкнуться.
Что ж. Их мучения не прошли даром. И хотя поначалу внедрение шло с очень
большим скрипом, сегодня сотни миллионов компьютеров по всему миру оснащены
шиной USB, а периферийных устройств с этим интерфейсов всех не перечесть:
от мышек и клавиатур до жестких дисков, приводов для записи CD и DVD и др.
Причиной скрипа при внедрении был замкнутый круг: естественно, что новая
шина должна была поддерживаться операционной системой, а Windows 95 этим
похвастаться не могла. Microsoft не горела желанием работать не пойми для
чего — устройства с USB интерфейсом можно было пересчитать едва ли не на
пальцах, а в производители аппаратного обеспечения в свою очередь не хотели
делать устройства для не поддерживающейся популярной ОС шины.
Выход обновлений OSR2.1 не сильно изменил ситуацию, так как сделано все
было в нем через пень-колоду (кстати, а в NT системах она так и не
появилась. до Windows 2000). Основная поддержка была со стороны компаний
производителей систем и системных компонентов — для них это было источником
прибыли (по данным аналитиков Dataquest объем продаж систем с USB должен
был составить в 1997 году 30 млн штук и в 1998 все продаваемые компьютеры
должны были быть оснащены этой шиной (возможно так и было, но не у нас) и, потом, товарищи верили, что взойдет она, звезда пленительного
счастья.
Пусть не сегодня, завтра, но взойдет. Так и случилось. Переломным моментом
в истории USB стал выход Windows 98: появилась поддержка, начался выпуск
устройств, и технология начала свое существование не только у
разработчиков,
но и у пользователей, кстати, многие из которых относят
появление именно к этому моменту.
Сегодня USB — это очень популярная универсальная последовательная шина.
Предназначена для легкого подключения различного вида устройств это
клавиатуры, мыши, джойстики, колонки, модемы, мобильные телефоны,
ленточные, дисковые, оптические и магнитооптические накопители, флэш-диски,
сканеры и принтеры, дигитайзеры, словом все, что подключается к ПК. Также,
с ожиданием большого роста в области интеграции компьютеров и телефонии,
шина USB может выступать в качестве интерфейса для подключения устройств
цифровой сети с интегрированными услугами (ISDN) и цифровых устройств
Private Branch eXchange (PBX).
Пропускной способности в 480 Мбит/с в версии 2.0 достаточно для
удовлетворения потребностей всех этих применений в полной мере. Добавление устройств больше не сопряжено с установкой дополнительных адаптеров,
выполнением сложного конфигурирования, ручным инсталлированием
дополнительного программного обеспечения: система автоматически определяет,
какой ресурс, включая программный драйвер и пропускную способность, нужен
каждому периферийному устройству и делает этот ресурс доступным без
вмешательства пользователя. Популярная периферия сегодня доступна в
вариантах с USB гораздо чаще, чем с другими.
Существовавшей раньше разницы в цене в 10-15-20 долларов и
заоблачных цен на внешние USB-контроллеры нет, более того, уже давно USB-
контроллеры интегрируются в чипсеты материнских плат, и пользователь
получает их в свое распоряжение практический задаром. USB вышел в массы и
нужно констатировать тот факт, что COM LPT и PS/2 порты медленно умирают.
Что ж. Давно пора было избавиться от многочисленных пережитков прошлого.
Это та красивая внешняя сторона, которой USB обращена к пользователю.
Наверное многие слышали о том что USB шина позволяет подключать до 127
устройств. И в тоже время на задней стенке обычно находится 2 или 4 порта.
И у многих наверняка возник вопрос — нас обманули, на нас сэкономили
(меньше портов — дешевле система. Хотя… 127 портов разместить на задней
панели… Даже представить сложно) или что-то еще. Оказывается дело все в
том, что шина USB позволяет многоуровневое каскадирование.

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

Стандарт USB определяет электрические и механические спецификации шины. Информационные сигналы и питающее напряжение 5 В передаются по четырехпроводному кабелю. Используется дифференциальный способ передачи сигналов D+ и D- по двум проводам. Уровни сигналов передатчиков в статическом режиме должны быть ниже 0,3 В (низкий уровень) или выше 2,8 В (высокий уровень). Приемники выдерживают входное напряжение в пределах — 0,5. +3,8 В. Передатчики должны уметь переходить в высокоимпедансное состояние для двунаправленной полудуплексной передачи по одной паре проводов.
Передача по двум проводам в USB не ограничивается дифференциальными сигналами. Кроме дифференциального приемника каждое устройство имеет линейные приемники сигналов D+ и D-, а передатчики этих линий управляются индивидуально. Это позволяет различать более двух состояний линии, используемых для организации аппаратного интерфейса. Состояния Diff0 и Diff1 определяются по разности потенциалов на линиях D+ и D- более 200 мВ при условии, что на одной из них потенциал выше порога срабатывания VSE. Состояние, при котором на обоих входах D+ и D- присутствует низкий уровень, называется линейным нулем (SEO — Single-Ended Zero). Интерфейс определяет следующие состояния:
— Data J State и Data К State — состояния передаваемого бита (или просто J и К), определяются через состояния Diff0 и Diff1.
— Idle State — пауза на шине.
— Resume State — сигнал «пробуждения» для вывода устройства из «спящего» режима.
— Start of Packet (SOP) — начало пакета (переход из Idle State в К).
— End of Packet (EOP) — конец пакета.
— Disconnect — устройство отключено от порта.
— Connect — устройство подключено к порту.
— Reset — сброс устройства.
Состояния определяются сочетаниями дифференциальных и линейных сигналов; для полной и низкой скоростей состояния DiffO и Diff1 имеют противоположное назначение.
В декодировании состояний Disconnect, Connect и Reset учитывается время нахождения линий (более 2,5 мс) в определенных состояниях.
Шина имеет два режима передачи. Полная скорость передачи сигналов USB составляет 12 Мбит/с, низкая — 1,5 Мбит/с. Для полной скорости используется экранированная витая пара с импедансом 90 Ом и длиной сегмента до 5 м, для низкой — невитой неэкранированньгй кабель до 3 м. Низкоскоростные кабели и устройства дешевле высокоскоростных. Одна и та же система может одновременно использовать оба режима; переключение для устройств осуществляется прозрачно.
Низкая скорость предназначена для работы с небольшим количеством ПУ, не требующих высокой скорости. Скорость, используемая устройством, подключенным к конкретному порту, определяется хабом по уровням сигналов
на линиях D+ и D-, смещаемых нагрузочными резисторами R2 приемопередатчиков (см. рис. 7.2 и 7.3).
Сигналы синхронизации кодируются вместе с данными по методу NRZI (Non Return to Zero Invert), его работу иллюстрирует рис. 7.4. Каждому пакету предшествует поле синхронизации SYNC, позволяющее приемнику настроиться на частоту передатчика. Кабель также имеет линии VBus и GND для передачи питающего напряжения 5 В к устройствам. Сечение проводников выбирается в соответствии с длиной сегмента для обеспечения гарантированного уровня сигнала и питающего напряжения.

Рис. 7.4. Кодирование данных по методу NRZI

Стандарт определяет два типа разъемов (см. табл. 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 состоят из трех пакетов. Каждая транзакция планируется и начинается по инициативе контроллера, который посылает пакет-аркер (Token Packet). Он описывает тип и направление передачи, адрес ус-тройства USB и номер конечной точки. В каждой транзакции возможен обмен только между адресуемым устройством (его конечной точкой) и хостом. Адресуемое маркером устройство распознает свой адрес и готовится к обмену. Источник данных (определенный маркером) передает пакет данных (или уведомление об отсутствии данных, предназначенных для передачи). После успешного приема пакета приемник данных посылает пакет подтверждения (Handshake Packet).
Планирование транзакций обеспечивает управление поточными каналами. На аппаратном уровне использование отказа от транзакции (NAck) при недопустимой интенсивности передачи предохраняет буферы от переполнения сверху и снизу. Маркеры отвергнутых транзакций повторно передаются в свободное для шины время. Управление потоками позволяет гибко планировать обслуживание одновременных разнородных потоков данных.
Устойчивость к ошибкам обеспечивают следующие свойства USB:
— Высокое качество сигналов, достигаемое благодаря дифференциальным приемникам/передатчикам и экранированным кабелям.
— Защита полей управления и данных CRC-кодами.
— Обнаружение подключения и отключения устройств и конфигурирование ресурсов на системном уровне.
— Самовосстановление протокола с тайм-аутом при потере пакетов.
— Управление потоком для обеспечения изохронности и управления аппаратными буферами.
— Независимость функций от неудачных обменов с другими функциями.
Для обнаружения ошибок передачи каждый пакет имеет контрольные поля CRC-кодов, позволяющие обнаруживать все одиночные и двойные битовые ошибки. Аппаратные средства обнаруживают ошибки передачи, а контроллер автоматически производит трехкратную попытку передачи. Если повторы безуспешны, сообщение об ошибке передается клиентскому ПО.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *