20. Шина USB: предпосылки, организация и функционирование.
Шина USB
- Шина USB была разработана в 1995 году консорциумом компаний, включающим Compaq, HP, Intel, Lucent, Microsoft, NEC, Philips.
- Цель разработки – определение внешней расширяемой шины, которая делает подключение периферии к компьютеру предельно простым.
- Спецификация версии 1.1 поддерживает как низкоскоростные, так и быстрые устройства. USB может работать со скоростью 1,5 Мбита/с (низкая скорость) и 12 Мбит/с (полная скорость). Следующая версия (USB 2.0) характеризуется скоростью до 480 Мбит/с (высокая скорость).
- С увеличенной полосой пропускания USB может поддерживать более скоростные периферийные устройства, например, камеры видеоконференций, быстрые устройства хранения, сканеры, принтеры, CD-приводы.
- USB 2.0 использует те же разъемы и кабели, что и USB 1.1, без каких-либо изменений.
- Скорость передачи данных устанавливается в зависимости от требований конкретного устройства. Если более высокая скорость не поддерживается периферийным устройством, то шина работает на низких скоростях 12 Мбит/с или 1,5 Мбит/с, как требуется периферии. USB 2.0 широко распространена с 2002.
Предпосылки создания
- Интерфейсы, специфичные для устройства: большое количество интерфейсов, специфичных для отдельных устройств. В противоположность этому сценарию, USB использует единый коннектор для подключения любых устройств.
- Неразделяемые интерфейсы: стандартные интерфейсы поддерживают только одно устройство. В противоположность этому, USB поддерживает до 127 устройств на соединение. Например, можно подключить клавиатуру, мышь, колонки к одном USB порту, используя один тип кабеля.
- Проблемы адресного пространства ввода/вывода и запроса прерываний: добавление нового периферийного устройства часто приводит к конфликтам адресных пространств ввода/вывода или конфликтам запросов прерываний (IRQ). В свою очередь USB не требует памяти, адресного пространства, линий прерывания.
- Установка и конфигурирование: При использовании стандартных интерфейсов добавление периферийного устройства обычно занимает много времени, может требовать открытия системного блока и подключения различных коннекторов, разъемов. В случае USB имеется поддержка plug-and-play.
- Отсутствие горячего подключения: Обычно подключение нового устройства требует большого количества перезагрузок. Подключение USB устройств осуществляется очень просто: нет необходимости выключения или перезагрузки компьютера после установки нового устройства.
Прочие достоинства USB
- Распределение мощности: USB кабель подводит к устройству питание напряжением 5 Вольт. В зависимости от порта значение силы тока составляет от 100 до 500 миллиампер. Небольшие устройства могут функционировать, получая питание по USB-кабелю.
- USB кабель содержит 4 провода: два из них используются для питания и заземления, оставшиеся два несут разностный сигнал.
- Управление периферийными устройствами: USB позволяет передачу данных в обоих направлениях. Это значит, что компьютер может управлять периферийным устройством.
- Хабы расширения: USB предполагает расширяемость по средством хабов, которые имеют низкую цену и широко распространены.
- Энергосбережение: USB устройства входят в спящий режим в случае, если на шине нет активности в течении 3 мс. В спящем режиме устройства потребляют порядка 2,5 мА тока.
- Обнаружение и исправление ошибок: USB использует CRC коды для обнаружения ошибки передачи. В случае ошибки транзакция отбрасывается.
Кодирование в USB
В USB сигнал кодируется с использованием NRZI (non return to zeroinverted). NRZI – это расширение NRZ. В NRZ «0» представляется низким уровнем, а «1» – высоким.
Эта схема проста для реализации, однако характеризуется двумя серьезными проблемами:
- Изменения уровня сигнала не происходит в случае передачи длинных непрерывных последовательностей нулей или единиц. Изменения уровня требуются приемнику для корректного восстановления данных.
- В зашумленной среде тяжело различать уровни нуля и единицы, гораздо проще различать изменения уровня с нуля на единицу и наоборот.
NRZI
- NRZI решает некоторые из этих проблем. В этой кодировке не используются абсолютные уровни для кодирования данных; вместо этого определяется присутствие или отсутствие изменения значения для определения значения бита. В стандартном NRZI изменение значения сигнала происходит, если следующий бит – это 1; уровень сигнала остается прежним, если следующий бит 0. Изменение уровня может быть как с низкого на высокий, так и наоборот. В USB NRZI кодировка использует правило дополнительности: изменение уровня происходит, если следующий бит – нулевой. Это одна из разностных схем.
- NRZI решает две основные проблемы, связанные с NRZ. В NRZI уровень сигнала не играет никакой роли. В этой кодировке значение имеет лишь изменение сигнала. Таким образом, повышается надежность передач данных. Более того, решается проблема длинных непрерывных последовательностей нулей и единиц. Длинная последовательность нулей заставляет сигнал NRZI изменяться.
Типы передач в USB
- Прерывание;
- Изохронная передача;
- Управление;
- Блок;
Передача прерывания
- USB не поддерживает прерывания в традиционном смысле. Вместо этого, USB использует опрос.
- Важна частота опроса. Если частота слишком высока, то будет теряться производительность. С другой стороны, если используется слишком низкая частота, то возможна потеря данных от устройств.
- Частота передач прерываний в USB может быть подстроена под требования устройства. В USB 1.1 интервал опроса может изменяться от 1 до 255 мс.
- В этом виде передач важна целостность данных, поддерживается обнаружение и восстановление ошибок. Если обнаружена ошибка, то осуществляется повтор.
Изохронная передача
- Приложения реального времени, требующие постоянной скорости передачи данных, используют этот тип передачи. Таким приложениям данные требуются к определенному времени.
- Примеры: передачи от колонок, считывание из CD-ROM.
- Для обеспечения постоянной скорости передачи данных осуществляется регулярное планирование изохронных передач.
- Эти передачи не используют обнаружения и исправления ошибок.
Управляющая передача
Управляющие передачи используются для конфигурирования и подготовки USB устройств.
Они включают шаги:
- Подготовительный шаг (Setup Stage): управляющие передачи всегда начинаются с этого шага для передачи целевому устройству типа запроса.
- Шаг данных: это необязательный шаг. Только передачи управления, требующие данные, используют его. Например, при запросе дескриптора устройства, на этом шаге посылается содержимое дескриптора.
- Шаг статуса: последний шаг, он используется всегда и указывает статус операции.
Управляющим передачам гарантируется 10% ширины полосы. Однако, если доступно больше, то она может использоваться для дополнительных передач управления. Целостность данных важна, поэтому используется проверка и исправление ошибок.
Блочная передача
- Устройства, которые не имеют каких-либо специфических требований по скорости передачи, используют данный тип передач.
- Полоса пропускания выделяется для таких передач с минимальным приоритетом.
- В полностью занятом кадре возможно, что оставшиеся три типа займут все 100% полосы. В таком случае, блочные передачи откладываются до момента, когда загрузка системы USB снизится.
- Блочные передачи поддерживают обнаружение и исправление ошибок. Исправление, как и ранее, осуществляется путем повторной отправки данных.
Архитектура USB
- Аппаратная часть хоста состоит из контроллера хоста и корневого хаба.
- Контроллер хоста инициирует транзакцию по USB.
- Корневой хаб предоставляет точки подключения.
- Топология шины представляет собой дерево с корнем в корневом хабе.
Транзакции USB
- Передачи осуществляются с использованием одной или более транзакций.
- Каждая транзакция включает несколько пакетов.
- Драйвер хоста мультиплексирует транзакции из нескольких устройств в форме одного кадра, опираясь на правила, описанные ранее.
Транзакция включает от одной до 3 фаз:
- Фаза пакета токена: Все транзакции начинаются с этой фазы. Она указывает тип транзакции и адрес целевого устройства.
- Фаза пакета данных: Если транзакция требует пересылки данных, включается фаза данных. За одну транзакцию передается максимум 1023 байта данных.
- Фаза пакета рукопожатия: Эта фаза указывает отправителю, были ли данные приняты без ошибок. В случае ошибок происходит повторная передача данных транзакции. Изохронные передачи не используют фазу рукопожатия, так как обнаружение ошибок не осуществляется.
Фрейм – это единица планирования пропускной способности шины между устройствами, фактически, это период в 1мс, который разделяется между различными USB-устройствами.
Формат пакета USB
- Синхронизирующая последовательность (8 бит = 00000001) предшествует каждому пакету. Приемник использует эту последовательность, чтобы синхронизироваться со скоростью данных входного пакета.
- Каждый пакет состоит из идентификатора пакета, данных, специфичных для пакета, поля CRC.
- Идентификатор пакета состоит из 4-битного поля типа и 4-битного проверочного поля. Поле типа
определяет является ли пакет пакетом-токеном, данными или пакетом рукопожатия. Из-за того, что поле типа имеет длину только 4 бита, для защиты используется проверочное поле, порожденное инверсией поля типа. - Поле CRC защищает данные пакета. Используется CRC-5 и CRC-16.
- EOP указывает конец пакета. Это поле закодировано аппаратно, таким образом эта кодировка не встречается внутри пакета. EOP обозначается удержанием обоих сигнальных линий на низком уровне в течение 2 периодов битов и состоянии Z на третьем бите.