В начале 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