Физический уровень интерфейса USB 1.1 — КиберПедия 

Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...

Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...

Физический уровень интерфейса USB 1.1

2019-06-06 660
Физический уровень интерфейса USB 1.1 0.00 из 5.00 0 оценок
Заказать работу

Физический уровень USB разрабатывался от уровня RS232-RS485. В 90-х годах большинство последовательных интерфейсов использовало физический уровень RS232-RS485. Такие интерфейсы создавались добавлением программного (протокольного) уровня к физическому уровню RS232-RS485. Интерфейсов, построенных по такому принципу, – десятки, а может сотни. Некоторые из них: ModBus, ProFibus, DCON, DH-485, BitBus, HART и многие др. Все эти протоколы сегодня успешно работают во многих отраслях человеческой деятельности. Естественно при разработке физического уровня USB использовались эти наработки. На рисунке 1 показана структура физического уровня RS232-RS485.

Структура состоит из двух драйверов(приёмопередатчиков) и двух физических сред (кабель RS232 и кабель RS485). Связь с программным уровнем осуществляется через системную шину ПК, к которой подключен контроллер RS232 (UART). Кабель RS485 обеспечивает общую физическую многоточечную среду, к которой подключаются драйверы RS485 других устройств. Драйверы RS232 и RS485 выполнены симметрично, то есть структура драйвера одинакова для DTE и DCE устройств RS232, также одинакова структура драйверов для ведущего и ведомого драйвера RS485.

Стык RS232 работает в дуплексном режиме (драйверы имеют равные права). Стыке RS485 в один момент времени может существовать только один ведущий драйвер (передающий), остальные драйвера ведомые (принимающие). Ведущим становиться любой драйвер RS485, который получил право передавать информацию. Алгоритм передачи маркера, который делает точку ведущей, определяет программный уровень интерфейса (протокол). Драйвер RS485 имеет гальваническую развязку с сигналами RS232, что позволяет осуществлять "горячее" подключение и отключение точек сети.

На рисунке 2 показана структура физического уровня USB 1.1.

Как видно на рисунке 2, физический уровень USB напоминает RS485, используется аналогичный полудуплексный балансный сигнал. Для упрощения линии связи было решено отказаться от использования независимых сервисных сигналов, которые управляют обменом данных. Сервисные сигналы RS232 были заменены сигналами и состояниями, которые передаются по балансной линии связи. Тем самым стало возможным переместить физический уровень RS232 в программную область интерфейса. Это придало интерфейсу дополнительную конфигурационную гибкость и упростило его физическую реализацию. Но, при этом интерфейс лишился гальванической развязки, согласованности линии связи, симметричности и многоточечности. Кроме того, включение программного уровня в структуру интерфейса сделало его замкнутым, то есть не способным к модификационному размножению. Несогласованность, асимметричность и увеличенная скорость передачи сократили расстояние связи с 1200 метров (RS485) до 5 метров(USB). В интерфейс USB была добавлена линия питания +5В, что очень увеличило его функциональность.

Общая структура физического уровня. Физический уровень USB 1.1. состоит из двух драйверов и физической среды (кабеля) между ними. Драйверы физического уровня не симметричны, то есть имеют разную структуру. Физическая среда одноточечная и односторонняя (полудуплекс). Существует два типа драйвера:

Downstream (вниз передающий) - этот драйвер всегда ведущий, то есть только он определяет кто, когда и сколько будет передавать данных в линию связи. Драйверы этого типа всегда генерируют информационный сигнал в направлении от хоста. В сети эти драйверы установлены на хосте или вниз передающем порту хаба.

Upstream (вверх передающий) - это драйвер всегда ведомый. Он всегда генерирует информационный сигнал в направлении хоста. Время и порядок его работы определяет ведущий драйвер (Downstream). Эти драйвера устанавливаются в устройствах и верх передающих портах хаба. Драйвер Upstream может быть одного из двух видов:

Upstreeam Full Speed - для работы на скорости 12 Mb/s;

Upstream Low Speed - для работы на скорости 1,5 Mb/s.

 

Рисунок 1 – Структура физического уровня RS232-RS485

 

Так как драйверы не симметричны, связь в физическом уровне USB 1.1 возможна только между драйверами разного типа, то есть только между Downstream и Upstreeam. Соответственно не симметричен и кабель для подключения, со стороны Downstream он имеет разъём серии A, а со стороны Upstream разъём серии B. Драйвера и кабели RS232 и RS485 симметричны, поэтому ПК можно соединять между собой через COM порты. Соединить два ПК через USB порты невозможно. Этот факт конечно, ухудшает универсальность порта, но позволяет упростить аппаратную часть, так как односторонние драйвера аппаратно более просты. Кроме того, односторонняя реализации упрощает программный уровень, так как параллельные процессы в ПК трудно реализуемы.

Рисунок 2 – Структура физического уровня USB 1.1

Устройство драйверов. Как видно на рисунке 2 драйвера USB состоят из: контроллера, кодера, декодера, генератора, дифференциального и линейных приёмников, подтягивающих резисторов и источника питания.

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

Кодер NRZI. Пакет кодируется методом NRZI с помощью JK-триггера. Алгоритм NRZI кодирования довольно прост, при передаче нуля генератор должен изменить полярность сигнальной линии на противоположную, при передаче единицы оставить полярность сигнала прежней (т.е. ничего не менять). Кодеры для Full Speed и Low Speed отличаются выходным сигналом (противоположны). NRZI кодирование позволяет сократить число синхробитов, вставляемых в пакет данных.

Декодер. Преобразует NRZI закодированные данные к начальному виду и выделяет синхросигнал из принимаемых данных.

Генератор. Генератор устроен аналогично генератору RS485. Генератор передает в линию связи дифференциальные нули и единицы. Когда генератор не передает данные, он отключен от линии связи сигналом OE и не влияет на её работу. Генератор может замыкать линию связи на общий провод сигналом SEO. Это используется для сброса шины. На рисунке 3 представлены напряжения, измеряемые на выходах генератора:

Vdi - дифференциальное напряжение, это напряжение между выводами D+ и D-;

Vd+ - линейное напряжение, это напряжение между Выводом D+ и GND;

Vd- - линейное напряжение, это напряжение между Выводом D- и GND.

Параметры генератора:

ЭДС генератора: +3,6v;

Внутреннее сопротивление: 56..88 Om Макс. допустимое прямое линейное напряжение: +4,6v;

Макс. допустимое обратное линейное напряжение: -1,0v;

Генератор должен статически держать параметры линейного напряжения на выходе:

VOL= не более +0.3v при нагрузке 1,5kOm подключенной к +3,6v для низ. линейного сигнала (0);

VOH= не менее +2.8v при нагрузке 15 kOm подключенной к GND для выс. линейного сигнала (1);

Нарастание фронта линейного сигнала, должно быть в пределах: 4ns.20ns (FS), 75ns.300ns (LS);

Длительность линейного сигнала высокого уровня при передаче бита должна быть не менее: 60ns;

Пересечение линейных сигналов D+ и D-(Vd+=Vd-) должно быть в диапазоне: VCRS= 1, 3v..2,0v;

Нагрузочная ёмкость выхода: CL= 50pF (FS), 50pF.150pF(LS Upstream), 200pF.600pF (LS Downstream).

 

Рисунок 3 – Напряжения, измеряемые на выходах генератора

 

Дифференциальный приёмник. Предназначен для приёма данных с линии связи D+D-. Измеряет напряжение между линиями D+ D- (Vdi). Определяет два состояния: дифференциальный "0" и дифференциальную "1".

Параметры диф. приемника:

- чувствительность приёмника должна быть не ниже VDI= 200Mv;

- диф. "1": Vdi>+200mV (Vd+ > Vd- более чем на 200mv в диапазоне лин. напряжения VCM= 0,8v..2,5v);

- диф. "0": Vdi<-200mV (Vd- > Vd+ более чем на 200mv в диапазоне лин. напряжения VCM= 0,8v..2,5v).

Линейные приемники. Измеряют линейные напряжения Vd+ и Vd- относительно GND. Комбинация линейных напряжений и времени их удержания определяют состояние линии связи. В результате применения линейных приемников, USB порт может определять несколько состояний линии связи, без применения сервисных сигналов (например, как в RS232, 6 сервисных сигналов, задают 128 состояний линии связи).

Параметры:

- напряжение Vd+ или Vd- низкого уровня (0), VIL= не более +0,8v;

- напряжение Vd+ или Vd- высокого уровня (1), VIH = не менее +2,0v.

- напряжения Vd+ или Vd- могут опускаться ниже VIL, без фиксирования состояния SE0, на время не более: TFST= 14ns (для FS) и TLST= 210ns (для LS).

Подтягивающие резисторы. Служат для идентификации устройств USB при их подключении/отключении к порту Downstream. Для Downstream Vd+ и Vd- подтягиваются к низкому уровню (GND) резисторами 15kOm. Для Upstream Full Speed Vd+ подтягивают к высокому уровню (VTERM=3.0V..3.6V) резистором 1.5kOm. Для Upstream Low Speed Vd- подтягивают к высокому уровню (VTERM=3.0V..3.6V) резистором 1.5kOm.

Источник питания. Как видно из структуры физического уровня USB 1.1 драйвера Downstream имеют источники питания напряжением VBUS=+5V для питания нисходящих устройств сети по шине USB. В спецификации введено понятие "модульная нагрузка", одна модульная нагрузка равна 100mA. Классификация устройств по питанию:

Root port hubs (корневые порты хабов). Эти порты запитаны от источника питания хоста. Например, если хост установлен в ПК, то источником питания является блок питания ПК. Все порты этого хаба должны обеспечивать не менее 5-ти модульных нагрузок (500mA), такие порты называют High-Power port(сильный питающий порт). Обратите внимание, что только High-Power port может обеспечить ток более 500mA, по сути дела вы напрямую подключаетесь к блоку питания ПК и ограничения по току связаны только с мощностью блока питания компьютера. Если питание хоста выполнено на батареях, то такие порты должны обеспечивать не менее одной модульной нагрузки(100mA) и такие порты называют Low-Power port (слабый питающий порт).

Bus-powered hubs (шинозапитанный хаб). Этот хаб имеет питание по шине USB и всю мощность он берет от вышестоящего downstream порта. Такой хаб потребляет одну модульную нагрузку при включении и до 5-ти модульных нагрузок после конфигурации хаба. В результате шинопитающийся хаб должен после конфигурации распределить имеющиеся в его распоряжении 500mA между всеми портами и функциями, входящими в его состав.

Self-powered hubs (Хаб с собственным питанием). Этот хаб имеет собственный внутренний источник питания и не использует питание передаваемое по шине USB.
Однако он может использовать до одной модульной нагрузки с шины USB, когда его собственное питание не включено. После конфигурации этот хаб запитывается от своего источника питания и обеспечивает всем портам, входящим в его состав, до 5-ти модульных нагрузок. Если внутренний источник хаба- батарея, то до одной модульной нагрузки на каждый порт входящий в состав хаба.

Low-power bus-powered functions (слабая шиннозапитанная функция). Это устройство USB, которое берет от Downstream порта не более одной модульной нагрузки в любое время.

High-power bus-powered functions (сильная шиннозапитанная функция). Это устройство USB, которое берет от Downstream порта не более одной модульной нагрузки во время подключения и до 5-ти модульных нагрузок после конфигурирования.

Self-powered functions (функция с собственным питанием). Это устройство USB, которое имеет собственный источник питания, это устройство может брать с шины USB до одной модульной нагрузки при включении устройства.

Параметры питания:

High-Power Port(сильно питающий порт), VBUS=4,75V..5,25V;

Low-Power Port (слабый питающий порт), VBUS=4, 40V..5,25V;

High-power Hub Port (out) (выход High порта хаба), ICCPRT= не менее 500mА;

Low-power Hub Port (out)) (выход Low порта хаба), ICCUPT= не менее 100mА;

High-power Function (in) (потребление High устройства), ICCHPF= не более 500mА;

Low-power Function (in) (потребление Low устройства), ICCLPF= не более 100mА;

Unconfigured Function/Hub (in) (не сконфигурированное устройство), ICCINIT= не более 100mА;

Suspended High-power Device (High устройство в остановленном состоянии), ICCSH= не более 2,5mА;

Suspended Low-power Device (Low устройство в остановленном состоянии), ICCSL= не более 0,5mА.

Кодирование и синхронизация. Бинарные данные передаваемые через интерфейс USB кодируются методом NRZI. Метод NRZI (Non Return to Zero Invert) заключается в изменении полярности сигнала при кодировании "0". При передаче "1" полярность сигнала остаётся прежней. NRZI кодированные сигналы Low Speed устройств противоположны сигналам Full Speed устройств USB (рисунок 4).

NRZI кодирование используется для увеличения информационной ёмкости сигнала, за счёт уменьшения количества встраиваемых синхробитов.

Синхронизация данных осуществляется от каждого переходного фронта сигнала. Так как каждый "0" бит данных изменяет полярность сигнала при NRZI кодировании на противоположный, то каждый "0" бит создает переходной фронт сигнала, относительно которого синхронизируется приёмник данных. Три метода синхронизации пакета данных в USB:

1) SOP (Start-of-Packet) Переход из состояния Idle в состояние K. В начала каждого пакета вставляется байт 80h, который имеет 7 нулей и одну единицу. Семь фронтов, идущих подряд, позволяют надежно синхронизовать приёмник с началом пакета данных.

2) "0" бит данных. Каждый "0" бит данных дополнительно синхронизует приёмник. В результате NRZI кодирования, все данные содержащие "0" бит не нуждаются в дополнительном синхробите.

3) Stuffed Bit -вставляемый синхробит. Если в пакете данных появляются подряд шесть "1", то чтобы не потерять синхронизацию приёмника вставляют "0", который считается синхробитом. То есть, "0" после шести "1" не является битом данных и программным уровнем игнорируется. Счет единиц начинается с поля SYNC, т.е. с единицы имеющейся в этом поле. Также учтите, что синхробиты не привязаны к байтам, они считаются во всей битовой последовательности пакета. Вставка бита осуществляется всегда, без исключения. Если по правилам требуется вставка бита, нулевой бит будет вставлен, даже если это - последний бит, т.е. бит перед сигналом конец-пакета (EOP).

 

Рисунок 4 – NRZI кодирование

 

На рисунке 5 видно, что начальное положение Idle для FS и LS имеют разный знак, поэтому первый бит синхробайта должен изменить начальное положение на противоположное, иначе мы бы потеряли значение первого бита. Отсюда становится понятно, почему кодировка NRZI для FS и LS различаются. Как видно из рис.5 синхронизация USB не хуже синхронизации RS232 (где синхронизируется каждый байт). Причем затрат времени на синхронизацию в USB почти в четыре раза меньше, и соответственно мы можем передать больше информации за единицу времени. Недостатки синхронизации с NRZI:

1) В пакете появляются байты длиною в 9 бит.

2) Каждый Stuff бит задерживает остаток пакета на время равное интервалу бита. Поэтому разные пакеты передаются с разным временем задержки.

3) Пакеты становятся плавающей длины. В RS232 таких проблем нет. Отсюда вывод, что за всё приходиться расплачиваться.

Состояния линии связи. Как видно из структуры физического уровня USB 1.1 (рисунок 2), в ней отсутствует сервисные сигналы. Это сильно ограничивает функциональность интерфейса, так как становиться трудно организовать процедуры: установки, обмена, повтора при ошибке, останова и разрыва связи. Это являлось основным недостатком интерфейса RS-485, в котором можно обнаружить только два состояния: ведется передача или нет. В результате применения связки RS232-RS485 терялись все преимущества COM порта по организации процесса связи. Рассмотрим, как разработчики USB порта решили эту проблему:

1) В структуру добавлены два линейных приёмника. Они могут определить четыре состояния линии связи D+D-:00, 01, 10, 11. Эти состояния определяются, когда по линии связи нет обмена данными. Причем четырех состояний для организации полноценного обмена будет недостаточно.

2) Добавлен анализ временных интервалов состояний линии связи Использование анализа временных интервалов состояний линии связи, позволяет генерировать 9 сервисных сигналов. Сервисные сигналы позволяют организовать управление обменом данных в линии связи.


Поделиться с друзьями:

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...

Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...

Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...

Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.072 с.