20. Шина USB: предпосылки, организация и функционирование.

Шина USB

Предпосылки создания

  1. Интерфейсы, специфичные для устройства: большое количество интерфейсов, специфичных для отдельных устройств. В противоположность этому сценарию, USB использует единый коннектор для подключения любых устройств.
  2. Неразделяемые интерфейсы: стандартные интерфейсы поддерживают только одно устройство. В противоположность этому, USB поддерживает до 127 устройств на соединение. Например, можно подключить клавиатуру, мышь, колонки к одном USB порту, используя один тип кабеля.
  3. Проблемы адресного пространства ввода/вывода и запроса прерываний: добавление нового периферийного устройства часто приводит к конфликтам адресных пространств ввода/вывода или конфликтам запросов прерываний (IRQ). В свою очередь USB не требует памяти, адресного пространства, линий прерывания.
  4. Установка и конфигурирование: При использовании стандартных интерфейсов добавление периферийного устройства обычно занимает много времени, может требовать открытия системного блока и подключения различных коннекторов, разъемов. В случае USB имеется поддержка plug-and-play.
  5. Отсутствие горячего подключения: Обычно подключение нового устройства требует большого количества перезагрузок. Подключение USB устройств осуществляется очень просто: нет необходимости выключения или перезагрузки компьютера после установки нового устройства.

Прочие достоинства USB

Кодирование в USB

В USB сигнал кодируется с использованием NRZI (non return to zeroinverted). NRZI – это расширение NRZ. В NRZ «0» представляется низким уровнем, а «1» – высоким.
Эта схема проста для реализации, однако характеризуется двумя серьезными проблемами:

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

NRZI

Типы передач в USB

  1. Прерывание;
  2. Изохронная передача;
  3. Управление;
  4. Блок;

Передача прерывания

Изохронная передача

Управляющая передача

Управляющие передачи используются для конфигурирования и подготовки USB устройств.
Они включают шаги:

  1. Подготовительный шаг (Setup Stage): управляющие передачи всегда начинаются с этого шага для передачи целевому устройству типа запроса.
  2. Шаг данных: это необязательный шаг. Только передачи управления, требующие данные, используют его. Например, при запросе дескриптора устройства, на этом шаге посылается содержимое дескриптора.
  3. Шаг статуса: последний шаг, он используется всегда и указывает статус операции.

Управляющим передачам гарантируется 10% ширины полосы. Однако, если доступно больше, то она может использоваться для дополнительных передач управления. Целостность данных важна, поэтому используется проверка и исправление ошибок.

Блочная передача

Архитектура USB

Транзакции USB

Транзакция включает от одной до 3 фаз:

  1. Фаза пакета токена: Все транзакции начинаются с этой фазы. Она указывает тип транзакции и адрес целевого устройства.
  2. Фаза пакета данных: Если транзакция требует пересылки данных, включается фаза данных. За одну транзакцию передается максимум 1023 байта данных.
  3. Фаза пакета рукопожатия: Эта фаза указывает отправителю, были ли данные приняты без ошибок. В случае ошибок происходит повторная передача данных транзакции. Изохронные передачи не используют фазу рукопожатия, так как обнаружение ошибок не осуществляется.

Фрейм – это единица планирования пропускной способности шины между устройствами, фактически, это период в 1мс, который разделяется между различными USB-устройствами.

Формат пакета USB