Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УчебПособ_Гончаровский.doc
Скачиваний:
17
Добавлен:
13.11.2019
Размер:
3.75 Mб
Скачать

1.9.4.1. Введение в usb

Последовательная шина USB (Universal Serial Bus) является промышленным стандартом и разработана для подключения среднескоростных и низкоскоростных периферийных устройств и обеспечивает: подключение устройств под напряжением, автоматическое распознавание немедленно после подключения, питание маломощных устройств с самой шины, полудуплексный способ обмена [17]. Например, для USB 2.0 полная скорость передачи данных составляет 0,5—12 Мбит/сек (аудио-, видеоустройства), низкая – 10—1500 Кбит/ сек (клавиатуры, мыши, джойстики) и высокая – 25 —480 Мбит/с (видеоустройства, устройства хранения информации). Максимальная длина кабеля для полной скорости передачи – 3м, а для низкой – 5м. Максимальное количество подключаемых устройств – 127.

Топология шины USB – “монтажная звезда” (tiered star) или дерево, наращиваемое с помощью концентраторов (hub). USB хост-порт (один на всю шину) содержит корневой хаб и приемопередатчики (трансиверы) для подключения новых хабов или устройств (device).

Кабель состоит из 4 проводников: Vbus – питание +5В, GND – земля и свитые D- и D+ - дифференциальная пара для полудуплексной передачи данных.

Определение скоростных характеристик устройства и самого факта подключения его на шину производится с помощьюя имеющихся в устройстве подтягивающих резисторов, подключенных к линии D- или D+. Подключение к линии D+ сигнализирует подключение полноскоростного устройства, а к D- – низко скоростного.

Данные передаются самосинхронизирующимся кодом NRZIspace с битстаффингом. Текущая 1 передается инверсией потенциала предыдущего бита, текущий 0 передается потенциалом предыдущего бита. Длинные последовательности нулей исключаются из передачи вставкой 1 после n подряд идущих 0.

Передаче кадра предшествует передача преамбулы – последовательности длины m из одних 1, обеспечивающей вхождение в работу выделителя тактовой частоты на приемной стороне.

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

Каждое устройство на интерфейсе USB может имеет несколько конечных точек (ep – end point). Эти пронумерованные точки являются окончаниями логических каналов данных между хостом и устройством. Таким образом, между хостом и устройством реализуется многоканальная передача данных.

При подключении устройства к шине хост присваивает ему номер. Номера ep задаются при изготовлении у стройства.

Любое устройство должно поддерживать ep 0 (DCP - Default Control Pipe), так как это средство конфигурирования устройства по умолчанию в USB после включения или получения сигнала сброса по шине.

Конечные точки имеют собственные характеристики, их необходимо знать клиентскому программному обеспечению (ПО) для определения типа соединения: частота передачи, требования по пропускной способности канала, номер ep, требования по обработке ошибок, максимальный размер пакета отправляемого/принимаемого ep, тип и направление передачи.

Передача по USB состоит из пакетов, отмеченных специальными кодами, называемыми идентификаторами пакетов (PID). PID показывает какого типа пакет был передан. Рис.43. иллюстрирует передачу по USB от хоста

к устройству.

Пакет а) – признак передачи, индицируемый OUT PID. Признак индицирует, что данные от хоста будут переданы по шине. Пакет б) содержит данные, о чем говорит PID DATA1. Пакет в) – квитирование (handshake), отправляется устройством с использованием ACK PID для подтверждения хосту, что устройство получило данные без ошибок. Вторая передача начинается с еще одного пакета OUT г). Далее следуют данные д), на этот раз с PID DATA0. В конце передачи устройство опять подтверждает успешную передачу, передавая ACK PID.

Рис.43. Пример передачи по USB от хоста к устройству

Наличие DATA1 и DATA0 (два циклических номера пакетов) обусловлено коррекцией ошибок. Пакет ACK – это сигнал хосту, что периферия получила данные без ошибок (поля CRC в пакетах используются для определения ошибок). Каждая сторона устанавливает переменную, изменяющуюся между DATA1 и DATA0. Значение этой переменной сравнивается с полем PID, приходящим с данными, DATA1 или DATA0. При передаче данных хост или устройство посылает перемежающиеся пакеты DATA1 - DATA0. Путем сравнения идентификатора DATA со значением внутренней переменной, хост или устройство могут определить поврежденный пакет.

Признак SETUP предназначен для передачи типа CONTROL. Они предваряют 8 байт данных, из которых периферия определяет запросы хоста.

Признак SOF приходит каждую миллисекунду, обозначая кадр USB.

Пакеты согласования:

– ACK означает, что данные приняты без ошибок.

– NAK означает занято, передайте еще раз.

– STALL означает, что произошло нечто непредвиденное. Устройство посылает STALL , показывая, что не поняло запрос.

– PRE предшествует передаче на низкой скорости.

Передаче данных хосту предшествует пакет IN. Если хост не посылает этот запрос, данные навсегда останутся в буфере устройства.

Пакет SOH обеспечивает распределение времени и включает в себя 11-разрядный счетчик кадров.

Возможны четыре типа передач:

Передача типа Bulk – “прорывная”, пакетами по 8, 16, 32, 64 байт. Доставка информации гарантирована по причине автоматической пересылки поврежденных данных. Хост позволяет передавать пакеты bulk, когда шина освобождается. Этот тип передачи применяется для принтера, сканера или модема. Данные, передаваемые таким способом, имеют встроенный контроль передачи, обеспечиваемый пакетами согласования.

Передача типа Interrupt похожа на bulk, но передача происходит только для IN каналов. Блок данных может иметь длину от 1 до 64 байт. Каналы interrupt типа имеют ассоциированный временной интервал, через эти интервалы хост посылает признак IN.

Передача типа Isochronous используется для потоковой передачи, критичной ко времени информации, такой как аудио или видео информация. В каждом кадре USB определенная жесткая часть времени отводится для передачи типа isochronous. Такая передача не имеет признаков согласования и не имеет пересылок. Передается всегда PID DATA0.

Передача типа Сontrol используется для конфигурирования и посылки команд устройству. При передаче типа сontrol обеспечивается наилучшая защита от ошибок. Хост резервирует часть каждого фрейма для передачи сontrol. Передачи сontrol состоят из 2 или 3 стадий. Стадия SETUP содержит 8 байт управляющих данных. Необязательная часть DATA содержит дополнительные данные. Стадия STATUS позволяет устройству индицировать благополучное завершение процесса конфигурирования.