ИНТЕРФЕЙС USB Интерфейсы периферийных устройств 1 1.

Презентация:



Advertisements
Похожие презентации
Периферийные устройства ЭВМ. Внешние интерфейсы Шина USB USB – универсальная последовательная шина, предназначенная для подключения к компьютеру периферийных.
Advertisements

Лекция 10. Контроллеры параллельной передачи данных. Параллельный интерфейс.
Структурная схема компьютера Взаимодействие устройств компьютера.
Схема компьютера Взаимодействие устройств компьютера.
ПОДСИСТЕМА ВВОДА-ВЫВОДА 1. Общие принципы организации ввода-вывода 2 Систему ВВ можно представить в виде пространства ВВ IOSEGment и ряда команд ВВ. Пространство.
Структурная схема компьютера Взаимодействие устройств компьютера.
Микроконтроллеры AVR семейства Mega. Отличительные особенности FLASH-память программ объемом от 8 до 256 Кбайт (число циклов стирания/записи не менее.
Магитстрально- модульное построение компьютера. архитектурой ЭВМ называется описание структуры и принципов работы компьютера без подробностей технической.
Устройства хранения информации Кэш - память Основная память Магнитный (жесткий) диск Регистры Оптические носителиМагнитные носители.
Взаимодействие устройств компьютера. Общая структурная схема компьютера.
Магистрально-модульный принцип построения компьютера Выполнил учитель информатики АСОШ 2: Шарипов И.И.
Тема урока: ТРИГГЕР. или не не Разнообразие современных компьютеров очень велико. Но их структуры основаны на общих логических принципах, позволяющих.
Лекция 4. Режимы работы микропроцессора. Взаимодействие микропроцессора с остальными устройствами Взаимодействие МП с остальными устройствами МПС происходит.
Учебный курс Введение в цифровую электронику Лекция 3 Цифровые устройства с внутренней памятью кандидат технических наук, доцент Новиков Юрий Витальевич.
План изучения нового материала 1.Системная или материнская плата. Магистраль: 1 ). шина данных 2). шина адреса 3). шина управления 3. Шины периферийных.
11 класс, 2 урок. CPU RAM Информационная магистраль (шина) Шина данных (8, 16, 32, 64 бита) Шина адреса (16, 20, 24, 32, 36, 64 бита) Шина управления.
Процессоры Intel в защищенном режиме. Недостатки реального режима Невозможно адресовать пространство памяти свыше 1-го Мб Невозможно работать с массивами,
Физические модели баз данных Файловые структуры, используемые для хранения информации в базах данных.
Системы с несколькими конвейерами В процессорах Intel конвейер появился только начиная с 486 модели. Но уже в Pentium-е было два конвейера из 5 стадий:
Лекция 6. Способы адресации в микропроцессорных системах.
Транксрипт:

ИНТЕРФЕЙС USB Интерфейсы периферийных устройств 1 1

ОГЛАВЛЕНИЕ 1. Обзор шины USB Обзор шины USB 2. Физический интерфейс Физический интерфейс 3. Модель передачи данных Модель передачи данных 4. Типы сообщений в USB Типы сообщений в USB 5. Классы устройств USB Классы устройств USB 6. Кадры Кадры 7. Конечные точки Конечные точки 8. Каналы Каналы 9. Пакеты Пакеты 10. Формат пакетов-маркеров IN, OUT, SETUP и PING Формат пакетов-маркеров IN, OUT, SETUP и PING 11. Формат пакета SOF Формат пакета SOF 12. Формат пакета данных Формат пакета данных 13. Формат пакета подтверждения Формат пакета подтверждения 14. Формат пакета SPLIT Формат пакета SPLIT 15. Контрольная сумма Контрольная сумма Алгоритм вычисления CRC Алгоритм вычисления CRC 17. Типы транзакций Типы транзакций 18. Подтверждение транзакций и управление потоком Подтверждение транзакций и управление потоком 19. Управляющие посылки Управляющие посылки 20. Передачи массивов данных Передачи массивов данных 21. Передачи по прерываниям Передачи по прерываниям 22. Изохронные передачи Изохронные передачи 23. Форматы пакетов Форматы пакетов 24. Инициализация устройств Инициализация устройств 25. Устройства USB - функции и хабы Устройства USB - функции и хабы 26. Стандартные дескрипторы устройства Стандартные дескрипторы устройства 27. Хост-контроллер Хост-контроллер

ОБЗОР ШИНЫ USB USB (Universal Serial Bus) универсальная последовательная шина: является промышленным стандартом расширения архитектуры PC, ориентированным на интеграцию с телефонией и устройствами бытовой электроники. Число устройств: до 127 Пропускная способность: до 480 МБ/с 3 3 Логотип Universal Serial Bus

Взаимодействие компонентов USB В рассматриваемую структуру входят следующие элементы: Физическое устройство USB устройство на шине, выполняющее функции, интересующие конечного пользователя. Client SW ПО, соответствующее конкретному устройству, исполняемое на хост-компьютере. Может являться составной частью ОС или специальным продуктом. USB System SW системная поддержка USB, независимая от конкретных устройств и клиентского ПО. USB Host Controller аппаратные и программные средства для подключения устройств USB к хост-компьютеру. ОБЗОР ШИНЫ USB 4 4

ФИЗИЧЕСКИЙ ИНТЕРФЕЙС Стандарт USB определяет электрические и механические спецификации шины. Информационные сигналы и питающее напряжение 5 В передаются по четырехпроводному кабелю. Используется дифференциальный способ передачи сигналов D+ и D- по двум проводам. Уровни сигналов передатчиков в статическом режиме должны быть ниже 0,3 В (низкий уровень) или выше 2,8 В (высокий уровень). Приемники выдерживают входное напряжение в пределах - 0,5...+3,8 В. Передатчики должны уметь переходить в высокоимпедансное состояние для двунаправленной полудуплексной передачи по одной паре проводов. 5 5

ФИЗИЧЕСКИЙ ИНТЕРФЕЙС Передача по двум проводам в USB не ограничивается дифференциальными сигналами. Кроме дифференциального приемника каждое устройство имеет линейные приемники сигналов D+ и D-, а передатчики этих линий управляются индивидуально. Это позволяет различать более двух состояний линии, используемых для организации аппаратного интерфейса. Состояния DiffO и Diffi определяются по разности потенциалов на линиях D+ и D- более 200 мВ при условии, что на одной из них потенциал выше порога срабатывания Vse- Состояние, при котором на обоих входах D+ и D- присутствует низкий уровень, называется линейным нулем (SE0 Single-Ended Zero). 6 6

Шина USB имеет три режима передачи данных: низкоскоростной (LS, Low-speed) до 1,5 Мбит/с; полноскоростной (FS, Full-speed) до 12 Мбит/с; высокоскоростной (HS, High-speed, только для USB 2.0) до 480 Мбит/с. Для низкоскоростных и полноскоростных устройств дифференциальная "1" передается путем подтяжки линии D+ к напряжению более 2,8В, а линии D- к напряжению менее 0,3В. При этом линии D+ и D- терминированы на стороне хоста (нисходящего потока) резисторами 15кОм, подключенными к земле. Скорость, используемая устройством, подключенным к конкретному порту, определяется хабом по уровням сигналов D+ м D-, смещаемых нагрузочными резисторами приемопередатчиков: устройства с низкой скоростью "подтягивают" к высокому уровню линию D-, с полной D+. Подключение HS-устройств определяется на этапе конфигурирования. ФИЗИЧЕСКИЙ ИНТЕРФЕЙС 7 7

Подключение низкоскоростного устройства 8 8 Подключение полноскоростного устройства

ФИЗИЧЕСКИЙ ИНТЕРФЕЙС 9 9 Дифференциальный 0 передается путем подтяжки линии D+ к напряжению менее 0,3В, а линии D- к напряжению более 2,8В. Приемник определяет дифференциальную единицу только в том случае, когда напряжение на линии D+ больше на 200мВ, чем на линии D-, а дифференциальный 0 -когда напряжение на линии D+ меньше на 200мВ, чем на линии D-. Передача по двум проводам в USB не ограничивается дифференциальными сигналами. Кроме дифференциального приемника каждое устройство имеет линейные приемники сигналов D+ и D-, а передатчики этих линий управляются индивидуально. Это позволяет различать более двух состояний линии, используемых для организации аппаратного интерфейса. Состояние, при котором разность потенциалов на линиях D+ и D- составляет более 200 мВ при условии, что на одной из линий потенциал выше порога срабатывания, называются состоянием Diff0 или Diff1. Состояние, при котором на обоих входах D+ и D- присутствует низкий уровень, называется линейным нулем SEO (Single Ended Zero).

ФИЗИЧЕСКИЙ ИНТЕРФЕЙС 10 Интерфейс определяет следующие состояния: Data J State и Data К State (или просто J и К) - состояния передаваемого бита, определяются через состояния Diff0 и Diff1; Idle State - состояние паузы на шине; Resume State - сигнал "пробуждения" для вывода устройства из "спящего" режима; Start of Packet (SOP) - начало пакета (переход из Idle State в К); End of Packet (EOF) - конец пакета; Disconnect - устройство отключено от порта; Connect - устройство подключено к порту; Reset - сброс устройства. Состояния определяются сочетаниями дифференциальных и линейных сигналов. Для полной и низкой скоростей состояния Diff0 и Diff1 имеют противоположное назначение. В декодировании состояний Disconnect, Connect и Reset учитывается время нахождения линий (более 2,5мс) в определенных состояниях.

ФИЗИЧЕСКИЙ ИНТЕРФЕЙС Для передачи данных по шине используется дифференциальный способ передачи сигналов D+ и D- по двум проводам. Все данные кодируются с помощью метода, называемого NRZI with bit stuffing (NRZI - Non Return to Zero Invert, метод возврата к нулю с инвертированием единиц). Вместо кодирования логических уровней как уровней напряжения USB определяет логический 0 как изменение напряжения, а логическую 1 как неизменение напряжения. Этот метод представляет собой модификацию обычного потенциального метода кодирования NRZ (Non Return to Zero, невозврат к нулю), когда для представления 1 и 0 используются потенциалы двух уровней, но в методе NRZI потенциал, используемый для кодирования текущего бита, зависит от потенциала, который использовался для кодирования предыдущего бита. Если текущий бит имеет значение 0, то текущий потенциал представляет собой инверсию потенциала предыдущего бита, независимо от его значения. 11

ФИЗИЧЕСКИЙ ИНТЕРФЕЙС Если же текущий бит имеет значение 1, то текущий потенциал повторяет предыдущий. Очевидно, что если данные содержат нули, то приемнику и передатчику достаточно легко поддерживать синхронизацию - уровень сигнала будет постоянно меняться. А вот если данные содержат длинную последовательность единиц, то уровень сигнала меняться те будет, и возможна рассинхронизация. Следовательно, для надежной передачи данных нужно исключить из кодов слишком длинные последовательности единиц. Это действие называется стаффинг (Bit stuffing): после каждых шести единиц автоматически добавляется 0. Кодирование данных по методу NRZI 12

ФИЗИЧЕСКИЙ ИНТЕРФЕЙС Существует только три возможных байта с шестью последовательными единицами: , , Стаффинг может увеличить число передаваемых бит до 17%, но на практике эта величина значительно меньше. Для устройств, подключаемых к шине USB, кодирование происходит прозрачно: USB-контроллеры производят кодирование и декодирование автоматически. 13

ФИЗИЧЕСКИЙ ИНТЕРФЕЙС Кабель также имеет линии VBus и GND для передачи питающего напряжения 5 В к устройствам. Сечение проводников выбирается в соответствии с длиной сегмента для обеспечения гарантированного уровня сигнала и питающего напряжения. Питание устройств USB возможно от кабеля (Bus- Powered Devices) или от собственного блока питания (Self-Powered Devices). Хост обеспечивает питанием непосредственно подключенные к нему ПУ. Каждый хаб, в свою очередь, обеспечивает питание устройств, подключенных к его нисходящим портам. При некоторых ограничениях топологии допускается применение хабов, питающихся от шины. Ниже на рисунке приведен пример схемы соединения устройств USB. Здесь клавиатура, перо и мышь могут питаться от шины. 14 Пример подключения устройств USB

МОДЕЛЬ ПЕРЕДАЧИ ДАННЫХ Каждое устройство USB представляет собой набор независимых конечных точек (Endpoint), с которыми хост-контроллер обменивается информацией. Конечные точки описываются следующими параметрами: требуемой частотой доступа к шине и допустимыми задержками обслуживания; требуемой полосой пропускания канала; номером точки; требованиями к обработке ошибок; максимальными размерами передаваемых и принимаемых пакетов; типом обмена; направлением обмена (для сплошного и изохронного обменов). 15

ПЕРЕДАЧА ДАННЫХ ПО УРОВНЯМ Логически передача данных между конечной точкой и ПО производится с помощью выделения канала и обмена данными по этому каналу, а с точки зрения представленных уровней, передача данных выглядит следующим образом: 1. Клиентское ПО посылает IPR-запросы уровню USBD. 2. Драйвер USBD разбивает запросы на транзакции по следующим правилам: выполнение запроса считается законченным, когда успешно завершены все транзакции, его составляющие; все подробности отработки транзакций (такие как ожидание готовности, повтор транзакции при ошибке, неготовность приемника и т. д.) до клиентского ПО не доводятся; ПО может только запустить запрос и ожидать или выполнения запроса или выхода по тайм- ауту; устройство может сигнализировать о серьезных ошибках, что приводит к аварийному завершению запроса, о чем уведомляется источник запроса. 16

ПЕРЕДАЧА ДАННЫХ ПО УРОВНЯМ 3. Драйвер контроллера хоста принимает от системного драйвера шины перечень транзакций и выполняет следующие действия: планирует исполнение полученных транзакций, добавляя их к списку транзакций; извлекает из списка очередную транзакцию и передает ее уровню хост-контроллера интерфейса шины USB; отслеживает состояние каждой транзакции вплоть до ее завершения. 4. Хост-контроллер интерфейса шины USB формирует кадры; 5. Кадры передаются последовательной передачей бит по методу NRZI. 17 Уровни передачи данных

18 ПЕРЕДАЧА ДАННЫХ ПО УРОВНЯМ Общая схема составляющих USB-протокола Таким образом, можно сформировать следующую упрощенную схему: 1. каждый кадр состоит из наиболее приоритетных посылок, состав которых формирует драйвер хоста; 2. каждая передача состоит из одной или нескольких транзакций; 3. каждая транзакция состоит из пакетов; 4. каждый пакет состоит из идентификатора пакета, данных (если они есть) и контрольной суммы

ТИПЫ СООБЩЕНИЙ В USB Спецификация шины определяет четыре различных типа передачи (transfer type) данных для конечных точек: управляющие передачи (Control Transfers) передачи массивов данных (Bulk Data Transfers) передачи по прерываниям (Interrupt Transfers) 19

КЛАССЫ УСТРОЙСТВ USB В USB по способу синхронизации конечных точек (источников или получателей данных) с системой различают асинхронный, синхронный и адаптивный классы устройств (точнее, конечных точек), каждому из которых соответствует свой тип канала USB. Тип синхронизации задается битами 3 и 2 байта атрибутов в дескрипторе конечной точки. Асинхронные устройства не имеют возможности согласования своей частоты выборок с метками SOF или иными частотами системы USB. Частота передачи данных у них фиксированная или программируемая. Число байт данных, принимаемых за каждый кадр USB, не является постоянным. Асинхронный источник данных неявно объявляет свою скорость передачи числом выборок, передаваемых им за один кадр клиентское ПО будет обрабатывать столько данных, сколько реально поступило. Асинхронный приемник данных должен обеспечивать явную обратную связь для адаптивного драйвера клиентского ПО, чтобы согласовать темп выдачи потока (см. далее). Примерами асинхронного устройства-источника может быть CD-плеер с синхронизацией от кварцевого генератора или приемник спутникового телевещания. Пример приемника дешевые колонки, работающие от внутреннего источника синхронизации. 20

КЛАССЫ УСТРОЙСТВ USB Синхронные устройства имеют внутренний генератор, синхронизируемый с метками SOF (системная частота 1 или 8 кГц); на высокой частоте передачи более точную синхронизацию обеспечивает связь с микрокадрами. Источники и приемники за каждый кадр генерируют (потребляют) одинаковое количество байт данных, которое устанавливается на этапе программирования каналов. Примером синхронного источника может быть цифровой микрофон с частотой выборки, синтезируемой по SOF. Синтезатор частоты должен учитывать возможность пропадания 12 маркеров (из-за возможных ошибок передачи), поддерживая постоянную частоту. Эти точки используют неявную обратную связь, подстраиваясь под частоту шины. С программной точки зрения организация каналов с такими устройствами проще всего. Адаптивные устройства имеют возможность подстройки своей внутренней частоты под требуемый поток данных (в определенных границах). Адаптивный источник позволяет менять скорость под управлением приемника, обеспечивающего явную обратную связь. Для адаптивного приемника информацию о частоте задает входной поток данных. Он определяет мгновенное значение частоты по количеству данных, принятых за некоторый интервал усреднения. Таким образом, осуществляется неявное прямое объявление частоты. Примером адаптивного источника является CD-плеер со встроенным конвертером частоты SRC (sample rate converter), а приемника высококачественные колонки или наушники USB. 21

КАДРЫ 22 Любой обмен по шине USB инициируется хост-контроллером. Он организует обмены с устройствами согласно своему плану распределения ресурсов. Контроллер циклически (с периодом 1,0 ± 0,0005 мс) формирует кадры (frames), в которые укладываются все запланированные передачи. Каждый кадр начинается с посылки пакета-маркера SOF (Start Of Frame, начало кадра), который является синхронизирующим сигналом для всех устройств, включая хабы. В конце каждого кадра выделяется интервал времени EOF (End Of Frame, конец кадра), на время которого хабы запрещают передачу по направлению к контроллеру. Если хаб обнаружит, что с какого-то порта в это время ведется передача данных, этот порт отключается. Поток кадров USB

КОНЕЧНЫЕ ТОЧКИ Конечная точка (Endpoint) это часть USB-устройства, которая имеет уникальный идентификатор и является получателем или отправителем информации, передаваемой по шине USB. Проще говоря, это буфер, сохраняющий несколько байт. Обычно это блок данных в памяти или регистр микроконтроллера. Данные, хранящиеся в конечной точке, могут быть либо принятыми данными, либо данными, ожидающими передачу. Хост также имеет буфер для приема и передачи данных, но хост не имеет конечных точек. Конечная точка имеет следующие основные параметры: частота доступа к шине; допустимая величина задержки обслуживания; требуемая ширина полосы пропускания канала; номер конечной точки; способ обработки ошибок; максимальный размер пакета, который конечная точка может принимать или отправлять; используемый конечной точкой тип посылок; направление передачи данных. 23

КАНАЛЫ 24 Канал (pipe) это логическое соединение между конечной точкой устройства и ПО хоста. Существует две модели каналов: потоковый канал (или просто поток, streaming pipe) это канал для передачи данных, структура которых определяется клиентским ПО. Потоки используются для передачи массивов данных, передачи данных по прерываниям и изохронной передачи данных. Поток всегда однонаправленный. Один и тот же номер конечной точки может использоваться для двух разных потоковых каналов ввода и вывода. канал сообщений (message pipe или control pipe) это канал для передачи данных, структура которых определяется спецификацией USB. Каналы этого типа двунаправленные и применяются для передачи управляющих посылок. Каналы сообщений строго синхронизированы спецификация USB запрещает одновременную обработку нескольких запросов: нельзя начинать передачу нового сообщения, пока не завершена обработка предыдущего. В случае возникновения ошибки передача сообщения может быть прервана хостом, после чего хост может начать передачу нового сообщения. Каналы USB

ПАКЕТЫ 25 Информация по каналу передается в виде пакетов (Packet). Каждый пакет начинается с поля синхронизации SYNC (SYNChronization), за которым следует идентификатор пакета PID (Packet IDentifier). Поле Check представляет собой побитовую инверсию PID. Структура пакета

ПАКЕТЫ 26 Обозначен ие Код PIDИсточникОписание Идентификаторы маркер-пакетов (Token Packet) OUT0001b Хост Маркер транзакции вывода, передает адрес и номер конечной точки при передаче от хоста к функции IN1001bМаркер транзакции ввода, передает адрес и номер конечной точки при передаче от функции к хосту SOF0101bМаркер начала кадра, содержит номер кадра SETUP1101b Маркер транзакции управления: передает адрес и номер конечной точки при передаче команды от хоста к функции Идентификаторы пакетов данных (Data Packet) Data00011b Хост или уст-во Пакеты данных с четным и нечетным PID, чередуются для точной идентификации подтверждений Data11011b Дополнительные типы пакетов данных, используемые в транзакциях с широкополосными изохронными точками (в USB 2.0 для HS) Data20111b MData1111b Идентификаторы пакетов-подтверждений (Handshake) АСК0010bХост или уст-воПодтверждение безошибочного приема пакета NAK1010bУст-во Приемник не сумел принять или передатчик не сумел передать данные. Может использоваться для управления потоком данных ("ответ на запрос не готов"). В транзакциях прерываний является признаком отсутствия необслуживаемых прерываний STALL1110bУст-воПроизошел сбой в конечной точке или запрос не поддерживается, требуется вмешательство хоста NYET0110bУст-во Подтверждение безошибочного приема, но указание на отсутствие места для приема следующего пакета максимального размера (USB 2.0) Идентификаторы специальных пакетов (Special Packet) PRE1100bХост Специальный маркер, сообщающий, что следующий пакет будет передаваться в режиме LS (разрешает трансляцию данных на низкоскоростной порт хаба) ERR1100bУстр-во или хабСигнализация ошибки в расщепленной транзакции (USB 2.0) SPLIT (SS/CS) 1000bХост Маркер расщепленной транзакции (USB 2.0). В зависимости от назначения обозначается как SS (маркер запуска) и CS (маркер завершения), назначение определяется битом SC в теле маркера. PING0100bХостПробный маркер высокоскоростного управления потоком (USB 2.0) RESERV0000bХостЗарезервированный PID Типы пакетов и их идентификаторы PID

ПАКЕТЫ 27 Из таблицы с прошлого слада видно, что два младших бита идентификатора определяют группу, к которой он принадлежит: 00 специальный пакет (Special); 01 маркер (Token); 10 подтверждение (Handshake); 11 пакет данных (Data). Структура данных пакета зависит от группы, к которой он относится.

ФОРМАТ ПАКЕТОВ-МАРКЕРОВ IN OUT SETUP И PING 28 Поле данных пакетов типа IN, OUT, SETUP и PING содержит следующие поля: [7] адрес функции; [4] адрес конечной точки; [5] циклический контрольный код. Маркер транзакции отмечает начало очередной транзакции на шине USB и позволяет адресовать до 127 функций USB (нулевой адрес используется для конфигурирования) и по 16 конечных точек в каждой функции. Поле CRC вычисляется по полям Func и EndP. Формат пакета типов IN, OUT, SETUP и PING

ФОРМАТ ПАКЕТА SOF 29 Поле данных пакета SOF содержит (полный формат пакета показан на рис. 3.8): [11] номер кадра [5] циклический контрольный код. Пакет SOF используется для отметки начала кадра. Хотя хост-контроллер оперирует 32- битным счетчиком кадров, в маркере SOF передаются только младшие 11 бит. Контрольная сумма вычисляется по 11 битам поля Frame. Формат пакета типа SOF

ФОРМАТ ПАКЕТА ДАННЫХ 30 В поле данных пакетов типа Data0, Data1, Data2 и MData может содержаться от 0 до 1023 байт данных, за которыми следует 16-разрядный циклический контрольный код, вычисленный по полю Data. Пакет данных всегда должен посылать целое число байт. Для режима LS максимальный размер пакета равен 8 байтам, для FS 1023 байта, а для HS 1024 байта. Формат пакетов данных

ФОРМАТ ПАКЕТА ПОДТВЕРЖДЕНИЯ 31 Поле данных пакетов подтверждения пустое. Формат пакета подтверждения

ФОРМАТ ПАКЕТА SPLIT Поле данных пакета SPLIT содержит: [7] адрес хаба; [1] флаг SC; [7] адрес порта; [1] поле S; [1] поле E; [1] тип конечной точки ЕТ; [5] циклический контрольный код. 32

ФОРМАТ ПАКЕТА SPLIT Флаг sc (Start/Complete) принимает значение 0, если это маркер запуска SS (Start Split) расщепленной транзакции, и 1, если это маркер завершения CS (Complete Split). В зависимости от типа транзакции поля S и E трактуются по-разному. Для управляющих транзакций и прерываний поле S определяет скорость (0 FS, 1 LS). Для остальных транзакций, кроме OUT, поля S и E содержат нули. Для транзакции OUT значение полей [S:E] трактуется следующим образом: 10 стартовый пакет; 01 последний пакет; 00 промежуточный пакет; 11 в пакете все данные транзакции. 33

ФОРМАТ ПАКЕТА SPLIT Поле ET описывает тип целевой конечной точки, с которой будет производиться транзакция: 00 управление; 01 изохронная транзакция; 10 передача массива данных; 11 прерывание. Контрольная сумма CRC вычисляется по полям от HubAddr до ET включительно. Формат пакета SPLIT

КОНТРОЛЬНАЯ СУММА Протокол USB использует циклический избыточный код (CRC, Cyclic Redundancy Checksums) для защиты полей пакета. CRC-контроль является более мощным методом обнаружения ошибок и используется для обнаружения ошибок на уровне блоков данных. Он основан на делении и умножении многочленов. В определенном смысле CRC-контроль является алгоритмом хэширования, который отображает (хэширует) элементы большого набора на элементы меньшего набора. Процесс хэширования приводит к потере информации. Хотя каждый отдельный элемент набора данных отображается на один и только один элемент хэш-набора обратное не верно. При CRC-контроле большой набор всех возможных двоичных чисел отображается на меньший набор всех возможных CRC. 35

АЛГОРИТМ ВЫЧИСЛЕНИЯ CRC 36 Вычисление и использование кода CRC производится в соответствии со следующей последовательностью действий. К содержимому кадра, описываемого полиномом F(x), добавляется набор единиц количество которых равно длине поля CRC: Образованное таким образом число где k степень F(x), делится на производящий полином g{x). Остаток O(x) от такого деления, определяемый из соотношения: где Q(x) частное от деления на g(x), в инвертированном виде помещается в контрольное поле кадра. На приемной стороне выполняется деление содержимого кадра с полем CRC: на полином g(x), где передаваемая кодовая комбинация: Результат такого деления можно привести к виду:

АЛГОРИТМ ВЫЧИСЛЕНИЯ CRC Числитель первого слагаемого делится на g(x), поэтому в приемнике, если при передаче не было ошибок, остаток получается равным остатку от деления постоянного числителя второго слагаемого и имеет вид: Таким образом, если результат вычислений на приемной стороне равен некоторому определенному числу (в некоторых системах нулю, либо другому числу, не совпадающему с приведенным выше), то считается, что передача выполнена без ошибок. При выборе порождающего полинома руководствуются желаемой разрядностью остатка и его способностью выявлять ошибки. Ряд порождающих полиномов принят международными организациями. В протоколе USB используются два порождающих полинома один для пакетов маркеров и второй для пакетов данных. Для маркеров используется полином, а для данных. Соответственно, получаемый контрольный код имеет размерность 5 битов и 16 битов. Алгоритм вычисления 16-разрядной контрольной суммы (ее более привычное название CRC16) выглядит следующим образом. В 16-битный регистр CRC предварительно загружается число $FFFF. Процесс начинается с добавления байтов сообщения к текущему содержимому регистра. Для генерации crc используются только 8 бит данных. Старт и стоп-биты, бит паритета, если он используется, не учитываются в CRC. 37

АЛГОРИТМ ВЫЧИСЛЕНИЯ CRC В процессе генерации CRC каждый 8-битный символ складывается по исключающему или (XOR) с содержимым регистра. Результат сдвигается в направлении младшего бита с заполнением 0 старшего бита. Младший бит извлекается и проверяется. Если младший бит равен 1, то содержимое регистра складывается с определенной ранее фиксированной величиной по исключающему или. Если младший бит равен 0, то исключающее или не делается. Этот процесс повторяется, пока не будет сделано 8 сдвигов. После последнего (восьмого) сдвига следующий байт складывается с содержимым регистра, и процесс повторяется снова. Финальное содержание регистра после обработки всех байт сообщения и есть контрольная сумма CRC. 38

АЛГОРИТМ ВЫЧИСЛЕНИЯ CRC Таким образом, алгоритм генерации CRC выглядит так: битный регистр загружается числом $FFFF и используется далее как регистр crc. 2. Первый байт сообщения складывается по исключающему или с содержимым регистра CRC. Результат помещается в регистр CRC. 3. Регистр CRC сдвигается вправо (в направлении младшего бита) на 1 бит, старший бит заполняется (Если младший бит 0): Повторяется шаг 3 (сдвиг). 5. (Если младший бит 1): Делается операция исключающее или регистра CRC и полиномиального числа $А Шаги 3 и 4 повторяются восемь раз. 7. Повторяются шаги со 2 по 5 для следующего сообщения. Это повторяется до тех пор, пока все байты сообщения не будут обработаны. Финальное содержание регистра CRC и есть контрольная сумма.

ПРОТОКОЛ, ТРАНЗАКЦИИ 40 Все обмены (транзакции) по USB состоят из трех пакетов. Каждая транзакция планируется и начинается по инициативе хост-контроллера, который посылает маркер-пакет (т. е. пакет типа token). Он описывает тип и направление передачи, адрес устройства USB и номер конечной точки. В каждой транзакции возможен обмен только между устройством (его конечной точкой) и хостом. Адресуемое маркером устройство распознает свой адрес и готовится к обмену. Источник данных, определенный маркером, передает пакет данных или уведомление об отсутствии данных, предназначенных для передачи. После успешного приема пакета приемник данных посылает пакет подтверждения (т. е. пакет типа Handshake). Передача данных

ТИПЫ ТРАНЗАКЦИЙ Спецификация USB определяет следующие типы транзакций: передача команды: 1. хост посылает маркер SETUP, содержащий номер функции и номер конечной точки, для которой предназначена команда; 2. хост посылает выбранной конечной точке пакет данных со сброшенным битом синхронизации (т. е. пакет типа Data о), содержащий 8-байтный код команды; 3. функция посылает хосту пакет подтверждения; изохронная передача данных: 1. хост посылает маркер OUT, содержащий номер функции и номер конечной точки, для которой предназначены данные; 2. хост посылает выбранной конечной точке пакет данных со сброшенным битом синхронизации (т. е. пакет типа DataO); 41

ТИПЫ ТРАНЗАКЦИЙ Передача данных с подтверждением: 1. хост посылает маркер OUT, содержащий номер функции и номер конечной точки, для которой предназначены данные; 2. хост посылает выбранной конечной точке пакет данных; 3. функция посылает хосту пакет подтверждения. Изохронный прием данных: 1. хост посылает маркер IN, содержащий номер функции и номер конечной точки, от которой запрашиваются данные; 2. выбранная конечная точка передает хосту пакет данных со сброшенным битом синхронизации (т. е. пакет типа Data0). Прием данных с подтверждением: 1. хост посылает маркер IN, содержащий номер функции и номер конечной точки, от которой запрашиваются данные; 2. выбранная конечная точка передает хосту пакет данных или пакет подтверждения (NAK данные не готовы, STALL сбой); 3. если хост получил пакет данных, он посылает пакет подтверждения (АСК).

ПОДТВЕРЖДЕНИЕ ТРАНЗАКЦИЙ И УПРАВЛЕНИЕ ПОТОКОМ При выполнении транзакций используются три типа пакетов подтверждения, называемые пакетами квитирования (handshake packets): АСК информация принята получателем без ошибок, операция успешно завершена; NAK функция занята (не готова к приему или передаче данных); STALL произошел сбой при выполнении операции, функция не может принять или передать данные. 43

ПОДТВЕРЖДЕНИЕ ТРАНЗАКЦИЙ И УПРАВЛЕНИЕ ПОТОКОМ Ответ NAK позволяет только уведомить о невозможности приема данных, в то время как сам пакет данных уже отправлен. Такое поведение попусту растрачивает пропускную способность шины. В спецификации USB 2.0 добавлен еще один пакет, позволяющий более гибко управлять транзакциями передачи больших объемов данных пакет PING. С помощью этого пакета хост может предварительно опросить готовность устройства к приему пакета максимального размера. В ответ на этот запрос устройство должно либо ответить пакетом АСК, подтвердив готовность к приему пакета данных, либо пакетом NAK, если устройство не готово. Отрицательный ответ заставит хост повторить пробу позже, а положительный разрешает ему выполнить транзакцию вывода данных. На транзакцию вывода данных после положительного ответа на пробу устройство может ответить следующими пакетами: АСК прием пакета успешен и устройство готово к приему следующего полноразмерного пакета; NYET успешный прием, но неготовность к следующему пакету; NAK неготовность устройства (может случиться, что за время от пакета пробы до посылки пакета устройство перестало быть готово к приему). 44

УПРАВЛЯЮЩИЕ ПОСЫЛКИ 45 Существуют три типа управляющих посылок: 1. посылка записи данных (Control Write) состоит из следующих, транзакций: передача команды; передача с подтверждением одного или нескольких пакетов данных; прием с подтверждением пустого пакета данных, подтверждающего успешное завершение операции; 2. посылка чтения данных (Control Read) состоит из следующих транзакций: передача команды; прием с подтверждением одного или нескольких пакетов данных; передача с подтверждением пустого пакета данных, подтверждающего успешное завершение операции;

УПРАВЛЯЮЩИЕ ПОСЫЛКИ 3. посылка без данных (No-data Control) состоит из следующих транзакций: передача команды; прием с подтверждением пустого пакета данных, подтверждающего успешное завершение операции. Формат управляющих посылок

ПЕРЕДАЧИ МАССИВОВ ДАННЫХ Существуют два типа передачи массивов: передача массива данных от хоста к конечной точке (Bulk Write); прием хостом массива данных от конечной точки (Bulk Read). Передача данных от хоста к конечной точке состоит из следующих друг за другом транзакций передачи данных с подтверждением, а передача данных от конечной точки к хосту из следующих друг за другом транзакций приема с подтверждением. И в том, и в другом случае перед началом передачи массива триггер синхронизации данных должен быть сброшен в 0: при выполнении первой транзакции блок данных имеет тип Data0, второй Datal, Третий Data0 и т.д. Прием и передачу массивов данных могут выполнять только полноскоростные устройства. Максимальный размер пакета при передаче массива может быть равен 8, 16, 32 или 64 байтам. 47

ПЕРЕДАЧИ ПО ПРЕРЫВАНИЯМ Существуют два типа передачи по прерываниям: передача массива данных от хоста к конечной точке по прерыванию; прием хостом массива данных от конечной точки по прерыванию. Передача данных по прерыванию заключается в выполнении транзакции передачи пакета данных с подтверждением от хоста к конечной точке. Прием заключается в выполнении транзакции приема пакета данных с подтверждением от конечной точки. При приеме или передаче каждого блока данных происходит переключение триггера данных. Первый передаваемый (или принимаемый) блок должен иметь тип Data0, следующий Data1 и т. д. Максимальный размер пакета при передаче по прерыванию для низкоскоростных устройств не может быть более 8 байт, а для высокоскоростных более 64 байт. 48

ИЗОХРОННЫЕ ПЕРЕДАЧИ 49 Существуют два типа изохронной передачи: изохронная передача данных от хоста к конечной точке; изохронный прием данных хостом от конечной точки. Изохронная передача данных заключается в выполнении транзакции передачи пакета данных без подтверждения от хоста к конечной точке. Изохронный прием заключается в выполнении транзакции приема пакета данных без подтверждения от конечной точки. Состояние триггера данных при изохронной передаче игнорируется, но рекомендуется сбросить его в ноль перед началом передачи. Изохронную передачу могут выполнять только полноскоростные устройства. Максимальный размер пакета данных при изохронной передаче 1023 байта.

ФОРМАТЫ ПАКЕТОВ 50 Байты передаются по шине последовательно, начиная с младшего бита. Все посылки организованы в пакеты. Каждый пакет начинается с поля синхронизации Sync, которое представляется последовательностью состояний KJKJKJKK (кодированную по NRZI), следующую после состояния Idle. Последние два бита (КК) являются маркером начала пакета SOP, используемым для идентификации первого бита идентификатора пакета РID. Идентификатор пакета является 4-бит

ФОРМАТЫ ПАКЕТОВ 51 Тип PIDИмя PIDPID[3:0]Содержимое и назначение TokenOUT0001Адрес функции и номер конечной точки маркер транзакции функции TokenIN1001Адрес функции и номер конечной точки маркер транзакции хоста TokenSOF0101Маркер начала кадра TokenSETUP1101 Адрес функции и номер конечной точки маркер транзакции с управляющей точкой DataData0 Datat Пакеты данных с четным и нечетным PID чередуются для точной идентификации подтверждений HandshakeAck0010Подтверждение безошибочного приема пакета HandshakeNAK1010 Приемник не сумел принять или передатчик не сумел передать данные. Может использоваться для управления потоком данных [неготовность). В транзакциях прерываний является признаком отсутствия необслуженных прерываний HandshakeSTALL1110Конечная точка требует вмешательства хоста SpecialPRE1100Преамбула передачи на низкой скорости

ФОРМАТЫ ПАКЕТОВ 52 В пакетах-маркерах IN, SETUP и OUT следующими являются адресные поля: 7- битный адрес функции и 4-битный адрес конечной точки. Они позволяют адресовать до 127 функций USB (нулевой адрес используется для конфигурирования) и по 16 конечных точек в каждой функции. Таким образом топология USB допускает до 7 уровней каскадирования.

ФОРМАТЫ ПАКЕТОВ 53 В пакете SOF имеется 11 -битное поле номера кадра (Frame Number Field), последовательно (циклически) увеличиваемое для очередного кадра. Поле данных может иметь размер от 0 до 1023 целых байт. Размер поля зависит от типа передачи и согласуется при установлении канала. Поле CRC-кода присутствует во всех маркерах и пакетах данных, оно защищает все поля пакета, исключая PID. CRC для маркеров (5 бит) и данных (11 бит) подсчитываются по разным формулам. Каждая транзакция инициируется хост-контроллером посылкой маркера и завершается пакетом квитирования. Последовательности пакетов

ФОРМАТЫ ПАКЕТОВ 54 Для изохронной передачи важна синхронизация устройств и контроллера. Есть три варианта: синхронизация внутреннего генератора устройства с маркерами SOF; подстройка частоты кадров под частоту устройства; согласование скорости передачи (приема) устройства с частотой кадров. Подстройка частоты кадров контроллера возможна, естественно, под частоту внутренней синхронизации только одного устройства. Подстройка осуществляется через механизм обратной связи, который позволяет изменять период кадра в пределах ±1 битового интервала. Поток кадров USB

ИНИЦИАЛИЗАЦИЯ УСТРОЙСТВ USВ поддерживает динамическое подключение и отключение устройств. Нумерация устройств шины является постоянным процессом, отслеживающим изменения физической топологии. Все устройства подключаются через порты хабов. Хабы определяют подключение и отключение устройств к своим портам и сообщают состояние портов при запросе от контроллера. Хост разрешает работу порта и адресуется к устройству через канал управления, используя нулевой адрес USB Default Address. При начальном подключении или после сброса все устройства адресуются именно так. Хост определяет, является новое подключенное устройство хабом или функцией, и назначает ему уникальный адрес USB. Хост создает канал управления (ControlPipe) с этим устройством, используя назначенный адрес и нулевой номер точки назначения. 55

ИНИЦИАЛИЗАЦИЯ УСТРОЙСТВ Если новое устройство является хабом, хост определяет подключенные к нему устройства, назначает им адреса и устанавливает каналы. Если новое устройство является функцией, уведомление о подключении передается диспетчером USB заинтересованному ПО. Когда устройство отключается, хаб автоматически запрещает соответствующий порт и сообщает об отключении контроллеру, который удаляет сведения о данном устройстве из всех структур данных. Если отключается хаб, процесс удаления выполняется для всех подключенных к нему устройств. Если отключается функция, уведомление посылается заинтересованному ПО. 56

УСТРОЙСТВА USB - ФУНКЦИИ И ХАБЫ Нисходящие (Downstream) порты хабов могут находиться в следующих состояниях: Powered off (питание отключено) на порт не подается питание (возможно только для хабов, коммутирующих питание). Выходные буферы переводятся в высокоимпе-дансное состояние, входные сигналы игнорируются. Disconnected (отсоединен) - порт не передает сигналы ни в одном направлении, но способен обнаружить подключение устройства (по отсутствию состояния SE0 в течение 2,5 мкс). 57

УСТРОЙСТВА USB - ФУНКЦИИ И ХАБЫ Disabled (запрещен) - порт передает только сигнал сброса (по команде от контроллера), сигналы от порта (кроме обнаружения отключения) не воспринимаются По обнаружении отключения (2,5 мкс состояния SE0) порт переходит в состояние Disconnect, а если отключение обнаружено «спящим» хабом, контроллеру будет послан сигнал Resume. Enabled (разрешен) - порт передает сигналы в обоих направлениях. По команде контроллера или по обнаружении ошибки кадра порт переходит в состояние Disabled а по обнаружении отключения - в состояние Disconnect. Suspended (приостановлен) - порт передает сигнал перевода в состояние останова («спящий» режим). Если хаб находится в активном состоянии, сигналы через порт не пропускаются ни в одном направлении. Однако «спящий» хаб воспринимает сигналы смены состояния незапрещен- ных портов, подавая «пробуждающие» сигналы от активизировавшегося устройства даже через цепочку «спящих» хабов. 58

СТАНДАРТНЫЕ ДЕСКРИПТОРЫ УСТРОЙСТВА Дескриптор устройства (device descriptor) это структура данных, или форматированный блок информации, который позволяет хосту получить описание устройства. Каждый дескриптор содержит информацию либо об устройстве в целом, либо о его части. 59

СТАНДАРТНЫЕ ДЕСКРИПТОРЫ УСТРОЙСТВА Существуют несколько типов дескрипторов: Стандартный дескриптор устройства Дескриптор конфигурации Дескриптор строки Дескриптор интерфейса Дескриптор конечной точки Уточняющий дескриптор устройства Дескриптор дополнительной конфигурации Дескриптор управления питанием интерфейса Дескриптор OTG Отладочный дескриптор Дополнительный дескриптор интерфейса 60

СТАНДАРТНЫЙ ДЕСКРИПТОР УСТРОЙСТВА 61 СмещениеПолеРазмерОписание 0bLength1Номер версии спецификации USB в формате BCD 1bDescriptorType1Тип дескриптора(USB DEVICE DESCRIPTOR TYPE) 2bcdUSB2Номер версии спецификации USB в формате BCD 4bDeviceClass1Код класса USB 5bDeviceSubClass1Код подкласса устройства USB 6bDeviceProtocol1Код протокола USB 7bMaxPacketSize01 Максимальный размер пакета для нулевой конечной точки 8idVendor2Идентификатор изготовителя устройства 10idProduct2Идентификатор продукта 12bcdDevice2Номер версии устройства в формате BCD 14iManufacturer1 Индекс дескриптора строки, описывающей изготовителя 15iProduct1Индекс дескриптора строки, описывающей продукт 16iSerialNumber1 Индекс дескриптора строки, содержащей серийный номер устройства 17bNumConfigurations1Количество возможных конфигураций устройства Структура стандартного дескриптора

УТОЧНЯЮЩИЙ ДЕСКРИПТОР УСТРОЙСТВА 62 СмещениеПолеРазмерОписание 0bLength1Размер дескриптора в байтах 1bDescriptorType1Тип дескриптора(USB DEVICE DESCRIPTOR TYPE) 2bcdUSB2Номер версии спецификации USB в формате BCD (0200Н) 4bDeviceClass1Код класса USB 5bDeviceSubClass1Код подкласса устройства USB 6bDeviceProtocol1Код протокола USB 7bMaxPacketSize01Максимальный размер пакета для нулевой конечной точки 8bNumConfigurations1Количество дополнительных конфигураций устройства 9bReserved1Зарезервировано, должно быть равно нулю Структура уточняющего дескриптора

ДЕСКРИПТОР КОНФИГУРАЦИИ 63 СмещениеПолеРазмерОписание 0bLength1Размер дескриптора в байтах 1bDescriptorType1Тип дескриптора(USB DEVICE DESCRIPTOR TYPE) 2wTotalLength2 Общий объем данных (в байтах), возвращаемый для данной конфигурации 4bNumlnterfaces1 Количество интерфейсов, поддерживаемых данной конфигурацией 5bConfigurationValue1 Идентификатор конфигурации, используемый при вызове SET_CONFIGURATION для установки данной конфигурации 6iConfiguration1 Индекс дескриптора строки, описывающей данную конфигурацию 7bmAttributes1Характеристики конфигурации 8MaxPower1 Код мощности, потребляемой устройством от шины USB Структура дескриптора конфигурации

ДЕСКРИПТОР ИНТЕРФЕЙСА 64 СмещениеПолеРазмерОписание 0bLength1Размер дескриптора в байтах 1 bDescriptorTyp e 1Тип дескриптора(USB DEVICE DESCRIPTOR TYPE) 2 bInterfaceNum ber 1 Номер данного интерфейса (нумеруются с 0) в наборе интерфейсов, поддерживаемых в данной конфигурации 3 bAlternateSetti ng 1Альтернативный номер интерфейса 4 bNumEndpoint s 1 Число конечных точек для этого интерфейса без учета нулевой конечной точки 5 bInterfaceClas s 1Код класса интерфейса 6 bInterfaceSubC lass 1Код подкласса интерфейса 7 bInterfaceProto col 1Код протокола 8iInterface1Индекс дескриптора строки, описывающей интерфейс Структура дескриптора интерфейса

ДЕСКРИПТОР КОНЕЧНОЙ ТОЧКИ 65 СмещениеПолеРазмерОписание 0bLength1Размер дескриптора в байтах 1 bDescriptorTy pe 1Тип дескриптора(USB DEVICE DESCRIPTOR TYPE) 2 bEndpointAd dress 1Код адреса конечной точки 3bmAttributes1Атрибуты конечной точки 4 wMaxPacket Size 2Максимальный размер пакета для конечной точки 6bInterval1 Интервал опроса конечной точки при передаче данных (задается в миллисекундах) Структура дескриптора конечной точки

ДЕСКРИПТОР КОНЕЧНОЙ ТОЧКИ 66 Структура дескриптора конечной точки Биты [12:11] поля wMaxPacketSize Максимально допустимый размер пакета (биты [10:0] ПОЛЯ wMaxPacketSize) Не используется, зарезервировано

ДЕСКРИПТОР СТРОКИ 67 СмещениеПолеРазмерОписание 0bLength1Размер дескриптора в байтах 1bDescriptorType1 Тип дескриптора(USB DEVICE DESCRIPTOR TYPE) 2bStringNСтрока символов UNICODE СмещениеПолеРазмерОписание 0bLength1 Размер дескриптора в байтах 1bDescriptorType1 Тип дескриптора(USB DEVICE DESCRIPTOR TYPE) 2wLANGID[0]2Идентификатор языка NwLANGID[x]2Идентификатор языка Структура дескриптора строки

ПОРЯДОК ПОЛУЧЕНИЯ ДЕСКРИПТОРОВ В процессе нумерации хост с помощью управляющих посылок запрашивает дескрипторы от устройства в следующей последовательности: дескриптор устройства; дескрипторы конфигураций; дескрипторы интерфейсов для конфигурации; дескрипторы интерфейсов всех конечных точек. 68

ПОРЯДОК ПОЛУЧЕНИЯ ДЕСКРИПТОРОВ Реально при запросе дескриптора конфигурации устройство сразу возвращает последовательность "вложенных" дескрипторов: дескриптор конфигурации-1; дескриптор интерфейса-1; дескриптор конечной точки-1 для интерфейса-1; дескриптор конечной точки-2 для интерфейса-1; дескриптор интерфейса-2; дескриптор конечной точки-1 для интерфейса-2; дескриптор конфигурации-2. 69

ХОСТ-КОНТРОЛЛЕР Хост-компьютер общается с устройствами через контроллер Хост имеет следующие обязанности: обнаружение подключения и отсоединения устройств USB; манипулирование потоком управления между устройствами и хостом; управление потоками данных; сбор статистики; обеспечение энергосбережения подключенными ПУ. 70

ХОСТ-КОНТРОЛЛЕР Системное ПО контроллера управляет взаимодействием между устройствами и их ПО, функционирующим на хост-компьютере, для согласования: нумерации и конфигурации устройств; изохронных передач данных; асинхронных передач данных; управления энергопотреблением; информации об управлении устройствами и шиной. По возможности ПО USB использует существующее системное ПО хост-компьютера например, Advanced Power Management для управления энергопотреблением. 71