7. Последовательные шины

Последовательные шины позволяют объединять множество устройств, используя всего 1-2 пары проводов. При этом достигается пропускная способность от 100 кбит/с для шины ACCESS.Bus до 400 Мбит/с у FireWire. Функциональные возможности этих шин гораздо шире, чем у традиционных интерфейсов локальных сетей — USB и FireWire способны передавать изохронный трафик аудио- и видеоданных.

7.1. Шина USB

USB (Universal Serial Bus — универсальная последовательная шина) является промышленным стандартом расширения архитектуры PC, ориентированным на интеграцию с телефонией и устройствами бытовой электроники. Версия 1.0 была опубликована в январе 1996 года. Архитектура USB определяется следующими критериями:

* Легко реализуемое расширение периферии PC.

* Дешевое решение, поддерживающее скорость передачи до 12 Мбит/с.

* Полная поддержка в реальном времени передачи аудио-и (сжатых) видеоданных.

* Гибкость протокола смешанной передачи изохронных данных и асинхронных сообщений.

* Интеграция с выпускаемыми устройствами. ^ Доступность в PC всех конфигураций и размеров.

* Обеспечение стандартного интерфейса, способного быстро завоевать рынок.

* Создание новых классов устройств, расширяющих PC.

С точки зрения конечного пользователя, привлекательны следующие черты USB:

^ Простота кабельной системы и подключений.

* Скрытие подробностей электрического подключения от
конечного пользователя.

*Самоидентифицирующиеся ПУ, автоматическая связь
устройств с драйверами и конфигурирование.

* Возможность динамического подключения и конфигури-
рования ПУ.

С середины 1996 года выпускаются PC со встроенным кон-
троллером USB, реализуемым чипсетом. Ожидается появ-
ление модемов, клавиатур, сканеров, динамиков и других
устройств ввода/вывода с поддержкой USB, а также мони-
торов с USB-адаптерами - они будут играть роль хабов для
подключения других устройств.

7.1.1. Структура USB

USB обеспечивает одновременный обмен данными между
хост-компьютером и множеством периферийных устройств
(ПУ).
Распределение пропускной способности шины между
ПУ планируется хостом и реализуется им с помощью по-
сылки маркеров. Шина позволяет подключать, конфигури-
ровать, использовать и отключать устройства во время ра-
боты хоста и самих устройств.

Ниже приводится авторский вариант перевода терминов
из спецификации "Universal Serial Bus Specification. Revi-
sion I.O.January 15, 1996", опубликованной Compaq, DEC,
IBM, Intel, Microsoft, NEC и Northern Telecom. Более под-
робную и оперативную информацию можно найти по ад-
ресу: http://www.usb.org.

Устройства (Device) USB могут являться хабами, функция-
ми или их комбинацией. Хаб (Hub) обеспечивает дополни-
тельные точки подключения устройств к шине. Функции
(Function)
USB предоставляют системе дополнительные воз-
можности, например подключение к ISDN, цифровой джой-
стик, акустические колонки с цифровым интерфейсом и т. п.
Устройство USB должно иметь интерфейс USB, обеспечи-
вающий полную поддержку протокола USB, выполнение
стандартных операций (конфигурирование и сброс) и пре-
доставление информации, описывающей устройство. Мно-


гие устройства, подключаемые к USB, имеют в своем соста-
ве и хаб, и функции. Работой всей системы USB управляет
хост-контроллер (Host Controller), являющийся программно-
аппаратной подсистемой хост-компьютера.

Физическое соединение устройств осуществляется по топо-
логии многоярусной звезды. Центром каждой звезды явля-
ется хаб, каждый кабельный сегмент соединяет две точки -
хаб с другим хабом или с функцией. В системе имеется один
(и только один) хост-контроллер, расположенный в верши-
не пирамиды устройств и хабов. Хост-контроллер интегри-
руется с корневым хабом (Root Hub), обеспечивающим одну
или несколько точек подключения - портов. Контроллер
USB, входящий в состав чипсетов, обычно имеет встроен-
ный двухпортовый хаб. Логически устройство, подключен-
ное к любому хабу USB и сконфигурированное (см. ниже),
может рассматриваться как непосредственно подключенное
к хост-контроллеру.

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

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

Примерами функций являются:

^ Указатели - мышь, планшет, световое перо.
^ Устройства ввода - клавиатура или сканер.

^ Устройство вывода - принтер, звуковые колонки (циф-
ровые).

т Телефонный адаптер ISDN.


Хаб - ключевой элемент системы РпР в архитектуре USB.
Хаб является кабельным концентратором. Точки подключе-
ния называются портами хаба. Каждый хаб преобразует одну
точку подключения в их множество. Архитектура допускает
соединение нескольких хабов.

У каждого хаба имеется один восходящий порт (Upstream
Port},
предназначенный для подключения к хосту или хабу
верхнего уровня. Остальные порты являются нисходящими
(Downstream Ports),
предназначенными для подключения
функций или хабов нижнего уровня. Хаб может распознать
подключение устройств к портам или отключение от них и
управлять подачей питания на их сегменты. Каждый из пор-
тов может быть разрешен или запрещен и сконфигурирован
на полную или ограниченную скорость обмена. Хаб обеспе-
чивает изоляцию сегментов с низкой скоростью от высоко-
скоростных.

Хабы могут управлять подачей питания на нисходящие пор-
ты; предусматривается установка ограничения на ток, по-
требляемый каждым портом.

71.jpg


Система USB разделяется на три уровня с определенными
правилами взаимодействия. Устройство USB содержит ин-
терфейсную часть, часть устройства и функциональную
часть. Хост тоже делится на три части - интерфейсную, си-
стемную и ПО устройства. Каждая часть отвечает только за
определенный круг задач, логическое и реальное взаимодей-
ствие между ними иллюстрирует рис. 7.1.

В рассматриваемую структуру входят следующие элементы:

^ Физическое устройство USB - устройство на шине, вы-
полняющее функции, интересующие конечного пользо-
вателя.

^ Client SW - ПО, соответствующее конкретному устрой-
ству, исполняемое на хост-компьютере. Может являться
составной частью ОС или специальным продуктом.

^ USB System SW - системная поддержка USB, независи-
мая от конкретных устройств и клиентского ПО.

^ USB Host Controller - аппаратные и программные сред-
ства для подключения устройств USB к хост-компьютеру.

Физический интерфейс

Стандарт USB определяет электрические и механические спе-
цификации шины.

Информационные сигналы и питающее напряжение 5 В пе-
редаются по четырехпроводному кабелю. Используется диф-
ференциальный способ передачи сигналов D+ и D- по двум
проводам. Уровни сигналов передатчиков в статическом
режиме должны быть ниже 0,3 В (низкий уровень) или выше
2,8 В (высокий уровень). Приемники выдерживают входное
напряжение в пределах - 0,5...+3,8 В. Передатчики должны
уметь переходить в высокоимпедансное состояние для дву-
направленной полудуплексной передачи по одной паре про-
водов.

Передача по двум проводам в USB не ограничивается диф-
ференциальными сигналами. Кроме дифференциального
приемника каждое устройство имеет линейные приемники
сигналов D+ и D-, а передатчики этих линий управляются
индивидуально. Это позволяет различать более двух состоя-

10 Зак. № 530


ний линии, используемых для организации аппаратного ин-
терфейса. Состояния DiffO и Diff1 определяются по разно-
сти потенциалов на линиях D+ и D- более 200 мВ при
условии, что на одной из них потенциал выше порога сраба-
тывания VSE. Состояние, при котором на обоих входах D+ и
D- присутствует низкий уровень, называется линейным ну-
лем (SEO - Single-Ended Zero).
Интерфейс определяет следу-
ющие состояния:

йа DataJ State и Data К State - состояния передаваемого
бита (или просто J и К), определяются через состояния
DiffO и Diff1.

^ Idle State - пауза на шине.

^ Resume State - сигнал "пробуждения" для вывода устрой-
ства из "спящего" режима.

^ Start of Packet (SOP) - начало пакета (переход из Idle State
в К).

т End of Packet (EOP) - конец пакета.
^ Disconnect - устройство отключено от порта.
^ Connect - устройство подключено к порту.
^ Reset - сброс устройства.

Состояния определяются сочетаниями дифференциальных
и линейных сигналов; для полной и низкой скоростей со-
стояния DiffO и Diff1 имеют противоположное назначение.
В декодировании состояний Disconnect, Connect и Reset учи-
тывается время нахождения линий (более 2,5 мс) в опреде-
ленных состояниях.

Шина имеет два режима передачи. Полная скорость передачи
сигналов USB составляет 12 Мбит/с, низкая - 1,5 Мбит/с. Для
полной скорости используется экранированная витая пара
с импедансом 90 Ом и длиной сегмента до 5 м, для низкой -
невитой неэкранированньгй кабель до 3 м. Низкоскоростные
кабели и устройства дешевле высокоскоростных. Одна и та
же система может одновременно использовать оба режима;

переключение для устройств осуществляется прозрачно.
Низкая скорость предназначена для работы с небольшим
количеством ПУ, не требующих высокой скорости.


Скорость, используемая устройством, подключенным к кон-
кретному порту, определяется хабом по уровням сигналов
на линиях D+ и D-, смещаемых нагрузочными резисторами
R2 приемопередатчиков (см. рис. 7.2 и 7.3).

Сигналы синхронизации кодируются вместе с данными по
методу NRZI (Non Return to Zero Invert), его работу иллюст-
рирует рис. 7.4. Каждому пакету предшествует поле синх-
ронизации SYNC, позволяющее приемнику настроиться на
частоту передатчика.

Кабель также имеет линии VBus и GND для передачи питающего
напряжения 5 В к устройствам. Сечение проводников выби-
рается в соответствии с длиной сегмента для обеспечения га-
рантированного уровня сигнала и питающего напряжения.

72.jpg

Рис. 7.4. Кодирование данных по методу NRZI


Стандарт определяет два типа разъемов (см. табл. 7.1 и
рис. 7.5).

Контакт Цепь Контакт Цепь
1 VBus 3 D+
2 D- 4 GND


Разъемы типа "А" применяются для подключения к хабам
(Upstream Connector). Вилки устанавливаются на кабелях, не
отсоединяемых от устройств (например, клавиатура, мышь
и т. п.). Гнезда устанавливаются на нисходящих портах
(Downstream Port) хабов.

Разъемы типа "В" (Downstream Connector) устанавливаются
на устройствах, от которых соединительный кабель может
отсоединяться (принтеры и сканеры). Ответная часть (вилка)
устанавливается на соединительном кабеле, противополож-
ный конец которого имеет вилку типа "А".

Разъемы типов "А" и "В" различаются механически
(рис. 7.5), что исключает недопустимые петлевые соедине-
ния портов хабов. Четырехконтактные разъемы имеют клю-
чи, исключающие неправильное присоединение. Конструк-
ция разъемов обеспечивает позднее соединение и раннее
отсоединение сигнальных цепей по сравнению с питающи-
ми. Для распознавания разъема USB на корпусе устройства
ставится стандартное символическое обозначение.

73.jpg

Рис. 7.5. Гнезда USB: а - типа "А", б - типа "В",
в - символическое обозначение

Питание устройств USB возможно от кабеля (Bus-Powered
Devices)
или от собственного блока питания (Self-Powered


Devices). Хост обеспечивает питанием непосредственно под-
ключенные к нему ПУ. Каждый хаб, в свою очередь, обеспе-
чивает питание устройств, подключенных к его нисходящим
портам. При некоторых ограничениях топологии допуска-
ется применение хабов, питающихся от шины. На рис. 7.6
приведен пример схемы соединения устройств USB. Здесь
клавиатура, перо и мышь могут питаться от шины.

74.jpg

Модель передачи данных

Каждое устройство USB представляет собой набор незави-
симых конечных точек (Endpoint), с которыми хост-контрол-
лер обменивается информацией. Конечные точки описыва-
ются следующими параметрами:

^ требуемой частотой доступа к шине и допустимыми за-
держками обслуживания;

^ требуемой полосой пропускания канала;

^ номером точки;

^ требованиями к обработке ошибок;

^ максимальными размерами передаваемых и принимаемых
пакетов;


^ типом обмена;

^ направлением обмена (для сплошного и изохронного об-
менов).

Каждое устройство обязательно имеет конечную точку с но-
мером 0, используемую для инициализации, общего управ-
ления и опроса его состояния. Эта точка всегда сконфи-
гурирована при включении питания и подключении
устройства к шине. Оно поддерживает передачи типа "управ-
ление" (см. далее).

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

Каналом {Pipe) в USB называется модель передачи данных
между хост-контроллером и конечной точкой (Endpoint) ус-
тройства. Имеются два типа каналов: потоки (Stream) и со-
общения (Message). Поток доставляет данные от одного конца
канала к другому, он всегда однонаправленный. Один и тот
же номер конечной точки может использоваться для двух
поточных каналов - ввода и вывода. Поток может реализо-
вывать следующие типы обмена: сплошной, изохронный и
прерывания. Доставка всегда идет в порядке "первым во-
шел - первым вышел" (FIFO); с точки зрения USB, данные
потока неструктурированы. Сообщения имеют формат, опре-
деленный спецификацией USB. Хост посылает запрос к ко-
нечной точке, после которого передается (принимается) па-
кет сообщения, за которым следует пакет с информацией
состояния конечной точки. Последующее сообщение нор-
мально не может быть послано до обработки предыдущего,
но при отработке ошибок возможен сброс необслуженных
сообщений. Двухсторонний обмен сообщениями адресуется
к одной и той же конечной точке. Для доставки сообщений
используется только обмен типа "управление".

С каналами связаны характеристики, соответствующие конеч-
ной точке (полоса пропускания, тип сервиса, размер буфера


и т. п.). Каналы организуются при конфигурировании уст-
ройств USB. Для каждого включенного устройства существует
канал сообщений (Control Pipe 0), по которому передается
информация конфигурирования, управления и состояния.

Типы передачи данных

USB поддерживает как однонаправленные, так и двунаправ-
ленные режимы связи. Передача данных производится меж-
ду ПО хоста и конечной точкой устройства. Устройство мо-
жет иметь несколько конечных точек, связь с каждой из них
(канал) устанавливается независимо.

Архитектура USB допускает четыре базовых типа передачи
данных:

^ Управляющие посылки (Control Transfers), используемые для
конфигурирования во время подключения и в процессе
работы для управления устройствами. Протокол обеспе-
чивает гарантированную доставку данных. Длина поля
данных управляющей посылки не превышает 64 байт на
полной скорости и 8 байт на низкой.

^ Сплошные передачи (Bulk Data Transfers) сравнительно
больших пакетов без жестких требований ко времени до-
ставки. Передачи занимают всю свободную полосу про-
пускания шины. Пакеты имеют поле данных разме-
ром 8, 16, 32 или 64 байт. Приоритет этих передач самый
низкий, они могут приостанавливаться при большой за-
грузке шины. Допускаются только на полной скорости
передачи.

йй Прерывания (Interrupt) - короткие (до 64 байт на полной
скорости, до 8 байт на низкой) передачи типа вводимых
символов или координат. Прерывания имеют спонтанный
характер и должны обслуживаться не медленнее, чем того
требует устройство. Предел времени обслуживания уста-
навливается в диапазоне 1-255 мс для полной скорости
и 10-255 мс - для низкой.

^ Изохронные передачи (Isochronous Transfers) - непрерыв-
ные передачи в реальном времени, занимающие предва-
рительно согласованную часть пропускной способности
шины и имеющие заданную задержку доставки. В случае


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

Полоса пропускания шины делится между всеми установ-
ленными каналами. Выделенная полоса закрепляется за ка-
налом, и если установление нового канала требует такой
полосы, которая не вписывается в уже существующее рас-
пределение, запрос на выделение канала отвергается.

Архитектура US В предусматривает внутреннюю буфериза-
цию всех устройств, причем чем большей полосы пропуска-
ния требует устройство, тем больше должен быть его буфер.
USB должна обеспечивать обмен с такой скоростью, чтобы
задержка данных в устройстве, вызванная буферизацией, не
превышала нескольких миллисекунд.

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

Протокол

Все обмены (транзакции) по USB состоят из трех пакетов.
Каждая транзакция планируется и начинается по инициати-
ве контроллера, который посылает пакет-маркер {Token
Packet).
Он описывает тип и направление передачи, адрес ус-
тройства USB и номер конечной точки. В каждой транзак-
ции возможен обмен только между адресуемым устройством
(его конечной точкой) и хостом. Адресуемое маркером уст-
ройство распознает свой адрес и готовится к обмену. Источ-
ник данных (определенный маркером) передает пакет данных
(или уведомление об отсутствии данных, предназначенных для
передачи). После успешного приема пакета приемник данных
посылает пакет подтверждения (Handshake Packet).

Планирование транзакций обеспечивает управление поточ-
ными каналами. На аппаратном уровне использование от-


каза от транзакции (NAck) при недопустимой интенсивнос-
ти передачи предохраняет буферы от переполнения сверху
и снизу. Маркеры отвергнутых транзакций повторно пере-
даются в свободное для шины время. Управление потоками
позволяет гибко планировать обслуживание одновременных
разнородных потоков данных.

Устойчивость к ошибкам обеспечивают следующие свойства
USB:

^ Высокое качество сигналов, достигаемое благодаря диф-
ференциальным приемникам/передатчикам и экраниро-
ванным кабелям.

^ Защита полей управления и данных CRC-кодами.

^ Обнаружение подключения и отключения устройств и
конфигурирование ресурсов на системном уровне.

^ Самовосстановление протокола с тайм-аутом при потере
пакетов.

^ Управление потоком для обеспечения изохронности и
управления аппаратными буферами.

^ Независимость функций от неудачных обменов с други-
ми функциями.

Для обнаружения ошибок передачи каждый пакет имеет кон-
трольные поля CRC-кодов, позволяющие обнаруживать все
одиночные и двойные битовые ошибки. Аппаратные сред-
ства обнаруживают ошибки передачи, а контроллер автома-
тически производит трехкратную попытку передачи. Если
повторы безуспешны, сообщение об ошибке передается кли-
ентскому ПО.

Форматы пакетов

Байты передаются по шине последовательно, начиная с млад-
шего бита. Все посылки организованы в пакеты. Каждый
пакет начинается с поля синхронизации Sync, которое пред-
ставляется последовательностью состояний KJKJKJKK (коди-
рованную по NRZI), следующую после состояния Idle. По-
следние два бита (КК) являются маркером начала пакета SOP,
используемым для идентификации первого бита идентифи-
катора пакета PID. Идентификатор пакета является 4-бит-


ным полем PID[3:0], идентифицирующим тип пакета
(табл. 7.2), за которым в качестве контрольных следуют те
же 4 бита, но инвертированные.

Тип PID Имя PID PID[3:0] Содержимое и назначение
Token OUT 0001 Адрес функции и номер конечной
точки - маркер транзакции функ-
ции
Token IN 1001 Адрес функции и номер конечной
точки - маркер транзакции хоста
Token SOF 0101 Маркер начала кадра
Token SETUP 1101 Адрес функции и номер конечной
точки - маркер транзакции с управ-
ляющей точкой
Data DataO
Datal
0011
1011
Пакеты данных с четным
и нечетным PID чередуются
для точной идентификации под-
тверждений
Handshake Ack 0010 Подтверждение безошибочного
приема пакета
Handshake NAK 1010 Приемник не сумел принять или
передатчик не сумел передать
данные. Может использоваться для
управления потоком данных
(неготовность). В транзакциях пре-
рываний является признаком
отсутствия необслуженных преры-
ваний
Handshake STALL 1110 Конечная точка требует вмеша-
тельства хоста
Special PRE 1100 Преамбула передачи на низкой
скорости


В пакетах-маркерах IN, SETUP и OUT следующими являются
адресные поля: 7-битный адрес функции и 4-битный адрес
конечной точки. Они позволяют адресовать до 127 функций
USB (нулевой адрес используется для конфигурирования)
и по 16 конечных точек в каждой функции.


В пакете SOF имеется 11-битное поле номера кадра (Frame
Number Field),
последовательно (циклически) увеличиваемое
для очередного кадра.

Поле данных может иметь размер от 0 до 1023 целых байт.
Размер поля зависит от типа передачи и согласуется при
установлении канала.

Поле СКС-кола присутствует во всех маркерах и пакетах дан-
ных, оно защищает все поля пакета, исключая PID. CRC для
маркеров (5 бит) и данных (11 бит) подсчитываются по раз-
ным формулам.

Каждая транзакция инициируется хост-контроллером посыл-
кой маркера и завершается пакетом квитирования. После-
довательность пакетов в транзакциях иллюстрирует рис. 7.7.

Хост-контроллер организует обмены с устройствами согласно
своему плану распределения ресурсов. Контроллер цикли-
чески (с периодом 1 мс) формирует кадры (Frames), в кото-
рые укладываются все запланированные транзакции. Каж-
дый кадр начинается с посылки маркера SOF (Start Of Frame),
который является синхронизирующим сигналом для всех
устройств, включая хабы. В конце каждого кадра выделяет-
ся интервал времени EOF (End Of Frame), на время которого
хабы запрещают передачу по направлению к контроллеру.
Каждый кадр имеет свой номер. Хост-контроллер опериру-
ет 32-битным счетчиком, но в маркере SOF передает только
младшие 11 бит. Номер кадра увеличивается (циклически)
во время EOF. Хост планирует загрузку кадров так, чтобы в
них всегда находилось место для транзакций управления и
прерывания. Свободное время кадров может заполняться
сплошными передачами (Bulk Transfers).

75.jpg


76.jpg

Рис. 7.8. Поток кадров USB

Для изохронной передачи важна синхронизация устройств и
контроллера. Есть три варианта:

^ синхронизация внутреннего генератора устройства с мар-
керами SOF;

^ подстройка частоты кадров под частоту устройства;

^ согласование скорости передачи (приема) устройства с
частотой кадров.

Подстройка частоты кадров контроллера возможна, есте-
ственно, под частоту внутренней синхронизации только од-
ного устройства. Подстройка осуществляется через механизм
обратной связи, который позволяет изменять период кадра
в пределах ±1 битового интервала.

7.1.2. Системное конфигурирование

USB поддерживает динамическое подключение и отключе-
ние устройств. Нумерация устройств шины является посто-
янным процессом, отслеживающим изменения физической
топологии.

Все устройства подключаются через порты хабов. Хабы
определяют подключение и отключение устройств к своим
портам и сообщают состояние портов при запросе от кон-
троллера. Хост разрешает работу порта и адресуется к уст-
ройству через канал управления, используя нулевой адрес -
USB Default Address.
При начальном подключении или пос-
ле сброса все устройства адресуются именно так.

Хост определяет, является новое подключенное устройство
хабом или функцией, и назначает ему уникальный адрес USB.
Хост создает канал управления (Control Pipe) с этим устрой-
ством, используя назначенный адрес и нулевой номер точки
назначения.

Если новое устройство является хабом, хост определяет под-
ключенные к нему устройства, назначает им адреса и уста-


навливает каналы. Если новое устройство является функ-
цией, уведомление о подключении передается диспетчером
USB заинтересованному ПО.

Когда устройство отключается, хаб автоматически запреща-
ет соответствующий порт и сообщает об отключении кон-
троллеру, который удаляет сведения о данном устройстве из
всех структур данных. Если отключается хаб, процесс уда-
ления выполняется для всех подключенных к нему устройств.
Если отключается функция, уведомление посылается заин-
тересованному ПО.

Нумерация устройств, подключенных к шине (Bus
Enumeration),
осуществляется динамически по мере их под-
ключения (или включения их питания) без какого-либо вме-
шательства пользователя или клиентского ПО. Процедура
нумерации выполняется следующим образом:

1. Хаб, к которому подключилось устройство, информиру-
ет хост о смене состояния своего порта ответом на опрос
состояния. С этого момента устройство переходит в со-
стояние Attached (подключено), а порт, к которому оно
подключилось, в состояние Disabled.

2. Хост уточняет состояние порта.

3. Узнав порт, к которому подключилось новое устройство,
хост дает команду сброса и разрешения порта.

4. Хаб формирует сигнал Reset для данного порта (10 мс)
и переводит его в состояние Enabled. Подключенное
устройство может потреблять от шины ток питания
до 100 мА. Устройство переходит в состояние Powered (пи-
тание подано), все его регистры переводятся в исходное
состояние, и оно отзывается на обращение по нулевому
адресу.

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

6. Хост сообщает устройству его уникальный адрес, и оно
переводится в состояние Addressed (адресовано).


7. Хост считывает конфигурацию устройства, включая за-
явленный потребляемый ток от шины. Считывание мо-
жет затянуться на несколько кадров.

8. Исходя из полученной информации, хост конфигуриру-
ет все имеющиеся конечные точки данного устройства,
которое переводится в состояние Configured (сконфигу-
рировано). Теперь хаб позволяет устройству потреблять
от шины полный ток, заявленный в конфигурации. Уст-
ройство готово.

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

7.1.3. Устройства USB - функции и хабы

Возможности шины USB позволяют использовать ее для
подключения разнообразных устройств. Не касаясь "полез-
ных" свойств ПУ, остановимся на их интерфейсной части,
связанной с шиной USB. Все устройства должны поддержи-
вать набор общих операций, перечисленных ниже.

Динамическое подключение и отключение. Эти события от-
слеживаются хабом, который сообщает о них хост-контрол-
леру и выполняет сброс подключенного устройства. Устрой-
ство после сигнала сброса должно отзываться на нулевой
адрес, при этом оно не сконфигурировано и не приостанов-
лено. После назначения адреса, за которое отвечает хост-кон-
троллер, устройство должно отзываться только на свой уни-
кальный адрес.

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


Передача данных возможна посредством одного из четырех
типов передач (см. выше). Для конечных точек, допускаю-
щих разные типы передач, после конфигурирования досту-
пен только один из них.

Управление энергопотреблением является весьма развитой
функцией USB. Для устройств, питающихся от шины, мощ-
ность ограничена. Любое устройство при подключении не
должно потреблять от шины ток, превышающий 100 мА.
Рабочий ток (не более 500 мА) заявляется в конфигурации,
и если хаб не сможет обеспечить устройству заявленный ток,
оно не конфигурируется и, следовательно, не может быть
использовано.

Устройство USB должно поддерживать приостановку
(Suspended Mode),
в котором его потребляемый ток не пре-
вышает 500 мкА. Устройство должно автоматически приос-
танавливаться при прекращении активности шины.

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

Хаб в USB выполняет коммутацию сигналов и выдачу пи-
тающего напряжения, а также отслеживает состояние под-
ключенных к нему устройств, уведомляя хост об изменени-
ях. Хаб состоит из двух частей - контроллера (Hub Controller)
и повторителя (Hub Repeater). Повторитель представляет
собой управляемый ключ, соединяющий выходной порт со
входным. Он имеет средства поддержки сброса и приоста-
новки передачи сигналов. Контроллер содержит регистры для
взаимодействия с хостом. Доступ к регистрам осуществля-
ется по специфическим командам обращения к хабу. Коман-
ды позволяют конфигурировать хаб, управлять нисходящи-
ми портами и наблюдать их состояние.

Нисходящие (Downstream) порты хабов могут находиться в
следующих состояниях:

^ Powered (^(питание отключено) - на порт не подается
питание (возможно только для хабов, коммутирующих


питание). Выходные буферы переводятся в высокоимпе-
дансное состояние, входные сигналы игнорируются.

^ Disconnected (отсоединен) - порт не передает сигналы ни
в одном направлении, но способен обнаружить подключе-
ние устройства (по отсутствию состояния SEO в течение
2,5 мкс). Тогда порт переходит в состояние Disabled, а по
уровням входных сигналов {DiffO или Diff1 в состоянии
Idle) он определяет скорость подключенного устройства.

s^ Disabled (запрещен) - порт передает только сигнал сбро-
са (по команде от контроллера), сигналы от порта (кро-
ме обнаружения отключения) не воспринимаются. По
обнаружении отключения (2,5 мкс состояния SEO) порт
переходит в состояние Disconnect, а если отключение об-
наружено "спящим" хабом, контроллеру будет послан
сигнал Resume.

ш Enabled (разрешен) - порт передает сигналы в обоих на-
правлениях. По команде контроллера или по обнаруже-
нии ошибки кадра порт переходит в состояние Disabled,
а по обнаружении отключения - в состояние Disconnect.

^ Suspended (приостановлен) - порт передает сигнал пере-
вода в состояние останова ("спящий" режим). Если хаб
находится в активном состоянии, сигналы через порт не
пропускаются ни в одном направлении. Однако "спящий"
хаб воспринимает сигналы смены состояния незапрещен-
ных портов, подавая "пробуждающие" сигналы от акти-
визировавшегося устройства даже через цепочку "спя-
щих" хабов.

Состояние каждого порта идентифицируется контроллером
хаба с помощью отдельных регистров. Имеется общий ре-
гистр, биты которого отражают факт изменения состояния
каждого порта (фиксируемый во время EOF). Это позволяет
хост-контроллеру быстро узнать состояние хаба, а в случае
обнаружения изменений специальными транзакциями уточ-
нить состояние.

7.1.4. Хост-контроллер

Хост-компьютер общается с устройствами через контроллер.
Хост имеет следующие обязанности:


^ обнаружение подключения и отсоединения устройств
USB;

^ манипулирование потоком управления между устройства-
ми и хостом;

^ управление потоками данных;

^ сбор статистики;

^ обеспечение энергосбережения подключенными ПУ.

Системное ПО контроллера управляет взаимодействием меж-
ду устройствами и их ПО, функционирующим на хост-ком-
пьютере, для согласования:

^ нумерации и конфигурации устройств;

^ изохронных передач данных;

^ асинхронных передач данных;

^ управления энергопотреблением;

^ информации об управлении устройствами и шиной.

По возможности ПО USB использует существующее систем-
ное ПО хост-компьютера - например, Advanced Power
Management для управления энергопотреблением.

7.2. Шина IEEE 1394-FireWire

Стандарт для высокопроизводительной последовательной
шины (High Performance Serial Bus), получивший офици-
альное название IEEE 1394, был принят в 1995 году. Целью
являлось создание шины, не уступающей современным стан-
дартным параллельным шинам, при существенном удешев-
лении и повышении удобства подключения (за счет перехо-
да на последовательный интерфейс). Стандарт основан на
шине FireWire, используемой Apple Computer в качестве де-
шевой альтернативы SCSI в компьютерах Macintosh и
PowerMac. Название FireWire ("огненный провод") теперь
применяется и к реализациям IEEE 1394, оно сосуществует
с кратким обозначением 1394.

Преимущества FireWire перед другими последовательными
шинами:


s? Многофункциональность: шина обеспечивает цифровую
связь до 63 устройств без применения дополнительной
аппаратуры (хабов). Устройства - цифровые камкодеры,
сканеры, принтеры, камеры для видеоконференций, дис-
ковые накопители - могут обмениваться данными не
только с PC, но и между собой. FireWire по инициативе
VESA позиционируется и для "домашних сетей".

^ Высокая скорость обмена и изохронные передачи позво-
ляют даже на начальном уровне (100 Мбит/с) передавать
одновременно два канала видео (30 кадров в секунду)
широковещательного качества и стереоаудиосигнал с ка-
чеством CD.

s§ Низкая цена компонентов и кабеля.

si Легкость установки и использования. FireWire расши-
ряет систему РпР. Устройства автоматически распозна-
ются и конфигурируются при включении/отключении.
Питание от шины (ток до 1,5 А) позволяет ПУ общать-
ся с системой даже при отключении их питания. Управ-
лять шиной и другими устройствами могут не только
PC, но и другие "интеллектуальные" устройства, напри-
мер VCR.

7.2.1. Структура и взаимодействие устройств шины

Стандарт 1394 определяет две категории шин: кабельные
шины и кросс-шины (Backplane). Под кросс-шинами обычно
подразумеваются параллельные интерфейсы, объединяющие
внутренние подсистемы устройства, подключенного к
кабелю 1394.

В отличие от USB, управляемой одним хост-контроллером,
стандарт 1394 допускает соединение равноправных устройств
в сеть. Сеть может состоять из множества шин, соединенных
мостами. В пределах одной шины устройства объединяются
соединительными кабелями без применения дополнительных
устройств. Мосты представляют собой специальные интел-
лектуальные устройства. Интерфейсная карта шины FireWire
для PC представляет собой мост PCI - 1394. Мостами яв-
ляются также соединения кабельной шины 1394 с кросс-
шинами устройств, 16-битная адресация узлов сети допус-


кает до 63 устройств в каждой шине, адресуемых 6-битным
полем идентификатора узла. 10-битное поле идентификато-
ра шины допускает использование в системе до 1023 мос-
тов, соединяющих шины разного типа.

Кабельная шина представляет собой сеть, состоящую из уз-
лов и кабельных мостов. Гибкая топология позволяет стро-
ить сети, сочетающие древовидную и цепочечную ар-
хитектуры (рис. 7.9). Каждый узел обычно имеет три
равноправных соединительных разъема. Допускается мно-
жество вариантов подключения устройств со следующими
ограничениями:

ssi между любой парой узлов может быть не более 16 ка-
бельных сегментов;

^ длина сегмента стандартного кабеля не должна превы-
шать 4,5 м;

2Й суммарная длина кабеля не должна превышать 72 м (при-
менение более качественного кабеля позволяет ослабить
это ограничение).

Некоторые устройства могут иметь только один разъем, что
ограничивает возможные варианты их местоположения.
Стандарт допускает до 27 разъемов на одном устройстве.

77.jpg

Рис. 7.9. Соединение устройств на шине FireWire


78.jpg

Рис. 7.10. Разъем FireWire

Стандарт предусматривает связь узлов с помощью 6-провод-
ного кабеля, заключенного в общий экран. Две витые пары
используются для передачи сигналов (раздельные для при-
емника и передатчика), два провода задействованы для пи-
тания устройств (8-40 В, до 1,5 А). Для гальванической
развязки интерфейса используются трансформаторы (напря-
жение изоляции развязки до 500 В) или конденсаторы (в
дешевых устройствах с напряжением развязки до 60 В от-
носительно общего провода). Представление о разъемах дает
рис. 7.10. Некоторые устройства (камкодеры Sony DCR-
VX700 и DCR-VX1000, а также DHR-1000 DVCR) имеют
только один 4-контактный разъем меньшего размера, у ко-
торого реализованы только сигнальные цепи. Эти устрой-
ства подключаются к шине через специальный переходной
кабель только как оконечные (хотя возможно применение
специальных адаптеров-разветвителей).

Стандарт 1394 определяет три возможные частоты переда-
чи сигналов по кабелям: 98,304, 196,608 и 393,216 Мбит/с,
которые округляют до 100, 200 и 400 Мбит/с. Частоты в
стандарте обозначаются как S100, S200 и S400 соответствен-
но. Бытовые устройства обычно поддерживают S100, боль-
шинство адаптеров допускают S200. К одной шине могут
подключаться устройства, рассчитанные на разные скорос-
ти. Обмен будет происходить на минимальной для всех ак-
тивных узлов скорости. Однако, если хост-контроллер реа-
лизует карту топологии и скоростей (Topology_Мар и
Speed_Map), возможно использование нескольких частот в
одной шине, в соответствии с возможностями конкретной
пары, участвующей в обмене.

Система допускает динамическое (горячее) подключение и
отключение устройств. Идентификаторы подключаемым


устройствам назначаются автоматически, без участия пользо-
вателя. Изменения топологии (состава подключенных уст-
ройств) автоматически отслеживаются шиной и передаются
управляющему ПО.

Протокол IEEE 1394

Протокол 1394 реализуется на трех уровнях (рис. 7.11).

^ Уровень транзакций (Transaction Layer) преобразует па-
кеты в данные, предоставляемые приложениям, и наобо-
рот. Он реализует протокол запросов-ответов, соответству-
ющий стандарту ISO/IEC 13213:1994 (ANSI/IEEE 1212,
редакции 1994 г.), архитектуры регистров управления и
состояния CSR (Control and Status Register) для микро-
компьютерных шин (чтение, запись, блокировка). Это
облегчает связь шины 1394 со стандартными параллель-
ными шинами.

^ Уровень связи (Link Layer) из данных физического уров-
ня формирует пакеты и выполняет обратные преобразо-
вания. Он обеспечивает обмен узлов датаграммами с под-
тверждениями. Уровень отвечает за передачу пакетов и
управление изохронными передачами.

^ Физический уровень (Physical Layer) вырабатывает и при-
нимает сигналы шины. Он обеспечивает инициализацию
и арбитраж, предполагая, что в любой момент времени
работает только один передатчик. Уровень передает по-
токи данных и уровни сигналов последовательной шины
вышестоящему уровню. Между этими уровнями возмож-
на гальваническая развязка, при которой микросхемы
физического уровня питаются от шины. Гальваническая
развязка необходима для предотвращения паразитных
контуров общего провода, которые могут появиться че-
рез провода защитного заземления блоков питания.

Аппаратная часть FireWire обычно состоит из двух специ-
ализированных микросхем - трансиверов физического
уровня PHY Transceiver и моста связи с шиной LINK Chip.
Связь между ними возможна, например, по интерфейсу
IBM-Apple LINK-PHY. Микросхемы уровня связи выпол-
няют все функции своего уровня и часть функций уровня


транзакций, остальная часть уровня транзакций выполня-
ется программно.

79.jpg

Коннекторы

Рис. 7.11. Трехуровневая структура FireWire

Управление шиной

Протокол 1394 имеет гибкий механизм управления связью
между различными устройствами. Для этого не обязательно
присутствие на шине PC или иного контроллера шины.
Управление включает три сервиса:

^ Мастер циклов, посылающий широковещательные паке-
ты начала циклов (требуемые для изохронных обменов).

^ Диспетчер изохронных ресурсов, если какой-либо узел
поддерживает изохронный обмен (для цифрового видео
и аудио).

^ Необязательный контроллер шины (Bus Master) - им мо-
жет являться PC или редактирующий DVCR.


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

Принципиальным преимуществом шины является отсутствие
необходимости в контроллере. Любое передающее устрой-
ство может получить полосу изохронного трафика и начи-
нать передачу по сигналу автономного или дистанционного
управления - приемник "услышит" эту информацию. При
наличии контроллера (PC) соответствующее ПО может
управлять работой устройств, реализуя, например, цифро-
вую студию нелинейного видеомонтажа.

Изохронная транспортировка данных

Изохронная транспортировка шины 1394 обеспечивает гаран-
тированную пропускную способность и ограниченную задерж-
ку при высокоскоростной передаче по множеству каналов.
Диспетчер изохронных ресурсов содержит регистр
BANDWIDTH^AVAILABLE, который определяет доступность
оставшейся части полосы пропускания для узлов с изохрон-
ной передачей. По сбросу вновь появившийся узел с изо-
хронной передачей запрашивает выделение полосы. Для циф-
рового видео, например, требуется полоса 30 Мбит/с
(25 Мбит/с на видеоданные и 3-4 Мбит/с на аудио, син-
хронизацию и заголовки пакетов). Полоса измеряется в спе-
циальных единицах распределения, число которых в 125-мил-
лисекундном цикле составляет 6144. Единица занимает около
20 нс, что соответствует времени, требуемому для передачи
одного квадлета (Quadlet) на частоте 1600 Мбит/с. Квадлет
(32-битное слово) является единицей передачи данных по
шине. 25 мс цикла резервируется под асинхронный трафик,
поэтому начальное значение регистра после сброса состав-
ляет 4915 единиц. В S100 устройства цифрового видео за-
прашивают около 1800 единиц, в S200 - около 900. Если со-
ответствующая полоса недоступна, запрашивающее ее
устройство будет периодически повторять запрос.

Диспетчер изохронных ресурсов каждому изохронному узлу
назначает номер канала (0-63) из числа доступных (регистр


CHANNELS_AVAILABLE). Он является идентификатором изо-
хронного пакета. Когда изохронный обмен становится не-
нужным узлу, он должен освободить свою полосу и номер
канала. Обмен управляющей информацией производится по
асинхронному каналу.

7.2.2. Синонимы и дополнения стандарта IEEE 1394

Шина IEEE 1394 имеет множество псевдонимов:

^ IEEE 1394-1995 Standard for a High Performance Serial
Bus - полное название документа, описывающего стан-
дарт, действующий в настоящее время.

т FireWire - торговая марка реализации IEEE-1394 фир-
мой Apple Computer, Inc.

^ Р1394 - название предварительной версии IEEE-1394
(до принятия в декабре 1995 г.).

^ DigitalLink - торговая марка Sony Corporation, исполь-
зуемая применительно к реализации IEEE-1394 в циф-
ровых камерах.

ш MultiMedia Connection - имя, используемое в логоти-
пе 1394 High Performance Serial Bus Trade Association
(1394TA).

Поскольку фирма Apple разрабатывала концепцию FireWire
еще с 1986 года, имя FireWire является самым распростра-
ненным синонимом IEEE 1394.

Кроме основного стандарта IEEE 1394-1995, имеется несколь-
ко его модификаций:

^ 1394а рассматривается как чистовой документ, заполня-
ющий некоторые пробелы исходного стандарта и имею-
щий небольшие изменения (например, ускоренную опе-
рацию сброса на шине). Продуктам 1394а обеспечена
обратная совместимость с устройствами, выпущенными
до принятия основного стандарта. Версия вводилась для
повышения скорости до 800 Мбит/с и выше, высокоско-
ростные версии входят и в 1394Ь.

^ 1394.1 определяет 4-проводньш соединитель и устанав-
ливает стандарт на шинные мосты.


^ 1394.2 предполагается как стандарт на соединение клас-
тера станций со скоростью обмена 1 Гбит/с и выше, не-
совместимый с
1394. Этот стандарт проистекает из
IEEE 1596 SCI (Scalable Coherent Interface - масштаби-
руемый когерентный интерфейс) для суперкомпьютеров
и иногда называется Serial Express или SCILite. Сигналь-
ный интерфейс 1394.2 похож на FCAL и допускает коль-
цевую топологию,
запрещаемую стандартом 1394.

7.2.3. Сравнение FireWire и USB

Последовательные интерфейсы FireWire и USB, имея общие
черты, являются существенно различными технологиями.
Обе шины обеспечивают простое подключение большого
числа ПУ (127 для USB и 63 для FireWire), допуская ком-
мутации и включение/выключение устройств при работаю-
щей системе. Топология обеих шин достаточно близка. Хабы
USB входят в состав ЦУ; для пользователя их присутствие
незаметно. Обе шины имеют линии питания устройств, но
допустимая мощность для FireWire значительно выше. Обе
шины поддерживают систему РпР (автоматическое конфи-
гурирование при включении/выключении) и снимают про-
блему дефицита адресов, каналов DMA и прерываний. Раз-
личаются пропускная способность и управление шиной.

USB ориентирована на ПУ, подключаемые к PC. Ее изо-
хронные передачи позволяют передавать только цифровые
аудиосигналы. Все передачи управляются централизованно,
и PC является необходимым управляющим узлом, находя-
щимся в корне древовидной структуры шины. Соединение
нескольких PC этой шиной не предусматривается.

FireWire ориентирована на интенсивный обмен между лю-
быми подключенными к ней устройствами. Изохронньш тра-
фик позволяет передавать "живое" видео. Шина не требует
централизованного управления со стороны PC. Возможно
использование шины для объединения нескольких PC и ПУ
в локальную сеть.

Новые устройства цифрового видео и аудио имеют встроен-
ные адаптеры 1394. Подключение к шине FireWire традици-
онных аналоговых и цифровых устройств (плейеров, камер,


мониторов) возможно через адаптеры-преобразователи ин-
терфейсов и сигналов. Стандартные однотипные кабели и
разъемы FireWire заменяют множество разнородных соеди-
нений устройств бытовой электроники с PC. Разнотипные
цифровые сигналы мультиплексируются в одну шину. В от-
личие от сетей Ethernet, высокоскоростные передачи пото-
ков данных по FireWire в реальном времени не требуют до-
полнительных протоколов. Кроме того, имеются средства
арбитража, гарантирующие доступ к шине за заданное вре-
мя. Применение мостов в сетях FireWire позволяет изоли-
ровать трафик групп узлов друг от друга.

7.3. Шина ACCESS.Bus
и интерфейс PC

Последовательная шина ACCESS.Bus (Accessory Bus), разра-
ботанная фирмой DEC, является шиной взаимодействия
компьютера с его аксессуарами - например, монитором (ка-
нал VESA DDC), интеллектуальными источниками питания
(Smart Battery) и т. п. Шина позволяет по двум сигналь-
ным и двум питающим (12 В, 500 мА) проводам подклю-
чить до 14 устройств ввода/вывода, длина шины может до-
стигать 8 м. Аппаратной основой является интерфейс PC,
характеризуемый простотой реализации, но, даже по срав-
нению с USB, низкой производительностью. Над аппарат-
ным протоколом PC для шины ACCESS.Bus имеется базо-
вый программный протокол, с которым взаимодействуют
протоколы конкретных подключенных устройств. Протоко-
лы обеспечивают подключение/отключение устройств без пе-
резагрузки ОС. Назначение сигналов разъема ACCESS.Bus,
предложенное VESA, приведено в табл. 7.3.

Контакт Назначение
1 GND
2 Ключ
3 SDA
4 +5 В (питание устройств)
5 SCL



Интерфейс К, разработанный фирмой Philips, в PC появил-
ся недавно и используется как внутренняя вспомогательная
шина системной платы для общения с энергонезависимой
памятью идентификации установленных компонентов (мо-
дулей памяти DIMM). Шина отличается предельной про-
стотой реализации - две сигнальные линии, с которыми ра-
ботают программно. По прямому назначению эту шину
применяет пока только BIOS при определении аппаратных
средств, но использование перезаписываемой памяти конфи-
гурирования открывает новые возможности для привязки
ПО к конкретной системе (точнее, установленному модулю)
и... для вирусов. Способ программного доступа к шине пока
не стандартизован, но при желании его можно "вычислить",
изучив документацию на чипсет.

710.jpg

Рис. 7.12. Протокол передачи данных PC

Последовательный интерфейс УС обеспечивает двунаправ-
ленную передачу данных между парой устройств, исполь-
зуя два сигнала: данные SDA (Serial Data) и синхронизацию
SCL (Serial Clock). В обмене участвуют два устройства - ве-
дущее (Master)
и ведомое (Slave). Каждое из них может вы-
ступать в роли передатчика, помещающего на линию SDA
информационные биты, или приемника. Протокол обмена
иллюстрирует рис. 7.12. Синхронизацию задает ведущее ус-
тройство - контроллер. Линия данных - двунаправленная с
выходом типа "открытый коллектор" - управляется обоими
устройствами поочередно. Частота обмена (не обязательно
постоянная) ограничена сверху величиной 100 кГц для стан-
дартного режима и 400 кГц для скоростного, что позволяет
организовать программно-управляемую реализацию контрол-
лера интерфейса.

Начало любой операции - условие Start - инициируется
переводом сигнала SDA из высокого в низкий при высоком
уровне SCL. Завершается операция переводом сигнала SDA


из низкого уровня в высокий при высоком уровне SCL -
условие Stop. При передаче данных состояние линии SDA
может изменяться только при низком уровне SCL, биты дан-
ных стробируются положительным перепадом SCL Каждая
посылка состоит из 8 бит данных, формируемых передатчи-
ком (старший бит - MSB - передается первым), после чего
передатчик на один такт освобождает линию данных для
получения подтверждения. Приемник во время девятого так-
та формирует нулевой бит подтверждения Ack. После пере-
дачи бита подтверждения приемник может задержать сле-
дующую посылку, удерживая линию SCL на низком уровне.
Приемник также может замедлить передачу по шине на уров-
не приема каждого бита, удерживая SCL на низком уровне
после его спада, сформированного передатчиком.

Каждое ведомое устройство имеет свой адрес, разрядность ко-
торого по умолчанию составляет 7 бит. Адрес А[6:0] передается
ведущим устройством в битах [7:1] первого байта, бит 0 содер-
жит признак операции Я1У(Я1/У=1 - чтение, RW=Q -запись).
7-битный адрес содержит две части: старшие 4 бита А[6:3] не-
сут информацию о типе устройства (например, для
EEPROM - 1010), а младшие 3 бита А[0:2] определяют номер
устройства данного типа. Многие микросхемы с интерфей-
сом PC имеют три адресных входа, коммутацией которых на
логические уровни 1 и 0 задается требуемый адрес. Некото-
рые значения полного адреса зарезервированы (табл. 7.4).

Общий вызов позволяет включившемуся устройству заявить
о себе широковещательным способом. Байт Start предназна-
чен для привлечения внимания процессора к интерфейсу, если
в устройстве он организован программным (не аппаратным)
способом. До получения этого байта микроконтроллер уст-
ройства не опрашивает состояние и не следит за сигналами
интерфейса. При использовании 10-битной адресации биты
[2:1] содержат старшую часть адреса, а младшие 8 бит будут
переданы в следующем байте, если признак RW=0.

Адрес ведомого устройства и тип обращения задается кон-
троллером при инициировании обмена. Обмен с памятью
иллюстрирует рис. 7.13. Здесь SA[0:2] - адрес устройства,
DA[0:7] - адрес данных, D[0:7] - данные, W - признак за-
писи (0), R - признак чтения (1).


Биты [7:1] BKTO(RW) Назначение
0000 000 0 General call address - адрес общего вызова
0000 000 1 Start. - начало активного обмена
0000 001 X Адрес устройства шины CBUS (для сов-
местимости)
0000 010 X Адрес для устройств иных шин
0000 011 X Зарезервировано
0000 1ХХ X Зарезервировано
1111 1ХХ X Зарезервировано
1111 ОХХ X Признак 10-битной адресации


711.jpg

Рис. 7.13. Обмен с памятью по интерфейсу PC: a - запись,
б - чтение с текущего адреса,
в - чтение с произвольного адреса

Выполнив условие Start, контроллер передает байт, содер-
жащий адрес устройства и признак операции RW, и ожидает
подтверждения. При операции записи следующей посылкой
от контроллера будет 8-битный адрес записываемой ячейки,
а за ней - байт данных (для микросхем объемом памяти бо-
лее 256 байт адрес ячейки посылается двумя байтами). По-
лучив подтверждения, контроллер завершает цикл услови-
ем Stop, а адресованное устройство может начать свой
внутренний цикл записи, во время которого не реагирует на
сигналы интерфейса. Контроллер проверяет готовность уст-
ройства посылкой команды записи (байт адреса устройства)


и анализом бита подтверждения, формируя затем условие
Stop. Если устройство откликнулось битом подтверждения,
значит, оно завершило внутренний цикл и готово к следую-
щей операции.

Операция считывания инициируется так же, как и запись,
но с признаком RW=\. Возможно чтение по заданному адре-
су, по текущему адресу или последовательное. Текущий ад-
рес хранится во внутреннем счетчике ведомого устройства,
он содержит увеличенный на единицу адрес ячейки, участво-
вавшей в последней операции.

Получив команду чтения, устройство дает бит подтвержде-
ния и посылает байт данных, соответствующий текущему
адресу. Контроллер может ответить подтверждением, тогда
устройство пошлет следующий байт (последовательное чте-
ние). Если на принятый байт данных контроллер ответит
условием Stop, операция чтения завершается (случай чтения
по текущему адресу). Начальный адрес для считывания кон-
троллер задает фиктивной операцией записи, в которой пе-
редается байт адреса устройства и байт адреса ячейки, а после
подтверждения приема байта адреса снова формируется ус-
ловие Start и передается адрес устройства, но уже с указа-
нием на операцию чтения. Так реализуется считывание про-
извольной ячейки (или последовательности ячеек).

Интерфейс позволяет контроллеру с помощью пары сигна-
лов обращаться к любому из 8 однотипных устройств, под-
ключенных к данной шине и имеющих уникальный адрес
(рис. 7.14). При необходимости увеличения количества уст-
ройств возможно подключение групп. При этом допустимо
как использование общего сигнала SCL и раздельных сигна-
лов SDA (двунаправленных), так и общего сигнала SDA и
раздельных однонаправленных сигналов SCL. Для обраще-
ния к одной из нескольких микросхем (или устройств), не
имеющих выводов для задания собственного адреса, также
применяют разделение линий SCL (или SDA).

Протокол PC позволяет нескольким контроллерам исполь-
зовать одну шину, определяя коллизии и выполняя арбит-
раж. Эти функции реализуются достаточно просто: если два
передатчика пытаются установить на линии SDA различные


логические уровни сигналов, то "победит" тот, который ус-
тановит низкий уровень. Передатчик следит за уровнями
управляемых им сигналов и при обнаружении несоответствия
(передает высокий уровень, а "видит" низкий) отказывает-
ся от дальнейшей передачи. Устройство может иницииро-
вать обмен только при пассивном состоянии сигналов. Кол-
лизия может возникнуть лишь при одновременной попытке
начала обмена - как только конфликт обнаружен, "проиг-
равший" передатчик отключится, а "победивший" продол-
жит работу.

712.jpg

Рис.7.14. Подключение устройств к контроллеру


Приложение А.
Системотехника
IBM PC-совместимых
компьютеров

Здесь рассмотрено взаимодействие программ с интерфейс-
ными адаптерами. Приведены краткие сведения по архитек-
туре PC. Описаны организация пространств памяти и вво-
да/вывода, система прерываний и прямой доступ к памяти.
Более подробные сведения можно найти в книге "Аппарат-
ные средства IBM PC. Энциклопедия" ("Питер", 1998).

А.1. Пространство памяти

Логическая структура памяти PC обусловлена системой ад-
ресации процессоров семейства х86. Процессоры 8086/88,
применявшиеся в первых моделях IBM PC, имели адресное
пространство 1 Мбайт (20 бит шины адреса). Начиная с про-
цессора 80286 шина адреса была расширена до 24 бит, затем
(386DX, 486, Pentium) до 32 и, наконец, до 36 бит
(Pentium Pro, Pentium II). В реальном режиме процессора,
используемом в DOS, формально доступен лишь 1 Мбайт
памяти. Однако из-за ошибки эмуляции процессора 8086 в
реальном режиме процессоры 80286 и выше имеют макси-
мально доступный адрес lOFFEFh, что на (64К-16) байт
больше. Область lOOOOOh-lOFFEFh называется высокой па-
мятью - High Memory Area
(HMA). В нее помещают часть
ОС реального режима и небольшие резидентные програм-
мы. Для полной совместимости с процессором 8086/88 име-
ется вентиль линии А20 шины адреса - GateA20, который
либо пропускает сигнал от процессора, либо принудительно
обнуляет линию А20 системной шины адреса.