USB (связь) - USB (Communications)
Эта статья ведущий раздел не адекватно подвести итог ключевые моменты его содержания. Пожалуйста, подумайте о расширении интереса до предоставить доступный обзор обо всех важных аспектах статьи. (Апрель 2018 г.) |
В этой статье содержится информация о коммуникационных аспектах универсальной последовательной шины, USB: Сигнализация, протоколы, транзакции.
Сигнализация (USB PHY)
Скорость передачи сигналов (скорость передачи)
[1]Режим | Аббревиатура | Полная скорость передачи данных | Представлено в |
---|---|---|---|
Низкая скорость | LS | 1,5 Мбит / с (187,5 КБ / с) | USB 1.0 |
На полной скорости | FS | 12 Мбит / с (1,5 МБ / с) | USB 1.0 |
Высокоскоростной Также Hi-Speed | HS | 480 Мбит / с (60 МБ / с) | USB 2.0 |
Супер скорость | SS | 5 Гбит / с (625 МБ / с) | USB 3.0 |
SuperSpeed + | СС + | 10 Гбит / с (1,25 ГБ / с) | USB 3.1 |
SuperSpeed + | СС + | 20 Гбит / с (2,5 ГБ / с) | USB 3.2 |
Теоретическая максимальная скорость передачи данных в USB 2.0 составляет 480 Мбит / с (60 МБ / с) на контроллер и распределяется между всеми подключенными устройствами. Некоторые производители наборов микросхем для персональных компьютеров преодолевают это узкое место, предоставляя несколько контроллеров USB 2.0 в южный мост.
Согласно плановым испытаниям, проведенным CNet операции записи на типичные высокоскоростные жесткие диски могут поддерживать скорость 25–30 МБ / с, а операции чтения - 30–42 МБ / с;[2] это 70% от общей доступной пропускной способности шины. Для USB 3.0 типичная скорость записи составляет 70–90 МБ / с, а скорость чтения - 90–110 МБ / с.[2] Тесты по маске, также известные как тесты глазковой диаграммы, используются для определения качества сигнала во временной области. Они определены в указанном документе как часть описания электрических испытаний для высокоскоростного (HS) режима со скоростью 480 Мбит / с.[3]
По словам председателя USB-IF, «от 10 до 15 процентов заявленных пиковых 60 МБ / с (480 Мбит / с) Hi-Speed USB идет на накладные расходы - протокол связи между картой и периферийным устройством. компонент всех стандартов связи ".[1] Таблицы, иллюстрирующие пределы передачи, показаны в главе 5 спецификации USB.
За изохронный таких устройств, как аудиопотоки, полоса пропускания постоянна и зарезервирована исключительно для данного устройства. Таким образом, пропускная способность шины влияет только на количество каналов, которые могут быть отправлены за раз, а не на «скорость» или задержка трансмиссии.
- Низкоскоростной (LS) скорость 1,5 Мбит / с определяется USB 1.0. Это очень похоже на работу с полной полосой пропускания, за исключением того, что для передачи каждого бита требуется в 8 раз больше времени. Он предназначен в первую очередь для экономии средств при низкой пропускной способности. устройства с человеческим интерфейсом (HID), например клавиатуры, мыши и джойстики.
- Полная скорость (FS) оценка 12Мбит / с это базовая скорость передачи данных USB, определяемая USB 1.0. Все USB-концентраторы могут работать с такой скоростью.
- Высокоскоростной (HS) скорость 480 Мбит / с была введена в 2001 году. Все высокоскоростные устройства способны при необходимости вернуться к работе с полной полосой пропускания; т.е. они обратно совместимы со стандартом USB 1.1.[требуется разъяснение ] Разъемы идентичны для USB 2.0 и USB 1.x.
- Суперскорость (SS) скорость 5,0 Гбит / с. Записанная спецификация USB 3.0 была выпущена Intel и ее партнерами в августе 2008 года. Первые микросхемы контроллера USB 3.0 были протестированы компанией NEC в мае 2009 г.,[4] а первые продукты, использующие спецификацию USB 3.0, появились в январе 2010 года.[5] Разъемы USB 3.0, как правило, обратно совместимы, но включают новую проводку и полнодуплексный режим.
- Сверхскорость + (SS +) скорость 10 Гбит / с определяется USB 3.1, а 20 Гбит / с при использовании 2 полос определяется USB 3.2.
Задержка транзакции
Для низкоскоростных (1,5 Мбит / с) и полноскоростных (12 Мбит / с) устройств минимальное время транзакции в одном направлении составляет 1 мс.[6] Высокоскоростной (480 Мбит / с) использует транзакции в каждом микрокадре (125 мкс)[7] где использование 1-байтового пакета прерывания приводит к минимальному времени отклика 940 нс. 4-байтовый пакет прерывания дает 984 нс.[нужна цитата ]
Электрическая спецификация
USB-сигналы передаются с использованием дифференциальная сигнализация на витая пара кабель для передачи данных с 90 Ω ± 15% характеристическое сопротивление.[8]
- Низкоскоростной (LS) и Полная скорость (FS) режимы используют одну пару данных, помеченных D + и D−, в полудуплекс. Уровни передаваемого сигнала 0,0–0,3 В для логического минимума и 2,8–3,6 В для логического высокого уровня. Сигнальные линии не прекращено.
- Высокоскоростной (HS) В этом режиме используется та же пара проводов, но с разными электрическими обозначениями. Более низкие сигнальные напряжения От −10 до 10 мВ для низких и От 360 до 440 мВ для высокого логического уровня и оконечной нагрузки 45 Ом на землю или 90 Ом дифференциального сигнала в соответствии с импедансом кабеля передачи данных.
- Суперскорость (SS) добавляет две дополнительные пары экранированных витых проводов (и новые, в основном совместимые расширенные разъемы). Они предназначены для полнодуплексного режима SuperSpeed. Полудуплексные линии по-прежнему используются для конфигурации.
- Сверхскорость + (SS +) использует повышенную скорость передачи данных (режим Gen 2x1) и / или дополнительную полосу в разъеме Type-C (режим Gen 1x2 и Gen 2x2).
USB-соединение всегда между хостом или концентратором на А конец разъема, и «восходящий» порт устройства или концентратора на другом конце.
Состояние сигнализации
Хост включает в себя понижающие резисторы 15 кОм на каждой линии передачи данных. Когда ни одно устройство не подключено, это переводит обе линии передачи данных в так называемый несимметричный ноль состояние (SE0 в документации USB) и указывает на сброс или отключенное соединение.
Состояние перехода линии
Следующая терминология используется для помощи в техническом обсуждении передачи сигналов USB PHY.
Сигнал | Состояние перехода линии | Описание | USB 1.x с низкой скоростью (Подтяжка 1,5 кОм на D−) | USB 1.x, полная скорость (Подтяжка 1,5 кОм на D +) | ||
---|---|---|---|---|---|---|
D + | D− | D + | D− | |||
J | То же, что и состояние незанятой линии | Это присутствует во время перехода линии передачи. Как вариант, он ждет нового пакета. | низкий | высоко | высоко | низкий |
K | Обратное состояние J | Это присутствует во время перехода линии передачи. | высоко | низкий | низкий | высоко |
SE0 | Односторонний ноль | И D +, и D- низкие. Это может указывать на конец пакетного сигнала или отключенное USB-устройство. | низкий | низкий | низкий | низкий |
SE1 | Односторонний | Это незаконное состояние и никогда не должно происходить. Это рассматривается как ошибка. | высоко | высоко | высоко | высоко |
- Состояние незанятой линии - это когда устройство подключено к хосту с подтягиванием на D + и D-, при этом выход передатчика на хосте и устройстве установлен на высокий импеданс (hi-Z) (отключенный выход).
- Устройство USB подтягивает одну из линий данных к высокому уровню с помощью резистора 1,5 кОм. Это подавляет один из понижающих резисторов в хосте и оставляет линии данных в состоянии ожидания, называемом J.
- Для USB 1.x выбор линии передачи данных указывает, на какую скорость передачи сигнала способно устройство:
- устройства с полной пропускной способностью вытягивают D + высоко,
- устройства с низкой пропускной способностью вытягивают D− высоко.
- В K состояние имеет противоположную полярность J государственный.
Состояние линии (включая USB 1.x и 2.x)
Состояние линии / сигнал | Описание | USB 1.x низкоскоростной | USB 1.x на полной скорости | USB 2.x высокоскоростной |
---|---|---|---|---|
Отдельно | Устройств не обнаружено. Обе линии стянуты понижающими резисторами 15 кОм на стороне хоста. | SE0 ≥ 2 мкс | SE0 ≥ 2 мкс | SE0 ≥ 2 мкс |
Соединять | Устройство USB подтягивает D + или D-, выводит хост из состояния отсоединенной линии. Это запустит процесс перечисления USB. Это устанавливает состояние ожидания. | D− подтягивается стороной устройства 1,5 кОм. | D + подтягивается стороной устройства 1,5 кОм. | Специальная последовательность чириканья |
Холостой ход / Дж | Хост и передатчик устройства в Hi-Z. Определение состояния линии в случае отсоединенного состояния. | То же, что и состояние отсоединения или подключения. | То же, что и отключенное состояние или состояние подключения. | |
Синхронизировать | Начало шаблона перехода линии пакета. | Линейные переходы: KJKJKJKK | Линейные переходы: KJKJKJKK | 15 пар KJ, за которыми следуют 2 K, всего 32 символа. |
EOP | Конец шаблона перехода линии пакета. | Переходы строк: SE0 + SE0 + J | Переходы строк: SE0 + SE0 + J | |
Перезагрузить | Сбросьте USB-устройство в известное начальное состояние. | SE0 ≥ 2,5 мс | SE0 ≥ 2,5 мс | |
Приостановить | Выключите устройство, чтобы оно потребляло только 0,5 мА от напряжения VАвтобус. Выходит из этого состояния только после получения сигнала возобновления или сброса. Чтобы избежать этого состояния, выдается пакет SOF (высокоскоростной) или сигнал поддержания активности (низкоскоростной). | J ≥ 3 мс | J ≥ 3 мс | |
Резюме (ведущий) | Хост хочет разбудить устройство. | K ≥ 20 мс, затем шаблон EOP | K ≥ 20 мс, затем шаблон EOP | |
Резюме (устройство) | Устройство хочет проснуться. (Должен находиться в режиме ожидания не менее 5 мс.) | Привод устройства K ≥ 1 мс Затем хост отправляет сигнал возобновления. | Привод устройства K ≥ 1 мс Затем хост отправляет сигнал возобновления. | |
Оставайся в живых (низкая скорость) | Хост хочет сказать низкоскоростному устройству, чтобы оно не спало. | Шаблон EOP один раз в миллисекунду. | Непригодный | Непригодный |
Передача инфекции
Данные USB передаются путем переключения линий данных между состоянием J и противоположным состоянием K. USB кодирует данные с помощью NRZI линейное кодирование:
- Бит 0 передается путем переключения линий данных с J на K или наоборот.
- 1 бит передается, оставляя строки данных как есть.
Чтобы обеспечить достаточное количество переходов сигналов для восстановления тактовой частоты в битовый поток, а немного набивки к потоку данных применяется метод: дополнительный бит 0 вставляется в поток данных после любого появления шести последовательных 1 битов. (Таким образом обеспечивается наличие бита 0, вызывающего переход состояния передачи.) Семь последовательно полученных битов 1 всегда являются ошибкой. Для USB 3.0 используется дополнительное кодирование передачи данных для обработки требуемых более высоких скоростей передачи данных.
Пример передачи на полноскоростном устройстве USB 1.1
- Шаблон синхронизации: Пакет USB начинается с 8-битной последовательности синхронизации, 00000001₂. То есть, после начального состояния ожидания J линии данных переключаются на KJKJKJKK. Последний 1 бит (повторяющееся состояние K) отмечает конец шаблона синхронизации и начало кадра USB. Для USB с высокой пропускной способностью пакет начинается с 32-битной последовательности синхронизации.
- Конец пакета (EOP): EOP указывается передатчиком, управляющим 2-битным временем SE0 (D + и D- оба ниже макс.) И 1-битным временем состояния J. После этого передатчик перестает управлять линиями D + / D-, и вышеупомянутые подтягивающие резисторы удерживают его в состоянии J (холостой ход). Иногда перекос из-за концентраторов может добавить время в один бит до SE0 конца пакета. Этот дополнительный бит также может привести к «нарушению заполнения битов», если шесть битов перед ним в CRC равны 1 с. Получатель должен игнорировать этот бит.
- Сброс шины: Сброс шины USB производится с помощью продолжительного (от 10 до 20 миллисекунд) сигнала SE0.
Согласование скорости USB 2.0
Устройства USB 2.0 во время сброса используют специальный протокол, который называется щебетание, чтобы согласовать режим высокой пропускной способности с хостом / концентратором. Устройство, поддерживающее высокоскоростной интерфейс USB 2.0, сначала подключается как устройство Full Speed (высокий уровень D +), но после получения USB RESET (как D +, так и D− приводятся в низкое состояние хостом в течение 10-20 мс) оно отключает линию D− высокий, известный как chirp K. Это указывает хосту, что устройство имеет высокую пропускную способность. Если хост / концентратор также поддерживает HS, он издает щебетание (возвращает чередующиеся состояния J и K на линиях D- и D +), давая устройству знать, что концентратор работает с высокой пропускной способностью. Устройство должно получить не менее трех наборов щебетаний KJ, прежде чем переключится на завершение с высокой пропускной способностью и начнет передачу сигналов с высокой пропускной способностью. Поскольку в USB 3.0 используется отдельная проводка, которая является дополнительной по сравнению с USB 2.0 и USB 1.x, такое согласование полосы пропускания не требуется.
Допуск тактовой частоты составляет 480,00 ± 0,24 Мбит / с, 12,00 ± 0,03 Мбит / с и 1,50 ± 0,18 Мбит / с.
Хотя устройства с высокой пропускной способностью обычно называются «USB 2.0» и рекламируются как «до 480 Мбит / с», не все устройства USB 2.0 обладают высокой пропускной способностью. В USB-IF сертифицирует устройства и предоставляет лицензии на использование специальных маркетинговых логотипов для «базовой пропускной способности» (низкой и полной) или высокой пропускной способности после прохождения теста на соответствие и уплаты лицензионного сбора. Все устройства тестируются в соответствии с последней спецификацией, поэтому недавно совместимые устройства с низкой пропускной способностью также являются устройствами 2.0.
USB 3.0
В USB 3 используются многожильные луженые медные кабели AWG-28 с 90±7 Ом сопротивление для его высокоскоростных дифференциальных пар и регистр сдвига с линейной обратной связью и Кодирование 8b / 10b посылается с номинальным напряжением 1 В с порогом приемника 100 мВ; ресивер использует эквализацию.[9] SSC часы и точность 300 ppm. Заголовки пакетов защищены с помощью CRC-16, а полезные данные - с помощью CRC-32.[10] Можно использовать мощность до 3,6 Вт. Одна единичная нагрузка в режиме Super Speed равна 150 мА.[10]
Уровень протокола
Во время USB-связи данные передаются как пакеты. Первоначально все пакеты отправляются с хоста через корневой концентратор и, возможно, другие концентраторы на устройства. Некоторые из этих пакетов предписывают устройству отправить несколько пакетов в ответ.
После поля синхронизации все пакеты состоят из 8-битных байтов, передаваемых младший бит первым. Первый байт - это байт идентификатора пакета (PID). Фактически PID составляет 4 бита; байт состоит из 4-битного PID, за которым следует его побитовое дополнение. Эта избыточность помогает обнаруживать ошибки. (Байт PID содержит не более четырех последовательных 1 бита и поэтому никогда не нуждается в бит-набивка, даже в сочетании с последним 1 битом в байте синхронизации. Однако завершающий 1 бит в PID может потребовать вставки битов в первые несколько бит полезной нагрузки.)
Тип | Значение PID (msb -первый) | Переданный байт (lsb -первый) | Имя | Описание |
---|---|---|---|---|
Зарезервированный | 0000 | 0000 1111 | ||
Токен | 1000 | 0001 1110 | РАСКОЛОТЬ | Разделенная транзакция с высокой пропускной способностью (USB 2.0) |
0100 | 0010 1101 | ПИНГ | Проверьте, может ли конечная точка принимать данные (USB 2.0) | |
Специальный | 1100 | 0011 1100 | ПРЕД | Преамбула USB с низкой пропускной способностью |
Рукопожатие | ERR | Ошибка разделения транзакции (USB 2.0) | ||
0010 | 0100 1011 | ACK | Пакет данных принят | |
1010 | 0101 1010 | НАК | Пакет данных не принят; пожалуйста, передайте | |
0110 | 0110 1001 | NYET | Данные еще не готовы (USB 2.0) | |
1110 | 0111 1000 | ЛАРЕК | Перевод невозможен; сделать исправление ошибок | |
Токен | 0001 | 1000 0111 | ИЗ | Адрес для передачи от хоста к устройству |
1001 | 1001 0110 | В | Адрес для передачи от устройства к хосту | |
0101 | 1010 0101 | SOF | Маркер начала кадра (отправляется каждые мс) | |
1101 | 1011 0100 | НАСТРАИВАТЬ | Адрес для передачи управления от хоста к устройству | |
Данные | 0011 | 1100 0011 | ДАННЫЕ0 | Пакет данных с четным номером |
1011 | 1101 0010 | ДАННЫЕ1 | Пакет данных с нечетным номером | |
0111 | 1110 0001 | ДАННЫЕ2 | Пакет данных для изохронной передачи с высокой пропускной способностью (USB 2.0) | |
1111 | 1111 0000 | MDATA | Пакет данных для изохронной передачи с высокой пропускной способностью (USB 2.0) |
Пакеты бывают трех основных типов, каждый из которых имеет свой формат и CRC (циклическая проверка избыточности ):
Пакеты рукопожатия
Поле | Синхронизировать | PID | EOP |
---|---|---|---|
Биты | 8 | ||
Сигнал | КДж КДж КДж КК | XXXX XXXX | 00J |
Пакеты подтверждения состоят только из одного байта PID и обычно отправляются в ответ на пакеты данных. Обнаружение ошибок обеспечивается передачей четырех битов, которые дважды представляют тип пакета, в одном байте PID с использованием дополнен форма. Три основных типа: ACK, что свидетельствует об успешном получении данных; НАК, что указывает на то, что данные не могут быть получены и их следует повторить; и ЛАРЕК, что указывает на то, что устройство находится в состоянии ошибки и не может передавать данные, пока не будут выполнены какие-либо корректирующие действия (например, инициализация устройства).[11][12]
В USB 2.0 добавлены два дополнительных пакета подтверждения: NYET и ERR. NYET указывает, что разделенная транзакция еще не завершена, а подтверждение ERR указывает, что разделенная транзакция не удалась. Второй вариант использования пакета NYET - сообщить хосту, что устройство приняло пакет данных, но не может принимать больше из-за полных буферов. Это позволяет хосту переключаться на отправку небольших токенов PING, чтобы узнать о готовности устройства, вместо того, чтобы отправлять весь нежелательный пакет DATA только для того, чтобы вызвать NAK.[11][12]
Единственный пакет подтверждения, который может сгенерировать USB-хост, - это ACK. Если он не готов к приему данных, он не должен указывать устройству на отправку.
Пакеты токенов
Пакеты маркеров состоят из байта PID, за которым следуют два байта полезной нагрузки: 11 бит адреса и пятибитовый CRC. Токены отправляются только хостом, а не устройством. Ниже представлены токены с USB 1.0:
- В и ИЗ токены содержат семибитный номер устройства и четырехбитный номер функции (для многофункциональных устройств) и дают команду устройству передавать пакеты DATAx или получать следующие пакеты DATAx соответственно.
- В токен ожидает ответа от устройства. Ответ может быть NAK или STALL или DATAx Рамка. В последнем случае хост при необходимости выдает подтверждение ACK.
- ИЗ за токеном сразу следует DATAx Рамка. Устройство отвечает ACK, NAK, NYET или STALL, в зависимости от ситуации.
- НАСТРАИВАТЬ работает так же, как токен OUT, но используется для начальной настройки устройства. За ним следует восьмибайтовый кадр DATA0 в стандартизированном формате.
- SOF (начало кадра) Каждую миллисекунду (12000 битов при полной полосе пропускания) USB-хост передает специальный SOF (начало кадра) токен, содержащий 11-битный номер кадра с возрастающим приращением вместо адреса устройства. Это используется для синхронизации изохронной передачи данных и передачи прерывания. Высокоскоростные устройства USB 2.0 получают семь дополнительных токенов SOF на кадр, каждый из которых представляет «микрофрейм» 125 мкс (каждый 60000 битов с высокой пропускной способностью).
- USB 2.0 также добавил ПИНГ Токен и больший трехбайтовый токен SPLIT
- ПИНГ спрашивает устройство, готово ли оно к приему пары пакетов OUT / DATA. PING обычно отправляется хостом при опросе устройства, которое последним ответило NAK или NYET. Это позволяет избежать отправки большого пакета данных на устройство, которое, как подозревает хост, не желает принимать.[13] Устройство отвечает ACK, NAK или STALL, в зависимости от ситуации.
- РАСКОЛОТЬ используется для выполнения раздельных транзакций. Вместо того, чтобы связывать шину USB с высокой пропускной способностью, отправляющую данные на более медленное устройство USB, ближайший концентратор с высокой пропускной способностью получает токен SPLIT, за которым следуют один или два пакета USB с высокой пропускной способностью, выполняет передачу данных с полной или низкой пропускной способностью. -bandwidth и обеспечивает ответ с высокой пропускной способностью при запросе второго токена SPLIT. Он содержит семибитный номер концентратора, 12 бит контрольных флагов и пятибитовый CRC.
Пакеты токенов OUT, IN, SETUP и PING
Поле | Синхронизировать | PID | ADDR | ENDP | CRC5 | EOP |
---|---|---|---|---|---|---|
Биты | 8 | 7 | 4 | 5 | ||
Сигнал | КДж КДж КДж КК | XXXX XXXX | XXXX XXX | XXXX | XXXXX | 00J |
- ADDR: Адрес USB-устройства (максимум 127 устройств).
- ENDP: выберите аппаратный буфер источника / приемника конечной точки на устройстве. (Например, PID OUT предназначен для отправки данных из исходного буфера хоста в буфер приемника USB-устройства.)
- По умолчанию все USB-устройства должны поддерживать как минимум буфер конечной точки 0 (EP0). Это связано с тем, что EP0 используется для управления устройством и информации о состоянии во время перечисления и нормальной работы.
SOF: начало кадра
Поле | Синхронизировать | PID | Номер кадра | CRC5 | EOP |
---|---|---|---|---|---|
Биты | 8 | 11 | 5 | ||
Сигнал | КДж КДж КДж КК | XXXX XXXX | XXXX XXXX XXX | XXXXX | SE0 SE0 Дж |
- Номер кадра: это номер кадра, который периодически увеличивается хостом, чтобы позволить конечным точкам идентифицировать начало кадра (или микрофрейма) и синхронизировать внутренние часы конечной точки с часами хоста.
SSPLIT и CSPLIT: начальная разделенная транзакция и полная разделенная транзакция
S / C режим | Поле | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
0 = SSPLIT | Синхронизировать | PID | Адрес хаба | S / C | Номер порта | S | E | ET | CRC5 | EOP | |
1 = CSPLIT | Синхронизировать | PID | Адрес хаба | S / C | Номер порта | S | U | ET | CRC5 | EOP | |
Биты | 8 | 7 | 1 | 7 | 1 | 1 | 2 | 5 | |||
Сигнал | КДж КДж КДж КК | XXXX XXXX | XXXX XXX | Икс | XXXX XXX | Икс | Икс | XX | XXXXX | SE0 SE0 Дж |
- S / C: Пуск завершен
- 0 = SSPLIT: начать разделенную транзакцию
- 1 = CSPLIT: Завершить разделенную транзакцию
- S: 1 = низкая скорость, 0 = высокая скорость
- E: Конец полной скорости полезной нагрузки
- U: бит U зарезервирован / не используется и должен быть сброшен в ноль (0 B)
- EP: Тип конечной точки (00 = управление), (01 = изохронная), (10 = групповая) и (11 = прерывание)
Пакеты данных
Поле | Синхронизировать | PID | ДАННЫЕ | CRC16 | EOP |
---|---|---|---|---|---|
Биты | 8 | 0-8192 | 16 | ||
Сигнал | КДж КДж КДж КК | XXXX XXXX | (XXXX XXXX) * byteCount | XXXX XXXX XXXX XXXX | SE0 SE0 Дж |
Пакет данных состоит из PID, за которым следуют 0–1024 байта полезной нагрузки данных (до 1024 байтов для высокоскоростных устройств, до 64 байтов для полноскоростных устройств и не более восьми байтов для низкоскоростных устройств),[14] и 16-битный CRC.
Есть две основные формы пакета данных: ДАННЫЕ0 и ДАННЫЕ1. Пакету данных всегда должен предшествовать маркер адреса, и обычно за ним следует маркер подтверждения от приемника обратно к передатчику. Два типа пакетов обеспечивают 1-битный порядковый номер, необходимый для остановка и ожидание ARQ. Если USB-хост не получает ответа (например, ACK) на данные, которые он передал, он не знает, были ли данные получены или нет; данные могли быть потеряны при передаче или могли быть получены, но ответ на рукопожатие был утерян.
Чтобы решить эту проблему, устройство отслеживает тип последнего принятого пакета DATAx. Если он получает другой пакет DATAx того же типа, он подтверждается, но игнорируется как дубликат. Фактически принимается только пакет DATAx противоположного типа.
Если данные повреждены во время передачи или приема, проверка CRC не выполняется. Когда это происходит, получатель не генерирует ACK, что заставляет отправителя повторно отправить пакет.[15]
Когда устройство сбрасывается с помощью пакета SETUP, оно ожидает следующего 8-байтового пакета DATA0.
USB 2.0 добавлен ДАННЫЕ2 и MDATA типы пакетов также. Они используются только устройствами с высокой пропускной способностью, выполняющими изохронную передачу с высокой пропускной способностью, которые должны передавать более 1024 байтов на микрокадр 125 мкс. (8192 кб / с).
Пакет PRE (указывает концентраторам временно переключиться в режим низкой скорости)
Концентратор может поддерживать устройства с низкой пропускной способностью в сочетании с другими скоростными устройствами с помощью специального значения PID, ПРЕД. Это необходимо, поскольку концентратор USB функционирует как очень простой повторитель, транслирующий сообщение хоста на все подключенные устройства, независимо от того, был ли пакет для него или нет. Это означает, что в среде со смешанной скоростью существует потенциальная опасность того, что низкая скорость может неверно интерпретировать сигнал высокой или полной скорости от хоста.
Чтобы устранить эту опасность, если концентратор USB обнаруживает сочетание высокоскоростных или полноскоростных и низкоскоростных устройств, он по умолчанию отключает обмен данными с низкоскоростным устройством, если только он не получает запрос на переключение в режим низкой скорости. Однако при приеме пакета PRE он временно повторно включает выходной порт для всех низкоскоростных устройств, чтобы хост мог отправить один низкоскоростной пакет низкоскоростным устройствам. После отправки низкоскоростного пакета сигнал конца пакета (EOP) сообщает концентратору снова отключить все выходы на низкоскоростные устройства.
Поскольку все байты PID включают четыре бита 0, они покидают шину в состоянии K полной полосы пропускания, которое совпадает с состоянием J низкой полосы пропускания. После этого следует короткая пауза, во время которой концентраторы активируют свои выходы с низкой пропускной способностью, уже находящиеся в состоянии ожидания J. Затем следует пакет с низкой пропускной способностью, который начинается с последовательности синхронизации и байта PID и заканчивается коротким периодом SE0. Устройства с полной полосой пропускания, отличные от концентраторов, могут просто игнорировать пакет PRE и его содержимое с низкой полосой пропускания, пока последний SE0 не укажет, что следует новый пакет.
Преамбула полной скорости PRE | Настройка концентратора включить вывод к тихоходным устройствам. | Пример низкоскоростного пакета | Концентратор отключить вывод к тихоходным устройствам. | |||||||
---|---|---|---|---|---|---|---|---|---|---|
Поле | Синхронизировать | PID (PRE) | Синхронизировать | PID | ADDR | ENDP | CRC5 | EOP | ||
Биты | 8 | 8 | 7 | 4 | 5 | |||||
Сигнал | КДж КДж КДж КК | XXXX XXXX | КДж КДж КДж КК | XXXX XXXX | XXXX XXX | XXXX | XXXXX | 00J |
Сделка
OUT транзакция
OUT транзакция (всего 3 пакета) | |||
---|---|---|---|
Хозяин | Хозяин | Устройство | |
PID пакета | ИЗ | DATAx | ACK |
Тип пакета | Токен | Данные | Рукопожатие |
Описание | Сообщите устройству на ADDRx начать прослушивание входящих пакетов данных на конечной точке EPx. | Сообщите USB-устройству данные, которые вы хотите отправить на него. | Устройство сообщает хосту, что оно успешно получило и загрузило полезные данные в буфер EPx. |
В транзакции
В транзакции (всего 3 пакета) | |||
---|---|---|---|
Хозяин | Устройство | Хозяин | |
PID пакета | В | DATAx | ACK |
Тип пакета | Токен | Данные | Рукопожатие |
Описание | Сообщите устройству на ADDRx для отправки любых данных, которые есть в его буфере конечной точки EPx. | Устройство проверяет свой буфер конечной точки EPx и отправляет запрошенные данные на хост. | Хост сообщает устройству, что он успешно получил полезную нагрузку и загрузил ее в свой буфер EPx. |
SETUP транзакция
Он используется для перечисления устройств и управления соединением и сообщает устройству, что хост хотел бы начать обмен передачей управления.
Транзакция SETUP (всего 3 пакета) | |||
---|---|---|---|
Хозяин | Хозяин | Устройство | |
PID пакета | НАСТРАИВАТЬ | ДАННЫЕ0 | ACK |
Тип пакета | Токен | Данные | Рукопожатие |
Описание | Сообщите устройству на ADDRx чтобы запустить режим настройки и быть готовым к пакету данных. | Отправьте на устройство установочный пакет длиной 8 байтов. | Устройство подтверждает получение данных SETUP и обновляет свой конечный автомат настройки. |
- В зависимости от пакета настройки может возникнуть дополнительный пакет данных от устройства к хосту или от хоста к устройству.
Пакет установки
Транзакция настройки передает устройству 8-байтовый пакет настройки. Пакет настройки кодирует направление и длину любых следующих пакетов данных.
Поле | Компенсировать | Байтов | Биты | Описание |
---|---|---|---|---|
bmRequestType | 0 | 1 | 0–4 | Получатель: Программный компонент USB адресуется
|
5–6 | Тип: Используется с байтом bRequest
| |||
7 | Направление:
| |||
bRequest | 1 | 1 | Команда установки: Когда Recipient = 0 (Device) и Type = 0 (Standard), определенные запросы:
| |
wValue | 2 | 2 | Значение параметра: Интерпретация зависит от bRequest | |
wIndex | 4 | 2 | Вторичный параметр: Задает интерфейс или конечную точку, к которой адресован этот запрос. Для строковых дескрипторов (Recipient = Device) это код языка. | |
wLength | 6 | 2 | Длина передачи данных: Количество байтов, которые должны быть переданы после установочного пакета. |
Обмен управления передачей
Обмен передачей управления состоит из трех отдельных этапов:
- Этап настройки: это команда настройки, отправляемая хостом устройству.
- Этап данных (необязательно): устройство может дополнительно отправлять данные в ответ на запрос настройки.
- Этап состояния: фиктивная транзакция IN или OUT, которая, вероятно, предназначена для индикации окончания обмена передачей управления.
Это позволяет хосту выполнять действия по управлению шиной, такие как перечисление новых USB-устройств путем извлечения нового устройства. дескрипторы устройства. Получение дескрипторов устройства, в частности, позволит определить класс USB, VID и PID, которые часто используются для определения правильного драйвера USB для устройства.
Кроме того, после получения дескриптора устройства хост выполняет другой обмен передачей управления, но вместо этого устанавливает адрес USB-устройства на новый ADDRx.
Рекомендации
- ^ а б «Настоящая сделка с USB 2.0», Новости и тенденции, Компьютерный мир, 28 февраля 2002 г., архивировано из оригинал 5 декабря 2010 г.
- ^ а б «Сверхпортативный Seagate FreeAgent GoFlex» (рассмотрение). CNet. В архиве из оригинала 14 апреля 2011 г.. Получено 22 мая 2011.
- ^ Шварц, Роде (25 мая 2012 г.). «Тестирование по маске USB 2.0» (PDF). Получено 2012-07-12.[постоянная мертвая ссылка ]
- ^ «NEC готова попробовать« первый в мире »контроллер USB 3.0». В архиве из оригинала 23 мая 2009 г.. Получено 15 июн 2009.
- ^ «Когда продукты USB 3.0 появятся на рынке?». В архиве из оригинала 30 апреля 2009 г.. Получено 11 мая 2009.
- ^ "Мышиные вещи, о которых тебе следует знать", Городской террор, 9 августа 2008 г., в архиве из оригинала 11 октября 2014 г.
- ^ Разработчик ОС - универсальная последовательная шина, 1 февраля 2011 г., в архиве из оригинала 5 сентября 2012 г.
- ^ «USB в двух словах - Глава 2 - Оборудование». Помимо Logic.org. В архиве с оригинала от 20 августа 2007 г.. Получено 25 августа 2007.
- ^ «Технические характеристики кабелей USB 3.0 SuperSpeed». В архиве из оригинала 14 апреля 2011 г. 100717 usb3.com
- ^ а б «Спецификация универсальной последовательной шины 3.0, версия 1.0, 12 ноября 2008 г.» (PDF). В архиве (PDF) из оригинала от 13 ноября 2013 г. 100717 usb3.com
- ^ а б «USB Made Simple, Часть 3. Поток данных». usbmadesimple.co.uk. 2008. В архиве из оригинала 5 октября 2014 г.. Получено 17 августа 2014.
- ^ а б «USB в двух словах, Глава 3. Протоколы USB». yondlogic.org. 17 сентября 2010 г. В архиве из оригинала 5 августа 2014 г.. Получено 17 августа 2014.
- ^ «Часть 7, Высокоскоростные транзакции: протокол Ping». usbmadesimple.co.uk. 2008. В архиве из оригинала 3 октября 2014 г.. Получено 16 августа 2014.
- ^ «USB в ореховой скорлупе». Глава 4 - Типы конечных точек. В архиве из оригинала 2 сентября 2014 г.. Получено 5 сентября 2014.
- ^ «Отладка распространенных проблем с USB». Архивировано из оригинал 15 июня 2013 г.. Получено 5 июн 2013.