
- •7.1. Шина usb
- •7.1.1. Структура usb
- •7.1.2. Системное конфигурирование
- •7.1.3. Устройства usb - функции и хабы
- •7.1.4. Хост-контроллер
- •7.2. Шина ieee 1394-FireWire
- •7.2.1. Структура и взаимодействие устройств шины
- •7.2.2. Синонимы и дополнения стандарта ieee 1394
- •7.2.3. Сравнение FireWire и usb
- •7.3. Шина access.Bus и интерфейс pc
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 при определении аппаратных средств, но использование перезаписываемой памяти конфи- гурирования открывает новые возможности для привязки ПО к конкретной системе (точнее, установленному модулю) и... для вирусов. Способ программного доступа к шине пока не стандартизован, но при желании его можно "вычислить", изучив документацию на чипсет.
Рис. 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-битной адресации |
Рис. 7.13. Обмен с памятью по интерфейсу PC: a - запись, б - чтение с текущего адреса, в - чтение с произвольного адреса
Выполнив условие Start, контроллер передает байт, содер- жащий адрес устройства и признак операции RW, и ожидает подтверждения. При операции записи следующей посылкой от контроллера будет 8-битный адрес записываемой ячейки, а за ней - байт данных (для микросхем объемом памяти бо- лее 256 байт адрес ячейки посылается двумя байтами). По- лучив подтверждения, контроллер завершает цикл услови- ем Stop, а адресованное устройство может начать свой внутренний цикл записи, во время которого не реагирует на сигналы интерфейса. Контроллер проверяет готовность уст- ройства посылкой команды записи (байт адреса устройства)
и анализом бита подтверждения, формируя затем условие Stop. Если устройство откликнулось битом подтверждения, значит, оно завершило внутренний цикл и готово к следую- щей операции.
Операция считывания инициируется так же, как и запись, но с признаком RW=\. Возможно чтение по заданному адре- су, по текущему адресу или последовательное. Текущий ад- рес хранится во внутреннем счетчике ведомого устройства, он содержит увеличенный на единицу адрес ячейки, участво- вавшей в последней операции.
Получив команду чтения, устройство дает бит подтвержде- ния и посылает байт данных, соответствующий текущему адресу. Контроллер может ответить подтверждением, тогда устройство пошлет следующий байт (последовательное чте- ние). Если на принятый байт данных контроллер ответит условием Stop, операция чтения завершается (случай чтения по текущему адресу). Начальный адрес для считывания кон- троллер задает фиктивной операцией записи, в которой пе- редается байт адреса устройства и байт адреса ячейки, а после подтверждения приема байта адреса снова формируется ус- ловие Start и передается адрес устройства, но уже с указа- нием на операцию чтения. Так реализуется считывание про- извольной ячейки (или последовательности ячеек).
Интерфейс позволяет контроллеру с помощью пары сигна- лов обращаться к любому из 8 однотипных устройств, под- ключенных к данной шине и имеющих уникальный адрес (рис. 7.14). При необходимости увеличения количества уст- ройств возможно подключение групп. При этом допустимо как использование общего сигнала SCL и раздельных сигна- лов SDA (двунаправленных), так и общего сигнала SDA и раздельных однонаправленных сигналов SCL. Для обраще- ния к одной из нескольких микросхем (или устройств), не имеющих выводов для задания собственного адреса, также применяют разделение линий SCL (или SDA).
Протокол PC позволяет нескольким контроллерам исполь- зовать одну шину, определяя коллизии и выполняя арбит- раж. Эти функции реализуются достаточно просто: если два передатчика пытаются установить на линии SDA различные
логические уровни сигналов, то "победит" тот, который ус- тановит низкий уровень. Передатчик следит за уровнями управляемых им сигналов и при обнаружении несоответствия (передает высокий уровень, а "видит" низкий) отказывает- ся от дальнейшей передачи. Устройство может иницииро- вать обмен только при пассивном состоянии сигналов. Кол- лизия может возникнуть лишь при одновременной попытке начала обмена - как только конфликт обнаружен, "проиг- равший" передатчик отключится, а "победивший" продол- жит работу.
Рис.7.14. Подключение устройств к контроллеру ^С