Altinkaya: турецкие корпуса для РЭА
РадиоЛоцман - Все об электронике

Популярно о USB. Часть 3

Часть 1

Часть 2

Немоляев А. В, г. Екатеринбург

Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Пакет – базовое понятие USB

Коммуникационный стек USB, в отличие от TCP/IP, «несимметричный». Поэтому попытки проводить прямую аналогию со стеком TCP/IP и подобными стеками нужно сразу отбросить. Уровни есть, но уровни разные на стороне хоста и USB-устройства. Хотя без некоторой аналогии с сетями не обойтись.

Для передачи данных в обоих направлениях и разного рода служебной информации используются только 2 проводника, не считая «земли» и питания. Соответственно, и система сигнализации на шине поучается сложной. Классический подход к изучению USB сверху вниз или снизу вверх мало подходит. Точнее, будет трудно понять существо дела. Хотя формально все будет верно, но для новичка в USB непонятно. Поэтому лучше начать с середины. Предположим, что по этим проводникам как-то передаются биты информации. Первоначально не будем заострять внимание на механизмах реализации передачи сигналов по проводникам. Отдельно нужно заметить, что в работе любого USB-устройства есть две различные стадии: стадия конфигурирования и рабочий режим обмена. Здесь не будем рассматривать процесс энумерации, а только рабочий режим обмена данными.

Основной элемент протокола USB – это пакет. Пакет, в свою очередь, состоит из трех частей: преамбулы, тела и концевика. Преамбула служит для подстройки частоты генератора приемника, в английской транскрипции SYNC. Тело пакета – последовательность байт от одного до 1025. Первый байт тела пакета – это идентификатор пакета, в английской транскрипции PID. Идентификатор задает тип пакета и его функциональное назначение. Только первые 4 бита PID кодируют тип пакета, а остальные служат для защиты от ошибок и дублируют первые 4 бита в виде инверсной копии. Четырьмя битами кодируется 10 типов пакетов, остальные 6 зарезервированы. Эти десять типов делятся на четыре категории: маркеры, данные, квитирование и специальные. Тело пакета содержит полезную нагрузку. Концевик должен сигнализировать о завершении пакета. В английской транскрипции – End-Of-Packet или EOP. Из этих трех частей состоят все пакеты, которые перемещаются в обе стороны по шине.

Популярно о USB

Рисунок 3.

Маркерный пакет – старт временного окна

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

Пропускная способность шины делится на временные окна. Начало временного окна отмечается служебным пакетом SOF (Start of frame). Пакет SOF транслируется каждые 1 мс корневым хабом и широковещательно распространяется по всему дереву хабов, достигая каждого из USB-устройств. За 1 мс при частоте 12 МГц теоретически можно передать максимально 1500 байт данных. Заметим, что тактовая частота в 12 мегагерц является стандартной для шины USB. Дополнительные затраты на SYNC и EOP снижают максимально возможный объем данных, передаваемых в одном временном окне, до 1200 байт. Пакет SOF состоит из идентификатора пакета PID, данных и контрольной суммы. Контрольная сумма пакета SOF имеет размер 5 бит. Данные пакета имеют размер 11 бит. Это число длиной 11 бит монотонно увеличивается с каждым пакетом, при переполнении обнуляется и вновь возрастает. Цикл длится 2048 мс. Некоторые устройства используют этот счетчик для привязки к реальному времени. Пакет SOF не содержит адресной части, так как является широковещательным и не требует квитирования. Не надо забывать, что как и всякий пакет, пакет SOF содержит преамбулу и концевик. Завершение временного окна, отмечается особым состоянием сигнальных проводов, которое получило название EOF(End of frame). Это состояние молчания.

Популярно о USB

Рисунок 4.

С помощью пакетов SOF создается временная сетка синхронизации по всему дереву устройств. Источником пакетов SOF всегда является хост, как и для всех маркерных пакетов. Пакеты SOF можно увидеть на экране осциллографа, если подключить щуп к одной из линий данных. Нужно помнить, что инициатором любых обменов на шине является хост. Обмены на шине происходят в течение временного окна в обоих направлениях.

Популярно о USB

Рисунок 5.

Маркерные пакеты – SETUP, IN, OUT

Каждый из этих пакетов состоит из PID, адреса устройства, адреса конечной точки и контрольной суммы. Три типа этих маркерных пакетов применяются при инициализации обмена данными между хостом и USB-устройством. Как не трудно догадаться, маркерные пакеты сообщают адресуемому USB-устройству, что нужно готовиться к приему данных, либо команд, которые последуют за маркерными пакетами. Пакет IN применяется при инициализации передачи данных от USB-устройства к хосту, а OUT – в противоположном направлении. Пакеты IN и OUT могут адресовать любое USB-устройство и любую конечную точку USB-устройства на шине. Маркерный пакет SETUP, специальный вариант пакета OUT, всегда адресован нулевой конечной точке и имеет наивысший приоритет. Любое USB-устройство обязано немедленно принять этот адресованный ему пакет, даже если требуется прервать выполнение предыдущей команды. Рисунок 6 иллюстрирует сказанное.

Популярно о USB

Рисунок 6.

Пакеты данных

Маркерные пакеты выполняют вспомогательную роль, сами данные передаются отдельным типом пакетов. Существует два вида пакетов данных, они называются DATA0 и DATA1. Эти пакеты состоят из PID, прикладных данных и контрольной суммы. Прикладные данные или полезный груз, могут иметь размер от 0 до 1023 байт для одного пакета данных. Различные типы этих пакетов попеременно передаются для дополнительного контроля возможного искажения передачи. Передатчик транслирует DATA0, DATA1, DATA0. Приемник отслеживает это чередование, и если чередование нарушается, то сигнализирует об ошибке в приеме данных. Эта дополнительная мера усиливает защиту от некоторых видов ошибок. В отличие от маркерных пакетов, в пакетах данных контрольная сумма 16 бит, а не 5, что направлено на усиление защиты от помех.

Пакеты квитирования

Для подтверждения приема, управления потоком и сигнализации об ошибках используются пакеты квитирования, так же как и в других протоколах обмена. Для режима FS (full speed) имеются три пакета квитирования: NAK, ACK и STALL. Все пакеты квитирования не содержат ни контрольной суммы, ни каких либо частей, кроме PID. Как упоминалось выше, пакет PID делится на два полубайта с одинаковым значением, это и служит защитой от искажения самого пакета квитирования. Пакет ACK подтверждает успешный прием переданного маркерного пакета или пакета данных. Пакет NAK сообщает о невозможности принять маркер пакет или пакет данных прямо сейчас. Например, USB-устройство занято другой работой, или не успевает обрабатывать поступающие данные, занято обработкой предыдущего пакета. Протокол допускает, что USB-устройство может квитировать любой принятый пакет данных или пакет маркера пакетом NAK, кроме пакета SETUP. На принятый пакет SETUP устройство не должно отвечать пакетом NAK, пакет SETUP обязательный к рассмотрению. Образно можно сказать, что пакетом NAK USB-устройство сообщает о необходимости подождать и не торопиться.

Пакет STALL передается USB-устройством в случае серьезных ошибок, чтобы сообщить хосту о невозможности дальнейшей работы. Например, в принтере кончилась бумага, и попытки передавать данные лишены смысла. Для таких ситуаций USB-устройство отправит пакет STALL, сообщая этим, что адресат заблокирован и бессмысленно загружать шину попытками передачи данных.

Остается невыясненным, а как обрабатывается ситуация, когда пакет поврежден? Что будет, если проверка целостности пакета покажет, что он искажен? На принятые искаженные пакеты ни USB-устройство, ни хост не должны отвечать никак. Точнее говоря, они должны выдержать некоторый временной промежуток молчания, тайм-аут. По отсутствию пакета квитирования передатчик догадается, что пакет искажен и повторит передачу. Если несколько повторов передача будет неудачной, хост перейдет в аварийный режим.

Тип пакета
Обозначение
Значение
Маркер
OUT
0001
IN
1001
SOF
0101
SETUP
1101
Квитирование
ACK
0010
NAK
1010
STALL
1110

Часть 4

Электронные компоненты. Бесплатная доставка по России
Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
Имя