Обработка ошибок
Протокол необязательно учитывает обработку ошибок в аппаратных средствах или программном обеспечении. Аппаратная обработка включает в себя сообщение и повторение неудачных передач. Хост контроллер повторит передачу ошибочного данного три раза перед информированием клиентского программного обеспечения об ошибке. Клиентское программное обеспечение может реализовывать специфический способ восстановления.
В заключение, протокол определяет подробности, которые позволяют приемнику определять через время ожидания транзакции шины, что он не собирается получать пакет данных после того, как он успешно просмотрел маркерный пакет.
Как только приемник определил, что пакет данных не был получен, может потребоваться узнать размер данных, которые были потеряны, чтобы оправиться от ошибки связаной с функциональным поведением.(Once a receiver has determined that a data packet was not received, it may need to know the size of the data that was missed in order to recover from the error with regard to its functional behavior.) Если поток связи имеет всегда тот же самый размер данных на кадр, то размер всегда известная константа. Однако, в некоторых случаях размер данных может меняться от кадра к кадру. В этом случае, приемник и передатчик имеют зависящий от реализации механизм для определения размера потерянного пакета.
В резюме можно сказать что, перемещается ли транзакция фактически успешно по шине или нет, передатчик и приемник всегда продвигают в свои потоки данных/буфер одну транзакция за кадр, чтобы сохранить данные синхронизованными во времени(In summary, whether a transaction is actually moved successfully over the bus or not, the transmitter and receiver always advance their data/buffer streams one transaction per frame to keep data per time synchronization.) Детализированные механизмы, описанные выше позволяют обнаруживать, следить, и сообщать о поврежденных транзакций так, чтобы функции или клиентское программное обеспечение могло реагировать на повреждение в соответствующем режиме функции.(The detailed mechanisms described above allow detection, tracking, and reporting of damaged transactions so that a function or its client software can react to the damage in a function appropriate fashion.) Подробности специфической реакции функции/приложения лежит вне области спецификации USB.
Обработка Ошибок в Последней Транзакции Данных
Если квитирование ACK для IN транзакции разрушено, функция и хост временно будут расходиться во мнениях об успешном завершении транзакции. Если после этой транзакции следует другая IN транзакция, механизм повторного переключения обнаружит несоответствие и исправит ошибку. Если ACK был для последней IN транзакции передачи управления, механизм повторного переключения не может использоваться, и должна применяться альтернативная схема.
Хост, который успешно принял данные последней IN транзакции, производит передачу установки OUT, и функция заметив маркер переключения направления, интерпретирует это, как доказательство, успешного приема данных хостом. Другими словами, функция интерпретирует маркер переключения направления как неявное доказательство успешного получения хостом последнего квитирования ACK. Следовательно, когда функция видит OUT транзакцию установки, она переходит к фазе состояние.
Управляющие записи не имеют такой неоднозначности. Хост, посредством получения квитирования, точно знает, что последняя транзакция была успешна. Если квитирование ACK для OUT транзакции разрушено, то хост не переходит в фазу состояния и вместо этого повторно посылает последние данные. Детализированный анализ стратегии повторения представлен в Разделе 8.6.4.
Обработка Состояния
Как нормальный компонент в хосте, хост контроллер имеет ряд состоянии, которыми управляет система USB. Дополнительно, хост контроллер имеет две области относящиеся к USB состоянию:
Корневой концентратор
Распространение изменения состояния(State change propagation)
Корневой концентратор предоставляет драйверу концентратора те же самые стандартные состояния, как и другие устройства USB. Хост контроллер поддерживает эти состоянию и их переходы для концентратора. Для детализированного обсуждений состояний USB, включая их взаимосвязи и переходы, обратитесь к Главе 9.
Полный набор состояний хост контроллера неразрывно связан с этим корневым концентратором и полным набором USB.(The overall state of the host controller is inextricably linked with that of the root hub and of the overall USB.) Любые изменения состояния хост контроллера, которые видны на присоединенных устройствах, должны быть отражены в соответствующем изменении состояния устройства так, чтобы в результате состояния хост контроллера и устройства были непротиворечивыми.
Устройства USB запрашивают пробуждение с помощью передачи сигнала возобновления (обратитесь к Главе 11), который заставляет концентраторы разрушить связь, и возвратить устройства к своим конфигурированным состояниям. Хост контроллер непосредственно может вызывать событие возобновления с помощью того же самый метода передачи сигнала. Хост контроллер должен сообщить остальной части хоста относительно события возобновления через этот механизм или механизмы, зависящие от реализации этой системы.
Обратная связь
Асинхронный сток обеспечивает обратную связь к адаптивному источнику, указывая точно, какая требуется скорость передачи данных (Ff), относительно SOF частота USB (An asynchronous sink provides feedback to an adaptive source by indicating accurately what its desired data rate (Ff) is, relative to the USB SOF frequency.) При требуемой скорости передачи данных точность должна быть лучше чем одна выборка за секунду (1 Hz),что позволит создание скорости высоко качественного источника и допустить задержки и ошибки в цикле обратной связи.(The required data rate is accurate to better than one sample per second (1 Hz) in order to allow a high quality source rate to be created and to tolerate delays and errors in the feedback loop.)
Значение Ff
состоит из дробной части, которая получает требуемую разрешающую способность с 1 кГц кадрами , и целой части, которая дает минимальное число выборок на кадр.(The Ff value consists of a fractional part, in order to get the required resolution with 1 kHz frames, and an integer part, which gives the minimum number of samples per frame.) Требуется десять битов, чтобы разрешить одну выборку внутри кадра с частотой 1 кГц (1000 / 2 ^ 10 = 0.98).(Ten bits are required to resolve one sample within a 1 kHz frame frequency ). Это 10 битное дробное, представлено в беззнаковом виде с фиксированной точкой в 0.10 формате.(This is a 10 bit fraction, represented in unsigned fixed binary point 0.10 format.) В целочисленной части необходимо иметь 10 бит (2^10=1024) чтобы кодировать до 1023 1-байтовых выборок за кадр. Это 10 битное целое , представлена в беззнаковом виде с фиксированной точкой в 10.0 формате. Объединенное значение Ff может быть закодировано в беззнаковом виде с фиксированной точкой в 10.10 формате, который вписываться в три байта (24 бита). Так как максимальное целочисленное значение фиксировано 1023, число 10.10 будет выровнено по левому краю в 24 битах, так, чтобы оно имело 10.14 формат.(Since the maximum integer value is fixed to 1023, the 10.10 number will be left-justified in the 24 bits, so that it has a 10.14 format.) Требуются только первые 10 битов позади двоичной точки. Младшие 4 бита могут необязательно использоваться, чтобы расширить точность Ff; иначе, они должны быть сообщены как 0. Упорядочивание бит и байт придерживается определениями других многобайтовых полей, содержащихся в Главе 8.(The bit and byte ordering follows the definitions of other multi-byte fields contained in Chapter 8.)
Каждый кадр, адаптивный источник добавляет Ff к любому оставшемуся дробному счету выборки из предыдущего кадра, число выборок источники суммируют в целой части, и сохраняет дробный счет выборки для следующего кадра.(Each frame, the adaptive source adds Ff to any remaining fractional sample count from the previous frame, sources the number of samples in the integer part of the sum, and retains the fractional sample count for the next frame.) Источник может рассматривать поведение Ff во многих кадрах, чтобы определить более точно скорость, если это требуется.
Сток может определять Ff, считая циклы часов с частотой Fs * 2 ^ P за период в 2 ^ (10-P) кадрах, где P - целое число. P фактически должен быть в диапазоне [0,10], потому что нет смысл в использовании часов идущих медленнее чем Fs, и нет смысла попытаться модифицировать кадр больше чем один раз(update more than once a frame). Счетчик прочитывается по Ff и сбрасывать каждый 2 ^ (10-P) кадр. Пока никакие циклы часов не пропущены, подсчет будет точен долгое время. В конечной точке необходимо только реализовать число битов счетчика, максимальной Ff которую она требует.(An endpoint only needs to implement the number of counter bits that it requires for its maximum Ff.)
Цифровая телефонная конечная точка, например, будет обычно получать 8 кГц Fs, деля часы 64 кГц (P = 3) которые она использует, чтобы преобразовать данные в последовательный поток данных/( which it uses to serialize the data stream.) Фаза часов 64 кГц может также дополняться 1 битом точности, тогда реальное P = 4. Это позволило бы Ff модифицироваться каждый 2^(10-4)=64 кадр.(This would give Ff updates every 2^(10-4) = 64 frames.) Чтобы получить Ff требовался бы 13-разрядный счетчик ,с 3 битами для 8 выборок за кадр, и 10 битов для дробной части. 13 битов обеспечили бы поле 3.10 внутри 10.14 значений Ff, с остающимся битами сброшенными в 0.
Выбор P зависит от специфики конечной точки, и должен быть между 1 и 9, включительно. Большие значения P предпочтены, так как они уменьшают размер счетчика кадров и увеличивают скорость с которой модифицируется Ff. Более частые модификации приводят к более жесткому управлению скоростью передачи данных источника, которая уменьшает буферную область, требуемую для обработки изменения Ff. P должен быть меньше чем 10 так, чтобы Ff была усреднена хотя бы по двум кадрам, чтобы уменьшить эффекты флуктуации SOF. P не должен быть 0, чтобы хранить не менее чем 1 отклонение в числе выборок из источника в случае потери значения Ff.(P should not be 0 in order to keep the deviation in the number of samples sourced to less than 1 in the event of a lost Ff value.)
Передачи Прерывания используются, для прочтения Ff из регистра обратной связи в периодических интервалах (Interrupt transfers are used to read Ff from the feedback register at periodic intervals.) Требуемая скорости сообщения по обратной связи должна быть 2^(10-P) мс (кадров).The desired reporting rate for the feedback should be 2^(10-P) ms (frames)) Ff будет сообщена более одного раза при модификации периода.(Ff will be reported at most once per update period.) Нечего сообщать кроме тогоже самого значение Ff при модификации периода.(There is nothing to be gained by reporting the same Ff
value more than once per update period.) Конечная точка может выбрать сообщение только Ff, если модифицируемое значение изменилось от предыдущего значения Ff. (The endpoint may choose to only report Ff if the updated value has changed from the previous Ff value.)
Возможно, что источник поставит на одну больше или на одну меньше выборку в течении длительного периода, из-за ошибок или накопленных погрешностей при измерении Ff. (It is possible that the source will deliver one too many or one too few samples over a long period, due to errors or accumulated inaccuracies in measuring Ff.) Сток должен иметь буфер с возможностями достаточными для размещения ее. (The sink must have sufficient buffer capability to accommodate this.) Когда сток распознает такое состояние, он должно откорректировать сообщенное значение Ff, чтобы исправить эту ситуацию. Это может быть также необходимо для компенсации дрейфа часов.(This may also be necessary to compensate for relative clock drifts.) Реализация этого процесса исправления специфична для конечной точки и не определена.
Адаптивный источник может получать информацию о скорости передачи данных стока из адаптивного стока, который привязан к темже самым часам что и сток, как имело бы место при двухстороннем речевом соединении. В этом случае, канал обратной связи не нужен.
Общие Определения Данных
Для того, чтобы позволить клиенту получить запрос результатов, настолько это возможно, непосредственно от устройства, желательно минимизировать количество требуемых обработок и копирования между устройством и клиентом. Чтобы облегчить это, некоторые виды управления IRP стандартизированы так, что информация, предоставляемая клиентом может непосредственно использоваться различными уровнями в стеке. Специфический формат для этих данных зависит от реализации USBDI в операционной системе. Некоторые элементы данных непосредственно в принципе не могут быть видны клиентом, но генерируются в результате запроса клиента.
Следующие элементы данных определяют информацию относящуюся к запросу:
Идентификация канала, связанного с запросом. Идентификация этого канала также описывает информацию такую как тип передачи для этого запроса.
Идентификация уведомления для специфического клиента.(Notification identification for the particular client.)
Расположение и длина буфера данных, который должен быть передан или получен.(Location and length of data buffer which is to be transmitted or received.)
Состояние завершения при запросе. Должны предоставляться и итоговое состояние, и то которое требовалось, детализированное состояние за транзакцию.(Both the summary status, and, as required, detailed per-transaction status must be provided.)
Расположение и длина рабочей области. Она зависит от реализации.
Фактические механизмы, используемые при передачи запросов к USBD зависят от операционная системы. Однако, кроме требований установленных выше, для связанной с запросом информации, которая должна быть доступна, имеются также требования к обработки запросов. Базисные требования описаны в Главе 5. Дополнительно, USBD предоставляет механизмы, для выделения группы изохронных IRPs, для которой передача первой транзакции каждого IRP будет происходить в том же самом кадре. USBD также предоставляет механизм для выделения непрерываемого набора запросов определенных продавцом или классом к создаваемому по умолчанию каналу. Никакие другие запросы к этому создаваемому по умолчанию каналу, включая такие запросы как стандартные, класса, или продавца не могут быть вставлены в выполняемый поток для такого непрерываемого набора. Если любой запрос в этом наборе со сбоем, удаляется весь набор.
Оценка Состояния Шины
Оценка состояния шины выполняется в конце кадра и способна различить состояния шины между SE0, дифференциальной 1 и 0. Когда никакое устройство не соединено с downstream портом концентратора, присоединенные к земле резисторы перемещают, и D + и D- ниже VSE(min).
Обнаружение соединения/разъединения, может выполняться только, после подачи Vbus на downstream порт. ( Это требование выдвигается только к концентраторам, чьи downstream порты поддерживают переключение мощности.) Когда устройство соединено, состояние шины изменяется от disconnected к состоянию обнаруживающему присоединение. Низко скоростные устройства поднимают D- к SE1 и оставляют D+ в SE0. Полно скоростные устройства поднимают D+ к SE1 и оставляют D- в SE0. Каждый downstream порт концентратора должен быть способен обнаружить и отличить соединение низко и полно скоростного устройства, как только устройство соединено. Дифференциальные J и K состояния не определены, пока устройство не присоединено, и не было установлено быстродействие устройства.
Когда происходит соединение или разъединение, оно должно быть отражено в состоянии концентратора к концу кадра, в котором произошло событие, если концентратор не находится в suspend режиме или сброшен. Концентратор в suspend режиме активизируется событием соединения или разъединения и должен быть способен сообщить события после завершения возобновления. После появления сброса, концентратор должен обнаружить, downstream порты которые имеют соединенные с ними устройства. О изменении соединения и разъединения сообщается на базисе работоспособности порта.(Connect and disconnect changes are reported on a per-port basis.)
Очистка Возможностей
Этот запрос используется, чтобы очистить(clear) или заблокировать специфическую возможность
bmRequestType | bRequest | wValue | wIndex | wLength | Данные | ||||||
00000000B 00000001B 00000010B | CLEAR_FEATURE | Выбор возможностей | Нуль Интерфейс Конечная точка | Нуль | Нет |
Значения выбираемых возможностей в wValue, должны соответствовать получателю. Только значения выбираемых возможностей устройство, могут использоваться, когда получатель - устройство, только значения выбираемых возможностей интерфейса, могут использоваться, когда получатель - интерфейс, и только значения выбираемых возможностей конечной точки, могут использоваться, когда получатель - конечная точка.
Обратитесь к Разделу 9.4 для, определение тех значений выбора возможностей которые определены для каждого получателя.
Запрос ClearFeature который ссылается на возможности, которые не могут быть очищены, или которые не существуют, вызовет останов.
Очистка Возможности Концентратора
Этот запрос сбрасывает значение, сообщенное в состоянии концентратора.
BmRequestType | bRequest | wValue | wIndex | wLength | Данные | ||||||
00100000B | clear_ feature | Селектор Возможности | Нуль | Нуль | Нет |
Очистка возможности отключает эту возможность; обратитесь к Таблица 11-13 для определений селектора возможности. Если селектор возможности связан с индикатором изменения, очистка этого индикатора подтвердит изменение. И C_HUB_LOCAL_POWER и C_HUB_OVER_CURRENT могут быть подтверждены, используя этот запрос.
Очистка Возможности Порта
Этот запрос сбрасывает значение, сообщенное в состоянии порта.
BmRequestType | bRequest | wValue | wIndex | wLength | Данные | ||||||
00100011B | clear_ feature | Селектор Возможности | Порт | Нуль | Нет |
Номер порта должен быть допустимым номером порта для этого концентратора, больший чем нуль.
Очистка возможности отключает эту возможность; обратитесь к Таблица 11-13 для определений селектора возможности. Если селектор возможности связан с индикатором изменения, очистка этого индикатора подтвердит изменение. Изменения в соединенном, неблокированном, подвешенном, сброшенном, и состоянии сверхтока подтверждается, используя этот запрос.(Changes in connection, enable, suspend, reset, and over-current status are acknowledged using this request.)
Очистка возможности PORT_SUSPEND вызывает инициализированное хостом возобновление на определенном порте. Очистка возможности PORT_ENABLE заставляет порт быть заблокированным. Очистка возможности PORT_POWER заставляет порт быть отключенным от питания, подчиняясь ограничениям метода переключения мощности концентратора. Если концентратор использует групповое переключение мощности, должны быть запросы ко всем портам на выключение питания прежде чем оно будет фактически отключено.
Ограничение Тока Наплыва
Когда функция или концентратор подключены к сети, возникает некоторая емкость корпуса между Vbus и землей. Также, регулятор обеспечит обходной ток емкости вывода и к функции, как только будет подана мощность.(Also, the regulator will supply current to its output bypass capacitance and to the function as soon as power is applied.) В результате, если никакие меры не приняты для предотвращения этого, может произойти колебание тока в устройстве, достаточное, чтобы переместить Vbus на концентраторе ниже минимума, действующего уровень. Токи наплыва могут также происходить, когда высоко мощная функция включена в режим высокой мощности. Эта проблема должна быть решена ограничением тока наплыва и, обеспечением достаточной емкости в каждом концентраторе, чтобы предотвратить подачу мощности другим портам выходящей за допустимую. Дополнительная мотивация ограничения тока наплыва это минимизация образовывания дуги на контакте, таким образом продлевая жизнь контакта коннектора.
Выходное максимальное падение в концентраторе Vbus - 330 мВ или приблизительно 10 % от номинального колебания сигнала от функции. Чтобы обработать это падение, должны выполняться следующие условия :
Максимальная нагрузка, которая может быть помещена в downstream конец кабеля - 10 mF параллельно с 44 W. Емкость в 10 mФ имеет любой блокировочный конденсатор, непосредственно соединенный с Vbus линиями в функции плюс любые емкостные эффекты, видимые через регулятор в устройстве. 44 W резистор представляет одну нагрузку тока модуля, сгенерированную устройством в течение соединения.
Если требуется больше емкости обхода в устройстве из-за больших колебаний токе в нагрузке, то устройство должно иметь некоторую форму ограничителя колебания тока в кабеле так, чтобы он соответствовал характеристикам вышеупомянутой нагрузки.
Порт концентратора Vbus линии мощности должен быть шунтирован не менее чем 120 mФ танталиумный конденсатор (эквивалентные алюминиевые конденсаторные с таким значением находятся в тестировании).Хорошие стандартные методы шунтирования должны использоваться, чтобы минимизировать индуктивность между блокировочными конденсаторами и коннекторами. Блокировочные конденсаторы непосредственно должны иметь низкий коэффициент рассеяния, чтобы позволить отсоединение при высоких частотах.
Также требуется порт upstream концентратора, чтобы встретить вышеупомянутые требования. Кроме того, питающийся от шины концентратор должен обеспечить дополнительное ограничение на форму колебаний в схемы программного включения, когда он подает мощности к downstream портам.
Сигнальные штырьки защищены от чрезмерного ток в течение динамического присоединения, углубление в коннекторе такое, что сначала вступают в контакт штырьки мощности. Это гарантирует, что шины мощности на downstream устройстве сработают прежде, чем штырьки сигнала вступают в контакт.(This guarantees that the power rails to the downstream device are referenced before the signal pins make contact.) Линии сигнала порта концентратора также заблокированы, и находятся в состоянии высокого импеданса в течение соединения, не позволяя течь никакому току в стандартных уровнях сигнала.
Ограничения Доступа к Шине
Передачи Управления могут использоваться полно скоростными и низко скоростными устройствами USB.
Конечная точка не имеет никакого способа указать желаемую частоту доступа к шине для канала управления. USB уравновешивает требования доступа к шине всех каналов управления и специфических отложенных IRPs, чтобы потратить “самые большие усилия”, при доставки данных между клиентским программным обеспечением и функциями (USB balances the bus access requirements of all control pipes and the specific IRPs that are pending to provide “best effort” delivery of data between client software and functions).
USB требует, чтобы часть каждого кадра была зарезервирована, чтобы быть доступной для использования передачами управления следующим образом (USB requires that part of each frame be reserved to be available for use by control transfers as follows):
Если предпринятые( are attempted) передачи управления (в зависимом от реализации режима) потребляют меньше чем 10 % времени кадра, оставшееся время может использоваться, чтобы поддерживать bulk передачи (обратитесь к Разделу 5.8).
Передача управления, которая была предпринята и должна быть повторена, может быть повторена в текущем или будущем кадре; то есть, не надо посылать требование, чтобы осуществить повторение в том же самом кадре (A control transfer that has been attempted and needs to be retried can be retried in the current or a future frame; i.e., it is not required to be retried in the same frame).
Если имеется больше передач управления чем зарезервированного времени, но имеется дополнительный кадр времени, который не используется передачами типа изохронных или прерываний, хост контроллер может перемещать дополнительные передачи управления, когда они есть(If there are more control transfers than reserved time, but there is additional frame time that is not being used for isochronous or interrupt transfers, a host controller may move additional control transfers as they are available).
Если имеется слишком много отложенных передач управления чем доступных кадров времени, управляющие передачи выбираются для перемещения в шине как соответствующие (If there are too many pending control transfers than available frame time, control transfers are selected to be moved over the bus as appropriate.)
Если имеются задержки передач управления для нескольких конечных точек, передачи управления для различных конечных точек выбраются согласно справедливой стратегии доступа(fair access policy), которая зависит от реализации хост контроллера.
Транзакция передачи управления, которая часто повторяется, не должна ожидать пропуска, несправедливо участвуя в кадре времени (A transaction of a control transfer that is frequently being retried should not be expected to consume an unfair share of the frame time).
Эти требования позволяют передачи управления между хостом и устройствами регулярно перемещаться в шине с "самым большим эфектом".
Все передачи управления задержанные в системе борются за одно и то же самое доступное время шины. Из-за этого, время шины выделенное для передач управления к специфической конечной точке, может быть изменено программным обеспечением системы USB, по своему усмотрению. ( Because of this, the bus time made available for control transfers to a particular endpoint can be varied by USB system software at its discretion.) Конечная точка и клиентское программное обеспечение не могут присвоить специфическую скорость обслуживания для передач управления (An endpoint and its client software cannot assume a specific rate of service for control transfers). Время шины выделенное клиентскому программному обеспечению и конечной точке, может быть изменено, поскольку другие устройства вставляются и удаляются из системы, а также поскольку передачи управления запрашиваются другими конечными точками устройства.
Частота шины и время кадра ограничивают максимальное число успешных передач управления, внутри кадра для любой системы USB, до менее чем 29 при полно скоростной 8 байтовой полезной нагрузки данных или менее четырех при низко скоростной 8 байтовой полезной нагрузки данных. Таблица 5-1 содержит информацию относительно различного размера полно скоростных передач управления и максимального числа передач, возможных в кадре. Эта таблица была сгенерирована, принимая транзакцию стадии данных состояния нулевой длины и одну транзакцию стадии данных (This table was generated assuming zero length status data stage transaction and one data stage transaction). Таблица иллюстрирует возможную мощность двух полезных нагрузок данных меньших или равных размеру максимально допустимой полезной нагрузки данных (The table illustrates the possible power of two data payloads less than or equal to the allowable maximum data payload sizes).
Table 5-1. Ограничения передачи в полно скоростном режиме
Сохранение 10 % кадра для передач управления означает, что в системе с полностью распределенным времением шины, все полно скоростные передачи управления в системе борятся за номинальные три передачи управления в кадре (The 10% frame reservation for control transfers means that in a system with bus time fully allocated, all full speed control transfers in the system contend for a nominal three control transfers per frame). Так как подсистема USB дополнено использует передачи управления в целях конфигурации любых других передач управления , другое клиентское программное обеспечение может запрашивать, данное клиентское программного обеспечение, и функция не должна ожидать, а использовать эту же полную пропускную способность для собственных целей управления.(Since the USB subsystem uses control transfers for configuration purposes in addition to whatever other control transfers other client software may be requesting, a given software client and its function should not expect to be able to make use of this full bandwidth for its own control purposes. ) Хост контроллеры также свободны, при определении того как индивидуальные транзакции шины для специфических передач управления перемещаются поверх шины внутри и поперек кадров(Host controllers are also free to determine how the individual bus transactions for specific control transfers are moved over the bus within and across frames.) Конечная точка могла бы видеть все транзакции шины для передачи управления внутри того же самого кадра или распространяться поперек нескольких разобщенных кадров. (An endpoint could see all bus transactions for a control transfer within the same frame or spread across several discontiguous frames.) В заключение, хост контроллер, по различным причинам реализации, не способен обеспечить теоретическое максимальное число передач управления в кадре. (Finally, a host controller, for various implementation reasons, may not be able to provide the theoretical maximum number of control transfers per frame.)
И полно скоростная и низко скоростная передача управления, борются за то же самое доступное время кадра. Низко скоростные передачи управления просто тратят больше времени при передачи. Таблица 5-2 содержит информацию относительно различного размера низко скоростных передач управления и максимального числа передач, возможных в кадре. Также для обеих скоростей, передача управления составлена из нескольких пакетов, пакеты могут быть распространены более чем в нескольких кадрах, которые разделят требуемое время шины, между несколькими кадрами. (Also for both speeds, since a control transfer is composed of several packets, the packets can be spread over several frames to spread the bus time required across several frames.)
Таблеца 5-2. Передача управляющих сообщений в медленном режиме
Ограничения на Размер Пакета
Конечная точка для передач управления определяет максимальный размер полезной нагрузки данных, который конечная точка может принимать из шины или передавать в шину. USB определяет допустимые максимальные размеры полезной нагрузки данных управления для полно скоростных устройств, размер может быть только 8, 16, 32, или 64 байта. Низко скоростное устройство ограничено в размере полезной нагрузки данных, максимум 8 байтов. Этот максимум применяется к полезным нагрузкам данных пакетов данных следующих после установки; то есть, размер определен для поля данных пакета как определено в Главе 8, не включая информацию требуемую другими протоколами. Пакет установки всегда 8 байтов. Конечная точка управления всегда использует MaxPacketSize для полезных нагрузок данных.
Требуется, чтобы все конечные точки управления после сброса поддерживали максимальную полезную нагрузку данных управления в размере 8 байт (All control endpoints are required to support a control data payload maximum size of 8 bytes after reset). Конечная точка может быть разработана так, чтобы поддерживать больший максимальный размер полезной нагрузки данных. Такая конечная точка сообщает в информации о конфигурации значение максимального размера полезной нагрузки данных. USB не требует, чтобы полезные нагрузки данных, которые передаются были точно максимального размера; то есть, если полезная нагрузка данных - меньше чем максимум, не нужно дополнять ее до максимального размера.
Все хост контроллеры требуют поддержания максимальной полезной нагрузки данных в размере 8, 16, 32, и 64 байт, для полно скоростных конечных точек управления и только максимальной полезной нагрузки данных в размере 8 байтов для низких скоростных конечных точек управления. Хост контроллер не требует поддержания больших или меньших размеров максимальной полезной нагрузки данных.
Во время конфигурации, программное обеспечение системы USB читает максимальный размер полезной нагрузки данных конечной точки и гарантирует, что не будет послана никакая полезная нагрузка данных которая больше чем обеспечиваемый размер конечной точкой . Хост будет всегда использовать максимальный размер полезной нагрузки данных по крайней мере 8 байтов.
Конечная точка в данной конфигурации для изохронного канала определяет максимальный размер данных в полезной нагрузки, которая может их передать/получить (An endpoint in a given configuration for an isochronous pipe specifies the maximum size data payload that it can transmit/receive). Программное обеспечение системы USB использует эту информацию во время конфигурации, чтобы гарантировать, что имеется достаточно времени шины, чтобы разместить эту максимальную полезную нагрузку данных в каждом кадре. Если имеется достаточно времени шины, для максимальной полезной нагрузки данных, конфигурация устанавливается; если нет, конфигурация не устанавливается. (If there is sufficient bus time for the maximum data payload, the configuration is established; if not, the configuration is not established.) Программное обеспечение системы USB не корректирует максимальный размер полезной нагрузки данных для изохронного канала, как это делалось для канала управления. Изохронный канал может просто или поддерживаться или не поддерживаться в данной конфигурации подсистемы USB.
USB ограничивает максимальный размер полезной нагрузки данных 1023 байтами для каждого изохронного канала. Таблица 5-3 иллюстрирует информация о различных размерах и максимального числа транзакций, возможных в кадре. Таблица 5-3 содержит информацию относительно различного размера изохронных транзакций и максимального числа транзакций, возможных в кадре
Таблица 5-3. Ограничения Изохронных Транзакции
Любая транзакция данного изохронного канала не должна быть точно максимального размера, определенного для конечной точки. Размер полезной нагрузки данных определен передатчиком (клиентским программным обеспечением или функцией) и может изменяться как требуется от транзакции к транзакции. Конечная точка может использовать необязательный стандартный типовой заголовок USB, чтобы указать, где в выборке(sample) потока начинается этот пакет. Это позволяет приемнику оправляться от пакетов, потерянных из-за ошибок. USB гарантирует, что любой размер предоставленный хост контроллеру, будет передан по шине.( USB ensures that whatever size is presented to the host controller is delivered on the bus.) Фактический размер полезной нагрузки данных определен передатчиком данных и может быть меньше чем ранее оговоренный максимальный размер. Ошибки шины могут изменять фактический размер,что замечает приемник.(Bus errors can change the actual size seen by the receiver.) Однако, эти ошибки могут быть обнаружены или по ЦКИ(CRC) данных или с помощью знаний приемника об ожидаемом размере любой транзакции.
Конечная точка для bulk передач определяет максимальный размер полезной нагрузки данных, который конечная точка может принимать из шины или передавать в шину. USB определяет допустимые максимальные размеры полезной нагрузки bulk данных , которая может быть только 8, 16, 32, или 64 байта.(USB defines the allowable maximum bulk data payload sizes to be only 8, 16, 32, or 64 bytes.) Этот максимум применяется к полезной нагрузке данных пакетов данных; то есть, определенный размер - это поля данных пакета как определено в Главе 8 не включая информацию требуемую другими протоколами.(This maximum applies to the data payloads of the data packets; i.e.; the size specified is for the data field of the packet as defined in Chapter 8, not including other protocol required information.)
Конечная точка bulk разработана, для поддержания максимального размера полезной нагрузки данных. Конечная точка bulk сообщает в информации о конфигурации значение максимального размера полезной нагрузки данных. USB не требует, чтобы полезные нагрузки данных передавались точно максимального размера; то есть, если полезная нагрузка данных - меньше чем максимально возможная, не нужно дополнять ее до максимального размера.
Требуется чтобы все хост контроллеры, имели поддержку максимальных размеров пакета в 8, 16, 32, и 64 байтов для конечных точек bulk. (All host controllers are required to have support for 8, 16, 32, and 64 byte maximum packet sizes for bulk endpoints.) Не требуется чтобы хост контроллер, поддерживал размеры пакета большие или меньшие максимальных.
Во время конфигурации, программное обеспечение системы USB читает максимальный размер полезной нагрузки данных конечной точки и гарантирует, что не будет послана никакая полезная нагрузка данных которая больше чем обеспечиваемый размер конечной точкой.
Конечная точка должна всегда передавать полезные нагрузки данных с полем данных меньшем или равным MaxPacketSize конечной точки (обратитесь к Главе 9). Когда bulk IRP состоит из большего количества данных чем, возможно передать в одной полезная нагрузка данных с текущим установленным максимальным размером, все полезные нагрузки данных требуют устоновления максимального размера кроме последней полезной нагрузки данных, которая будет содержать остающиеся данные. Если конечная точка хочет передавать меньшее количество данных чем ожидает клиентское программное обеспечение, преждевременная, меньшая чем максимально установленная по размеру полезная нагрузка данных будет получена хост контроллером.( If an endpoint wants to transmit less data than expected by the client software, a premature, less than maximum sized data payload will be received by the host controller.) Эта преждевременная, меньшая чем максимально установленный размер полезная нагрузка данных заставляет хост контроллер удалять текущий IRP и продвигаться к следующему IRP или остановить канал как было описано в Разделе 5.3.2.(This premature, less than maximum sized data payload causes the host controller to retire the current IRP and advance to the next IRP or else stall the pipe as was outlined in Section 5,3,2.) Если полезная нагрузка данных получена, большего чем ожидалось размера, канал будет остановлен и все отложенные bulk IRPs для этой конечной точки будут прерваны/удалены.(If a data payload is received that is larger than that expected, the pipe will stall and all pending bulk IRPs for that endpoint will be aborted/retired.)
Конечная точка для канала прерывания определяет размер максимальной полезной нагрузки данных, который она будет передавать. Максимально допустимый размер полезной нагрузки данных передач прерывания - 64 байта или меньше для полно скоростного режима. Низко скоростные устройства ограничены 8 байтами или меньшим размером максимальной полезной нагрузки данных. Этот максимум применяется к полезной нагрузке данных пакетов данных; то есть, определенный размер - это поля данных пакета как определено в Главе 8 не включая информацию требуемую другими протоколами. (This maximum applies to the data payloads of the data packets; i.e., the size specified is for the data field of the packet as defined in Chapter 8, not including other protocol required information.) USB не требует, чтобы пакеты данных были точно максимального размера; то есть, если пакет данных - меньше чем максимум, не требуется дополнять его до максимального размера.
Требуются чтобы все хост контроллеры имели поддержку максимальных размеров полезной нагрузки данных до 64 байт для полно скоростных конечных точек прерывания и максимальных размеров полезной нагрузки данных 8 или менее байт для низко скоростных конечных точек прерывания (All host controllers are required to have support for up to 64 byte maximum data payload sizes for full speed interrupt endpoints and 8 bytes or less maximum data payload sizes for low speed interrupt endpoints.) Не требуется чтобы хост контроллер, поддерживал размеры полезной нагрузки данных большие максимальных.
Программное обеспечение системы USB определяет максимальный размер полезной нагрузки данных, который будет использоваться для канала прерывания, во время конфигурации устройства. Этот размер остается постоянным в течение срока службы сконфигурированного устройства. Программное обеспечение USB использует максимальный размер полезной нагрузки данных, определенный во время конфигурации, для гарантирования того, что имеется достаточно времени шины, чтобы разместить эту максимальную полезную нагрузку данных в назначенном периоде. Если имеется достаточно времени шины, канал установлен; если нет, канал не установлен. (If there is sufficient bus time, the pipe is established; if not, the pipe is not established. ) USB программное обеспечение не корректирует время шины, выделенное каналу прерывания как это имеет место для канала управления. Канал прерывания может просто или обеспечиваться или нет в данной конфигурация подсистемы USB. Однако, фактический размер полезной нагрузки данных все еще определяется передатчиком данных и может быть меньше чем максимальный размер.
Окружение
Приемлемая окружающая среда для USB от 0 °C до 70 °C.
USB должна поддерживать следующие регулируемые требования;
EMI:
FCC часть 15 класс B
EN55022:1994 (Основанная на CISPR-22:1993)
EN5082-1:1992 (Стандарт Общей Устойчивости)
VCCI (Японская версия CISPR-22)
Безопасность:
UL, CSA
Операции Общие для Всех Устройств USB
Все устройства USB поддерживают общий набор операций. Этот раздел описывает эти операции.
Описание Системы USB
Система USB описана тремя областями определения:
соединения USB
устройства USB
хост USB
Соединения USB - это способ, которым устройства USB соединяются и связываются с хостом. Сюда входят:
Топология Шины: Модель соединения между устройствами USB и хостом.
Взаимодействие между уровнями: В терминах стека возможности, это задачи USB, которые выполняются на каждом уровне в системе.
Потоковые Модели: Способ, которым данные перемещаются в системе по USB между производителями и потребителями.
Планирование USB: USB обеспечивает общедоступную систему связей. Доступ при этом планируется для поддержания изохронных передач данных.
Устройства USB и хост USB описаны подробно в последующих разделах.
Описания Устройства
Существует два главных класса устройств : концентраторы и функции. Только концентраторы имеют способность обеспечить дополнительные присоединяемые USB точки(points). Функции обеспечивают дополнительные возможности хоста.
Определение Класса Устройства
Все устройства должны поддерживать определенные выше списки и дескрипторы. Большинство устройств обеспечивает дополнительные списки и возможности, дескрипторы для расширений зависящих от устройств. Кроме того, устройства могут обеспечивать расширение сервисов, которые являются общими для группы устройств. Чтобы определить класс устройств, нужно предоставить следующую информацию, которая полностью определит вид и поведение класса устройства.
Организация Документа
Главы с 1 по 5 обеспечивают краткий обзор для всех читателей, в то время как Главы с 6 по 11 содержат, детализированную техническую информацию, которая описывает Универсальную Последовательную Шину.
Разработчики периферийных устройств должны особенно тщательно читать Главы с 5 по 11.
Разработчики Хост Контроллера Универсальный Последовательный Шины должны особенно тщательно читать Главы 5, 6, 7, 8, 10, и 11.
Разработчики драйвера устройства Универсальной Последовательной Шины должны особенно тщательно читать Главы 5, 9, и 10.
Этот документ дополнен и ссылается на следующие документы, которые будут выпущены небольшим тиражом:
Спецификация Класса Устройств Универсальной Последовательной Шины
Руководство Проектом Универсальной Последовательной Шины
Пожалуйста войдите в контакт с USB разработчиками Форума для дальнейших подробностей.
Bandwidth - пропускная способность
Default pipe - создаваемый по умолчанию канал
endpoint - конечная точка
host - хост
host controller - хост контроллер
hub - концентратор
implementer - разработчик
pipe - канал
stream pipe - поток в канале
token packet - маркерный пакет
Глава 2
Термины и Сокращения
Эта глава содержит и определяет термины и сокращения, используемые в этой спецификацию.
Организация Конечной Точки Концентратора
Класс Концентратора определяет одну дополнительную конечную точку кроме Конечной точки 0, которая требуется для всех устройств: конечная точка Изменения Состояния (Status Change endpoint). Система хоста получает уведомления изменения состояния порта и концентратора через конечную точку Изменения Состояния. Конечная точка Изменения Состояния поддерживает передачи прерывания. Если концентратор не обнаружил изменения на любом из портов, ни любых изменений состояния концентратора, концентратор возвращает NAK на запросы к конечной точке Изменения Состояния. Когда концентратор обнаруживает любое изменение состояния, концентратор отвечает данными, описывающими сущность, которая изменилась. Программное обеспечение хоста, управляющее концентратором, ответственно за исследование перемещенных данных, чтобы определить, сущность которая изменилась.(Host software driving the hub is responsible for examining the data transferred to determine which entity changed.) Концентраторы логически организованы как показано на Рисунок 11-17.
Рисунок 11-17. Пример Организации Концентратора
Отличие в Поведении при Полной и Низкой Скорости (Full vs Low Speed Behavior)
Концентраторы должны различать полно и низко скоростные устройства, когда устройство соединено с шиной или при включении питания. Концентраторы обнаруживают, является ли устройство полно или низко скоростным, когда порта концентратора переходит от disconnected к disabled состоянию. Устройства, присоединенные к концентратору определены быть или полно или низко скоростным, обнаружением, линий данных (D- или D +), которая поднята выше. Низко скоростные устройства поднимают D- высоко, а полно скоростные устройства D+. Полно скоростные сигналы не должна быть переданы, низко скоростным устройствам. Не выполнение этого могло бы заставлять низко скоростные устройства по ошибке отвечать на полно скоростные сигналы и создавать конфликт на шине. Связь между хостом и контроллером концентратора всегда осуществляется, используя полную скоростную передачу сигналов.
Если обнаружено устройство, низко скоростное, входные буферы порта концентратора конфигурируются, чтобы функционировать при медленной скорости переключения (75-300 ns), и порт не будет распространять трафик направленный вниз по иерархии, если он не предварен PID преамбулой. Низко скоростные сигналы немедленно следуют за PID и распространяется на низко и полно скоростные устройства. Полно скоростные устройства никогда не будут неверно истолковывать низко скоростной трафик, потому что никакой шаблон низко скоростных данных не может генерировать допустимый полное скоростной PID. Когда не блокирована передача низко скоростных сигналов, концентратор продолжает распространять сигналы вниз по иерархии ко всем неблокированным портам, пока не обнаружится downstream EOP, в котором временя выходных драйверов для низко скоростных портов выключено и не будут включено снова, пока концентратор не получит другой PRE PID. (When low speed signaling is enabled, a hub continues to propagate downstream signaling to all enabled ports until a downstream EOP is detected, at which time the output drivers for the low speed ports are turned off and will not be turned on again until the hub receives another PRE PID.) Если порт заблокирован, никакие сигналы не распространяются к порту. Концентраторы должны дать возможность своим низко скоростным драйверам порта внутри четырех полного скоростных времен передачи бита получить последний бит PRE PID, и за это время они должны выдать низко скоростное J состояние на шину.
Если downstream порт неблокирован, он распространяет в направлении вверх по иерархии сигналы шины независимо от того, был ли порт конфигурирован как низкое или полное скоростной. Концентраторы реализующие скорость доступа выбирают выходные буферы только в направлении вниз по иерархии на своих downstream портах; в направлении вверх по иерархии, они очевидно распространяют, и низко и высокоскоростной трафик, используя быстрый (4-20 ns) перепад скорости. Низко скоростные устройства не присоединяют преамбулу к своему трафику вверх по иерархии.
При распространении низко скоростного трафик вверх по иерархии, концентраторы должны быть способны ответить на EOPs, которые имеют ширину или двух низко скоростных времен передачи бита или двух полно скоростных времен передачи бита. Первая ситуация произойдет при нормальной операции, в которой низко скоростное устройство генерирует EOP. Второе событие произойдет, если концентратор находящийся ниже по иерархии сталкивается с bable в конце кадра или условием LOA и генерирует в ответ EOP вверх по иерархии (обратитесь к Разделу 11.4.5).
Ответ Функции на OUT Транзакцию
Ответы Квитирования для OUT транзакции показаны в Таблица 8-4. Функция, после получения пакета данных, может возвращать один из трех типов квитирования. Если пакет данных был разрушен, функция не возвращает квитирование. Если пакет данных был получен без ошибок, и принимающая конечная точка функции остановлена, то функция возвращает квитирование STALL. Если транзакция поддерживает синхронизацию последовательности бита, и обнаружено несоответствие (обратитесь к Разделу 8.6 для более детального ознакомления), то функция возвращает ACK и отбрасывают данные. Если функция может принять данные и данные получены без ошибок, то она возвращает квитирование ACK. Если функция не может принять пакет данных из-за причин связанных с управлением потока данных, то она возвращает NAK.
Таблица 8-4. Ответы Функции на OUT Транзакции в Порядке Возрастания
Пакет Данных Разрушен | Приемник Остановлен | Несоответствие Последователь-ности Бит | Функция Может Принимать Данные | Квитирование, возвращаемое Функцией | |||||
Да | Не важно | Не важно | Не важно | Нет | |||||
Нет | Да | Не важно | Не важно | STALL | |||||
Нет | Нет | Да | Не важно | ACK | |||||
Нет | Нет | Нет | Да | ACK | |||||
Нет | Нет | Нет | Нет | NAK |
Ответ Функции на Транзакцию SETUP
Установка определяет специальный тип транзакции данных от хоста к функции, которая разрешает хосту инициализировать биты синхронизации конечной точки с такими же битами на хосте. После получения транзакции Установки, функция должна принять данные. На транзакцию Установки не может быть ответ STALL или NAK, и принимающая функция должна принять данные передачи Установки. Если не управляющая конечная точка получает PID SETUP, то она должна проигнорировать транзакцию и не возвращать ответа.
Ответ Функции на Входные(IN) Транзакции
Таблица 8-2 показывает возможные ответы, которые функция может делать в ответ на маркер IN. Если функция неспособна послать данные, из-за останова или условия управления потоком данных, она выдает STALL или квитирование NAK, соответственно. Если функция способна выдать данные, она это делает. Если полученный маркер разрушен, функция ничего не возвращает.
Таблица 8-2. Ответы Функции на IN Транзакции
Полученный Маркер Разрушен | Конечная точка Функции Tx Остановлена | Функция Может Передавать Данные | Производимое Действие | ||||
Да | Не проверяется | Не проверяется | Ответ не возвращается | ||||
Нет | Да | Не проверяется | Выдается квитирование STALL | ||||
Нет | Нет | Нет | Выдается квитирование NAK | ||||
Нет | Нет | Да | Выдается пакет данных |
Ответ Хоста на IN Транзакции
Таблица 8-3 показывает ответ хоста на IN транзакцию. Хост способен возвращать только один тип квитирования: ACK. Если хост получает разрушенный пакет данных, он отбрасывает эти данные и не возвращает ответа. Если хост не может принимать данные от функции, (например из-за проблем переполнение внутреннего буфера ), то эта ситуация рассматривается, как ошибка, и хост не возвращает ответа. Если хост способен принять данные, и пакет данных получен без ошибок, хост принимает данные и выдает квитирование ACK.
Таблица 8-3. Ответы Хоста на IN Транзакции
Пакет Данных Разрушен | Хост Может Принять Данные | Квитирование, Возвращаемое Хостом | |||
Да | Не важно | Отбрасывание данных, возврата ответа нет | |||
Нет | Нет | Отбрасывание данных, возврата ответа нет | |||
Нет | Да | Прием Данных, выдается ACK |
Ответы Квитирования
Передающие и получающие функции должны возвратить квитирование, в порядке следования, показанном в Таблице 8-2 ¸ Таблице 8-4. Не любое квитирование разрешено. Это зависит от типа транзакции и от того выдается ли квитирование функцией или хостом.
Overcurrent Защита
Хост и все концентраторы с независимым питанием должен выполнить overcurrent защиту из соображений безопасности, и они должны иметь способ обнаружить условие overcurrent и сообщать об этом программному обеспечению USB. Если общий ток, потребляемый группой downstream портов превышает предварительно установленное значение, overcurrent защитник удаляет мощность из всех downstream портов и сообщает условие через концентратор к хост контроллеру. Предварительно установленное значение не может превышать 5.0 A и должно быть достаточно выше максимального допустимого тока порта такого, чтобы включенние или динамическое присоединеннение преходного ток, не вызывали срабатывание overcurrent защитника. Если условие overcurrent происходит на любом порте, последующая операция не гарантируется USB, и если данное условие удалено, может быть необходимо повторно инициализировать шину, как происходит после включения питания. Системы Overcurrent ограничения могут включать поли плавкие предохранители, стандартные плавкие предохранители, или некоторый тип переключателя без дребезга.(Overcurrent limiting methods can include poly fuses, standard fuses, or some type of solid state switch.) Единственное требование чтобы ток был ограничен пятью модульными нагрузками на порт и что хосту сообщается об условии overcurrent.
Ограничение тока не должно произойти, даже если сконфигурирована запрещенная топология , из-за защиты, предоставляемой переключением мощности в высоко мощностных функциях и питающихся от шины концентраторах. Вместо этого, overcurrent схемы используются, чтобы защитить от катастрофических отказов устройств, ошибок программного обеспечения, которые включают устройства, когда запас по току был превышен, и действия пользователя типа закарачивания внешних штырьков коннектора.
Ожидание Конца Пакета
В течении состояния Ожидания Конца Пакета (WFEOP), концентратор устанавливает связь и получает трафик пакета на одном из портов. Концентратор очевидно распространяет трафик в направлении вверх или вниз по иерархии. Связь поддерживается до выхода концентратора из этого состояния. Концентратор переходит из состояния WFEOP, когда он обнаруживает EOP или если он сталкивается с точкой конца кадра (EOF1) (обратитесь к Разделу 11.4.4). Обнаружение EOP вызывает переход концентратора обратно к WFSOP и к нормальной последовательности. Если обнаружен EOF1, концентратор переходит к состоянию WFEOF2.
Ожидание Начала Кадра
Повторитель концентратора входит в состояние Ожидание Начала Кадра (WFSOF) или когда обнаружен EOF1, и концентратор находится в состоянии WFSOP (нормальное поведение в конце кадра) или когда концентратор находится в состоянии WFEOF2 и обнаружено (babble/LOA) поведение точка EOP или EOF2.
Ожидание Начала Пакета
Ожидание Начала Пакета (WFSOP) - это состояние концентратор занимает, когда в настоящее время нет никакого пакета, распространяемого к или через концентратор. Концентраторы переходят к своему WFSOP состоянию после появления сброса. В состоянии WFSOP, порты всего концентратора находятся в состоянии высокого импеданса, и все разблокированные порты находятся в режиме приема со своими буферами выхода в состоянии Hi-Z. Если корневой порт или любой разблокированный downstream порт обнаруживает SOP, концентратор устанавливает связь и переходит к состоянию Ожидание Конца Пакета.
Ожидание Отметки EOF
В состояние WFEOF2 осуществляется переход только, когда концентратор обнаруживает точку EOF1, и все еще ожидает EOP из downstream порта. Это условие потенциально указывает на babble или потерю активности шины. Повторитель концентратора остается в состоянии WFEOF2, пока не обнаружен EOP или пока не произойдет точка EOF2.
Пакеты Данных
Пакет данных состоит из PID, поля данных, и CRC как показано на Рисунке 8-7. Есть два типа пакетов данных, определяемых разными PIDами: DATA0 и DATA1. Определены два пакета данных PID для поддержки синхронизации переключателя данных (обратитесь к Разделу 8.6).
Рисунок 8-7. Формат Пакета Данных
Данные всегда должны посылаться целым числом байт. Данные CRC вычисляются только для поля данных в пакете и не включают PID, который имеет собственное поле проверки.
Пакеты Квитирования
Пакеты квитирования, как показано на Рисунок 8-8, состоят только из PID. Пакеты квитирования используются, для сообщения состояния транзакции данных, и могут возвращать значения, означающие успешный прием данных, управление потоком данных, и условие останова. Возвращать квитирование может только такой тип транзакций, который поддерживает управление потоком данных. Квитирования всегда возвращаются в фазе транзакции квитирования и могут быть возвращены, вместо данных, в фазе данных. Пакеты квитирования заканчиваются EOP после однобайтного поля пакета.( Handshake packets are delimited by an EOP after one byte of packet field.) Если пакет декодируется как допустимое квитирование, но не завершается после одного байта EOP, он должен рассматриваться как недопустимый и игнорироваться приемником.
Рисунок 8-8. Пакет Квитирования
Имеются три типа пакетов квитирования:
ACK указывает на то, что пакет данных был получен без ошибок вставки бит или CRC в поле данных и что данные PID были получены правильно. ACK может выдаваться или когда подходит последовательность бит и приемник может принимать данные или когда не подходит последовательность бит и передатчик и приемник должны повторно синхронизироваться друг с другом (обратитесь к Разделу 8.6 для более детального ознакомления). Квитирование ACK применимо только в транзакциях, в которых данные были отправлены и где ожидается квитирование. ACK может быть возвращено хостом для входной(IN) транзакции и функцией для выходной(OUT) транзакции.
NAK указывает на то, что функция не смогла принять данные от хоста (OUT) или что у функции нет данных, чтобы передать на хост (IN). NAK может возвращаться функциями только в фазе данных входной(IN) транзакции или в фазы квитирования выходной(OUT) транзакции. Хост никогда не может выдавать NAK. NAK используется в целях управления потоком данных для указания того, что функция временно неспособна передавать или получать данные, но в конечном счете сможет сделать это без вмешательства хоста. NAK также используется конечными точками прерывания, чтобы указать, что нет отложенных прерываний.
STALL возвращается функцией в ответ на маркер IN или после фазы данных OUT (см. Рисунок 8-9 и Рисунок 8-13). STALL указывает, что функция неспособна передавать или получить данные, и что требуется вмешательство хоста для удаления останова. Как только конечная точка функции остановлена, функция должна продолжить возвращать STALL, пока условие, вызывающее останов не будет удалено с помощью вмешательства хоста. Хосту не разрешается возвращать STALL не при каком условии.
Пакеты Начала Кадра
Пакеты начала кадра(SOF) выдаются хостом с номинальной скоростью один каждую 1.00 мс ±0.05. Пакеты SOF состоят из PID определяющего тип пакета, за которым следует 11-битное поле номера кадра как иллюстрируется на Рисунке 8-6.
Рисунок 8-6. Пакет SOF
Маркер SOF включает в себя только маркерную транзакцию, которая распространяет маркер начала кадра и соответствующий номер кадра в точно определенные интервалах, соответствующие началу каждого кадра. Все полно скоростные функции, включая концентраторы, должны получить и декодировать пакет SOF. Маркер SOF не заставляет получающую функцию генерировать ответный пакет; поэтому нельзя гарантировать доставку SOF к любой функции. Пакет SOF доставляет две части временной информации. Функция узнает о начале кадра, когда она обнаруживает PID SOF. Функции чувствительные к времени кадра, и которые не должны следить за номером кадра, нуждаются только в декодировании PID SOF; они могут игнорировать номер кадра и его CRC. Если функция должна проследить номер кадра, то она должна проанализировать как PID так и временную отметку.
Передача данных
Данные могут быть перемещены между конечной точкой устройства USB и хостом одним из четырех способов. Обратитесь к Главе 5 для ознакомления с четырьмя типами передач. Некоторые конечные точки могут быть способны к различным типам передач данных. Однако, сконфигурированная конечная точка устройства USB использует только один метод передачи данных.
Передача Сигнала Сброс (Reset Signaling)
Сброс сообщается вниз по иерархии по портам концентратора на шину присутствием расширенного SE0 в upstream порте устройства.(A reset is signaled downstream from a hub port on the bus by the presence of an extended SE0 at the upstream port of a device.) После снятия сброса, устройство будет в присоединенном, но еще не в адресованном или сконфигурированном состояние (обратитесь к Разделу 9.1). Следует обратите внимание, что передача сигналов сброс, применяет только в направлении вниз по иерархии.
Сигнал сброса может быть сгенерирован командой хоста в любом концентраторе или порте хост контроллера. (The reset signal can be generated by host command on any hub or host controller port.) Сигнал сброса должен быть сгенерирован минимум 10 мс. Порт, который генерировал сброс, пошлет в конце сброса состояние логического разъединения.(The port that generated the reset will be sent to the logically disconnected state at the end of the reset.) Если устройство соединено с портом, по наличию присоединенного к питанию шины резистора будет определен тип устройства (низко или полно скоростное) и в конце порт будет находиться в заблокированное состоянии (обратитесь к Разделу 11.2.3).(If a device is connected to the port, the bus pull-up resistor will determine the device type (low or full speed) and the port will end up in the disabled state).
Активное устройство (включенное и не в подвешенном состоянии) наблюдает за асимметричным нулем на upstream порте более чем 2.5ms и может обрабатывать этот сигнал как сброс, но необходимо интерпретировать передачу сигналов как сброс внутри 5.5ms. (An active device (powered and not in the suspend state) seeing a single-ended zero on its upstream port for more than 2.5 ms may treat that signal as a reset, but must have interpreted the signaling as a reset within 5.5 ms.) Устройство, которое распознает сброс из SE0 между 32 и 64 временами полно скоростной передачи бита или между 4 и 8 временами низко скоростной передачи бита, удовлетворяет этим требованиям. Сигнал сброса распространяется через все работающие downstream порты любых концентраторов к порту передачи сигналов, но не распространяется через не работающие порты. (The reset signal propagates through all enabled ports of any hubs downstream of the signaling port, but does not propagate through any ports that are disabled.) Подключенный к шине концентратор, который получает сброс по корневому порту, убирает мощность со всех downstream портов. После того, как сброс удален, все устройства, которые получили сброс, устанавливаются к своим заданным по умолчанию адресам USB и находятся в неконфигурированном состоянии. Все порты на получившем сброс концентраторе в не рабочем состоянии.
Концентраторы должны быть способны установить связь, и все устройства должны быть способны принять адрес устройства через команду SET_ADDRESS (обратитесь к Разделу 9.4) не позже чем через 10 мс после того, как был удален сброс.(Hubs must be able to establish connectivity, and all devices must be able to accept device address via a SET_ADDRESS command no later than 10 ms after the reset is removed.) Отказ устанавливать связь или принимать адрес, может стать причиной того что устройство будет не распознано нормировщиком USB(Failure to establish connectivity or accept an address may cause the device not to be recognized by the USB enumerator.) В случае концентратора, это может также стать причиной того, что все устройства, соединенные с этим концентратором будут не распознаны. Всем остальным запросам данных или обслуживания, за исключением пакетов Установки(Setup) (обратитесь к Разделу 8.4.5.4), могут посылаться NAK с периодом 5.0 секунд после, чего устройство объявляется дефектным и не распознанным. (All other requests for data or service, except SETUP packets, can be NAKed for a period up to 5.0 seconds after which the device is declared defective and is not recognized.)
Сброс может выводить устройство из подвешенного режима. Рекомендуется, чтобы устройство ожидало импульсы, чтобы стабилизироваться перед принятием сброса, чтобы избежать ложных событий асимметричного нуля от порождающего сброс устройства.(It is recommended that the device wait for its clocks to stabilize before accepting the reset to avoid spurious single-ended zero events from causing the device to reset.) Устройство может выходить из подвешенного состояния в течении 10 мс.
Передача сигналов
В следующих подразделах описана спецификация передачи сигналов в USB.
Передача Сигналов Данных
Данные внутри пакета передаются дифференциальными сигналами. (Data transmission within a packet is done with differential signals.) Приемник видит дифференциальную 1 если на шине D+ по крайней мере на 200 mV больше чем на D- , и видит дифференциальный 0 если на D-, по крайней мере на 200 mV больше чем на D +.(A differential 1 on the bus is represented by D+ being at least 200 mV more positive than D- as seen at the receiver, and a differential 0 is represented by D- being at least 200 mV more positive than D+ as seen at the receiver.) Точка пересечение сигнала должна быть между 1.3 В и 2.0 В. (The signal cross over point must be between 1.3 V and 2.0 V.)
Начало пакета (SOP) сообщает о появлении порта, переводя линии D+ и D- от неактивного состояния к противоположному логическому уровню (K состояние).(The start of a packet (SOP) is signaled by the originating port by driving the D+ and D- lines from the idle state to the opposite logic level) Этот перепад уровня представляет первый бит поля Sync. (This switch in levels represents the first bit of the Sync field.) Концентраторы должны ограничить искажение ширины первого бита после SOP, когда он повторно передается меньше чем через 5 нс.(Hubs must limit the distortion of the width of the first bit after SOP when it is retransmitted to less than 5 ns.) Искажение может быть минимизировано согласованием, номинальной задержки данных через концентратор с возможность задержки на выходе концентратора.( Distortion can be minimized by matching the nominal data delay through the hub with the output enable delay of the hub.)
Состояние асимметричного 0 используется, чтобы сообщить о конце пакета (EOP). Состояния асимметричного 0 фиксируется(indicated) при нахождении D + и D- ниже 0.8 В. EOP будет сообщен, переводом D+ и D- в состояние асимметричного 0 в течение двух времен передачи бита, что сопровождается, переводом линии в остановленное состояние в течение одного времени передачи бита. (EOP will be signaled by driving D+ and D- to the single-ended 0 state for two bit times followed by driving the lines to the idle state for one bit time.) Переход от асимметричного 0 к неактивному состоянию определяет конец пакета. Остановленное состояние удерживается в течение 1 времени передачи бита, затем, и D+ и D- выходные драйвера (outputs drivers) переводятся в состояние высокого импеданс. Согласующие резисторы шины удерживают шину в неактивном состоянии. Рисунок 7-10 показывает передачу сигналов для начала и конца пакета.(shows the signaling for start and end of a packet.)
Рисунок 7-10. Уровни Напряжения Пакета Транзакции
Передача Сигналов Источника Данных (Data Source Signaling)
Этот раздел описывает временные характеристики данных, произведенных и посланных от устройства (источник данных). Раздел 7.1.12 описывает временные характеристики данных, которые передаются через секцию(раздел - section ) повторителя концентратора. В этом разделе, TPERIOD
определен как фактический период скорости передачи данных, который может иметь диапазон как определено в Разделе. 7.1.9
Передачи данных
Базисом всех связей клиента и функции является интерфейс: пучек каналов, связанных с отдельным устройством USB.
Данный интерфейс управляется точно одним клиентом на хосте. Клиент инициализирует каждый канал интерфейса, устанавливая стратегию для этого канала. Она включает максимальное количество передаваемых данных в IRP и максимальный интервал обслуживания канала. Интервал обслуживания устанавливается в миллисекундах и описывает интервал, за который данные IRP будут переданы по изохронному каналу. Он описывает интервал опроса для канала прерывания.(It describes the polling interval for an interrupt pipe.) Клиенту сообщают, когда определенный запрос завершен. Клиент управляет размером каждого IRP так, чтобы поддерживать рабочий цикл и ограничения времени отклика. Дополнительная информация стратегии включает информацию уведомления для клиента.
Клиент обеспечивает требуемое пространство буфера, чтобы задержать переданные данные. Система USB использует стратегию, чтобы определить требуемую дополнительную рабочую область.
Клиент видит данные как непрерывный последовательный поток, которым он управляет способом похожим на те же потоки, предоставляемые другими типами технологии шины.(The client views its data as a contiguous serial stream, which it manages in a similar manner to those streams provided over other types of bus technologies.) Внутри, система USB может, в зависимости от собственной стратегии и любых ограничений хост контроллера, разбивать запрос клиента на меньшие запросы, которые будут посланы по USB. Однако, два требования должны быть выполнены всякий раз, когда USB система выбирает, чтобы предпринять такое разделение:
Разделение потока данных на меньшие куски не видно клиенту.
USB выборки - не, разбивают по транзакциям шины. Обратитесь к Главе 9 для определения выборки USB и их связи с настоящим размером выборок канала.
Когда клиент хочет передать данные, он пошлет IRP к USBD. В зависимости от направления передачи данных, будет предоставляться полный или пустой буфер данных. Когда запрос завершен (успешно или из-за состояния ошибки), IRP и его состояние возвращаются клиенту. То что относится к этому состоянию также предоставляется как базис транзакции.(Where relevant, this status is also provided on a per transaction basis.)
Передачи Прерывания
Тип передачи прерывания разработан, для поддержания тех устройств, которые должны нечасто сообщать небольшое количеств данных, но с ограниченными периодами обслуживания. (The interrupt transfer type is designed to support those devices that need to communicate small amounts of data infrequently, but with bounded service periods.) Запрашивая канала с типом передачи прерывания запросчик обеспечивается следующим:
Гарантируемым максимальным периодом обслуживания канала
Попытка повторения передачи осуществляется в следующем периоде, при случающихся иногда неудачных доставках из-за ошибки на шине
Передачи Прерывания создаются в устройстве USB и доставляются клиенту Драйвера USB.
Буфер очередей клиентов достаточно большой, чтобы содержать передаваемые данные прерывания (обычно одна транзакция USB). Когда все данные перемещены, или если превышен порог ошибок, IRP возвращается клиенту.
Передачи Прерывания(Interrupt)
Маленькая, спонтанная передача данных из устройства упоминается как данные прерывания. Такие данные могут быть выданы(presented) устройством для передачи в любое время и переданы USB шиной со скоростью не менее чем это определено устройством.
Данные прерывания обычно состоят из сообщений о событии, символов, или координат, которые организованы как один или более байтов. Пример данных прерывания - координаты из устройства управления позицией. Хотя явная скорость синхронизации не требуется, интерактивные данные могут иметь предел времени отклика, который USB шина должна поддерживать.
Передачи Сигналов Соединения и Разъединения (Connect и Disconnect Signaling)
Все порты на downstream стороне хоста или концентратора имеют подсоединенные к земле резисторы на обоих линиях D+ и D-. (All ports on the downstream side of the host or a hub have pull-down resistors on both the D+ и D- lines.) Все устройства имеют подсоединенные к питанию резистор на одной из линий данных своего upstream порта. Тип устройства определяется по наличию связанного с землей резистора на линии данных .(The type of device determines which data line has the pull-up resistor.) Полно скоростные устройства имеют подсоединенные к питанию на линии D + (см. Рисунок 7-5) и низко скоростные устройства имеют подсоединенные к питанию на линии D- (см. Рисунок 7-6). Когда устройство присоединено к концентратору или хосту, но линии данных не управляются, эти резисторы создают статическое условие смещения на линиях так, что на линии данных присоединенной к питанию будет более чем 2.8 В, а другая линия данных - близка к нулю. (When a device is attached to hub or host but the data lines are not being driven, these resistors create a quiescent bias condition on the lines such that the data line with the pull-up is above 2.8 V и the other data line is near ground.) Это называется неактивным состоянием.
Когда нет функции присоединенной к downstream порту хоста или к концентратора, или присоединенный к питанию резистор на присоединенном устройстве не включен, присоединенные к земле резисторы заставят D + и D- тянуть ниже асимметричного низкого порога порта хоста или концентратора. (When no function is attached to the downstream port of the host or hub or the pull-up resistor on an attached device is not powered, the pull-down resistors will cause both D+ и D- to be pulled below the single-ended low threshold of the host or hub port.) Это создает состояние называемое асимметричным нулем (SE0) на downstream порте. Условие разъединения фиксируется(indicated), если SE0 сохраняется на downstream порте больше чем 2.5ms (30 времен полно скоростных передач бита). Следует заметить, что передача сигнала разъединения, применяется только в направлении вверх по иерархии (см. Рисунок 7-7).
Условие соединения будет обнаружено, когда устройство соединено с хостом, или портом концентратора, и одна из линий данных находится выше асимметричного высокого порогового уровня более чем 2.5ms (30 времен полно скоростных передач бит данных ). (A connect condition will be detected when a device is connected to the host or hub’s port, и one of the data lines is pulled above the single-ended high threshold level for more than 2.5 ms (30 full speed data bit times).) Линия данных, которая является высокой, когда изменяется состояние порта от разъединенного до соединенного устанавливается в остановленное состояние для этого сегмента шины и определяется, является ли подсоединенное устройство полно скоростным устройством или низко скоростным устройством.( The data line that is high when the port state changes from disconnected to connected sets the idle state for this bus segment и determines whether the connected device is a full speed device or a low speed device.) Все уровни передачи сигналов, данные в Таблица 7-1 установлены для этого сетевого сегмента (и этот сегмент единственный) если только определено остановленное состояние.(All signaling levels given in Таблица 7-1 are set for this network segment (and this segment alone) once the idle state is determined.) Рисунок 7-8 показывает последовательность соединения полно скоростного устройства, и Рисунок 7-9 показывает последовательность соединения низко скоростного устройства.
Все порты концентратора изначально находятся в разъединенном состоянии после того, как подана мощность на этот порт. Если устройство соединено с портом, порт проходит последовательность соединения, описанную выше, чтобы обнаружить тип устройства и установить характеристики передачи сигналов порта (обратитесь к Разделу 11.2.3).
Рисунок 7-7. Обнаружение Разъединения
Рисунок 7-8. Обнаружение Соединения Полно Скоростного Устройства
Рисунок 7-9. Обнаружение Соединения Низко Скоростного Устройства
Передачи типа Bulk
Bulk данные обычно состоят из большого количеств данных таких, что используются принтерами или сканерами. Bulk данные последовательные. Надежный обмен данными обеспечен на аппаратном уровне, используя обнаружение ошибок в аппаратных средствах и, необязательно, вызывая ограниченное аппаратное повторение пересылок. Также, пропускная способность занятая bulk данными может быть любой доступной в данный момент и не использованной другими типами передач.
Передачи Управления
Передачи Управления состоят минимум из двух стадий транзакции: Установка и Состояние. Передача управления может иметь необязательную стадию данных между стадиями состояния и установкой. В течении стадии Установка, транзакция Установки используется, чтобы передать информацию управляющей конечной точке функции. Транзакции Установки имеют такой же формат как и OUT, но используют PID SETUP вместо PID OUT . Рисунок 8-11 показывает формат транзакции Установки. Установка всегда использует PID DATA0 для поля данных транзакции Установки. Функция получившая Установку должна принять данные Установки и ответить квитированием ACK или, если данные разрушены, отбросить данные, и не возвратить квитирование.
Рисунок 8-11. Установка Транзакции Управления
Стадия Данных, если она есть в передаче управления состоит из одной или более IN или OUT транзакций и придерживается тех же самых правил протокола как bulk передачи. Все транзакции в стадии Данных должны быть одного направления, то есть, все IN или все OUT. Количество данных, которые будут посланы в фазе данных и направление определяется в течении стадии Установка. Если размер данных превышает ранее оговоренный размер пакета данных, данные передаются в нескольких транзакциях (INs или OUTs) с максимальным размером пакета. Оставшиеся данные посылаются как остаток в последней транзакции.
Стадия Состояние передачи управления является последней операцией в последовательности. Стадия Состояние описывается изменением в направлении потока данных из предыдущей стадии и всегда использует PID DATA1. Если, например, стадия Данных состоит из OUT транзакций, то состояние - это одиночная IN транзакция. Если последовательность управлений не содержит стадию данных, то она состоит из стадии Установка, за которой следует стадия Состояние, состоящая из IN транзакции. Рисунок 8-12 показывает порядок транзакций, значение бита последовательности данных, и типы данных PID для управляющих последовательностей чтения и записи. Биты последовательности показаны в круглых скобках.
Рисунок 8-12. Последовательности Управляющего Чтения и Записи
Передачи Управления позволяют иметь доступ к различным частям устройства. Передачи Управления предназначены, чтобы поддерживать такие типы потоков связи как конфигурация/команда/состояние между клиентским программным обеспечением и функцией. Передача управления состоит из установки транзакции шины, перемещающей информацию запроса от хоста к функции, из нуля или более транзакций данных, посылающих данные в направлении, обозначенном транзакцией установки, и состоянии транзакции, возвращающей информацию о состоянии от функции к хосту (A control transfer is composed of a setup bus transaction moving request information from host to function, zero or more data transactions sending data in the direction indicated by the setup transaction, and a status transaction returning status information from function to host). Транзакция состояния возвращает “успех”("success"), когда конечная точка успешно завершила обработку запрошенной операции. Раздел 8.5.2 описывает, подробности того как используются пакеты, транзакции шины, и последовательности транзакций, чтобы выполнить передачу управления. Глава 9 описывает подробности определенных USB шиной кодов команд .
В каждом устройстве USB требуется, реализовать Конечную точку 0 с типом передачей управления. Эта конечная точка используется программным обеспечением системы USB как канал управления. Каналы управления обеспечивают доступ к конфигурации устройства USB, состоянию, и управляющей информации(control information). Функция может обеспечивать конечные точки дополнительными каналами управления для собственных нужд реализации( A function can provide endpoints for additional control pipes for its own implementation needs).
USB каркас устройства (обратитесь к Главе 9) определяет стандарт, класс устройства, или запросы определяемые продавцом, которые могут использоваться, чтобы управлять состоянием устройства. Также определены дескрипторы, которые можно использовать для хранения различной информации относительно устройства. Передачи управления обеспечивают транспортный механизм доступа к дескрипторам устройства и создания запросов устройства, которые управляют его поведением (Control transfers provide the transport mechanism to access device descriptors and make requests of a device to manipulate its behavior).
Передачи Управления осуществляются только по каналам сообщения. Следовательно, потоки данных, использующие передачи управления должны твердо придержаться определяемой USB структуре данных как описано в Разделе 5.5.1.
USB подсистема будет направлять “самые большие усилия” на то, чтобы поддерживать доставку передач управления между хостом и устройствами. Функции и клиентское программное обеспечение не могут запрашивать специфическую частоту доступа к шине или пропускную способность для передач управления. Программное обеспечение системы USB может ограничивать доступ к шине и пропускную способность, которую может пожелать устройство для передач управления. Эти ограничения определены в Разделе 5.5.3 и Разделе 5.5.4.
Все каналы сообщений передают данные в обоих направлениях. Во всех случаях, клиент выдает стадию установки к конечной точке устройства. Необязательная стадия данных может быть или входной или выходной, и конечное состояние всегда логически выдается на хост. Для ознакомления с подробностями определенного протокола сообщения, обратитесь к Главе 8.
Клиент готовит буфер для определенной фазы команды и любых необязательных данных или пустое пространство буфера.(The client prepares a buffer specifying the command phase and any optional data or empty buffer space.) Клиент получает уведомление об удалении из буфера, когда все фазы передачи управления завершены, или уведомление об ошибки, если передача прервана из-за ошибки в передаче.
Передачи Управления(Control)
Данные Управления используются программным обеспечением USB, чтобы конфигурировать устройства, когда они присоединяются первый раз. Другое программное обеспечение драйвера может использовать передачи управления при реализации специфическим способом. Данные доставляются без потерь.
Переключение Данных
Когда происходит ошибка или в ситуации управления потоком данных, некоторые каналы позволяют пропустить кадр, в котором произошло условие и управление передачей данных этого кадра происходит в течение последующего кадра. В некоторых случаях, возможно, что приемник данных указал передатчику, что данные были успешно получены, но из-за ошибки на шине передатчик уверен, что данные не были получены успешно. Передатчик затем повторно передаст те же самые данные. Приемник должен иметь некоторый механизм, чтобы понять, что данные, которые он теперь получил - это повторная передача данных, которые он уже получил и это не новые данные.
USB предоставляет эту информацию, используя переключатели данных, которые являются PIDs для фазы транзакций данных. В зависимости от типа передачи, конечная точка должна распознать переключатели данных и выдавать или обрабатывать PIDs данных соответственно. Обратитесь к Главе 8 для более полного ознакомления с переключателями данных.
Таблица 9-5 подводит итог механизмов связи USB.
Таблица 9-5. Механизмы Связи USB
Управление | Изохронные | Прерывание | Bulk | ||||||||
Режим Канала | Сообщение | Поток | Поток | Поток | |||||||
Синхронизация | Нет | От шины, внешняя, или программная | Нет | Нет | |||||||
Квитирование | Да | Не используется | Да | Да | |||||||
Переключатели Данных | Да | Игнорируется | Да | Да | |||||||
Требуемая Буферизация | Минимум восемь байтов | Двойной трафик кадра | Одна транзакция | Одна транзакция | |||||||
Ошибка и Обработка Состояния | Гарантируемая поставка сообщает только фатальные ошибки | Отсутствие отчетов или разрушение данных - нет повторений | Гарантируемая поставка сообщает только фатальные ошибки | Гарантируемая поставка сообщает только фатальные ошибки | |||||||
Глава 10
USB Хост: Аппаратные средства и Программное обеспечение
Перекос в Концентраторе и Хосте
Перекос времен между отметкой SOF хоста и SOF таймером концентратора минимизирован в соответствии с требованием, чтобы концентратор проследил хост.(The timing skew between the host’s SOF point and the hub’s SOF timer is minimized by the requirement that the hub track the host.) Источники перекоса включают тот факт, что концентраторы могут пропускать SOFs, и что счетчик кадров хостов может корректироваться отслеживая внешний задающий генератор. 12 MHZ часы - это единственные, фактически определенные, часы так что, это самая лучшая степень детализации имеющаяся в спецификации. Принятие фиксированного во времени SOF хоста и что два последовательных SOFs могут быть пропущены, максимальный накопленный перекос концентратора и хоста без отклонения времени хоста составит ±3 такта. Принято, что часы хоста могут корректироваться до одного времени передачи бита за кадр, затем хост может уходить от концентратора на 1 + 2 + 3 = 6 тактов .Максимальный перекос концентратора и хоста составляет сумму из этих двух компонент или ±9 тактов.
Точка второго EOF должна достаточно отделяться от точки SOF, чтобы разрешить концентраторам восстанавливаться и быть готовым получить маркер SOF от хоста. Концентратор должен закончить посылать EOP перед тем как концентратор, к которому он присоединен, достигает точки второго EOF. Это означает, что все точки EOF2 концентратора должны произойти раньше по крайней мере на одно время передачи бита чем хост выдаст SOF. Все точки EOF2 концентратора должен находиться внутри окна 9 времен передачи бита; следовательно, EOP должен находиться вне этого окна и завершиться по крайней мере за 2 x 9 + 1=19 времен передачи бита перед SOF хоста.
Следующий шаг вычисление продолжительности генерирования EOP и насколько раньше SOF он должен произойти. Передача EOP требует четырех времен передачи бита. Следовательно, концентратор должен начать посылать EOP не позже чем за 19 + 4 = 23 времени передачи бита перед SOP. Чтобы концентратор убедился, что он начинает не позже чем 23-ье время передачи бита, он должно начать за 9 времен передачи бита перед этим или в 32 время передачи бита после точки первого EOF.(For a hub to be sure that it starts no later than the 23rd bit time, it must start 9 bit times before that or at bit time 32, which is the value of the first EOF point.) Самое раннее, когда концентратор мог бы начинать посылать EOP это за 9 времен передачи бита раньше первой отметкой EOF или в 41 время передачи бита.
Концентратор не должен видеть пакет от старта хоста после того, как концентратор достигает первой отметки EOF.(A hub must not see a packet from the host start after the hub reaches its first EOF point.) Это могло бы быть уже за 41 времена передачи бита перед SOF. Задержка распространения в концентраторе должна также фигурировать в запасе задержки. Задержка в концентраторе является приблизительно одним временем передачи бита; так для случая самой плохой топологии из шести концентраторов отдаленных от хоста, будут иметься дополнительная задержка в 6 времен передачи бита. Следовательно, точка EOF хоста для передачи будет в 41 + 6 = 47 временах передачи бита от SOF, относительно SOF таймера хоста. Если хост все еще передает в 47 бите и не способен завершиться перед SOF, он должен вызвать ошибку через нарушения вставки бит (по крайней мере восемь единиц), за которой следует EOP. Если хост все еще получает пакет или EOP в бите 41, он должен обработать пакет как содержащий ошибку. Таблица 11-5 содержит все временные точки EOF концентратора и хоста.
Таблица 11-5. Временные Точки EOF Концентратора и Хоста
Описание |
Число Бит от Начала SOF |
Примечания |
EOF1 |
32 |
Точка #1 конца кадра |
EOF2 |
10 |
Точка #2 конца кадра |
Хост объявляет неверным полно скоростной Tx пакет |
47 |
Latest that host may start a full speed packet |
Хост объявляет неверным низко скоростной Tx пакет |
184 |
Latest that host may start a low speed packet (округленние до самого близкого низко скоростного времени передачи бита) |
Хост объявляет неверным Rx пакет |
41 |
Хост обрабатывает любой пакет, все еще получаемый в 41 времени передачи бита, как плохой |
Перенумерация Шины
Перенумерация Шины - действие, которое идентифицирует и адресует устройства, присоединенные к шине. Для многих шин, это выполнено при запуске и собранная информация статическая. Так как USB позволяет присоединять или отсоединять устройства USB из USB в любое время, перечень шины для этой шины продолжает изменяться. Дополнительно, перечень шины для USB также включает обработку обнаружения и удаления.
Когда устройство USB присоединено или удалено из USB, хост использует процесс, известный как перенумерация шины, чтобы идентифицировать и управлять необходимыми изменениями состояний устройств. Когда устройство USB присоединено, предпринимаются следующие действия:
1. Концентратор, к которому устройство USB теперь присоединено, сообщает хосту о событии через ответ изменяя свое состояние в канале (обратитесь к Главе 11 для подробной информации).(The hub to which the USB device is now attached informs the host of the event via a reply on its status change pipe). В этой точке устройство USB находится в присоединенном состоянии и порт, к которому оно присоединено, заблокирован.
2. Хост определяет точный характер изменения, запрашивая концентратор.
3. Теперь, когда хост знает порт, к которому новое устройство было присоединено, хост выдает разблокирование и команду сброса на этот порт.
4. Концентратор поддерживает сигнал сброса к этому порту 10 мс. Когда сигнал сброса завершен, порт разблокирован и концентратор обеспечивает 100 мА питанием от шины устройство USB. Теперь устройство USB во включенном состоянии. Все регистры и состояния были сброшены, и оно отвечает на заданный по умолчанию адрес.
5. Прежде, чем устройство USB получит уникальный адрес, его создаваемый по умолчанию канал, все еще доступен через заданный по умолчанию адрес. Хост читает дескриптор устройства, чтобы определить, какой фактически максимальный размер полезной нагрузки данных может использовать создаваемый по умолчанию канал этого устройства USB.(The host reads the device descriptor to determine what actual maximum data payload size this USB device’s default pipe can use.)
6. Хост назначает уникальный адрес устройству USB, переводя устройство в адресованное состояние.
7. Хост читает информацию конфигурации из устройства, читая каждую конфигурацию от нуля до n(The host reads the configuration information from the device by reading each configuration zero to n.) Этот процесс может потребовать для завершения несколько кадров.
8. Базируясь на информации о конфигурации и на том как устройство USB будет использоваться, хост назначает устройству значение конфигурации. Устройство теперь в сконфигурированном состоянии, и все конечные точки в этой конфигурации получили свои описанные характеристики.(The device is now in the configured state and all of the endpoints in this configuration have taken on their described characteristics.) Устройство USB может теперь потреблять мощность Vbus, описанную в дескрипторе конфигурации. С точки зрения устройства оно теперь готово для использования.
Когда устройство USB удалено, концентратор снова посылает уведомление хосту. Отсоединение устройства отключает порт, к которому оно было присоединено. После получения отсоединяющегося уведомления, хост модифицирует информацию о локальной топологии.
Питающиеся от шины концентраторы
Вышеупомянутые требования могут быть выполнены для питающихся от шины концентраторов со схемой управления мощности таких как показано на Рисунок 7-23. Питающиеся от шины концентраторы часто содержат по крайней мере одну внедренную функцию. Мощность всегда доступна контроллеру концентратора, который разрешает хосту доступ к управлению питанием и другим регистрам конфигурации в течение процесса перенумерации. Внедренная функция может требовать, чтобы мощность была переключена, так, чтобы после включения питания все устройства(концентратор и внедренные функции) потребляли не более, чем одну модульную нагрузку. Переключение мощности от любой внедренной функции может быть выполнено или удалением мощности или отключением часов. Включение внедренной функции не требуется, если общая мощность, потребляемая ею и контроллером концентратора меньше, чем одна модульная нагрузка. Общий ток, потребляемый питающимся от шины устройством - это сумма тока на контроллер концентратора, любой внедренной функции(й), и downstream портах.
Рисунок 7-23 показывает разделение основанной мощности максимального upstream тока между пятью нагрузками: одна модульная нагрузка для контроллера концентратора и внедренной функции, и по одной нагрузке для каждого из downstream портов. Максимальное число downstream портов, которые могут обеспечиваться, ограничено четырьмя. Если требуется большее количество портов, то концентратор должен быть с независимым питанием. Если внедренная функция(и) и контроллер концентратора потребляют более чем одну модульную нагрузку, то число портов будет соответственно уменьшено. Для управление мощностью питающемуся от шины концентратору может потребоваться регулятор. Если есть регулятор, он всегда обеспечивает допуск контроллер концентратору.(If present, the regulator is always enabled to supply the hub controller.) Регулятор может также регулировать мощность внедренной функции(й).( The regulator can also power the embedded functions(s).) Слежение за ограничением тока наплыва должно быть также включено в подсистему регулятора.
Рисунок 7-23. Состав Концентратора Питающегося от Шины
Мощность к downstream портам должна быть переключена. Контроллер концентратора выдает управляющему программному обеспечению, сигналы вкл\выкл от хоста, который находится в “выкл” состоянии, когда устройство включено или после передачи сигналов сброса. Когда переключено в “вкл” состояние, переключатель осуществляет программное переключение функции, что предотвращает чрезмерный перепад потребляемого тока из порта upstream. Снижение напряжения в upstream кабеле, коннекторах, и переключателях в питающемся от шины концентраторе не должно превысить 350 mV при максимальном номинальном токе.
Питание
Спецификация рассматривает два аспекта питания:
Разводка питания USB детализирует то, как устройства USB потребляют мощность, выдаваемую хостом на USB.
Управление питанием детализирует, как программное обеспечение и устройства USB вписываются в основанную систему управления питанием хоста.
Планирование Мощности
Для питающихся от шины устройств, мощность является ограниченным ресурсом. Когда хост обнаруживает присоединение питающегося от шины устройства USB, хост должен оценить требования по питанию устройства. Если требования по питанию устройства USB превышают доступную мощность, устройство не будет сконфигурировано.
Никакое устройство USB не может требовать более чем 100 мА когда только присоединено. Сконфигурированное питающееся от шины устройство USB, присоединенное к концентратору с независимым питанием может использовать до 500 мА; однако, некоторые порты могут быть не способны обеспечить эту большую мощность и таким образом устройство не будет пригодно для использования.
Все устройства USB должны поддерживать подвешенный режим, который требует менее чем 500 mA. Устройство USB автоматически подвешивается, когда шина неактивна, как описано ранее.
Подвешенное Состояние
Чтобы экономить мощность, устройства USB автоматически входят в Подвешенное состояние, когда устройство не наблюдает никакой трафик шины за определенный период (обратитесь к Главе 7). В подвешенном состоянии, USB устройство поддерживает любое внутреннее состояние, включая адресованное и сконфигурированное.
Все устройства должны быть подвешены, если не наблюдалось активности на шине в течении отрезка времени, определенного в Главе 7. Присоединенные устройства должны быть подготовлены к подвешиванию, в любое время когда они запитаны, был ли им назначен адрес не по умолчанию или они были сконфигурированы. Активность на шине может прекращаться из-за хоста, вводящего подвешенный режим для самого себя. Кроме того, устройство USB должно также ввести подвешенное состояние, когда порт концентратора, к которому оно присоединено, заблокирован. Такой случай упоминается как выборочное подвешивание.
Устройство USB выходит из подвешенного режима, когда имеется активность на шине. Устройство USB может также запрашивать хост выйти из подвешенного режима или выборочного подвешивания, используя электрическую передачу сигналов, для указания удаленного пробуждения. Способность устройства, о сообщении удаленного пробуждения необязательна. Если устройство USB способно к удаленной передаче сигналов пробуждения, устройство должно поддерживать способность хоста включать и отключить эту возможность.
Все устройства должны поддерживать подвешенный режим. Устройства могут войти в подвешенный режим из любого рабочего(powered) состояния. Они переходят в подвешенное состояние, когда видят не меняющееся остановленное состояние на своих линиях шины более чем 3.0 мс.(They go into the suspend state when they see a constant idle state on their bus lines for more than 3.0 ms.) При любом действии шины будет сохраняться подвешенное состояние устройства.(Any bus activity will keep a device out of the suspend state.) Пакет SOF(обратитесь к Разделу 8.4.2) гарантирует, что как только встретится кадр, полно скоростные устройства будут выведены из режима хранения, в течение нормальной операции шины.(The SOF packet (refer to Section 8.4.2) is guaranteed to occur once a frame to keep full speed devices awake during normal bus operation.) Концентраторы, которые находятся не в подвешенном состоянии, выводят низко скоростные устройства из режима хранения, генерируя низко скоростной EOP на работающих портах, к которым присоединены низко скоростные устройства (обратитесь к Разделу 11.2.5.1).(Hubs that are not in the suspend state keep low speed devices awake by generating a low speed EOP on enabled ports that are attached to low speed devices (refer to Section 11.2.5.1). Когда устройство находится в подвешенном состоянии, оно потребляет менее 500 mA от шины. Даже при том, что подвешенные устройства потребляют более 500 mA от шины, порты концентратора должны быть способны обеспечить установление текущего максимума на устройстве лежащем ниже в иерархии, когда концентратор находится в подвешенном состоянии .(Even though suspended devices draw at most 500 mA from the bus, hub ports must be able to supply their maximum rated current to the downstream devices when the hub is in the suspended state.) Необходимо поддерживать удаленное пробуждение как описано в Разделе 7.2.3.
Все устройства могут быть выведены из подвешенного состояния, переключая состояние шины к возобновленному состоянию, нормальным действием шины, или передачей сигнала сброс. Некоторые устройства имеют способность, позволяющую их выводить из этого состояния с помощью действий, связанных с их внутренними функциями и затем передавать сигналы на свои upstream коннекторы таким образом пробуждая или предупреждая остальную часть системы. Эта возможность называется удаленным пробуждением и описана в Разделе 7.1.4.5.
Подвешивание и Возобновление
Концентраторы должны поддерживать подвешивание и возобновление, для устройства USB а также для распространения сигналов подвешивания и возобновления. Концентраторы поддерживают, как глобальное так и выборочное подвешивание и возобновление. Выборочный подвешенное и возобновление выполняется через блокированние/разблокированние порта. Глобальное подвешивание выполняется хостом через корневой порт концентратор. Глобальное возобновление может быть инициализировано или от хоста или от downstream порта концентратора.
Поле адреса
Поле адреса функции (ADDR) определяет адрес функции, которая является или источником или приемником пакета данных, в зависимости от значения маркера PID. Как показано на Рисунок 8-2, всего может быть определено 128 с помощью ADDR <6:0>. Поле ADDR определено для маркеров IN, SETUP, и OUT. По определению, каждое значение ADDR определяет единственную функцию. После сброса и включения питания, адреса функции устанавливается по умолчанию в 0 и должны программироваться хостом в течение процесса перенумерации. Заданный по умолчанию адреса 0 зарезервирован для значения по умолчанию и не может быть назначен для нормальной работы.
Рисунок 8-2. Поле ADDR
Поле bmRequestType
Это растровое поле содержит характеристики специфического запроса. В частности это поле определяет направление передачи данных во второй фазе передачи управления. Состояние бита направления игнорируется, если поле wLength равно нулю, сигнализируя что нет фаз данных.
Спецификация USB определяет ряд Стандартных запросов, которые должны поддерживать все устройства. Кроме того, класс устройства может определять дополнительные запросы. Продавец устройства может также определять запросы, обеспечиваемые устройством.
Запросы могут быть направлены к устройству, интерфейсу на устройстве, или к специфической конечной точке на устройстве. Это поле также определяет кому предназначено получить запрос. Когда интерфейс или конечная точка определены, поле wIndex
идентифицирует интерфейс или конечную точку.