Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Агуров П.В. -> "Интерфейсы USB. Практика использования и программирования" -> 26

Интерфейсы USB. Практика использования и программирования - Агуров П.В.

Агуров П.В. Интерфейсы USB. Практика использования и программирования — СПб.: БХВ-Петербург, 2004. — 576 c.
ISBN 5-94157-202-6
Скачать (прямая ссылка): interface2004.djvu
Предыдущая << 1 .. 20 21 22 23 24 25 < 26 > 27 28 29 30 31 32 .. 166 >> Следующая

1 В спецификации USB указано сопротивление 15 кОм, однако в дополнительном документе "USB Engineering Change Notice. Pull-up/pull-down resistors" разрешается установка резисторов 14,25—24,80 кОм.
гпава 2. Аппаратное обеспечение USB
57
Передача по двум проводам в USB не ограничивается дифференциальными сигналами. Кроме дифференциального приемника каждое устройство имеет линейные приемники сигналов D+ и D-, а передатчики этих линий управляются индивидуально. Это позволяет различать более двух состояний линии, используемых для организации аппаратного интерфейса. Состояние, при котором разность потенциалов на линиях D+ и D— составляет более 200 мВ при условии, что на одной из линий потенциал выше порога срабатывания Vse, называются состоянием DiJfO или DiJf 1. Состояние, при котором на обоих входах D+ и D- присутствует низкий уровень, называется линейным нулем SEO (Single Ended Zero).
Интерфейс определяет следующие состояния:
? Data J State и Data К State (или просто J и К) — состояния передаваемого бита, определяются через состояния DiflO и Diffl;
? Idle State — состояние паузы на шине;
? Resume State — сигнал "пробуждения" для вывода устройства из "спящего" режима;
? Start of Packet (SOP) — начало пакета (переход из Idle State в К);
? End of Packet (EOP) — конец пакета;
? Disconnect — устройство отключено от порта;
? Connect — устройство подключено к порту;
? Reset — сброс устройства.
Состояния определяются сочетаниями дифференциальных и линейных сигналов. Для полной и низкой скоростей состояния DiflO и Diffl имеют противоположное назначение. В декодировании состояний Disconnect, Connect и Reset учитывается время нахождения линий (более 2,5 мс) в определенных состояниях.
2.2.1. Кодирование данных
Как уже говорилось, данные по шине USB передаются битовыми последовательностями. Все данные кодируются с помощью метода, называемого NRZI with bit stuffing (NRZI — Non Return to Zero Invert, метод возврата к нулю с инвертированием единиц).
Вместо кодирования логических уровней как уровней напряжения USB определяет логический 0 как изменение напряжения, а логическую 1 как неизменение напряжения. Вообще говоря, этот метод представляет собой модификацию обычного потенциального метода кодирования NRZ (Non Return to Zero, невозврат к нулю), когда для представления 1 и 0 используются потенциалы двух уровней, но в методе NRZI потенциал, используемый для кодирования текущего бита, зависит от потенциала, который использо-
58
Часть I. Введение в USB
вался для кодирования предыдущего бита. Если текущий бит имеет значение 1, то текущий потенциал представляет собой инверсию потенциала предыдущего бита, независимо от его значения. Если же текущий бит имеет значение 0, то текущий потенциал повторяет предыдущий.
Очевидно, что если данные содержат нули, то приемнику и передатчику достаточно легко поддерживать синхронизацию — уровень сигнала будет постоянно меняться. А вот если данные содержат длинную последовательность единиц, то уровень сигнала меняться не будет, и возможна рассин-хронизация. Следовательно, для надежной передачи данных нужно исключить из кодов слишком длинные последовательности единиц. Это действие называется стаффшг (Bit stuffing): после каждых шести единиц автоматически добавляется 0 (рис. 2.10).
Данные 010101001110

Данные 0 111111 110 0

01 111 1101100 Добавленный бит
Рис. 2.10. Кодирование USB
Легко проверить существует только три возможных байта с шестью последовательными единицами: 001Il111, 01111110, 11111100.
Стаффинг может увеличить число передаваемых бит до 17%, но на практике эта величина значительно меньше.
Для устройств, подключаемых к шине USB, кодирование происходит прозрачно: USB-контроллеры производят кодирование и декодирование автоматически. Конечно, кодирование данных затрудняет отладку схем с помощью осциллографа, но, с другой стороны, значительно повышает надежность передачи данных.
2.2.2. Идентификация устройств
USB-устройство должно указывать свою скорость путем подтяжки линии D+ или D- посредством сопротивления 1,5 кОм к напряжению 3,3 В (рис. 2.8, 2.9). Это подтягивающее сопротивление хост или хаб используют для обнаружения подключения устройства к своему порту. Без этого резистора ни хост, ни хаб не поймут, что к USB-шине подключено новое уст-
гпава 2. Аппаратное обеспечение USB
59
ройство. Некоторые микросхемы контроллеров USB-шины имеют встроенный подтягивающий резистор, который может подключаться к напряжению 3,3 В под управлением программы, другие контроллеры требуют наличия внешнего подтягивающего резистора.
Например, в микросхемах фирмы National Semiconductors USBN9603/4 имеется возможность программного управления подключением (отключением) устройства от USB-шины. Когда устройство подключается к USB-шине, сначала выполняется процедура инициализации контроллера, лишь затем программа устанавливает в регистре контроля подключение подтягивающего резистора.
Лишь со времени подключения резистора к напряжению 3,3 В хост считает, что на шине появилось новое устройство. Теперь он может инициировать сброс устройства и запрос дескрипторов, которые описывают его функциональные особенности и возможности. Если устройство работает в высокоскоростном режиме, то подтягивающий резистор затем отключается, чтобы сбалансировать линию.
Предыдущая << 1 .. 20 21 22 23 24 25 < 26 > 27 28 29 30 31 32 .. 166 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100