, помещая на шину LAD[3:0]
поле START
. По сигналу LFRAME#
все ПУ должны прекратить управление шиной LAD[3:0]
, а по коду поля START
они должны декодировать последующие события как цикл шины. В следующем такте хост снимет сигнал LFRAME#
и поместит на шину LAD[3:0]
код типа цикла CYCTYPE
. Сигнал LFRAME#
может длиться и более одного такта, но признаком начала цикла (поля START
) является последний такт перед снятием сигнала. С помощью сигнала LFRAME#
хост может принудительно прервать цикл (например, по ошибке тайм-аута), выставив соответствующий код.Рис. 6.15. Протокол LPC
В поле
START
возможны следующие коды:♦ 0000 — начало цикла обращения хоста к устройству;
♦ 0010 — предоставление доступа ведущему устройству 0;
♦ 0011 — предоставление доступа ведущему устройству 1;
♦ 1111 — принудительное завершение цикла (abort).
Остальные коды зарезервированы.
Поле
CYCTYPE
задает тип и направление передачи. Бит 0 задает направление (0 — чтение, 1 — запись), биты [2:1] — тип обращения (00 — порт, 01 — память, 10 — DMA, 11 — резерв), бит 3 — резерв (0).Поле
TAR
(Turn-Around) служит для смены «владельца» шины LAD[3:0]
, оно занимает 2 такта. В первом такте прежний владелец помещает код 1111, во втором переводит буферы в третье состояние.Поле
ADDR
служит для передачи адреса. В цикле памяти оно занимает 8 тактов (32 бита), в цикле ввода-вывода — 4 такта. Передача адреса начинается со старших битов (чтобы раньше срабатывал дешифратор адреса).В поле
DATA
передаются данные. На каждый байт требуется 2 такта, передача начинается с младшей тетрады. Многобайтные передачи начинаются с младшего байта.Поле
SYNC
служит для введения тактов ожидания устройством, к которому выполняется обращение. Оно может содержать следующие коды (остальные зарезервированы):♦ 0000 — готовность (без ошибок), для DMA означает снятие запроса для данного канала;
♦ 0101 — короткое ожидание (несколько тактов);
♦ 0110 — длинное ожидание;
♦ 1001 — готовность и присутствие запроса для канала DMA (для других типов обращения недопустимо);
♦ 1010 — ошибка: данные переданы, но возникли условия, при которых на шинах PCI или ISA выработался бы сигнал
SERR#
или IOCHK#
(для DMA также означает снятие сигнала запроса).Поле синхронизации обеспечивает контроль передачи, введение тактов ожидания и механизм тайм-аутов. Начав цикл, хост читает поле синхронизации. Если в течение трех тактов адресованное устройство не ответит, хост считает, что его нет на шине, и прекращает транзакцию. Если приходит код короткого ожидания, хост дожидается его смены на готовность или ошибку, но после 8 тактов ожидания он прервет транзакцию по тайм-ауту. Код длинного ожидания может приходить сколь угодно долго, ответственность за отсутствие зависания ложится на адресованное устройство. При прямом управлении поле
SYNC
выставляется хостом, и устройство должно терпеливо ожидать готовности, без каких-либо тайм-аутов. В самом быстром варианте (без тактов ожидания) поле SYNC
занимает один такт.На рис. 6.16 приведена последовательность полей при обращениях хоста к памяти или портам (серым цветом помечены поля, вводимые устройством). Во всех этих обращениях передается по одному байту. Для чтения памяти, предполагая 5 тактов поля
SYNC
(время доступа к EPROM 120 нс), требуется 21 такт (0,63 мкс), что обеспечивает скорость чтения памяти 1,59 Мбайт/с. Если память конвейеризирована, то последующие обращения будут быстрее. Для записи в память поле SYNC
займет 1 такт, а весь цикл — 17 тактов (0,51 мкс), что дает скорость записи 1,96 Мбайт/с. Обращения к портам за счет более короткой адресации и без тактов ожидания (1 такт SYNC) занимают по 13 тактов (0,39 мкс), что дает скорость 2,56 Мбайт/с для чтения и записи.Рис. 6.16. Обращения к памяти и портам: а — чтение, б — запись
Для организации обмена по DMA и прямого управления хост должен иметь по одной входной линии
LDRQ#
для каждого подключенного устройства, использующего эти функции. По этой линии устройство передает состояние запросов каналов DMA в последовательном коде, как показано на рис. 6.17. Посылка начинается со старт-бита, за которой следуют код номера канала и бит запроса ACT: 1 (высокий уровень) — запрос активен, 0 — пассивен. Номер канала 4 (код 100) зарезервирован для прямого управления (он соответствует традиционно недоступному каналу DMA). Посылка передается при каждой смене состояния запросов. Нормально таким способом передается лишь запрос, а снятие его сигнализируется полем SYNC
.Рис. 6.17. Посылка запроса DMA или прямого управления
Передача данных DMA (рис. 6.18) выполняется под управлением хоста, но несколько отличается от обычных обращений к портам и памяти. Здесь появляются новые поля:
♦ поле
SIZE
определяет размер передачи: 0000 — 1 байт, 0001 — 2 байта, 0011 — 4 байта, остальные значения зарезервированы;♦ поле
CHANNEL
служит для передачи хостом номера канала DMA (биты [2;0]) и признака конца цикла (TC, бит 3).Рис. 6.18. Обращения DMA: а — чтение памяти, б — запись в память
Циклы чтения памяти, в зависимости от длины обращения (1, 2 или 4 байта), без тактов ожидания (они скрыты контроллером DMA) занимают 11, 18 и 32 тактов (0,33, 0,54 или 0,96 мкс), что обеспечивает производительность 3,03, 3,70 или 4,17 Мбайт/с соответственно. Циклы записи занимают 11,14 или 20 тактов (0,33, 0,42 или 0,60 мкс), что обеспечивает производительность 3,03, 4,76 или 6,67 Мбайт/с. На рисунке выделены рамкой последовательности полей, повторяющиеся при передаче 2 и 4 байтов.
Прямое управление шиной ведущее устройство запрашивает так же, как и прямой доступ, но указывая зарезервированный номер канала 4 (100). Предоставляя управление, хост в поле
START
задает номер мастера, который позже определит тип цикла (рис. 6.19). Прямое управление подразумевает обращение к ресурсам хоста (системной памяти, устройству PCI). Данные в 2- и 4-байтных передачах следуют друг за другом без зазора, но в циклах чтения памяти и портов всегда будут такты ожидания, поскольку потребуется время на арбитраж шины PCI или доступ к контроллеру памяти. Из расчета 6 тактов (меньше — вряд ли, возможно и больше) поля SYNC
, циклы обращения к памяти (и чтения, и записи) потребуют 25, 27 или 31 такт (0,75, 0,81 или 0,93 мкс), что обеспечивает производительность 1,33, 2,47 или 4,30 Мбайт/с. За счет более короткой адресации обращение к портам быстрее — 21, 23 или 27 тактов (0,63, 0,69 или 0,81 мкс), что обеспечивает производительность 1,59, 2,90 или 4,94 Мбайт/с.Рис. 6.19. Обращения периферийного устройства (Bus Master): а — чтение памяти или порта, б — запись в память (порт)
Электрический интерфейс для сигналов
LAD[3:0]
, LFRAME#
, LDRQ#
и SERIRQ
соответствует спецификации PCI 2.1 для питания 3,3 В. Остальные сигналы в зависимости от системной платы могут быть с уровнями как 5 В, так и 3,3 В.Конфигурирование устройств LPC не предусматривает использования протоколов PCI или ISA PnP, поскольку все устройства LPC априорно известны системной BIOS. Для обращения к устройствам LPC хост должен декодировать их адреса и направлять обращения по ним на контроллер LPC.
6.5. Шины и карты расширения блокнотных ПК
Портативные и блокнотные ПК поначалу строились безо всяких попыток унификации и обеспечения взаимозаменяемости компонентов, но со временем ситуация изменилась. Сейчас существуют несколько основных интерфейсов и конструктивов для устройств расширения, наиболее популярные приведены в табл. 6.17.
Таблица 6.17. Конструктивы и интерфейсы периферии портативных ПК
PC Card Small PC Card Длина 85,6 45,0 Ширина 54,0 42,8 Высота 3,3/5,0/10,5 3,3/5,0/10,5 Коннектор Штырьковый Штырьковый Число контактов 68 68 Интерфейсы Память, ввод-вывод, CardBus Память, ввод-вывод
Первый стандарт на карты расширения назывался PCMCIA. Впоследствии он был переименован в PC Card. Кроме слотов шин расширения блокнотные (и карманные) ПК могут иметь и слоты для подключения карт-носителей информации (см. п. 9.3).
Настольный ПК можно снабдить слотами PC Card с помощью специальной карты адаптера-моста, устанавливаемой в слот PCI или ISA. Сами слоты (1–2 штуки) оформляются в корпус 3" и выводятся на лицевую панель ПК; этот корпус соединяется с картой расширения ленточным кабелем-шлейфом.
6.5.1. Интерфейсы PCMCIA, PC Card и CardBus
В начале 90-х годов организация PCMCIA (Personal Computer Memory Card International Association — международная ассоциация производителей карт памяти для персональных компьютеров) начала работы по стандартизации шин расширения блокнотных компьютеров, в первую очередь предназначенных для расширения памяти. Первым появился стандарт PCMCIA Standard Release 1.0/JEIDA 4.0 (июнь 1990 г.), в котором был описан 68-контактный интерфейс и два типоразмера карт: Туре I и Туре II PC Card. Поначалу стандарт касался электрических и физических требований только для карт памяти. Был введен метаформат информационной структуры карты CIS (Card Information Structure), в которой описываются характеристики и возможности карты, — ключевой элемент взаимозаменяемости карт и обеспечения механизма PnP.
Следующая версия PCMCIA 2.0 (1991 г.) для того же разъема определила интерфейс операций ввода-вывода, двойное питание для карт памяти, а также методики тестирования. В версии 2.01 была добавлена спецификация PC CardATA, новый типоразмер Туре III, спецификация автоиндексируемой массовой памяти AIMS (Auto-Indexing Mass Storage) и начальный вариант сервисной спецификации (Card Services Specification). В версии 2.1 (1994 г.) расширили спецификации сервисов карт и сокетов (Card and Socket Services Specification) и развили структуру CIS.
Стандарт PC Card (1995 г.) явился продолжением предыдущих; в нем введены дополнительные требования для улучшения совместимости и новые возможности: питание 3,3 В, поддержка DMA и 32-битного режима прямого управления шиной CardBus.
В дальнейшем в стандарт были введены и другие дополнительные возможности.
Все карты PCMCIA и PC Card имеют 68-контактный разъем, назначение контактов у которого варьируется в зависимости от типа интерфейса карты. Тип интерфейса «заказывается» картой при установке ее в слот, который, естественно, должен поддерживать требуемый интерфейс. Интерфейс памяти обеспечивает 8- и 16-битные обращения с минимальным временем цикла 100 нс, что дает максимальную производительность 10 и 20 Мбайт/с соответственно. Интерфейс ввода-вывода имеет минимальную длительность цикла 255 нс, что соответствует 3,92/7,84 Мбайт/с для 8-/16-битных обращений. Интерфейс CardBus поддерживает практически такой же протокол обмена, что и PCI, но с некоторыми упрощениями. Тактовая частота 33 МГц и разрядность 32 бита обеспечивают пиковую пропускную способность в пакетном цикле до 132 Мбайт/с, картам предоставляется возможность прямого управления шиной (bus mastering). Здесь используется та же система автоматического конфигурирования, что и в PCI (через регистры конфигурационного пространства). В интерфейс заложены дополнительные возможности для цифровой передачи аудиосигнала, причем как в традиционной форме ИКМ, так и в новой (забытой старой) форме ШИМ (PWM).
Для дисковых устройств ATA в формате PC Card имеется специальная спецификация интерфейса (см. п. 9.2.1).
Различают 4 типа PC Card: у них у всех размер в плане 54×85,5 мм, но разная толщина (меньшие адаптеры встают в большие гнезда):
♦ PC Card Type I — 3,3 мм — карты памяти;
♦ PC Card Type II — 5 мм — карты устройств ввода-вывода, модемы, адаптеры локальных сетей;
♦ PC Card Type III — 10,5 мм — дисковые устройства хранения;
♦ PC Card Type IV — 16 мм (упоминания об этом типе на сайте www.pc-card.com найти не удалось).
Есть еще и маленькие карты Small PC Card размером 45×42,8 мм с тем же коннектором и теми же типами по толщине.
Для карт памяти (динамической, статической, постоянной и флэш-памяти) ассоциация PCMCIA поддерживает и стандарт Miniature Card (см. п. 9.3.4).
Назначение контактов разъемов для разных типов интерфейса приведено в табл. 6.18, назначение сигналов для интерфейсов карт памяти и ввода-вывода — в табл. 6.19. Для карт CardBus обозначение сигналов начинается с префикса «С», за которым следует имя сигнала, принятое для шины PCI (см. п. 6.2.2).
Таблица 6.18. Разъём PC Card
№ Тип интерфейса № Тип интерфейса 16 бит 32 бита 16 бит 32 бита Mem I/O+Mem CardBus Mem I/O+Mem CardBus 1 GND GND GND 35 GND GND GND 2 D3 D3 CAD0 36 CD1# CD1# CCD1# 3 D4 D4 CAD1 37 D11 D11 CAD2 4 D5 D5 CAD3 38 D12 D12 CAD4 5 D6 D6 CAD5 39 D13 D13 CAD6 6 D7 D7 CAD7 40 D14 D14 Резерв 7 СЕ1# CE1# CCBE0# 41 D15 D15 CAD8 8 А10 A10 CAD9 42 CE2# CE2# CAD10 9 ОЕ# OE# CAD11 43 VS1# VS1# CVS1 10 А11 A11 CAD12 44 Резерв IORD# CAD13 11 А9 A9 CAD14 45 Резерв IOWR# CAD15 12 А8 A8 CCBE1# 46 A17 A17 CAD16 13 А13 A13 CPAR 47 A18 A18 Резерв 14 А14 A14 CPERR# 48 A19 A19 CBLOCK# 15 WE# WE# CGNT# 49 A20 A20 CSTOP# 16 READY IREQ# CINT# 50 A21 A21 CDEVSEL# 17 Vcc Vcc Vcc 51 Vcc Vcc Vcc 18 Vpp1 Vpp1 Vpp1 52 Vpp2 Vpp2 Vpp2 19 A16 A16 CCLK 53 A22 A22 CTRDY# 20 A15 A15 CIRDY# 54 A23 A23 CFRAME# 21 A12 A12 CCBE2# 55 A24 A24 CAD17 22 A7 A7 CAD 18 56 A25 A25 CAD19 23 A6 A6 CAD20 57 VS2# VS2# CVS2 24 A5 A5 CAD21 58 RESET RESET CRST# 25 A4 A4 CAD22 59 WAIT# WAIT# CSERR# 26 A3 A3 CAD23 60 Резерв INPACK# CREQ# 27 A2 A2 CAD24 61 REG# REG# CCBE3# 28 A1 A1 CAD25 62 BVD2 SPKR# CAUDIO 29 А0 А0 CAD26 63 BVD1 STSCHG# CSTSCHG 30 D0 D0 CAD27 64 D8 D8 CAD28 31 D1 D1 CAD29 65 D9 D9 CAD30 32 D2 D2 Резерв 66 D10 D10 CAD31 33 WP IOIS16# CCLKRUN# 67 CD2# CD2# CCD2# 34 GND GND GND 68 GND GND GND
Таблица 6.19. Назначение сигналов карт памяти и ввода-вывода
Сигнал I/O Назначение А[10:0] I Линии шины адреса BVD1, BVD2 I/O Battery Volt Detection — идентификаторы батарейного питания STSCHG# I/O (IO) Сигнализация хосту о смене состояния RDY/BSY# и Write Protect. Использование этого сигнала контролируется регистром управления и состояния карты Card Config and Status Register (IO) SPKR# O (IO) Дискретный аудиовыход (на динамик) CD1#, CD2# O Card Detect — сигналы обнаружения (заземлены на карте), по которым хост определяет, что карта полностью вставлена в слот СЕ1#, СЕ2# I (IO, Mem) Card Enable — выбор (разрешение) карты и определение разрядности передачи. Сигнал СЕ2# всегда относится к нечетному байту, СЕ1 # — к четному или нечетному, в зависимости от А0 и СЕ2#. С помощью этих сигналов 8-битный хост может обмениваться с 16-битными картами по линиям D[7:0] D[15:0] I/O Шина данных (у 8-битных сигналы D[15:8] отсутствуют) INPACK# O (IO) Input Acknowledge — подтверждение ввода, ответ карты на сигнал IORD# (по этому сигналу хост открывает свои буферы данных) IORD# I Строб команды чтения портов IOWR# I Строб команды записи портов (данные должны фиксироваться по положительному перепаду) OE# I Чтение данных из памяти, конфигурационных регистров и CIS RDY/BSY# I Готовность карты к обмену данными (при высоком уровне) IREQ# O Запрос прерывания (низким уровнем) INTRQ O Запрос прерывания (высоким уровнем) REG# I Выбор памяти атрибутов (Mem). Для карт IO сигнал должен быть активен в циклах команд ввода-вывода. В режиме IDE пассивен (соединен с Vcc на стороне хоста) RESET I Сброс (высоким уровнем) VS1#, VS2# O Voltage Sense — сигналы определения номинала питания. Заземленный сигнал VS1# означает способность чтения карты при питании 3,3 В WAIT# O Запрос (низким уровнем) на продление цикла обращения WE# I Строб записи в память и конфигурационные регистры (в IDE не используется, соединяется хостом с Vcc) WP O Write Protect — защита от записи (для карт памяти), запись в память возможна при низком уровне IOCS16# O Разрешение 16-битного обмена
Интерфейс карт памяти и ввода-вывода прост — он практически совпадает с интерфейсом статической асинхронной памяти. Карта выбирается сигналами
СЕ#
, действующими одновременно с установленным адресом. Чтение памяти и конфигурационных регистров выполняется по сигналу ОЕ#
, запись — по сигналу WE#
. Признаком, разделяющим в этих обращениях основную память и конфигурационные регистры, принадлежащие области памяти атрибутов карты, является сигнал REG#
, действующий одновременно с СЕ#
и адресом. Для обращения к портам ввода-вывода служат отдельные сигналы IORD#
и IOWR#
; во время их действия должен быть активен и сигнал REG#
. В процессе обращения к портам карта может выдать признак возможности 16-битных обращений сигналом IOSC16#
(как на шине ISA). Чтение порта устройство должно подтверждать сигналом INPACK#
, устанавливаемым и снимаемым картой по сигналу СЕ#
. Благодаря этому сигналу хост может убедиться в том, что он читает не пустой слот.Слоты PC Card могут предоставлять возможность прямого доступа к памяти (DMA). Реализация DMA — самый дешевый способ разгрузки процессора, но такая реализация имеется не на всех хостах, а только на простых, основанных на шине ISA. Для систем с шиной PCI более естественно прямое управление шиной CardBus, правда, для карт реализация прямого управления обходится не дешево.
Для мультимедийных карт имеется возможность переключения интерфейса в специальный режим ZVPort (Zoomed Video), в котором организуется отдельный двухточечный интерфейс передачи данных между картой и хост-системой. По смыслу интерфейс напоминает коннектор VFC графических карт — выделенная шина для передачи видеоданных, не связанная с остальными шинами (и не загружающая их), но имеет иной протокол. В режиме ZV Port адресные линии
А[25:4]
, а также линии BVD2/SPKR#
, INPACK#
и I0IS16#
получают иное назначение — по ним передаются видеоданные и 4 цифровых аудиоканала. Для обычного интерфейса остаются лишь 4 адресные линии, позволяющие адресоваться к 16 байтам общей памяти и атрибутов карты.Интерфейс порта ZV соответствует временным диаграммам CCIR601, что позволяет декодеру NTSC в реальном времени доставлять видеоданные с карты в экранный буфер VGA. Видеоданные могут поступать на карту как с внешнего видеовхода, так и с декодера MPEG.
Карты имеют специальное выделенное пространство памяти атрибутов, в котором находятся конфигурационные и управляющие регистры карты, предназначенные для автоконфигурирования. Стандартом описан формат информационной структуры карты (Card Information Structure, CIS). Карты могут быть многофункциональными (например, комбинация модема и сетевого адаптера). В спецификации MFPC (Multiple Function PC Cards) для каждой функции предусматриваются отдельные конфигурационные регистры и определяются правила разделения (совместного использования) линии запроса прерывания.
Для устройств внешней памяти стандарт описывает форматы хранения данных, совместимые с FAT MS-DOS, а также ориентированные на флэш-память как основной носитель информации. Для непосредственного исполнения модулей ПО, хранящихся в ПЗУ карты, имеется спецификация XIP (eXecute In Place), описывающая программный интерфейс вызова этих модулей (вместо загрузки ПО в ОЗУ).
Стандарт описывает программный интерфейс сервисов карт (Card Services), обеспечивающий унификацию взаимодействия его клиентов (драйверов, прикладного ПО и утилит) с устройствами. Имеется также и интерфейс сервисов сокета (Socket Services), с помощью которого выполняются операции, связанные с обнаружением фактов подключения-отключения карт, их идентификации, конфигурирования питания и аппаратного интерфейса.
В стандарте имеются описания специфических особенностей, свойственных двум организациям, ведущим стандарт PC Card.
♦ PCMCIA описывает автоиндексируемую массовую память (AIMS) для хранения больших массивов данных (изображений, мультимедийных данных) на блочно-ориентированных устройствах. Имеется также спецификация 15-контактного экранированного разъема для подключения модемов и адаптеров локальной сети (15-pin Shielded Modem I/O connector) и 7-контактного для подключения модемов (7-pin Modem I/O connector).
♦ JEDIA для карт памяти предлагает формат файлов Small Block Flash Format, упрощающий файловую систему. Формат SISRIF (Still Image, Sound and Related Information Format) предназначен для записи изображений и звука на карты памяти. Имеется и спецификация для карт динамической памяти.
Большинство адаптеров выпускается с поддержкой технологии PnP и предусматривает «горячее» подключение — интерфейсные карты могут вставляться и выниматься без выключения компьютера. Для этого контакты шин питания имеют большую длину, чем сигнальные, обеспечивая их упреждающее подключение и запаздывающее отключение. Два контакта обнаружения карты
CD1#
и CD2#
(Card Detect) короче остальных — их замыкание для хоста означает, что карта полностью вставлена в слот. Несмотря на возможность динамического конфигурирования, в некоторых случаях при изменении конфигурации требуется перезагрузка системы.Первоначально карты и хост-системы использовали напряжение питания логики +5 В. Для перехода на низковольтное питание (3,3 В) был введен механический ключ, не допускающий установки карты на 3,3 В в слот, дающий только 5 В. Кроме того, были определены контакты 43 (
VS1#
) и 57 (VS2#
) для выбора питающего напряжения. На картах с питанием 5 В они оба свободны; на картах 3,3 В контакт VS1#
заземлен, a VS2#
свободен. По этим линиям хост, допускающий оба варианта напряжения питания, определяет потребности установленной карты и подает соответствующее напряжение. Если хост не способен обеспечить требуемый номинал, он должен не подавать питание, а выдать сообщение об ошибке подключения. Карты обычно поддерживают управление энергопотреблением (АРМ), что особо актуально при автономном питании компьютера.В стандарте PC Card выпускают самые разнообразные устройства — память, устройства хранения, коммуникационные средства, интерфейсные порты, игровые адаптеры, мультимедийные устройства и т. п., правда, все они существенно дороже своих крупногабаритных аналогов. Через слот PC Card портативные компьютеры могут подключаться к док-станциям, в которые может быть установлена обычная периферия. Недостаточно строгое следование производителей стандарту иногда приводит к проблемам совместимости.
Слоты PC Card подключаются к системной шине блокнотного ПК через мост; для компьютеров с внутренней шиной PCI это будет мост PCI-PC Card. В блокнотных ПК могут быть и слоты Small PCI (SPCI, см. п. 6.2.9), но они недоступны без вскрытия корпуса и не допускают «горячей» замены устройств.
Глава 7