Данные внутри пакета передаются дифференциальными сигналами. Приемник видит дифференциальную единицу, если уровень сигнала на шине D+ по крайней мере на 200 мВ больше, чем на D-, и видит дифференциальный 0, если уровень сигнала на D- по крайней мере на 200 мВ больше, чем на D+ (табл. 1). Точка пересечения при смене уровня сигнала должна находиться между 1,3 В и 2,0 В.
Таблица 1. Уровни передачи сигналов.
Состояние шины |
Уровни передачи и время удержания сигналов |
Дифференциальная "1" |
(D+) - (D-) > 200 мВ и D+ или D- > Vse(min) |
Дифференциальный "0" |
(D+) - (D-) < -200 мВ и D+ или D- > Vse(min) |
Данные J-cocтояния: Низкая скорость Высокая скорость |
Дифференциальный "0" Дифференциальная "1" |
Данные К-состояния: Низкая скорость Высокая скорость |
Дифференциальная "1" Дифференциальный "0" |
ldle-состояние: Низкая скорость Высокая скорость |
Дифференциальный "0" и D- > Vse(max) и D+ < Vse(min) Дифференциальная "1" и D+ > Vse(max) и D- < Vse(min) |
Resume-состояние: Низкая скороcть Высокая скорость |
Дифференциальная "1" и D+ > Vse(max) и D- < Vse(min) Дифференциальный "0" и D- > Vse(max) и D+ < Vse(min) |
Начало пакета (SОР) |
Линии данных переключаются от IDLE-состояния к К-состоянию |
Конец пакета (ЕОР) |
D+ и D- < Vse(min) в течение 2 битовых интервалов, далее следует переход в IDLE-состояние в течение 1 битового интервала |
Разъединение (Только вверх по иерархии) |
D+ и D- < Vse(max) > 2,5 мкс |
Соединение (Только вверх по иерархии)
|
D+ или D- > Vse(max) > 2,5 мкс |
Сброс (Только вниз по иерархии)
|
D+ и D- < Vse(min) > 2,5 мкс (должен быть распознан в течение 5,5 мкс) |
Примечание. Уровень Vse - уровень ассиметричного "0" (Single Ended Receiver Threshold), находится в пределах от 0,8 до 2,0 вольт.
Все пакеты имеют четкие разграничители начала пакета (SOP), который является частью поля SYNC, и конца пакета (ЕОР). Начало пакета (SOP) обнаруживается портом (рис.1) по переходу сигналов на линиях D+ и D- от неактивного IDLE-состояния к противоположному логическому уровню (К-состояние). Этот перепад уровня представляет первый бит поля SYNC. Состояние асимметричного 0 используется, чтобы сообщить о конце пакета (ЕОР). Состояния асимметричного 0 фиксируется по нахождению сигналов на линиях D+ и D- ниже 0,8В в течение двух битовых интервалов (рис. 1). ЕОР будет сообщен переводом D+ и D- в состояние асимметричного 0 в течение удвоенного времени передачи бита, что сопровождается дальнейшим переводом линии в lDLE-состояние в течение одного битового интервала. Переход от асимметричного 0 к неактивному состоянию определяет конец пакета. IDLE-состояние удерживается в течение 1 битового интервала, а затем схемы выходных драйверов переводят линии D+ и D- в состояние высокого импеданса. Согласующие резисторы шины удерживают шину в неактивном состоянии.
Рис. 1. Уровни напряжений при передаче пакета на шине USB
Сигнал "Сброс" может быть сгенерирован командой хоста в любом концентраторе или порте хост-контроллера и распространяется только в направлении вниз по иерархии USB-дерева. Сигнал сброса должен быть выдержан минимум 10 мс. Сигнал сброса распространяется через все работающие downstream-порты любых концентраторов к порту передачи сигналов, но не распространяется через неработающие порты. Подключенный к шине концентратор, который получает сброс по корневому порту, убирает питание со всех downstream-портов. Порт, который генерировал сброс, пошлет состояние логического разъединения в конце сигнала сброса, а затем будет переведен в выключенное (disabled) состояние. Активное устройство, включенное и не находящееся в состоянии останова (suspend), наблюдает за асимметричным нулем, который наблюдается на upstream-порте в течение более чем 2,5 мкс, и может обрабатывать этот сигнал как сброс, но должно выполнить распознавание этого сигнала за 5,5 мкс. После снятия сброса устройство будет находиться в присоединенном, но еще не в адресованном (они инициализируются своими заданным по умолчанию адресам USB) или не сконфигурированном состоянии. Все порты на получившем сброс концентраторе находятся в нерабочем состоянии. Концентраторы должны быть способны установить связь, и все устройства должны быть способны принять адрес устройства в команде SET_ADDRESS не позже чем через 10 мс после того, как был удален сигнал "сброс". Невыполнение этого условия может привести к тому, что устройства не будут корректно распознаны. Сброс может выводить устройство из suspend-режима с выключенным питанием. Устройство может выходить из suspend-состояния в течение 10 мс.
Синхроимпульсы передаются закодированными вместе с дифференциальными данными. Самосинхронизирующаяся последовательность реализована по схеме NRZI with bit stuffing. NRZI - Non Return to Zero Invert to ones - метод без возврата к нулю с инвертированием для единиц. В методе NRZI применяются два уровня сигнала, но уровень, используемый для кодирования текущего бита, зависит от уровня, который применялся для кодирования предыдущего бита (так называемое дифференциальное кодирование). Если текущий бит имеет значение 1, то текущий уровень представляет собой инверсию уровня предыдущего битового интервала, независимо от его значения. Если же текущий бит имеет значение 0, то текущий уровень повторяет значение на предыдущем битовом интервале. Таким образом, для того чтобы обеспечить частые изменения сигнала, а значит и для поддержания самосинхронизации приемника, нужно исключить из кодов слишком длинные последовательности нулей. Это действие называется "бит-стаффинг" (bit stuffing). Специальное поле SYNC из семи 0 следующих за 1 (0х80= 10000000В) включено в заголовок каждого пакета, чтобы позволить приемнику подстроиться под частоту передатчика. Битовый шаблон NRZI для поля SYNC представляет собой тактовый сигнал с периодом, равным 2 битовым интервалам.