Для шины PCI принята иерархия понятий адресации: шина, устройство, функция. Эти понятия фигурируют только при обращении к регистрам конфигурационного пространства (см. п. 6.2.12). К этим регистрам обращаются на этапе конфигурирования — переучета обнаруженных устройств, выделения им непересекающихся ресурсов (областей памяти и пространства ввода-вывода) и назначения номеров аппаратных прерываний. При дальнейшей регулярной работе устройства будут отзываться на обращения по назначенным им адресам памяти и ввода-вывода, доведенным до сведения связанных с ними модулей ПО. Эти адреса принимаются с шины AD в начале каждой транзакции. Для доступа к конфигурационному пространству используются отдельные линии IDSEL
Устройством PCI называется микросхема или карта расширения, подключенная к одной из шин PCI и использующая для идентификации выделенную ей линию IDSEL, принадлежащую этой шине. Устройство может быть многофункциональным, то есть состоять из множества (от 1 до 8) так называемых функций. Каждой функции отводится конфигурационное пространство в 256 байт (см. п. 6.2.12). Многофункциональные устройства должны отзываться только на конфигурационные циклы с номерами функций, для которых имеется конфигурационное пространство. При этом функция с номером 0 должна быть обязательно, номера остальных функций назначаются разработчиком устройства произвольно (в диапазоне 1-7). Простые (однофункциональные) устройства, в зависимости от реализации, могут отзываться либо на любой номер функции, либо только на номер функции 0.
Шина PCI — набор сигнальных линий (см. п. 6.2.2), непосредственно соединяющих интерфейсные выводы группы устройств (слотов, микросхем на системной плате). В системе может присутствовать несколько шин PCI, соединенных мостами PCI (см. п. 6,2.10). Мосты электрически отделяют интерфейсные сигналы одной шины от другой, соединяя их логически; главный мост соединяет главную шину с ядром системы (процессором и памятью). Каждая шина имеет свой номер шины (PCI bus number).
Шины нумеруются последовательно; главная шина имеет нулевой номер.
С точки зрения конфигурирования, минимальной адресуемой единицей этой иерархии является функция; ее полный адрес состоит из трех частей: номера шины, номера устройства и номера функции. Короткая форма идентификации вида РСЮ:1:2 (например, в сообщениях ОС Unix) означает функцию 2 устройства 1, подключенного к главной (0) шине PCI.
6.2. Шина PCI______________________________________________________ 177
В шине PCI принята географическая адресация — номер устройства определяется местом его подключения. Номер устройства (device number или dev) определяется той линией шины AD, к которой подключена линия сигнала IDSEL данного слота: kADU -devO(MOCT),AD12-devl,...AD31 -dev20. В соседних слотах PCI, как правило, задействуются соседние номера устройств; их нумерация определяется разработчиком системной платы (или пассивной кросс-платы в промышленных компьютерах). Часто для слотов используются убывающие номера устройств, начиная с 20. Группы соседних слотов могут подключаться к разным шинам; на каждой шине PCI нумерация устройств независимая (могут быть и устройства с совпадающими номерами dev, но разными номерами шин). Устройства PCI, интегрированные в системную плату, используют ту же систему адресации. Их номера «запаяны намертво», в то время как адреса карт расширения можно изменять перестановкой их в разные слоты. Одна карта PCI может содержать только одно устройство шины, к которой она подключается, поскольку ей в слоте выделяется только одна линия IDSEL Если на карте размещают несколько устройств (например, 4-портовая карта Ethernet), то на ней приходится устанавливать мост — тоже устройство PCI, к которому и обращаются по линии IDSEL, выделенной данной карте. Этот мост организует на карте дополнительную шину PCI, к которой можно подключить множество устройств.
С точки зрения обращения к пространствам памяти и ввода-вывода, географический адрес (номер шины и устройства) безразличен (не принимая во внимание разницу в производительности, связанную с подключением устройств к разным шинам PCI).
Однако номер устройства определяет номер линии запроса прерывания, которой может пользоваться устройство. Подробнее об этом см. в п. 6.2.6, здесь же отметим, что на одной шине устройства с номерами, отличающимися друг от друга на 4, будут использовать одну и ту же линию прерывания. Возможность развести их по разным линиям прерывания может появиться лишь, если они находятся на разных шинах (это зависит от системной платы).
Разобраться с нумерацией устройств и полученных ими линий прерываний на конкретной плате можно просто: устанавливать одну карту PCI поочередно в каждый из слотов (отключая питание) и смотреть на сообщения об обнаруженных устройствах PCI, выводимых на дисплей в конце теста POST. В этих сообщениях будут фигурировать и устройства PCI, установленные непосредственно на системной плате (и не отключенные параметрами CMOS Setup).
Но чтобы не было иллюзий простоты и прозрачности, отметим, что «особо умные» операционные системы (Windows) не довольствуются полученными назначениями номеров прерывании и изменяют их по своему усмотрению (что никак не может отразиться на разделяемости линий).
lOOOBaseCX, 406
lOOOBaseLX, 406
lOOOBaseSX, 406
lOOOBaseT, 406
100BaseFX, 406
lOOBaseSX, 406
100BaseT4, 406
100BaseTX, 406
10Base2, 406
lOBaseS, 405
lOBaseF, 406
lOBaseT, 406
168-pin Registered DIMM, 267
168-pin Unbuffered DIMM, 267
A20, 313,315 ACCESS.Bus, 331,427 Additional ROM BIOS, 497 AGP, 211 режим Ix, 218 2x, 218 4x, 218 сигналы, 212 слот, 219 транзакции, 213 AGP Pro, 221 AGP8X, 223 APIC, 461 ASK IR, 79 ATA, 359
Bus-Master, 383 PIO Mode, 377 Ultra DMA, 377 адаптер, 382 джамперы, 388 кабельная выборка, 387 каналы, 383
конфигурирование устройств, 387 протокол, 380 регистры устройства, 371 режим передачи, 376 DMA, 377 PIO, 376 сигналы, 363,366
ATA (продолжение)
устройства Master и Slave, 360
, хост-адаптер, 360 ,
электрический интерфейс, 362
АТА-2, 361
АТА-3, 361
ATA/ATAPI-4, 361,362
ATAPI, 360
ATX, разъем питания, 513
AUI, 409
В
BEDO 240
Bi-tron'ics, 20
BIOS
32-разрядные вызовы, 480, /
СОМ-порт, 69,491,493
IntOSh, 325
Int 08h, 358
Int09h, 316,325
IntOEh, 357
Int 13h, 403
Int l4h, 48
Int 15h, 478
Int16h, 316
Int17h, 17,320,325
Int 19h, 498
Int 1 Ah, 210,478
Int 33h, 318
PCI, 210
SMBus, 440
видеорежимы, 486
интерфейс клавиатуры, 484
клавиатура, 316
мышь, 318
принтер, 325
расширение, 497
сервисы, 481
стандартные драйверы дисков, 487 BIOS Int 15h, 495 BIOS Int 16h, 484,493 BIOS Int 1Ah, 494 BIOS Int 9h, 483 BIOS32, 480 Bluetooth, 82 ВМС-разъемы, 332
518
Алфавитный указатель
Bootable CD-ROM, 404 Boundary Scan, 447 bus mastering, 411,465 Bus-Master, 360,383 Byte Mode, 24
DRAM, 235 BEDO, 240 EDO, 239
DTE, 49
DVI, 337
Caller Id, 418 CardBus, 229 CAS Latency, 241 CD-ROM
загружаемый, 404
системная поддержка, 404 Centronics, 321 CHS, адресация, 360 CMOS
RTC, 477
память конфигурации и часы, 477
программирование таймера, 478,495
таймер, 477 СОМ-порт, 70
UART 8250/16450/16550, 63
использование, 70
Аналоговые интерфейсы позволяют подключать стандартную бытовую аппаратуру, микрофон, аналоговой выход CD-ROM. На большинстве карт массового потребления для аналоговых сигналов применяют малогабаритные разъемы — «мини-джеки» (jack) диаметром 3,5 мм, моно и стерео. Эти разъемы универсальны (используются на бытовой аппаратуре), но имеют весьма низкое качество контактов — они являются источником шумов (шорохов и тресков), а также иногда
8.5. Интерфейсы аудиоустройств_______________________________________ 343
просто теряют контакт. Их полноразмерные 6-миллиметровые «родственники», характерные для профессиональной аппаратуры, имеют весьма высокое качество, но из-за крупных габаритов на звуковых картах не используются. На некоторых высококачественных картах сигналы линейного входа и выхода выводятся на пары разъемов RCA, которые обеспечивают очень хороший контакт, особенно в позолоченном варианте. В просторечии такие разъемы, часто используемые на бытовых видеомагнитофонах, называют «колокольчиками» или «тюльпанами».
Раскладка цепей на мини-джеках унифицирована: левый канал — на центральном контакте, экран (земля) на внешнем цилиндре, правый канал — на промежуточном цилиндре. Если стереоджек включить в моногнездо и наоборот, сигнал пойдет только по левому каналу. Все соединения в стереосистемах осуществляются «прямыми» кабелями (контакты разъемов соединяются «один в один»). Для подключения центрального и низкочастотного каналов в 6-колоночной системе единого подхода нет — может потребоваться перекрестный кабель. Неправильное подключение будет заметно по «писку» низкочастотной колонки (сабвуфера) и «бубнению» центральной колонки.
Подключение к звуковой карте устройств через внешние разъемы проблем обычно не вызывает — они унифицированы, и достаточно знать назначение разъемов, маркированных на задней панели.
¦ Line In — линейный вход от магнитофона, тюнера, проигрывателя, синтезатора и т. п. Чувствительность порядка 0,1-0,3 В.
Интерфейс RGB Analog с аналоговой передачей сигналов яркости базисных цветов позволяет передавать формально неограниченное число оттенков. Сигналы базисных цветов в современных адаптерах формируются 8-разрядными ЦАП, что позволяет выводить 16,7 миллионов цветов (True Color). Для уменьшения перекрестных помех эти сигналы передаются по витым парам, с собственными обратными линиями (Return). Для согласования с кабелем в мониторе каждая сигнальная пара нагружается резистором. Черному цвету соответствует нулевой потенциал на линиях всех цветов, полной яркости каждого цвета соответствует уровень +0,7 В (не все графические адаптеры обеспечивают полную амплитуду сигнала). Сигналы управления, состояния и синхронизации передаются сигналами ТТЛ. Временные диаграммы интерфейса RGB (они применимы и к интерфейсу RGB TTL) иллюстрирует рис. 8.9. Сигналы R, G, В, здесь показаны условно — изображены интервалы, во время которых сигналы отображаются засветкой точек экрана (видимая часть изображения — в областях пересечения отображения по кадру и по строке, в остальное время луч принудительно гасится). На рисунке показаны основные временные параметры сигналов. Стандарт VESA DMT (Discrete Monitor Timing, 1994-1998 гг.) задает дискретный ряд вариантов параметров для различных режимов разрешения. Несколько более поздний стандарт VESA GTF (Generalized Timing Formula Standard) задает формулы для определения всех параметров синхронизации, исходными данными для расчета являются следующие:
¦ формат экрана в пикселах (например, 800x600);
¦ необходимость дополнительного видимого обрамления (overscan borders);
¦ тип развертки — построчная (non-interlaced) или черезстрочная (interlaced);
¦ одна из заданных частот: кадров, строк или пикселов.
Поскольку стандартов много, один и тот же набор этих параметров разными графическими картами и их драйверами может использовать несколько отличающи-
1280x1024 |
75.0 |
79.9 |
135 |
SXGA(75Hz) |
|||
1280x1024 |
85.0 |
91.1 |
|
SXGA(85Hz) |
|||
1600x1024 |
60.0 |
63.6 |
|
(60Hz) |
|||
1600x1024 |
85.0 |
91.4 |
|
(85Hz) |
|||
1600x1200 |
85.0 |
106.3 |
|
(85Hz) |
|||
1920x1200 |
60.0 |
74.5 |
|
(60Hz) |
|||
1920x1200 |
85.0 |
107.1 |
|
(85Hz) |
|||
2048x1536 |
75.0 |
120.2 |
|
(75Hz) |
|||
2304x1440 |
80.0 |
120.6 |
|
(80Hz) |
1 |
Red |
2 |
Green |
3 |
Blue |
4 |
(H+V)Sync |
5 |
Mode Control |
6 |
Red Return |
7 |
Green Return |
8 |
Blue Return |
9 |
GND |
330 |
1 |
Red |
1 |
2 |
Green |
2 |
3 |
Blue |
3 |
4 |
H.Sync |
13 |
5 |
V.Sync |
14 |
6 |
Red Return |
6 |
7 |
Green Return |
7 |
8 |
Blue Return |
8 |
9 |
GND |
10,11 |
1 |
Red Return |
2 |
Red |
3 |
Comp.Sync |
4 |
IDO |
5 |
Green |
6 |
Green Return |
7 |
ID1 |
8 |
He используется |
9 |
Blue |
10 |
ID2 |
11 |
Sync. GND |
12 |
V.Sync |
13 |
Blue Return |
14 |
H.SyncGND |
15 |
H.Sync |
0 |
8 |
8 |
10 |
18 |
2 |
20 |
15 |
35 |
19 |
54 |
72 |
126 |
1 |
127 г |
1 |
Контакт |
Цепь |
Контакт |
Цепь |
Контакт |
Цепь |
1 |
Audio Output, Right |
11 |
Charging power input, + |
21 |
Audio input, left |
2 |
Audio Output, Left |
12 |
Charging power input, - |
22 |
Audio input, right |
3 |
Audio Output, Return |
13 |
Video input, Y или composite in |
23 |
Audio input, return |
4 |
Sync Return |
14 |
Video input, return |
24 |
Stereo sync (TTL) |
5 |
Horizontal Sync (TTL) |
15 |
Video input, С in |
25 |
DDC return |
6 |
Vertical Sync (TTL) |
16 |
USB Data + |
26 |
DDC Data (SDA) |
7 |
Резерв |
17 |
USB Data - |
27 |
DDC Clock (SCL) |
8 |
Резерв |
18 |
USB/1394 common mode shield |
28 |
+5 В |
9 |
1394TPA- |
19 |
1394VG |
29 |
1394TPB+ |
10 |
1394TPA+ |
20 |
1394VP |
30 |
1394TPB- |
С1 |
R (аналог.) |
C3 |
PX Clock |
||
С2 |
G (аналог.) |
C5 |
GND (для R, G, B) |
C4 |
В (аналог.) |
Аппаратные прерывания обеспечивают реакцию процессора на события, происходящие асинхронно по отношению к исполняемому программному коду. Прерывания в процессорах х86 подробно рассмотрены в литературе [6,7]. Здесь напомним, что аппаратные прерывания делятся на маскируемые и немаскируемые. На немаскируемое прерывание (NMI) процессор реагирует всегда (если обслуживание предыдущего NMI завершено); этому прерыванию соответствует фиксированный вектор 2. Немаскируемые прерывания в PC используются для сигнализации о фатальных аппаратных ошибках. Сигнал на линию NMI приходит от схем контроля паритета памяти, от линий контроля шины ISA (IOCHK) или шины PCI (SERR#). Сигнал NMI блокируется до входа процессора установкой в 1 бита 7 порта 070h, отдельные источники разрешаются и идентифицируются битами порта 061h:
¦ бит 2 R/W — ERP — разрешение контроля ОЗУ и сигнала SERR# шины PCI;
¦ бит 3 R/W — EIC — разрешение контроля шины ISA;
¦ бит 6 R — IOCHK — ошибка контроля на шине ISA (сигнал ЮСНК#);
¦ бит 7 R — РСК — ошибка четности ОЗУ или сигнал SERR* на шине PCI.
458 Глава 12. Архитектурные компоненты IBM PC-совместимого компьютера
Реакция процессора на маскируемые прерывания может быть задержана сбросом его внутреннего флага IF (инструкции СLI — запретить прерывания, STI — разрешить). По возникновении события, требующего реакции, адаптер (контроллер) устройства формирует запрос прерывания, который поступает на вход контроллера прерываний. Контроллер прерываний формирует общий запрос маскируемого прерывания для процессора, а когда процессор подтверждает этот запрос, контроллер сообщает процессору вектор прерывания, по которому выбирается программная процедура обработки прерываний. Процедура должна выполнить действия по обслуживанию данного устройства, включая сброс его запроса для обеспечения возможности реакции на следующие события и посылку команды завершения в контроллер прерываний.
Вызывая процедуру обработки, процессор автоматически сохраняет в стеке значение всех флагов и сбрасывает флаг IF, что запрещает маскируемые прерывания. При возврате из процедуры (по инструкции I RET) процессор восстанавливает сохраненные флаги, в том числе и установленный IF, что снова разрешает прерывания. Если во время работы обработчика прерываний требуется реакция на иные прерывания (более приоритетные), то в обработчике должна присутствовать инструкция STI. Особенно это касается длинных обработчиков; здесь инструкция STI должна вводиться как можно раньше, сразу после критической (не допускающей прерываний) секции. Следующие прерывания того же или более низкого уровня приоритета контроллер прерываний будет обслуживать только после получения команды завершения прерывания EOI (End Of Interrupt).
Маскируемые прерывания используются для сигнализации о событиях в устройствах. Обработка сигналов запросов прерывания выполняется контроллером прерываний, программно совместимым с 8259А. Контроллер прерываний позволяет маскировать отдельные входы запросов и организовывать систему приоритетов запросов от различных входов. В машинах класса AT применяется каскадное соединение двух контроллеров. Ведущий контроллер 8259А#1 обслуживает запросы О, 1, 3-7; его выход подключается к входу запроса прерываний процессора. К его входу 2 подключен ведомый контроллер 8259А#2, который обслуживает запросы 8-15. При этом поддерживается вложенность приоритетов — запросы 8-15 со своим рядом убывающих приоритетов вклиниваются между запросами 1 и 3 ведущего контроллера, приоритеты запросов которого также убывают с ростом номера. В XT каскадирование не применялось, и один контроллер 8259А обслуживал все 8 линий запросов.
Контроллер прерываний 18259А подробно описан в литературе [1, 7]; здесь приведем лишь необходимые сведения, в большинстве случаев достаточные для работы. Контроллеры расположены по адресам 20-21h (8259A#1) и AO-Alh (8259A#2), обращаться к ним следует как к однобайтным портам ввода-вывода.
После инициализации (процедурой POST и при загрузке ОС) все неиспользуемые входы контроллеров замаскированы (на запросы прерываний реагировать не будут), а их векторы прерываний указывают на «заглушку» — процедуру с единственной инструкцией IRET. Первым делом программа должна загрузить в память свой обработчик и подставить указатель на его начало в соответствующее место таблицы прерываний. Далее следует размаскировать вход, для чего выполняется чтение регистра маски (адрес 21h для 8259А#1, Alh для 8259А#2), обнуление соответ-
12.3. Аппаратные прерывания
459
ствующего бита (см. табл. 12.2) и запись в регистр нового значения маски. При работе с контроллером прерываний от программы требуется лишь управление маской своего запроса (при инициализации программы нужно обнулить маску требуемого запроса) и корректное завершение обработки прерываний. Каждая процедура обработки аппаратного прерывания должна завершаться командой ЕОI (End Of Interruption), посылаемой контроллеру:
¦ для 1-го контроллера — посылка байта 20h по адресу 20h;
¦ для 2-го контроллера — посылка байта 2Oh по адресу AOh (EOI для ведомого
контроллера), затем посылка байта 20h по адресу 20h (EOI для ведущего кон
троллера).
Некорректно завершенная процедура не позволит повторно использовать данный или другие запросы прерываний. Если обработчик прерывания удаляется из памяти, предварительно должен быть замаскирован соответствующий ему вход контроллера. Все изменения в таблице прерываний должны выполняться при замаскированных прерываниях, чтобы избежать попытки использования вектора в процессе его модификации (это приведет к «вылету» программы).
На входы контроллеров прерываний поступают запросы от системных устройств (клавиатура, системный таймер, CMOS-таймер, сопроцессор), периферийных контроллеров системной платы и от карт расширения. Традиционно все линии запросов, не занятые перечисленными устройствами, присутствуют на всех слотах шины ISA/EISA.
Эти линии обозначаются как IRQx и имеют общепринятое назначение (табл. 12.2). Часть этих линий отдается в распоряжение шины PCI. В таблице отражены и приоритеты прерываний — запросы расположены в порядке их убывания. Номера векторов, соответствующих линиям запросов контроллеров, система приоритетов и некоторые другие параметры задаются программно при инициализации контроллеров. Эти основные настройки остаются традиционными для обеспечения совместимости с программным обеспечением.
Таблица 12.2. Аппаратные прерывания (в порядке убывания приоритета)
Имя (номер1) |
Вектор |
Контроллер/маска |
Описание |
NMI |
02h |
Контроль канала, паритет |
|
(в XT — сопроцессор) |
|||
IRQO |
08h |
#1/1h |
Таймер (канал £8253/8254) |
IRQ1 |
09h |
#1/2h |
Клавиатура |
IRQ2 |
OAh |
#1/4h |
XT — резерв, AT — недоступно |
(подключается каскад IRQ8-IRQ15) |
|||
IRQ8 |
70h |
#2/1 h |
CMOS RTC — часы реального времени |
IRQ9 |
71h |
#2/2h |
Резерв |
IRQ10 |
72h |
#2/4h |
Резерв |
IRQ11 |
73h |
#2/8h |
Резерв |
IRQ12 |
74h |
#2/10h |
PS/2-Mouse (резерв) |
IRQ 13 |
75h |
#2/20h |
Математический сопроцессор |
IRQ14 |
76h |
#2/40h |
HOC — контроллер НЖМД |
IRQ15 |
77h |
#2/80h |
Резерв |
IRQ3 |
OBh |
#1/4h |
COM2, COM4 |
IRQ4 |
OCh |
#1/10h |
COM1,COM3 |
IRQ5 |
ODh |
#1/20h |
XT — HOC, AT — LPT2, Sound (резерв) |
IRQ6 |
OEh |
#1/40h |
FDC — контроллер НГМД |
IRQ7 |
OFh |
#1/80h |
LPT1 — принтер |
В IBM PC/AT имеются аппаратные средства для измерения времени. Трехканалъ-ный счетчик-таймер, программно совместимый с 18254 (в XT — 8253), выполняет следующие функции:
¦ канал 0: — генерация аппаратных прерываний (IRQO) каждые 54,936 мс (частота 18,206 Гц), вызывающих инкремент системного таймера (счетчика в ячейке 40:006Е BIOS Data Area);
¦ канал 1 — генерация запросов на регенерацию памяти;
¦ канал 2 — генерация звуковых сигналов или измерение времени.
Внутренние счетчики микросхемы имеют разрядность 16 бит, но общение с ними возможно только 8-битными операциями. При этом можно задавать значение только младшего байта счетчика (LSB), только старшего (MSB) или обоих (LSB/MSB), причем сначала передается младший, а потом старший байт. Программирование микросхемы осуществляется записью байт в управляющий регистр по отдельности для каждого канала. Назначение регистров счетчиков-таймеров приведено в табл. 12.5. Входная частота для всех каналов 1,19318 МГц. Штатно все каналы работают в режиме генерации импульсов. Счет для каналов 0 и 1 разрешен постоянно. В канале 2 используется управляющий вход GATE, разрешающий счет, который управляется битом О (T2G, R/W) системного порта AT (061h). Выходной сигнал канала 2 может быть программно считан (Т20, бит 5 того же порта). При использовании канала 2 для измерения времени необходимо отключить формирование звука (обнулив бит SPK, R/W, бит 1 порта 061h).
Таблица 12,.5. Регистры счетчиков-таймеров Порт, R/W Назначение
040 RW Счетчик 0 — системные часы. Режим 011, LSB/MSB, Binary, константа счетчикаравна 0 (соответствует коэффициенту деления 65 536)
041 RW Счетчик 1 — регенерация памяти. Режим 010, LSB, Binary, константа счетчика
равна 12h (18)
042 RW Счетчик 2 — генератор звука, измерение времени. Вход GATE от бита 0 порта
В 8255 (061). Режим 011, LSB/MSB, Binary, значение счетчика определяет высоту тона
12.6. Аппаратные средства измерения времени____________________________ 477
Все сигналы интерфейса НГМД являются логическими с уровнями ТТЛ, активный уровень — низкий. Формирователи выходных сигналов накопителя имеют выход типа «открытый коллектор». Интерфейс подразумевает наличие терминаторов — нагрузочных резисторов — для каждой сигнальной линии устройства. Теоретически их предполагалось включать только на последнем дисководе в шлейфе, практически же их никогда и не отключают. Современные трехдюймовые накопители используют «распределенный терминатор» — резисторы с относительно высоким сопротивлением (1-1,5 кОм), постоянно соединяющие входные линии интерфейса с шиной +5 В. Низкие частоты интерфейсных сигналов позволяют не задумываться о точности согласования импеданса шлейфа и сопротивления терминатора. Однако если на шлейфе стоят только старые 5"-накопители со снятыми терминаторами, они могут отказаться надежно работать (выходные линии с открытым коллектором останутся без нагрузки).
Логически интерфейс довольно прост. Для того чтобы заставить накопитель работать, его нужно выбрать сигналом Drive Sel и запустить мотор шпинделя сигналом Motor On. Для выборки накопитель имеет четыре сигнала DSO...DS3, но отзывается только на один из них, определенный установкой джамперов. Выбранный накопитель воспринимает управляющие сигналы от контроллера и передает контроллеру свои выходные сигналы. О том, что накопитель выбран, свидетельствует светодиодный индикатор на его лицевой панели.
Для перемещения головок на один шаг контроллер должен подать импульс Step; направление перемещения определяется уровнем сигнала Direction: при низком уровне (сигнал активен) перемещение происходит в сторону центра диска (номер трека увеличивается). Нулевой трек контроллер находит, перемещая головки от центра до появления сигнала Track 00. Выбор номера головки производится сигналом Side 1. Начало трека накопитель отмечает импульсом Index, который вырабатывается при прохождении индексного отверстия вращающейся дискеты мимо
Контроллер |
ДисководВ: |
Дисковода: |
||||
Контакт1 |
Сигнал |
I/O |
Контакт1 Сигнал |
Контакт1 |
Сигнал |
|
2 |
FDHDIN (Reduce Write) |
О |
2 |
Low Current |
2 |
Low Current |
4 |
Резерв |
- |
4 |
Резерв |
4 |
Резерв |
6 |
FDEDEIN |
- |
6 |
FDEDIN (DS3) |
6 |
FDEDIN (DS3) |
8 |
Index |
I |
8 |
Index |
8 |
Index |
10 |
Motor On A |
о |
10 |
DSO |
16 |
Motor2 |
12 |
Drive Sel 1 |
о |
12 |
DS11 |
14 |
DS2 |
14 |
Drive Sel 0 |
о |
14 |
DS2 |
12 |
DS11 |
16 |
Motor On В |
о |
16 |
Motor2 |
10 |
DSO |
18 |
Direction |
о |
18 |
Direction |
18 |
Direction |
20 |
Step |
о |
20 |
Step |
20 |
Step |
22 |
Write Data |
о |
22 |
WData |
22 |
Wdata |
24 |
Write Gate |
о |
24 |
WGate |
24 |
Wgate |
26 |
Track 00 |
I |
26 |
ТВ 00 |
26 |
TROO |
28 |
Write Protect |
1 |
28 |
WProt |
28 |
WProt |
30 |
Read Data |
1 |
30 |
RData |
30 |
Rdata |
32 |
Side l |
о |
32 |
Sidel |
32 |
Side l |
343 |
Disk Changed |
1 |
343 |
DC |
34Э |
DC |
Временная диаграмма, приведенная на рис. 7.1, может быть модифицирована для случая последовательного обращения к ячейкам, принадлежащим к одной строке матрицы. В этом случае адрес строки выставляется на шине только один раз и сигнал RAS# удерживается на низком уровне на время всех последующих циклов обращений, которые могут быть как циклами записи, так и чтения. Такой режим обращения называется режимом быстрого страничного обмена FPM (Fast Page Mode), или просто режимом страничного обмена (Page Mode), его временная диаграмма приведена на рис. 7.2. Понятие «страница» на самом деле относится к строке (row), а состояние с низким уровнем сигнала RAS# называется «открытой страницей». Преимущество данного режима заключается в экономии времени за счет исключения фазы выдачи адреса строки из циклов, следующих за первым, что позволяет повысить производительность памяти. Режим FPM поддерживает и самая обычная асинхронная память, называемая стандартной (Std).
Рис. 7.2. Страничный режим считывания стандартной памяти DRAM (FPM)
7.1. Динамическая память
239
Память EDO DRAM (Extended или Enhanced Data Out) содержит регистр-защелку (data latch) выходных данных, что обеспечивает некоторую конвейеризацию работы для повышения производительности при чтении. Регистр «прозрачен» при низком уровне сигнала CAS#, а по его подъему фиксирует текущее значение выходных данных до следующего его спада. Перевести выходные буферы в высоко-импедансное состояние можно либо подъемом сигнала ОЕ# (Output Enable), либо одновременным подъемом сигналов CAS# и RAS#, либо импульсом WE#, который при высоком уровне CAS# не вызывает записи (в PC управление по входу ОЕ# практически не используют).
Временная диаграмма работы с EDO-памятью в режиме страничного обмена приведена на рис. 7.3; этот режим иногда называют гиперстраничным режимом обмена НРМ (Hyper Page mode). Его отличие от стандартного заключается в подъеме импульса CAS# до появления действительных данных на выходе микросхемы.
Считывание выходных данных может производиться внешними схемами вплоть до спада следующего импульса CAS#, что позволяет экономить время за счет сокращения длительности импульса CAS#. Время цикла внутри страницы уменьшается, повышая производительность в страничном режиме на 40 %.
Асинхронный режим передачи является байт-ориентированным (символьно-ориентированным): минимальная пересылаемая единица информации — один байт (один символ). Формат посылки байта иллюстрирует рис. 2.12. Передача каждого байта начинается со старт-бита, сигнализирующего приемнику о начале посылки, за которым следуют биты данных и, возможно, бит паритета (четности). Завершает посылку стоп-бит, гарантирующий паузу между посылками. Старт-бит следующего байта посылается в любой момент после стоп-бита, то есть между передачами возможны паузы произвольной длительности. Старт-бит, имеющий всегда строго определенное значение (логический 0), обеспечивает простой механизм синхронизации приемника по сигналу от передатчика. Подразумевается, что приемник и передатчик работают на одной скорости обмена. Внутренний генератор синхронизации приемника использует счетчик-делитель опорной частоты, обнуляемый в момент приема начала старт-бита. Этот счетчик генерирует внутренние стробы, по которым приемник фиксирует последующие принимаемые биты. В идеале стробы располагаются в середине битовых интервалов, что позволяет принимать данные и при незначительном рассогласовании скоростей приемника и передатчика. Очевидно, что при передаче 8 бит данных, одного контрольного и одного стоп-бита предельно допустимое рассогласование скоростей, при котором данные будут распознаны верно, не может превышать 5 %. С учетом фазовых искажений и дискретности работы внутреннего счетчика синхронизации реально допустимо меньшее отклонение частот. Чем меньше коэффициент деления опорной частоты внутреннего генератора (чем выше частота передачи), тем больше погрешность привязки стробов к середине битового интервала, и требования к согласованности частот становятся более строгие. Чем выше частота передачи, тем больше влияние искажений фронтов на фазу принимаемого сигнала.
60
Глава 2. Последовательный интерфейс — СОМ-порт
Взаимодействие этих факторов приводит к повышению требований к согласованности частот приемника и передатчика с ростом частоты обмена.
S/PDIF (Sony/Philips Digital Interface Format) — цифровой последовательный интерфейс (и форматы данных) для передачи аудиосигналов между блоками бытовой цифровой аудиоаппаратуры (DAT, CD-ROM и т. п.). Этот интерфейс является упрощенным вариантом студийного интерфейса AES/EBU (Audio Engineers Society/European Broadcast Union). Интерфейс AES/EBU использует симметричный двухпроводный экранированный кабель с импедансом 110 Ом, разъемы XLR, уровень сигнала — 3-10 В, длина кабеля — до 12 м.
Интерфейс S/PDIF использует коаксиальный кабель 15 Ом, разъемы RCA или BNC, уровень сигнала — 0,5-1 В, длина кабеля — до 2 м. В звуковых картах внутренние разъемы S/PDIF проще — это просто пара штырьков (как у джамперов) на плате с соответствующей ответной частью на кабеле. Такие же упрощенные разъемы применяются и на новых приводах CD-ROM, имеющих выход S/PDIF. «Штатная» схема передатчика S/PDIF содержит разделительный импульсный трансформатор (1:1), благодаря которому соединяемые устройства гальванически развязываются. Встречаются и упрощенные варианты, без разделительного трансформатора. При стыковке устройств с нестандартными интерфейсами возможны проблемы, связанные с несоответствием уровней сигналов. При этом сигнал может быть неустойчивым (звук будет прерываться) или не приниматься совсем. Эти проблемы могут быть решены подручными средствами — установкой дополнительных формирователей сигнала.
Кроме электрической версии существует и оптическая версии интерфейса S/PDIF — Toslink, стандарт EIAJ СР-1201 — с инфракрасными излучателями (660 нм). Применение оптики позволяет обеспечить полную гальваническую развязку устройств, что необходимо для снижения уровня наводок. Для пластикового волокна (POF) длина кабеля не более 1,5 м, для стеклянного волокна — 3 м. В Сети предлагается ряд схем преобразования интерфейсов, одна из которых приведена на рис. 8.16. Здесь первый инвертор посредством обратной связи выведен на линейный участок передаточной характеристики, благодаря чему малый входной сигнал вызы-
Повсеместный переход на цифровые технологии коснулся и видеомониторов. Традиционный аналоговый канал передачи видеосигналов стал узким местом видеосистемы. По пути от ЦАП к входам видеоусилителей монитора сигнал проходит через пару разъемов и кабель. Несогласованность элементов, вызывающая отражения сигналов («звон») и неравномерности частотных характеристик, приводит к искажению формы сигналов цветов, что становится особо заметным на режимах с высоким разрешением и высокой частотой регенерации. Повысить качество изображения можно, перенеся устройства ЦАП в монитор, прямо на плату видеоусилителей, и подав на них цифровые сигналы базисных цветов. Плоские дисплеи (матрицы TFT) строятся на основе цифровых технологий, и им приходится входные аналоговые сигналы преобразовывать обратно в цифровую форму. Все эти причины привели к необходимости разработки цифрового интерфейса для передачи информации в монитор. От этого интерфейса требуется огромная пропускная способность: к примеру, при частоте пикселов 150 МГц и кодирова-
8.4. Интерфейсы графических адаптеров
335
нии каждого пиксела 24-битным числом (True Color) требуется пропускная способность 3,6 Гбит/с (450 Мбайт/с).
Для подключения плоских дисплеев был разработан специальный интерфейс Panel-Link, в 1996 г. его спецификация (FPDI-2) была утверждена VESA. Схема интерфейса приведена на рис. 8.11. Цифровой интерфейс имеет 3 канала передачи данных (Data[0:3J) и канал синхронизации Clock. В каналах используется дифференциальная передача сигналов с минимизацией переходов — так называемый протокол T.M.D.S. (Transition Minimazed Differetial Signaling). Каждый канал данных образован кодером, расположенным на видеокарте, линией связи и декодером, расположенным в дисплее. На вход кодера каждого канала поступают 8 бит кода яркости базисного цвета текущего пиксела. Кроме того, на вход кодера канала О поступают сигналы строчной и кадровой синхронизации, а на остальные каналы — дополнительные управляющие сигналы СТЦО:3], по паре на каждый канал.
Кодеры преобразуют данные в последовательный код, для минимизации переключений 8 входных бит кодируются 10-битным символом, передаваемым по каналу последовательно. В зависимости от входного сигнала разрешения данных DE кодеры передают либо данные цветовых каналов, либо синхросигналы и управляющие биты. На приемной стороне сигналы декодируются и восстанавливаются в том же виде, в котором они поступали на входы кодеров. Частота пикселов может достигать 165 МГц, интерфейс обеспечивает максимальное разрешение 1280x1024 (24 бита на пиксел).
Контакт |
Цепь |
Контакт |
Цепь |
Контакт |
Цепь |
1 |
Data 2+ |
11 |
Data1 + |
21 |
Data 0- |
2 |
Data 2- |
12 |
Datal- |
22 |
Data 0+ |
3 |
Экран2 |
13 |
Экран 1 |
23 |
Экран О |
4 |
Sync Rtn |
14 |
Clock+ |
24 |
Stereo Sync TTL |
5 |
H.SyncTTL |
15 |
Clock- |
25 |
DDC Return |
6 |
'V.SyncTTL |
16 |
USB Data+ |
26 |
DDC Data |
7 |
Экран Clock |
17 |
USB Data- |
27 |
DDC Clock |
8 |
CHRG+ |
18 |
13943KpaH/CHRG- |
28 |
+5V |
9 |
1394TPA- |
19 |
1394VG |
29 |
1394TPB+.CLOCK+ |
10 |
1394TPA+ |
20 |
1394VP |
30 |
1394TPB-.CLOCK- |
С1 |
R (аналог.) |
C3 |
PX Clock |
||
С2 |
G (аналог.) |
C5 |
GND (для R, G, B) |
C4 |
В (аналог.) |
1 |
ТХ1 + |
11 |
ТХ2+ |
2 |
ТХ1- |
12 |
ТХ2- |
3 |
SHLD1 |
13 |
SHLD2 |
4 |
SHLDC |
14 |
SHLDO |
5 |
ТХС+ |
15 |
ТХО+ |
6 |
ТХС- |
16 |
ТХО- |
7 |
GND |
17 |
NC |
8 |
+5V |
18 |
HPD |
9 |
NC |
19 |
DDC_DAT |
10 |
NC |
20 |
DDC CLK |
С1 С2 |
1 |
Data2- |
9 |
Datal- |
17 |
DataO- |
2 |
Data2+ |
10 |
Data1 + |
18 |
DataO+ |
3 |
Экран 2/4 |
11 |
Экран 1/3 |
19 |
Экран 0/5 |
4 |
Data4- |
12 |
DataS- |
20 |
DataS- |
5 |
Data4+ |
13 |
Data3+ |
21 |
Data5+ |
6 |
DDC Clock |
14 |
+5 В |
22 |
Экран Clock |
7 |
DDC Data |
15 |
GND (для + 5 В, HSync и VSync) |
23 |
Clock* |
8 |
VSync(TTTI) |
16 |
HPD |
24 |
Clock- |
С1 |
R (аналог.) |
C3 |
в (аналог.) |
||
С2 |
G (аналог.) |
C5 |
GND (для R, G, B) |
C4 |
HSync (ТТЛ) |
Карты CompactFlash (рис. 9.7), поддерживаемые ассоциацией CFA (Compact Flash association), широко используются в различных электронных приборах: цифровых фотокамерах, фотопринтерах, МРЗ-плейерах, цифровых диктофонах, персональных коммуникаторах и, конечно же, компьютерах — настольных, карманных, автомобильных. Карты имеют размер 42,8 х 36,4 х 3,3 мм (4 мм с учетом выступа) и 50-контактный разъем (розетка на карте, двухрядный штырьковый разъем с шагом 1,27 мм на слоте). Назначение контактов приведено в табл. 9.13. Через переходник с 50 на 68-контактный разъем карты могут устанавливаться в слот PC Card Type II или III, имеющийся практически во всех блокнотных ПК. Объем памяти выпускаемых в настоящее время карт — от 4 Мбайт до 1 Гбайт, напряжение питания — 5 или 3,3 В. Карты могут работать в одном из трех режимов: карт памяти (Mem), карт ввода-вывода PC Card (I/O), «чистого» режима IDE (ATA). В первых двух режимах карты работают с теми же интерфейсными сигналами, что и PC Card. В режиме IDE электрический интерфейс и система команд полностью совместимы со спецификацией АТА (см. п. 9.2.1), правда, обмен данными возможен только в режиме РЮ. Режим IDE выбирается заземлением на стороне хоста сигнала ATA_SEL#. При этом из шины адреса используются только А[2:0] (остальные заземлены хостом); шина данных при обращениях к регистрам АТА имеет разрядность 8 бит, а при передаче данных — 16. Сигналы CSO# и CS1# используются для выбора блока командных и управляющих регистров соответственно. Сигналы PDIAG#, DASP#, CSEL#, RESET* и IORDY соответствуют спецификации АТА. Сигналом CSEL# выбирается роль карты: при заземленном контакте — устройство 0 (master), при разомкнутом — устройство 1 (slave); можно воспользоваться и «кабельной выборкой». Сигналы REG# и WE# должны подключаться к шине питания (Vcc). Сигналы CD1# и CD2# являются индикаторами установки карты (их контакты замыкаются последними, на карте они заземлены). В табл. 9.14 описан чисто пассивный переходник, позволяющий подключить карту Compact Flash к обычному порту АТА (IDE), имеющемуся на любой современной системной плате.
1 |
GND |
GND |
GND |
26 |
CD1# |
CD1# |
CD1# |
2 |
DOS |
DOS |
DOS |
27 |
D11 |
D11 |
D11 |
3 |
D04 |
D04 |
D04 |
28 |
D12 |
D12 |
D12 |
4 |
DOS |
DOS |
DOS |
29 |
D13 |
D13 |
D13 |
5 |
D06 |
D06 |
D06 |
30 |
D14 |
D14 |
D14 |
6 |
D07 |
D07 |
D07 |
31 |
D15 |
D15 |
D15 |
7 |
CE1# |
CE1# |
CSO# |
32 |
CE2# |
CE2# |
CS1# |
8 |
A10 |
A10 |
A10 |
33 |
VS1# |
VS1# |
VS1# |
9 |
OE# |
OE# |
ATA_SEL# |
34 |
IORD# |
IORD# |
IORD# |
10 |
A09 |
A09 |
A09 |
35 |
IOWR# |
IOWR# |
IOWR# |
11 |
A08 |
A08 |
A08 |
36 |
WE# |
WE# |
WE# |
12 |
A07 |
A07 |
A07 |
37 |
RDY/BSY |
IREQ |
INTRQ |
13. |
VCC |
VCC |
VCC |
38 |
VCC |
VCC |
VCC |
14 |
A06 |
A06 |
A06 |
39 |
CSEL# |
CSEL# |
CSEL# |
15 |
A05 |
A05 |
A05 |
40 |
VS2# |
VS2# |
VS2# |
16 |
A04 |
A04 |
A04 |
41 |
RESET |
RESET |
RESET# |
17 |
A03 |
A03 |
A03 |
42 |
WAIT* |
WAIT# |
IORDY |
18 |
A02 |
A02 |
A02 |
43 |
INPACK* |
INPACK* |
INPACK# |
19 |
A01 |
A01 |
A01 |
44 |
REG# |
REG# |
REG# |
20 |
AGO |
AOO |
AOO |
45 |
BVD2 |
SPKR# |
DASP# |
21 |
DOO |
DOO . |
DOO |
46 |
BVD1 |
STSCHG# |
PDIAGtf |
22 |
D01 |
D01 |
D01 |
47 |
D08 |
DOS |
DOS |
23 |
D02 |
D02 |
D02 |
48 |
D09 |
D09 |
D09 |
24 |
WP |
IOIS16* |
IOCS16* |
49 |
D10 |
D10 |
D10 |
25 |
CD2# |
CD2# |
CD2# |
50 |
GND |
GND |
GND |
GND |
1 |
DOS |
2 |
D04 |
3 |
DOS |
4 |
D06 |
5 |
D07 |
6 |
CSO# |
7 |
A10 |
8 |
ATA_SEL# |
9 |
A09 |
10 |
A08 |
11 |
A07 |
12 |
VCC |
13 |
A06 |
14 |
CD1# | - |
D11 | 10 |
D12 | 12 |
D13 | 14 |
D14 | 16 |
D15 | 18 |
CS1# | 38 |
VS1# | - |
IORD# | 25 |
IOWR# | 23 |
WE# | +5V2 |
INTRQ | 31 |
VCC | +5V2 |
CSEL# | 283 |
продолжение & |
GND1 | А05 | 15 | 40 | VS2# | - |
GND1 | А04 | 16 | 41 | RESET* | 1 |
GND1 | АОЗ | 17 | 42 | IORDY | 27 |
36 | А02 | 18 | 43 | INPACK# | - |
33 | А01 | 19 | 44 | REG# | +5V2 |
35 | АОО | 20 | 45 | DASP# | 39 |
17 | DOO | 21 | 46 | PDIAG# | 34 |
15 | D01 | 22 | 47 | D08 | 4 |
13 | D02 | 23 | 48 | D09 | 6 |
32 | IOCS16# | 24 | 49 | D10 | 8 |
- | CD2# | 25 | 50 | GND | GND' |
Динамическая память — D&4M(Dynamic RAM) — получила свое название от принципа действия ее запоминающих ячеек, которые выполнены в виде конденсаторов, образованных элементами полупроводниковых микросхем. При отсутствии обращения к ячейке со временем за счет токов утечки конденсатор разряжается и информация теряется, поэтому такая память требует периодической подзарядки конденсаторов (обращения к каждой ячейке) — память может работать только в динамическом режиме. Этим она принципиально отличается от статической памяти, реализуемой на триггерных ячейках и хранящей информацию без обращений к ней сколь угодно долго (при включенном питании).
Запоминающие ячейки микросхем DRAM организованы в виде двумерной матрицы. Адреса строки и столбца передаются по мультиплексированной шине адреса MA (Multiplexed Address) и стробируются по спаду импульсов RAS# (Row Access Strobe) и CAS# (Column Access Strobe). Состав сигналов микросхем динамической памяти приведен в табл. 7.1.
Таблица 7.1. Сигналы микросхем динамической памяти Сигнал Назначение
RAS# Row Access Strobe — строб выборки адреса строки. По спаду сигнала начинается любой цикл обращения; низкий уровень сохраняется на все время цикла. Перед началом следующего цикла сигнал должен находиться в неактивном состоянии (высокий уровень) не менее, чем время предварительного заряда RAS (TRP — RAS precharge time) продолжение^236________________________________ Глава 7. Интерфейсы электронной памяти
Таблица 7.1 (продолжение) Сигнал Назначение
CAS# Column Access Strobe — строб выборки адреса столбца. По спаду сигналаначинается цикл записи или чтения; минимальная длительность (Тсдз) определяется спецификацией быстродействия памяти. Минимальная длительность неактивного состояния между циклами (высокий уровень) должна быть не менее, чем время предварительного заряда CAS (TCP — CAS precharge time)
MAi Multiplexed Address — мультиплексированные линии адреса.
Во время спада
сигнала RAS# на этих линиях присутствует адрес строки, во время спада CAS# — адрес столбца. Адрес должен устанавливаться до спада соответствующего строба и удерживаться после него еще некоторое время. Микросхемы с объемом 4 М ячеек могут быть с симметричной организацией — 11 бит адреса строк и 11 бит адреса колонок или асимметричными — 12x10 бит соответственно
WE# Write Enable — разрешение записи. Данные записываются в выбранную ячейку либо по спаду CAS# при низком уровне WE# (Early Write — ранняя запись, обычный вариант), либо по спаду WE# при низком уровне CAS# (Delayed Write — задержанная запись). Переход WE# в низкий уровень и обратно при высоком уровне CAS# записи не вызывает, а только переводит выходной буфер EDO DRAM в высокоимпедансное состояние
ОЕ# Output Enable — разрешение открытия выходного буфера при операции чтения.
Высокий уровень сигнала в любой момент переводит выходной буфер в высокоимпедансное состояние
DB-ln Data Bit Input — входные данные (только для микросхем с однобитной организацией) DB-Out Data Bit Output — выходные данные (только для микросхем с однобитной
организацией). Выходные буферы стандартных микросхем открыты только при сочетании низкого уровня сигналов RAS#, CAS#, OE# и высокого уровня WE#; при невыполнении любого из этих условий буферы переходят в высокоимпедансное состояние. У микросхем EDO выходные буферы открыты и после подъема CAS#. Логика управления предусматривает возможность непосредственного объединения выходов нескольких микросхем
DQx Data Bit — объединенные внутри микросхемы входные и выходные сигналы
данных (объединение экономит количество выводов для микросхем с многобитной организацией)
N.C. No Connection — свободный вывод
не ТСР) НС |
-5 -6 -7 |
75 |
40 |
15 |
6 |
6 |
100 |
50 |
20 |
8 |
8 |
104 |
60 |
25 |
10 |
10 |
110 |
70 |
30 |
12 |
12 |
Дискретный интерфейс с уровнями ТТЛ — RGB TTL применялся в мониторах для графических адаптеров MDA, HGC (Hercules), CGA и EGA. Для этого интерфейса требуется разъем DB-9 (розетка на адаптере), назначение контактов приведено в табл. 8.5. В монохромных мониторах используются лишь два сигнала — Video (включить/выключить луч) и Intens (повышенная яркость). В цветных мониторах класса CD (ColorDisplay) для адаптеров CGA используется по одному сигналу для включения каждого луча и общий сигнал повышенной яркости. Таким образом можно было задать 16 цветов. В улучшенном цветном дисплее ECD (Enhanced Color Display) для адаптера EGA требуются два сигнала на каждый базисный цвет: RED, GREEN, BLUE и Red, Green, Blue — соответственно старшие и младшие биты базисных цветов. Таким образом можно задавать 64 цвета.
Строчная и кадровая синхронизация монитора осуществляется сигналами H.Sync и V.Sync. Монохромные адаптеры MDA и HGC, работающие с высоким разрешением (720x350 пикселов), используют высокую частоту развертки. Адаптер CGA работает с низкими частотами (параметры синхронизации близки к телевизионным). Адаптеры и мониторы EGA могут работать с любыми из этих частот. Для облегчения переключения режимов генератора развертки монитора задействуют сигнал V.Sync: полярность импульсов определяет диапазон частот развертки текущего видеорежима.
8.4. Интерфейсы графических адаптеров________________________________ 327
Таблица 8.5. Дискретный интерфейс монитора (RGB TTL)
Контакт МониторMono Color Enhanced Color/Mono
1 | GND | GND | GND | ||||
2 | GND | GND | Red | ||||
3 | - | RED | RED | ||||
4 | - | GREEN | GREEN | ||||
5 | - | BLUE | BLUE | ||||
6 | Intens. | Intensiv. | Green/lntens. | ||||
7 | Video | Резерв | Blue/Video | ||||
8 | +H.Sync. | +H.Sync. | +H.Sync. | ||||
9 | -V.Sync. | -V.Sync. | -(+)V.Sync. |
В этом режиме данные принимаются с использованием двунаправленного порта, у которого выходной буфер данных может отключаться установкой бита CR. 5=1. Как и предыдущие, режим является программно-управляемым — все сигналы квитирования анализируются и устанавливаются драйвером. Сигналы порта описаны в табл. 1.3, временные диаграммы — на рис. 1.2.
Таблица 1.3. Сигналы LPT-порта в байтном режима ввода-вывода
Имя в байтном I/O Бит режиме |
1 14
17 16 10 |
Контакт Сигнал SPP
Strobe* HostClk AutoFeed* HostBusylnit# Ack# |
Selectln* 1284Active
lnit# PtrClk
11 | Busy | PtrBusy | |||
12 | PE | AckDataReq1 | |||
13 | Select | Xflag1 | |||
15 | Error* | DataAvail*1 |
2-9 |
Data [0:7] Data [0:7]
Описание
О CR.O\ Импульс (низкого уровня) подтверждает прием байта в конце каждого цикла
О CR.1\ Сигнал квитирования. Низкий уровень означает готовность хоста принять байт; высокий уровень устанавливается по приему байта
О CR.3\ Высокий уровень указывает на обмен в режиме IEEE 1284 (в режиме SPP уровень низкий)
0 CR.2 Не используется; установлен высокий
уровень
1 SR.6 Устанавливается в низкий уровень
для индикации действительности данных на линиях Data [0:7]. В низкий уровень устанавливается в ответ на сигнал HostBusy
I SR-Д Состояние занятости прямого канала
I SR.5 Устанавливается ПУ для указания
на наличие обратного канала передачи
I SR.4 Флаг расширяемости
I SR.3 Устанавливается ПУ для указания
на наличие обратного канала передачи
I/O DR[0:7] Двунаправленный (прямой и обратный) канал данных
Сигналы действуют в последовательности согласования (см. ниже).1:3. Стандарт IEEE 1284 • - 25
Рис. 1.2. Прием данных в байтном режиме
Фазы приема байта данных перечислены ниже.
1. Хост сигнализирует о готовности приема данных установкой низкого уровня
на линии HostBusy.
2. ПУ в ответ помещает байт данных на линии Data [0:7].
3. ПУ сигнализирует о действительности байта установкой низкого уровня на
линии PtrClk.
4. Хост устанавливает высокий уровень на линии HostBusy, указывая на занятость приемом и обработкой байта.
5. ПУ отвечает установкой высокого уровня на линии PtrClk,
6. Хост подтверждает прием байта импульсом HostClk.
Шаги 1-6 повторяются для каждого следующего байта. Квитирование осуществляется парой сигналов HostBusy и PtrClk; ПУ может и не использовать сигнал HostClk (это приглашение к выдаче следующего байта, напоминающее сигнал Ack# в интерфейсе Centronics). Побайтный режим позволяет поднять скорость обратного канала до скорости прямого канала в стандартном режиме. Однако он способен работать только на двунаправленных портах, которые раньше применялись в основном на малораспространенных машинах PS/2, но практически все современные порты можно сконфигурировать на двунаправленный режим (в настройках BIOS Setup - Bi-Di или PS/2).
Электрически стираемая (и перезаписываемая) память EEPROM, или E2PROM (Elecrical Erasable PROM), отличается простотой выполнения записи. В простейшем (для пользователя) случае программирование сводится к записи байта по требуемому адресу, после чего некоторое время микросхема не способна выполнять операции чтения/записи и по другим адресам, вплоть до окончания выполнения внутренней операции программирования (со встроенным стиранием). Микросхемы могут поддерживать и режим страничной записи (Page Write), в котором они принимают поток байт записи смежных ячеек в страничный буфер на нормальной скорости интерфейса, после чего вся страница записывается в энергонезависимую память. Страничная запись экономит время (запись страницы выполняется за то же время, что и одной ячейки), но размер страничного буфера, как правило, небольшой (4-32 байт для микросхем небольшого объема и до 128-256 байт — большого). Более сложный интерфейс записи использует систему команд, в которую могут входить команды разрешения/запрета стирания и записи, стирание (отдельной ячейки или всей памяти), запись. Микросхема может иметь и специальные внутренние регистры, например регистр состояния, определяющий готовность микросхемы к обмену данными и возможные режимы защиты от модификации ячеек. Некоторые старые микросхемы для стирания требуют подачи сравнительно высокого (12 В) напряжения на определенные выводы. По процедуре программирования некоторые микросхемы EEPROM схожи с флэш-памятью. В настоящее время EEPROM применяются наряду с флэш-памятью, причем они могут соседствовать даже в одной микросхеме (например, микроконтроллере). Это объясняется очень большим гарантированным числом циклов перезаписи (106 и более) EEPROM, но меньшим достижимым объемом. Также EEPROM обычно имеет и большее гарантированное время сохранности информации (до 100 лет). Флэш-память при большем объеме и более производительных способах записи и стирания допускает меньшее число циклов перезаписи, и время сохранения информации у нее меньше (может быть и всего 10 лет).
Микросхемы EEPROM выпускаются с различными интерфейсами, последовательными (Serial EEPROM) с интерфейсами PC, SPI и иными и параллельными (Parallel EEPROM) с интерфейсами статической памяти (и EPROM).
Флэш-память по определению относится к классу EEPROM (электрическое стирание), но использует особую технологию построения запоминающих ячеек. Стирание во флэш-памяти производится сразу для целой области ячеек (блоками или полностью всей микросхемы). Это позволило существенно повысить производительность в режиме записи (программирования). Флэш-память обладает сочетанием высокой плотности упаковки (ее ячейки на 30 % меньше ячеек DRAM), энергонезависимого хранения, электрического стирания и записи, низкого потребле-
7.3. Энергонезависимая память________________________________________ 283
ния, высокой надежности и невысокой стоимости. Первые микросхемы флэш-памяти были предложены фирмой Intel в 1988 году и с тех пор претерпели существенные изменения по архитектуре, интерфейсу и напряжению питания. Каждая ячейка флэш-памяти состоит всего из одного униполярного (полевого) транзистора. Ячейки организованы в матрицу; разрядность данных внешнего интерфейса — 8 или 16 бит (ряд микросхем имеет переключаемую разрядность). Чистые (стертые) ячейки содержат единицу во всех битах; при записи (программировании) нужные биты обнуляются. Возможно последующее программирование и уже записанных ячеек, но при этом можно только обнулять единичные биты, но не наоборот. В единичное состояние ячейки переводятся только при стирании. Стирание выполняется для всей матрицы ячеек; стирание одиночной ячейки невозможно. Чтение флэш-памяти ничем не отличается от чтения любой другой памяти — подается адрес ячейки, и через некоторое время доступа (десятки-сотни не) на выходе появляются данные. Запись выглядит несколько сложнее — для программирования каждого байта (слова) приходится выполнять процедуру, состоящую из операций записи и считывания, адресованных к микросхеме флэш-памяти.
Одна ко при этом шинные циклы обращения к микросхеме являются нормальными для процессора, а не растянутыми, как для EPROM и EEPROM. Таким образом, в устройстве с флэш-памятью легко реализуется возможность перепрограммирования без извлечения микросхем из устройства. Большинство микросхем флэш-памяти имеют интерфейс, аналогичный асинхронной статической памяти (SRAM), а при чтении он упрощается до интерфейса ROM/PROM/EPROM. Существуют версии с интерфейсом динамической памяти, асинхронным и синхронным, а также и со специальными интерфейсами, в том числе и 12С. Первые микросхемы работали только при напряжении питания 5 В, а для программирования и стирания требовали дополнительное питание VPP = +12 В. Затем появились микросхемы всего с одним напряжением питания +5 В. Дальнейшее развитие технологии позволило снизить напряжение питания до 2,7-3,3 В и 1,65-2,2 В, a VPP — до 5, 3,3, 2,7 и даже 1,65 В. В производстве микросхем используется технологические процессы с разрешением 0,3, 0,22, 0,18 мкм (чем мельче ячейки, тем они экономичнее). Микросхемы первых выпусков (1990 г.) имели гарантированное число циклов стирания-программирования 10 000, современные — 100 000.
Флэш-память имеет время доступа при чтении 35-200 не. Стирание информации (поблочное или во всей микросхеме) у микросхем середины 90-х годов занимает 1-2 секунды, программирование (запись) байта — порядка 10 мкс. У современных микросхем время стирания и записи заметно сократилось. Процедура записи от поколения к поколению упрощается (см. ниже). От ошибочного стирания (записи) применяются различные методы программной и аппаратной защиты. Программной защитой является ключевая последовательность команд, нарушение которой не позволяет начать операции стирания и записи. Аппаратная защита не позволяет выполнять стирание и запись, если на определенные входы не поданы требуемые уровни напряжения. Аппаратная защита может защищать как весь массив целиком, так и отдельные блоки.
По организации массива в плане стирания групп ячеек различают следующие архитектуры:
¦ Bulk Erase (BE) — все ячейки памяти образуют единый массив; запись воз
можна в произвольную ячейку; стирание возможно только для всего объема
сразу;
¦ Boot Block (BB) — массив разделен на несколько блоков разного размера, стираемых независимо, причем один из блоков имеет дополнительные средства защиты от стирания и записи;
¦ Flash File — массив разделен на несколько равноправных независимо стираемых блоков обычно одинакового размера, что позволяет их называть микросхемами с симметричной архитектурой (Symmetrical Architecture, SA).
Организация BE применялась только в микросхемах первого поколения, ее недостатки вполне очевидны (получается просто аналог EEPROM с более удобным способом стирания и интерфейсом программирования). Все современные микросхемы секторированы (разбиты на отдельно стираемые блоки), так что остается лишь деление на симметричную и несимметричную архитектуру.
В симметричной архитектуре (SA), как правило, используется разбиение на блоки по 64 Кбайт; один из крайних блоков (с самым большим или самым маленьким адресом) может иметь дополнительные средства защиты.
В асимметричной архитектуре один из 64-килобайтных блоков разбивается на 8 блоков по 8 Кбайт. Один из блоков имеет дополнительные аппаратные средства защиты от модификации и предназначается для хранения жизненно важных данных, не изменяемых при запланированных модификациях остальных областей. Эти микросхемы специально предназначены для хранения системного программного обеспечения (BIOS), а привилегированный блок (Boot Block) хранит минимальный загрузчик, позволяющий загрузить (например, с дискеты) и выполнить утилиту программирования основного блока флэш-памяти. В обозначении этих микросхем присутствует суффикс Г (Тор) или В (Bottom), определяющий положение Boot-блока либо в старших, либо в младших адресах соответственно.
Первые предназначены для процессоров, стартующих со старших адресов (в том числе, х86, Pentium), вторые — для стартующих с нулевого адреса, хотя возможны и противоположные варианты, когда некоторые биты шины адреса перед подачей на микросхему памяти инвертируются. Старые микросхемы В В малого объема имели немного другое распределение, например микросхема 28F001ВХ- Т (28F001BN- Т), часто применяемая для флэш-BIOS в PC, содержит:
¦ основной блок (Main Block) объемом 112 Кбайт (OOOOOh-lBFFFh);
¦ два блока параметров (Parameter Block) объемом по 4 Кбайт (1 COOOh-1 CFFFh и IDOOOh-lDFFFh);
¦ загрузочный блок (Boot Block) объемом 8 Кбайт (lEOOOh-lFFFFh), стирание и программирование которого возможны лишь при особых условиях.
7.3. Энергонезависимая память __________________________ 285
Основной блок и блоки параметров по защите равноправны; выделение небольших блоков параметров позволяет в них хранить часто сменяемую информацию, например ESCD технологии PnP.
Выпускают и комбинированные микросхемы, например MT28C3214P2FL представляет собой комбинацию флэш-памяти 2 М х 16 и SRAM 256 К х 16. По организации матрицы ячеек различают архитектуры NOR и NAND. В традиционной организации NOR транзисторы на одном проводе объединяются своими стоками параллельно, как бы образуя логический элемент ИЛИ-НЕ (NOR — Not OR). Эта организация обеспечивает высокое быстродействие произвольного считывания, что позволяет исполнять программы прямо из флэш-памяти (не копируя в ОЗУ) без потери производительности. В организации NAND несколько транзисторов разных ячеек соединяются последовательно, образуя логический элемент И-НЕ (NAND — Not AND), что дает высокую скорость последовательных обращений.
В первых микросхемах флэш-памяти каждая ячейка (всего один транзистор) предназначалась для хранения одного бита информации (1 — стерта, 0 — «прошита»). Позже появилась технология хранения двух битов в одной ячейке — благодаря совершенствованию технологии удалось надежно различать 4 состояния ячейки, что и требуется для хранения двух битов.
Два бита в ячейке хранит память Intel StrataFlash, емкость одной такой микросхемы уже достигла 128 Мбит (16 Мбайт).
Флэш-память постоянно развивается как в плане повышения емкости и снижения потребления, так и в плане расширения возможностей и повышения производительности. Так, например, в ряде микросхем AMD имеется возможность чтения одновременно с записью других блоков (чтение во время стирания стало возможным еще со второго поколения флэш-памяти).
Некоторые микросхемы обеспечивают быстрый обмен в страничном режиме (Page Mode). Страницей являются 4 или 8 смежных ячеек; первое чтение в странице выполняется со временем доступа 70 не. Если микросхема остается выбранной, то другие ячейки этой страницы (отличающиеся значением младших битов адреса) можно считывать циклами длительностью по 20 не. Доступ к одиночным ячейкам не отличается от обычного. Микросхемы с пакетным режимом (Burst Mode) вдобавок к одиночному и страничному режимам (асинхронным) могут работать и в синхронном режиме. Для этого они имеют вход синхронизации CLK. Адрес начала пакета передается вместе с сигналом ADV# (фиксируются по положительному перепаду CLK). Первые данные на выходе появятся через 3 такта, после чего в каждом следующем такте будут выдаваться очередные данные.
Синхронная флэш-память имеет интерфейс (и даже упаковку в корпуса), совпадающий с SDRAM. В настоящее время выпускаются микросхемы с частотой 66 МГц (например, MT28S4M16LC — 1 М х 16 х 4 банка), ожидаются микросхемы и на 133 МГц. Такая память удобна для встраиваемых компьютеров для хранения ПО, исполняемого прямо на месте (без копирования в ОЗУ).
286________________________________ Глава 7. Интерфейсы электронной памяти
Микросхемы флэш-памяти с симметричной архитектурой выпускаются и с интерфейсом DRAM (динамической памяти) — с мультиплексированной шиной памяти, стробируемой сигналами RAS# и CAS#. Они предназначены для применения в модулях SIMM или DIMM, устанавливаемых в гнезда для обычной динамической памяти.
Таким образом реализуются, например, модули PostScript для лазерных принтеров и любые резидентные программные модули. Эти модули, естественно, не будут определяться системой как основная память — на попытку обычной записи и считывания, предпринимаемую в тесте POST при определении установленной памяти, они ответят весьма своеобразно. Также они не будут восприниматься и как модули дополнительной системы BIOS, поскольку займут неподходящие для этого физические адреса. Использоваться эти модули смогут только с помощью специального драйвера, который «объяснит» чипсету, какому диапазону адресов пространства памяти соответствуют сигналы выборки банков флэш-памяти. Поскольку интерфейс модулей SIMM и DIMM не предполагает сигналов защиты записи, системного сброса и дополнительного питания +12 В, все вопросы, связанные с программированием и защитой, решаются дополнительными элементами, устанавливаемыми на модулях. При использовании 16-битных микросхем такие модули непосредственно не обеспечивают независимую побайтную запись, но она может обеспечиваться программно, маскированием (записью OFFh) немодифицируемых байт.
Для хранения BIOS появились микросхемы флэш-памяти с интерфейсом LPC, называемые хабами (firmware hub).
Для некоторых сфер применения требуются специальные меры по блокированию изменения информации пользователем. Так, Intel в некоторые микросхемы вводит однократно записываемые регистры ОТР (One-Time-Programmable). Один 64-битный регистр содержит уникальный заводской номер, другой может программироваться пользователем (изготовителем устройства) только однажды.
Фирма Intel выпускает микросхемы «Wireless Flash Memory» — за интригующим названием скрывается, конечно же, «нормальный» электрический интерфейс с проводами (wireless — без проводов). Однако они ориентированы на применение в средствах беспроводной связи (сотовые телефоны с доступом к Интернету): питание 1,85 В, наличие регистров ОТР для защиты от мошенничества и т.
п.
Корпуса, интерфейс и обозначение микросхем флэш-памяти
Микросхемы флэш-памяти упаковывают в корпуса со стандартизованным назна чением выводов. Первые микросхемы выпускались в корпусах DIP, что обеспечивало легкость замены микросхем (E)EPROM на флэш-память. Далее в целях миниатюризации перешли к корпусам PLCC, TSOP и TSOP-II. Применение корпусов FBGA (Fine Pitch Ball Grid Array) — матрицы 6x8 шариковых выводов с шагом 0,8 мм — позволяет уменьшить размер корпуса до минимума, требуемого для упаковки кристалла. Для микросхем, используемых в картах SmartMedia, применяют и оригинальную упаковку KGD (Known Good Die).
7.3. Энергонезависимая память
287
На рис. 7.20-7.22 приведено расположение выводов распространенных микросхем флэш-памяти (основной вариант цоколевки). Многие микросхемы имеют два варианта цоколевки для корпусов поверхностного монтажа — основной и зеркальный (реверсный). Это позволяет существенно упростить разводку печатных проводников (серпантином) при объединении большого количества микросхем в массивы флэш-памяти.
256 |
32Кх8ВЕ |
512 |
64Кх8ВЕ |
010 |
128Кх8ВЕ |
020 |
256 Кх 8 BE |
001 |
128Кх8ВВ |
002 |
256Кх8ВВ |
004 |
512Кх8ВВ, SA |
008 |
1Мх8ВВ, SA |
016 |
2 М х 8 ВВ, SA |
200 |
256Кх8/128Кх16ВВ |
400 |
512Кх8/256Кх16ВВ |
800 |
1024Кх8/512Кх16ВВ |
160 |
2Мх8/1 Mx16SA, ВВ |
320 |
4Mx8/2Mx16SA |
640 |
8Mx8/4Mx16SA |
Таблица 7.25. Команды микросхем флэш-памяти Intel первого поколения |
|||||||
Команда |
Число |
Первый цикл шины1 |
Второй(третий)цикл шины1 |
||||
циклов шины |
R/W |
Адрес Данные R/W |
Адрес |
Данные |
|||
Read Memory |
1 |
W |
X |
ООп |
- |
- |
- |
Read ID |
3 |
W |
X |
90h |
R |
0(1) |
MJd (D_ld) |
Set-up Erase/Erase |
2 |
W |
X |
20h |
W |
X |
20h |
Erase Verify |
2 |
W |
ЕА |
АОп |
R |
X |
EVD |
Set-up Program/Program 2 |
W |
X |
40h |
W |
РА |
PD |
|
Program Verify |
2 |
W |
X |
COh |
R |
X |
PVD |
Reset |
2 |
W |
X |
FFh |
W |
X |
FFh |
Команда |
Число |
Первый цикл шины1 |
Второй (третий) цикл шины1 |
||||
циклов шины |
R/W |
Адрес |
Данные |
R/W |
Адрес |
Данные |
|
Read Array/Reset |
1 |
W |
X |
FFh |
_ |
- |
_ |
Read ID |
3 |
W |
X |
90h |
R |
0(1) |
MJd |
(DJd) |
|||||||
Read Status Register |
2 |
W |
X |
70h |
R |
X |
SRD |
Clear Status Register |
1 |
W |
X |
50h |
- |
- |
- |
Erase Setup/Erase Confirm |
2 |
W |
ВА |
20h |
W |
BA |
DOh |
Erase Suspend/Erase |
2 |
W |
X |
BOh |
W |
X |
DOh |
Resume |
|||||||
Program Setup/Program |
2 |
W |
РА |
40h |
w |
PA |
PD |
Alternate Program Setup/ |
2 |
W |
РА |
10h |
w |
PA |
PD |
Program2 |
Команда |
Reset/Read |
Autoselect |
Byte Program |
Chip Erase |
Sector Erase |
Количество |
3 |
3 |
4 |
6 |
6 |
циклов |
|||||
1-й цикл Addr |
5555h |
5555h |
5555h |
5555h |
5555h |
Data |
AAh |
AAh |
AAh |
AAh |
AAh |
2-й цикл Addr |
2AAAh |
2AAAh |
2AAAh |
2AAAh |
2AAAh |
Data |
55h |
55h |
55h |
55h |
55h |
302 |
Таблица 7.28 (продолжение) |
|||||
Команда Reset/Read |
Autoselect |
Byte Program |
Chip Erase |
Sector Erase |
|
3-й цикл Addr |
5555h |
5555h |
5555h |
5555И |
5555И |
Data |
FOh |
90h |
AOh |
80h |
80h |
4-й цикл Addr |
- |
XXOOh/XX01h |
PA1 |
5555И |
5555h |
Data |
01h/20h |
PD2 |
AAh |
AAh |
|
5-й цикл Addr |
- |
- |
- |
2AAAh |
2AAAh |
Data |
- |
- ¦ ¦¦ |
55h |
55h |
|
6-й цикл Addr |
- |
- |
- |
5555h |
SA3 |
Data |
- |
- |
- |
10h |
30h |
Для содержимого ПЗУ расширения BIOS, установленных на картах PCI, принят стандарт, несколько отличающийся от традиционных дополнительных модулей ROM BIOS. Заголовок ПЗУ соответствует традиционному, но дополнительно имеет указатель на структуру данных PCI (табл. 12.10). Идентификаторы производителя и устройства, а также код класса совпадают с описанными в конфигурационном пространстве устройства PCI. Поскольку шина PCI используется не только в PC, в ПЗУ карты может храниться несколько модулей. Каждый модуль начинается со структуры данных, сам модуль следует сразу за структурой. За ним начинается структура для следующего модуля (если у предыдущего не установлен признак последнего модуля) и так далее. Тип платформы (процессора) указывается в заголовке модуля, и при инициализации BIOS активизируется только нужный. Такой механизм позволяет, например, один и тот же графический адаптер устанавливать и в IBM PC, и в Power PC.
Таблица 12.10. Структура данных PCI
Смещение | Длина,байт | Назначение | |||
0 | 4 | Сигнатура, строка символов "PCIR" | |||
4 | 2 | Идентификатор производителя | |||
6 | 2 | Идентификатор устройства | |||
8 | 2 | Резерв1 | |||
Ah | 2 | Длина структуры (байт), начиная с сигнатуры | |||
Ch | 1 | Версия структуры (0 для данной версии) | |||
Dh | 3 | Код класса | |||
10h | 2 | Длина образа | |||
12h | 2 | Версия кода/данных | |||
14h | 1 | Тип кода: 0 — х86 для РС-АТ, 2 — HP PA-RISC | |||
15h | 1 | Индикатор: 1 — последний образ, 0 — не последний | |||
16h | 2 | Резерв |
1 До спецификации PCI 2.2 здесь помещался указатель на строку Vital Product Data (важные сведения о продукте).
Применительно к дополнительному ПЗУ карты PCI имеется три параметра, относящихся к размерам. Размер ПЗУ определяется чтением конфигурационного пространства. Размер, указанный во 2-м байте заголовка, указывает на длину модуля на этапе инициализации. Этот модуль POST загружает в ОЗУ перед тем, как вызвать процедуру инициализации (точка входа со смещением 3).
Контрольная сумма, расположенная обычно в конце модуля, обеспечивает нулевую сумму всех байт. Длина образа, указанная в структуре данных PCI (слово со смещением 10h), описывает размер области, которая должна оставаться в памяти в режиме нормального функционирования (она может быть меньше, поскольку код процедуры инициализации уже не требуется). Эта область также защищается контрольной суммой. Структура данных PCI должна оставаться в памяти все время.
504______ Глава 12. Архитектурные компоненты IBM PC-совместимого компьютера
Работа с модулями ПЗУ для карт PCI выполняется в соответствии с моделью DDIM(см. выше). POST определяет наличие ПЗУ пополю Expansion ROM Base Address в конфигурационном пространстве и назначает ему адрес в свободном пространстве памяти. После этого программированием регистра команд разрешается считывание ПЗУ, и в нем ищется сигнатура заголовка АА55Н. Когда сигнатура найдена, POST ищет подходящий образ (по типу кода и совпадающий по идентификаторам с обнаруженными устройствами PCI) и загружает его в ОЗУ (в область COOOO-DFFFFh), оставляя разрешенной запись в эту область. Далее чтение ПЗУ запрещается (записью в поле Expansion ROM Base ^Address), и вызывается процедура инициализации (по адресу 3). При вызове процедуры POST сообщает номер шины (в регистре АН), номер устройства (AL[7:3]) и номер функции (AL[2:0]), благодаря чему процедура узнает точные координаты аппаратных средств. После этого определяется размер области, которую следует оставить в памяти (по байту 2, который может быть модифицирован процедурой инициализации), и для этой области запрещается запись. Если процедура инициализации «урезает» занимаемую память, она должна позаботиться о достоверности контрольной суммы области, описанной байтом 2. Если память освобождается полностью (процедура обнуляет байт 2), то контрольная сумма, естественно, не нужна. Расширение для VGA (определяется по коду класса) обрабатывается особым образом — загружается по адресу COOOOh.Процедура инициализации может определить наличие PnP BIOS в системе, проверив значение контрольной структуры PnP по адресу, указанному в Е5: DI, и исполняться в зависимости от обнаруженного системного окружения.
Стандарт IEEE 1284 определяет физические характеристики приемников и передатчиков сигналов, которые по уровням совместимы с ТТЛ. Спецификации стандартного порта не задавали типов выходных схем, предельных значений величин нагрузочных резисторов и емкости, вносимой цепями и проводниками. На относительно невысоких скоростях обмена разброс этих параметров не вызывал проблем совместимости. Однако расширенные (функционально и по скорости передачи) режимы требуют четких спецификаций. IEEE 1284 определяет два уровня интерфейсной совместимости. Первый уровень (Level I) определен для устройств медленных, но использующих смену направления передачи данных. Второй уровень (Level II) определен для устройств, работающих в расширенных режимах с высокими скоростями и длинными кабелями. К передатчикам предъявляются следующие требования.
¦ Уровни сигналов без нагрузки не должны выходить за пределы -0,5... +5,5 В.
¦ Уровни сигналов при токе нагрузки 14 мА должны быть не ниже +2,4 В для высокого уровня (VOH) и не выше +0,4 В для низкого уровня (У0ь) на постоянном токе.
¦ Выходной импеданс R0, измеренный на разъеме, должен составлять 50±5 Ом на уровне VOh-V0l- Для обеспечения заданного импеданса используют последовательные резисторы в выходных цепях передатчика. Согласование импеданса передатчика и кабеля снижает уровень импульсных помех.
¦ Скорость нарастания (спада) импульса должна находиться в пределах 0,05-
0,4 В/не.
Ниже перечислены требования к приемникам.
¦ Допустимые пиковые значения сигналов -2,0...+7,0 В.
¦ Пороги срабатывания должны быть не выше 2,0 В (VIH) для высокого уровня и не ниже 0,8 В (VIL) для низкого.
¦ Приемник должен иметь гистерезис в пределах 0,2-1,2 В (гистерезисом обладают специальные микросхемы — триггеры Шмитта).
1.3. Стандарт IEEE 1284
АМАМ |
Type A Male — Type A Male |
А (вилка) |
А(вилка) |
AMAF |
Type A Male — Type A Female |
А(вилка) |
А(розетка) |
АВ |
Type A Male — Туре В Plug — стандартный кабель к принтеру |
А (вилка) |
В |
АС |
Type A Male — Туре С Plug — новый кабель к принтеру |
А (вилка) |
С |
ВС |
Туре В Plug — Type С Plug |
В |
С |
СС |
Туре С Plug — Type С Plug |
С |
С |
Кабельная сеть 1394 собирается по простым правилам — все устройства соединяются друг с другом кабелями по любой топологии (древовидной, цепочечной, звездообразной). Каждое «полноразмерное» устройство (узел сети) обычно имеет три равноправных соединительных разъема. Некоторые малогабаритные устройства могут иметь только один разъем, что ограничивает возможные варианты их местоположения. Стандарт допускает и до 27 разъемов на одном устройстве, которое будет играть роль кабельного концентратора. Допускается множество вариантов подключения устройств, но со следующими ограничениями:
¦ между любой парой узлов может быть не более 16 кабельных сегментов;
¦ длина сегмента стандартного кабеля не должна превышать 4,5 м;
¦ суммарная длина кабеля не должна превышать 72 м (применение более качественного кабеля позволяет ослабить влияние этого ограничения);
¦ топология не должна иметь петель, хотя в последующих ревизиях предполага
ется автоматическое исключение петель в «патологических» конфигурациях.
Стандартный кабель 1394 содержит 6-проводов, заключенных в общий экран, и имеет однотипные 6-контактные разъемы на концах (рис. 4.6, а). Две витые пары используются для передачи сигналов (ТРА и ТРВ) раздельно для приемника и передатчика, два провода задействованы для питания устройств (8-40 В, до 1,5 А). В стандарте предусмотрена гальваническая развязка устройств, для чего используются трансформаторы (напряжение изоляции развязки до 500 В) или конденсаторы (в дешевых устройствах с напряжением развязки до 60 В относительно общего провода). Некоторые бытовые устройства имеют только один 4-контактный разъем меньшего размера (рис. 4.6, б), у которого реализованы только сигнальные цепи. Эти устройства подключаются к шине через специальный переходной кабель только как оконечные (хотя возможно применение специальных адапте-ров-разветвителей). В кабелях FireWire сигнальные пары соединяются перекрестно (табл. 4.2), поскольку все порты равноправны.
Разъем А |
Провод |
Разъем Б |
||||
4-конт. |
6-конт. |
Цепь |
Цепь |
6-конт. |
4-конт. |
|
- |
1 |
Power |
Белый |
Power |
1 |
|
- |
2 |
GND |
Черный |
GND |
2 |
|
1 |
3 |
УРЕ- |
Красный |
ТРА- |
5 |
3 |
2 |
4 |
ТРЕ* |
Зеленый |
ТРА+ |
6 |
4 |
3 |
5 |
ТРА- |
Оранжевый |
ТРВ- |
3 |
1 |
4 |
6 |
УРА* |
Синий |
ТРВ+ |
4 |
2 |
Экран |
Экран |
Экран |
Экран |
Экран |
Экран |
Экран |
В первом приближении СОМ-порт можно проверить диагностической программой (Checklt) без использования заглушек. Этот режим тестирования проверяет микросхему UART (внутренний диагностический режим) и вырабатывание прерываний, но не входные и выходные буферные микросхемы, которые являются более частыми источниками неприятностей. Если тест не проходит, причину следует искать или в конфликте адресов/прерываний, или в самой микросхеме UART.
Для более достоверного тестирования рекомендуется использовать внешнюю заглушку, подключаемую к разъему СОМ-порта (рис; 2.16). В отличие от ЬРТ^порта у СОМ-порта количество входных сигналов превышает количество выходных, что позволяет выполнить полную проверку всех цепей. Заглушка соединяет выход приемника с входом передатчика. Обязательная для всех схем заглушек перемычка RTS-CTS позволяет работать передатчику — без нее символы не смогут передаваться. Выходной сигнал DTR обычно используют для проверки входных линий DSR, DCDnRI.
2.10. Неисправности и тестирование СОМ-портов
75
Рис. 2.16. Заглушка для проверки СОМ -портов (LoopBack для Checklt и Norton Diagnostics)
Если тест с внешней заглушкой не проходит, причину следует искать во внешних буферах, их питании или в ленточных кабелях, служащих для подключения внешних разъемов. Здесь может помочь осциллограф или вольтметр. Последовательность проверки может быть следующей:
1. Проверить наличие двуполярного питания выходных схем передатчиков (этот
шаг логически первый, но/поскольку он технически самый сложный, его мож
но отложить на крайний случай, когда появится желание заменить буферные
микросхемы).
2. Проверить напряжение на выходах TD, RTS и DTR: после аппаратного сброса
на выходе TD должен быть отрицательный потенциал около -12 В (по край
ней мере, ниже -5 В), а на выходах RTS и DTR — такой же положительный. Если этих потенциалов нет, возможна ошибка подключения разъема к плате через
ленточный кабель. Распространенные варианты:
• ленточный кабель не подключен;
• ленточный кабель подключен неправильно (разъём перевернут или встав
лен со смещением);
• раскладка ленточного кабеля не соответствует разъему платы.
Первые два варианта проверяются внимательным осмотром, третий же может потребовать некоторых усилий. В табл. 2.1 приведены три варианта раскладки 10-проводного ленточного кабеля для разъема СОМ-порта, известных автору; для СОМ-портов на системных платах возможно существование и других. Теоретически ленточный кабель должен поставляться в соответствии с разъемом.
Если дело в ошибочной раскладке, то эти три выходных сигнала удастся обнаружить на других контактах разъемов (на входных контактах потенциал совсем небольшой). Если эти сигналы обнаружить не удалось, очевидно, вышли из строя буферные формирователи.
3. Соединив контакты линий RTS и CTS (или установив заглушку), следует по
пытаться вывести небольшой файл на СОМ-порт (например, командой COPY
С: \AUTOEXEC. ВАТ COMl:). С исправным портом эта команда успешно выполнится за несколько секунд с сообщением об успешном копировании. При этом
76________________________ Глава 2. Последовательный интерфейс — СОМ-порт
потенциалы на выходах RTS и DTR должны измениться на отрицательные, а на выходе TD должна появиться пачка двуполярных импульсов с амплитудой более 5 В. Если потенциалы RTS и DTR не изменились, ошибка в буферных формирователях. Если на выходе RTS (и входе CTS) появился отрицательный потенциал, а команда COPY завершается с ошибкой, скорее всего, вышел из строя приемник линии CTS (или опять-таки ошибка в ленточном кабеле). Если команда COPY успешно проходит, а изменения на выходе TD не обнаруживаются (их можно увидеть стрелочным вольтметром, но оценить амплитуду импульсов не удастся), виноват буферный передатчик сигнала TD.
Замена микросхем приемников и передатчиков существенно облегчается, если они установлены в «кроватки». Перед заменой следует с помощью осциллографа или вольтметра удостовериться в неисправности конкретной микросхемы.
Если буферные элементы включены в состав интерфейсной БИС (что теперь весьма распространено), то такой порт ремонту не подлежит (по крайней мере, в обычных условиях). Неисправный СОМ-порт, установленный на системной плате, можно попытаться отключить в BIOS SETUP, но порт мог сгореть и вместе со схемой своего отключения — тогда он останется «живым мертвецом» в карте портов ввода-вывода и прерываний. Иногда он полностью выводит из строя системную плату.
Источниками ошибок могут являться разъемы и кабели. В разъемах встречаются плохие контакты, а кабели, кроме возможных обрывов, могут иметь плохие частотные характеристики. Частотные свойства кабелей обычно сказываются при большой длине (десятки метров) на высоких скоростях обмена (56 или 115 Кбит/с). При необходимости использования длинных кабелей на высоких скоростях сигнальные провода данных должны быть перевиты с отдельными проводами «схемной земли».
В ряде отечественных PC-совместимых (почти) компьютеров для последовательного интерфейса применялась микросхема КР580ВВ51 — аналог 18251. Однако эта микросхема является универсальным синхронно-асинхронным приемопередатчиком (УСАПП или USART — Universal Asynchronous Receiver-Transmitter). Совместимости с PC на уровне регистров СОМ-порта такие компьютеры не имеют. Хорошо, если у соответствующих компьютеров имеется «честный» драйвер BIOS Int 14h, а не заглушка, возвращающая состояние модема «всегда готов» и ничего не делающая.
Гальваническая развязка сигнальных цепей — это отсутствие связи по постоянному току между ними, «схемной землей» и другими питающими шинами. При наличии гальванической развязки потенциал сигнальных цепей относительно «схемной земли» может быть весьма значительным, но не должен превышать напряжения изоляции, допустимого для данного интерфейса. Гальваническая развязка может обеспечиваться разными способами, применимость их зависит от требований к напряжению изоляции и особенностей интерфейсных сигналов.
Оптическая развязка позволяет передавать дискретные сигналы в широком диапазоне частот, от постоянного тока до предела, обусловленного быстродействием приемника. Оптическая развязка может выполняться на оптронах — комбинациях излучателя (светодиода) и приемника (фотодиода, фототранзистора с усили-
13.3. Интерфейсы блока питания PC __________________________________ 511
телем-формирователем) в одной микросхеме. Напряжение изоляции может достигать 1-1,5 кВ, максимальная частота — от десятков кГц до десятков МГц. Оп-тронная развязка применяется, например, в интерфейсах «токовая петля», MIDI. Еще лучшую развязку (по напряжению) обеспечивают интерфейсы с оптоволоконной связью, где между излучателем и приемником располагается оптический кабель с коннекторами. Такая связь применяется в линиях Fiber Channel, оптических версиях Ethernet (и других сетевых технологиях), а также цифровой аудио-технике (S/PDIF). Полоса частот может достигать единиц и десятков Гигагерц, но это требует дорогостоящих излучателей и приемников. В оптических интерфейсах используется стеклянное и пластиковое волокно. Стеклянное волокно позволяет обеспечивать большую дальность связи, но все компоненты довольно дороги, а оконцовка волокна разъемами — довольно сложная процедура, которая может упрощаться за счет применения дорогих компонентов. Если дальность связи ограничивается единицами-десятками метров, то применяют гораздо более дешевое пластиковое волокно.
Интерфейсы компьютерных сетей
Компьютерные сети разделяются на локальные (в пределах здания или группы соседних зданий) и глобальные. В настоящее время в локальных сетях установилось практически полное господство технологии Ethernet с пропускной способностью 10,100 и 1000 Мбит/с, не за горами и скорость 10 Гбит/с. Из множества технологий и интерфейсов глобальных подключений здесь рассмотрим лишь интерфейс обычной (аналоговой) коммутируемой телефонной сети. Именно этот интерфейс широко используется для подключения модемов. Других технологий — локальных ARCNet, Token Ring, l OOVG- Any LAN и беспроводных, а также глобальных касаться не будем. Как и Ethernet, они достаточно подробно описаны в литературе [3].
Параллельный интерфейс — LPT-порт
Порт параллельного интерфейса был введен в PC для подключения принтера — отсюда и пошло его название LPT-порт (Line PrinTer — построчный принтер). Традиционный, он же стандартный, LPT-порт (так называемый SPP-nopm) ориентирован на вывод данных, хотя с некоторыми ограничениями позволяет и вводить данные. Существуют различные модификации LPT-порта — двунаправленный, ЕРР, ЕСР и другие, расширяющие его функциональные возможности, повышающие производительность и снижающие нагрузку на процессор. Поначалу они являлись фирменными решениями отдельных производителей, позднее был принят стандарт IEEE 1284.
С внешней стороны порт имеет 8-битную шину данных, 5-битную шину сигналов состояния и 4-битную шину управляющих сигналов, выведенные на разъем-розетку DB-25S. В LPT-порте используются логические уровни ТТЛ, что ограничивает допустимую длину кабеля из-за невысокой помехозащищенности ТТЛ-интерфейса. Гальваническая развязка отсутствует — схемная земля подключаемого устройства соединяется со схемной землей компьютера. Из-за этого порт является уязвимым местом компьютера, страдающим при нарушении правил подключения и заземления устройств. Поскольку порт обычно располагается на системной плате, в случае его «выжигания» зачастую выходит из строя и его ближайшее окружение, вплоть до выгорания всей системной платы.
С программной стороны LPT-порт представляет собой набор регистров, расположенных в пространстве ввода-вывода. Регистры порта адресуются относительно базового адреса порта, стандартными значениями которого являются 3BCh, 378h и 278h. Порт может использовать линию запроса аппаратного прерывания, обычно IRQ7 или IRQ5. В расширенных режимах может использоваться и канал DMA.
Порт имеет поддержку на уровне BIOS — поиск установленных портов во время теста POST и сервисы печати Int 17h (см. п. 8.3.3) обеспечивают вывод символа (по опросу готовности, не используя аппаратных прерываний), инициализацию интерфейса и принтера, а также опрос состояния принтера.
Практически все современные системные платы (еще начиная с PCI-плат для процессоров 486) имеют встроенный адаптер LPT-порта. Существуют карты ISA с LPT-портом, где он чаще всего соседствует с парой СОМ-портов, а также с контроллерами
18
Глава 1. Параллельный интерфейс — LPT-nopr
дисковых интерфейсов (FDC+IDE). LPT-порт обычно присутствует и на плате дисплейного адаптера MDA (монохромный текстовый) и HGC (монохромный графический «Геркулес»). Есть и карты PCI с дополнительными LPT-портами.
К LPT-портам подключают принтеры, плоттеры, сканеры, коммуникационные устройства и устройства хранения данных, а также электронные ключи, программаторы и прочие устройства. Иногда параллельный интерфейс используют для связи между двумя компьютерами — получается сеть, «сделанная наколенке» (LapLink).
Последовательный интерфейс — СОМ-порт
Универсальный внешний последовательный интерфейс — СОМ-порт (Communications Port — коммуникационный порт) присутствует в PC начиная с первых моделей. Этот порт обеспечивает асинхронный1
обмен по стандарту RS-232C. СОМ-порты реализуются на микросхемах универсальных асинхронных приемопередатчиков. (UART), совместимых с семейством i8250/16450/16550. Они занимают в пространстве ввода-вывода по 8 смежных 8-битных регистров и могут располагаться по стандартным базовым адресам 3F8h (COM1), 2F8h (COM2), 3E8h (COM3), 2E8h (COM4). Порты могут вырабатывать аппаратные прерывания IRQ4 (обычно используются для СОМ1 и COM3) и IRQ3 (для COM2 и COM4). С внешней стороны порты имеют линии последовательных данных передачи и приема, а также набор сигналов управления и состояния, соответствующий стандарту RS-232C. СОМ-порты имеют внешние разъемы-вгшсм (male — «папа») DB25P или DB9P, выведенные на заднюю панель компьютера (см. п. 2.1). Характерной особенностью интерфейса является применение «не ТТЛ» сигналов — все внешние сигналы порта двуполярные. Гальваническая развязка отсутствует — схемная земля подключаемого устройства соединяется со схемной землей компьютера. Скорость передачи данных может достигать 115 200 бит/с.
Компьютер может иметь до четырех последовательных портов СОМ 1-COM4 (для машин класса AT типично наличие двух портов) с поддержкой на уровне BIOS. Сервис BIOS Int 14h обеспечивает инициализацию порта, ввод и вывод символа (не используя прерываний) и опрос состояния. Через Int 14h скорость передачи программируется в диапазоне 110-9600 бит/с (меньше, чем реальные возможности порта). Для повышения производительности широко используется взаимодействие программ с портом на уровне регистров, для чего требуется совместимость аппаратных средств СОМ-порта с программной моделью 18250/16450/16550.
Название порта указывает на его основное назначение — подключение коммуникационного оборудования (например, модема) для связи с другими компьютерами, сетями и периферийными устройствами.
К порту могут непосредственно подключаться и периферийные устройств с последовательным интерфейсом: принтеры, плоттеры, терминалы и другие. СОМ-порт широко используется для подключения мыши, а также организации непосредственной связи двух компьютеров. К СОМ-порту подключают и электронные ключи.
Беспроводные интерфейсы
Беспроводные (wireless) интерфейсы позволяют освободить устройства от связывающих их интерфейсных кабелей, что особенно привлекательно для малогабаритной периферии, по размеру и весу соизмеримой с кабелями. В беспроводных интерфейсах используются электромагнитные волны инфракрасного (IrDA) и радиочастотного (Bluetooth) диапазонов. Кроме этих интерфейсов периферийных устройств существуют и беспроводные способы подключения к локальным сетям (см. [3]).
Последовательные шины USB и Fire Wire
Последовательные шины позволяют объединять множество устройств, используя всего 1-2 пары проводов. Функциональные возможности этих шин гораздо шире, чем у традиционных интерфейсов локальных сетей, — USB и FireWire способны передавать изохронный трафик аудио- и видеоданных. Последовательные шины по своей организации сильно отличаются от параллельных. В последовательных шинах нет отдельных линий для данных, адреса и управления — все протокольные функции приходится выполнять, пользуясь одной или двумя (в FireWire) парами сигнальных проводов. Это накладывает отпечаток на построение шинного протокола, который в последовательных шинах строится на основе пересылок пакетов — определенным образом организованных цепочек бит. Заметим, что в терминологии USB пакеты и кадры имеют несколько иную трактовку, нежели в сетях передачи данных. В параллельных шинах имеются возможности явной синхронизации интерфейсной части ведущих и ведомых устройств; исполнение каждого шага протокола обмена может быть подтверждено, и, при необходимости, некоторые фазы обмена могут продлеваться по «просьбе» не успевающего устройства. В последовательных шинах такой возможности нет — пакет пересылается целиком, а синхронизация возможна только по принимаемому потоку бит. Эти и другие особенности сближают последовательные шины с локальными сетями передачи данных.
Наибольшую популярность имеют шины USB и FireWire, хотя последняя пока что в PC-совместимых компьютерах используется не повсеместно. Последовательные шины FireWire и USB, имея общие черты, являются, тем не менее, существенно различными технологиями. Обе шины обеспечивают простое подключение большого числа ПУ (127 для USB и 63 для FireWire), допуская коммутации и включение/выключение устройств при работающей системе. По структуре топология обеих шин достаточно близка, но FireWire допускает большую свободу и пространственную протяженность. Хабы USB входят в состав многих устройств и для пользователя их присутствие зачастую незаметно.
Обе шины имеют линии пита ния устройств, но допустимая мощность для FireWire значительно выше. Обе шины поддерживают технологию PnP (автоматическое конфигурирование при включении/выключении) и снимают проблему дефицита адресов, каналов DMA и прерываний. Различаются пропускная способность и управление шинами.
88___________________________ Глава 4. Последовательные шины USB и FireWire
Шина USB ориентирована на периферийные устройства, подключаемые к PC. Изохронные передачи USB позволяют передавать цифровые аудиосигналы, а шина USB 2.0 способна нести и видеоданные. Все передачи управляются централизованно, и PC является необходимым управляющим узлом, находящимся в корне древовидной структуры шины. Адаптер USB пользователи современных ПК получают почти бесплатно, поскольку он входит в состав всех современных чипсетов системных плат. Правда, адаптеры USB 2.0 первое время будут выпускаться в виде карт PCI. Непосредственное соединение нескольких PC шиной USB не предусматривается, хотя выпускаются «активные кабели» для связи пары компьютеров и устройства-концентраторы.
Шина FireWire ориентирована на устройства бытовой электроники, которые с ее помощью могут быть объединены в единую домашнюю сеть. К этой сети может быть подключен компьютер, и даже не один. Принципиальным преимуществом шины 1394 является отсутствие необходимости в специальном контроллере шины (компьютере). Любое передающее устройство может получить полосу изохронного трафика и начинать передачу по сигналу автономного или дистанционного управления — приемники «услышат» эту информацию. При наличии контроллера соответствующее ПО может управлять работой устройств, реализуя, например, цифровую студию нелинейного видеомонтажа или снабжая требуемыми мультимедийными данными всех заинтересованных потребителей информации.
Шина SCSI
Системный интерфейс малых компьютеров SCSI (Small Computer System Interface, произносится «скази») предназначен для соединения устройств различных классов: памяти прямого (жесткие диски) и последовательного доступа (стриммеры), CO-ROM, оптических дисков однократной и многократной записи, устройств автоматической смены носителей информации, принтеров, сканеров, коммуникационных устройств и процессоров. Устройством SCSI (SCSI Device) называется как хост-адаптер, связывающий шину SCSI с какой-либо внутренней шиной компьютера, так и контроллер целевого устройства (target controller), с помощью которого устройство подключается к шине SCSI. С точки зрения шины все устройства могут быть равноправными и являться как инициаторами обмена (инициализирующими устройствами, ИУ), так и целевыми устройствами (ЦУ), однако чаще всего в роли И У выступает хост-адаптер. Каждое ЦУ может содержать до 8 независимо адресуемых логических устройств (ЛУ) со своими номерами LUN (Logical Unit Number), представляющих ПУ или их части.
Цервая версия,шины, позже названная SCSI-1, была стандартизована ANSI в 1986 грду (ХЗ. 131-1986). Это была 8-битная параллельная шина с максимальной частотой переключений1 5 МТ/с, допускающая подключение до 8 устройств. Скорость передачи данных достигала 5 Мбайт/с, режим передачи данных — асинхронный, Впоследствии (199;1 гО появилась спецификация SCSI-2 (ХЗ.131-1994), расширяющая возможности шины. Частота переключений шины Fast SCSI-2 дости-щет.10 MT/Cj а Шга SCSI-2 — 20 МТ/с, Разрядность данных может быть увеличена до 16 бит — этд
версия называется Wide SCSI-2 (широкая), а 8-битную версию стали называть Narrow (узкая). 16-битная шина допускает включение 16 устройств. Стандарт SCSI-2 определяет и 32-бктную версию интерфейса, которая не получила практического применения. Появился синхронный режим передачи данных, введена дифференциальная версия интерфейса. Спецификация SCSI-2 определяет систему команд, которая включает набор базовых команд CCS (Common Command Set), обязательных для всех ПУ, и специфических команд для периферии различных классов.
Стандарт полностью описывает протокол взаимодействия устройств, включая структуры передаваемо^ информации. Поддержка устройствами исполнения цепочек команд (до 256 команд) и независимость работы устройств друг от друта:
обусловливают высокую эффективность применения SCSI в многозадачных системах. Возможность присутствия на шине более одного контроллера (инициатора обмена) Позволяет обеспечить разделение (совместное использование) пери-
Шины и карты расширения
Шины расширения (Expansion Bus) являются средствами подключения системного уровня: они позволяют адаптерам и контроллерам непосредственно использовать системные ресурсы PC — пространства памяти и ввода-вывода, прерывания, каналы прямого доступа к памяти. Устройства, подключенные к шинам расширения, могут и сами управлять этими шинами, получая доступ к остальным ресурсам компьютера (обычно к ячейкам памяти). Такое прямое управление (bus mastering) позволяет разгружать центральный процессор и добиватьсд высоких скоростей обмена данными. Шины расширения механически реализуются в виде слотов (щелевых разъемов) или штырьковых разъемов; для них характерна малая длина проводников, что позволяет достигать высоких частот работы. Эти шины могут и не выводиться на разъемы, но использоваться для подключения устройств в интегрированных системных платах.
В современных компьютерах основной шиной расширения является PCI; ее дополняет порт AGP. Шина ISA из настольных компьютеров уходит, но она сохраняет свои позиции в промышленных и встраиваемых компьютерах, как в традиционном слотовом варианте, так и в «бутербродном» варианте РС/104. В блокнотных компьютерах широко применяются слоты PCMCIA с шинами PC Card и Card Bus. Шина LPC является современным дешевым средством подключения нересурсоемких устройств на системной плате. Все эти шины подробно рассматриваются в данной главе. Информацию по отжившим шинам MCA, EISA, VLB можно найти в литературе [1,2, 5].
Изготовителям карт расширения приходится точно следовать протоколам шины, включая жесткие частотные и нагрузочные параметры, а также временные диаграммы. Отклонения приводят к несовместимости с некоторыми системными платами. Если при подключении к внешним интерфейсам это ведет к неработоспособности только самого устройства, то некорректное подключение к системной шине может блокировать работу всего компьютера. Следует также учитывать ограниченность ресурсов PC.
Самые дефицитные из них — линии запросов прерываний; проблема прерываний, известная по шине ISA, так и не была радикально решена с переходом на PCI. Другой дефицит — каналы прямого доступа шины ISA, используемые и для прямого управления шиной, — в шине PCI преодолен. Доступное адресное пространство памяти и портов ввода-вывода, в котором было тесновато абонентам шины ISA, в PCI существенно расширено. Проблемы распределения ресурсов на шинах решаются по-разному, но чаще всего применяется технология PnP.
146
Глава 6. Шины и карты расширения
ISA-8 |
4 |
3 |
8 |
20 |
8 |
ISA-16 |
8 |
7 + |
16 |
24 |
8 |
LPC |
6,7 |
7 + |
8/16/32 |
32 |
33 |
EISA |
33,3 |
7 + |
+ 32 |
32 |
8,33 |
MCA-16 |
16 |
+ |
+ 16 |
24 |
10 |
МСА-32 |
20 |
+ |
+ 32 |
32 |
10 |
VLB |
132 |
32/64 |
32 |
33-50(66) |
|
PCI |
132/264 |
+ |
+ 32/64 |
32 |
33/66 |
PCI-X |
532/1064 |
+ |
+ 32/64 |
32/64 |
33/66 |
AGP |
266/532/1064 |
+ |
+ 32 |
32/64 |
66 |
1x/2x/4x |
|||||
PCMCIA |
10/20 |
+ |
+ 8/16 |
26 |
10 |
Card Bus |
132 |
+ |
+ 32 |
32 |
33 |
Интерфейсы электронной памяти
Электронная память применяется практически во всех подсистемах PC, выступая в качестве оперативной памяти, кэш-памяти, постоянной памяти, полупостоянной памяти, буферной памяти, внешней памяти. В этой главе описаны интерфейсы микросхем и модулей динамической, статической и энергонезависимой памяти.
Специализированные интерфейсы периферийных устройств
В этой главе описываются интерфейсы периферийных устройств, от самых необходимых (клавиатура, дисплей, мышь, принтер) до мультимедийных (видео-и аудиоустройства) и развлекательных (джойстик и его «родственники»).
Интерфейсы устройств хранения
Устройства хранения данных — накопители на магнитных дисках (гибких и жестких, фиксированных и сменяемых), оптические диски CD и DVD, ленточные и твердотельные — подключаются к компьютеру самыми разнообразными способами. Первые устройства хранения в ПК — накопители на гибких магнитных дисках (НГМД) — подключались интерфейсным кабелем-шлейфом к контроллеру, отделенному от самих устройств. Этот специализированный интерфейс сохранился до сих пор, им подключают дисководы, требующие скорости передачи всего 500 Кбит/с (около 60 Кбайт/с). Скорость 1000 Кбит/с, требуемая для так и не распространившихся дисководов на 2,88 Мбайт, осталась невостребованной. К интерфейсу дисководов подключали и старые стриммеры (очень тихоходные). Аналогичный интерфейс поначалу использовался и для подключения винчестеров (так называемых MFM и RLL), по нему передавались «сырые» данные записи чтения с головок диска, правда, усиленные. Позже накопители слегка «интеллектуализировали», и появился (ненадолго) интерфейс дисков ESDI, обеспечивающий скорость передачи данных аж 1 Мбайт/с. Однако вскоре контроллер полностью переселился на само устройство, да еще и с собственной буферной памятью (сначала на один сектор, а потом объем стал стремительно расти), и из внешнего интерфейса устройства хранения ушла вся специфика, связанная с магнитной записью и воспроизведением данных. Так появились устройства с интерфейсом AT А, начавшим свою историю в 1988 г. и ставшим в наши дни самым распространенным. Для устройств, логически отличающихся от жестких дисков — оптических, магнитооптических, ленточных и любых других, — в 1996 г. была принята спецификация AT API. Это пакетное расширение интерфейса, которое позволяет передавать по шине АТА устройству блоки командной информации, структура которых была позаимствована из SCSI. Потолок скорости АТА — 100 Мбайт/с (Ultra DMA Mode 5). Интерфейс АТА имеет уже вполне видимую границу по адресации около 137 Гбайт, в AT API используется принятая в SCSI 32-битная адресация, позволяющая адресовать до 2 Тбайт (при 512-байт-ном блоке).
Дальнейшее развитие интерфейса — Serial ATA; здесь повышается скорость обмена с устройством, решается проблема одновременной работы с несколькими устройствами, значительно расширяются возможности адресации.
Для устройств хранения используют и универсальные интерфейсы, первым конкурентом АТА является шина SCSI, как в парарельном варианте так и в последовательном (FCAL). Примерно при тех же скоростях обмена SCSI позволяет эффек-
9.1. Интерфейс НГМД 353
тивно работать с несколькими устройствами на одной шине, которая во время выполнения команды с длительной фазой ожидания данных свободна для обмена с другими устройствами. В отличие от сугубо внутренней шины AT A, SCSI позволяет подключать и внешние устройства. Для внешних устройств хранения с успехом применяются и шины USB, реже Fire Wire, а также подключение к LPT-порту.
Архитектурные компоненты IBM PC-совместимого компьютера
Аппаратные интерфейсы, описанные в книге, в IBM-PC-совместимом компьютере «живут» в специфическом архитектурном окружении. Эту специфику приходится учитывать при проектировании аппаратной части устройств, чтобы обеспечить с ними эффективное программное взаимодействие. В этой главе вкратце рассматриваются особенности процессоров х8б и связанные с этими особенностями распределение памяти, организация ввода-вывода и прерываний. Здесь же рассматривается традиционный контроллер DMA, системные средства измерения времени, а также способы внедрения собственных расширений BIOS и нетрадиционной (бездисковой) загрузки ПО в специализированные компьютеры на базе IBM PC.
Вспомогательные последовательные интерфейсы и шины
В этой главе рассматриваются интерфейсы и шины, предназначенные, в основном, для «внутреннего использования». В этом качестве PC используется для идентификации модулей DIMM, информация о которых хранится в маленьких микросхемах энергонезависимой памяти. В ряде современных системных плат присутствует шина SMBus, основанная на том же интерфейсе PC. Эта шина используется для считывания идентификационной информации модулей памяти, по ней же осуществляется доступ к памяти идентификаторов и средствам термоконтроля процессоров Хеоп. Она же входит и в состав сигналов слота CNR (слот подключения расширений аудиокодека и телекоммуникаций) для конфигурирования аудио- и коммуникационного оборудования. По интерфейсу PC, входящему в интерфейс VESA DDC1/2B, современные мониторы обмениваются конфигурационной и управляющей информацией с графическим адаптером (а через него и с центральным процессором). Канал DDC входит в обычный 15-контактный аналоговый интерфейс VGA, его развитие EVC и цифровые интерфейсы P&D, DVI и DFP. А при поддержке графическим адаптером и монитором интерфейса DDC1/2AB пользователь теоретически получает возможность внешнего подключения дополнительных устройств по шине ACCES.Bus через разъем, расположенный на мониторе (практически таких мониторов встречать не доводилось). Этими устройствами могут быть устройства позиционирования (планшеты, мыши), считыватели карт, штрих-кодов и т. п. Последовательная шина ACCESS.Bus, основанная на PC, разработана фирмой DEC для взаимодействия компьютера с его аксессуарами — например, монитором (канал VESA DDC), интеллектуальными источниками питания (Smart Battery) и т. п. С помощью интерфейса PC можно загружать программы (firmware) в энергонезависимую память (флэш) ряда популярных микроконтроллеров. Интерфейс PC обеспечивает скорость передачи данных до 100 и даже до 400 Кбит/с, при этом он гораздо проще и дешевле интерфейса RS-232C с его «потолком» 115 Кбит/с и позволяет легко подключать несколько устройств, с поддержкой «горячего» подключения/ отключения и технологии PnP. Недавно в спецификацию PC была введена высокая скорость передачи, до 3,4 Мбит/с, но на такой скорости могут работать лишь новые микросхемы со специальной аппаратной поддержкой интерфейса.
11.1. Последовательные шины на базе I2C_______________________________ 421
Интерфейс SMI в явном виде в ПК встречается нечасто, он «родом» из коммуникационной аппаратуры Fast Ethernet, где широко используется для управления модулями физического уровня (в том числе и сменными модулями концентраторов). Интерфейсы SPI и JTAG встречаются в аппаратуре, основанной на микроконтроллерах и конфигурируемой логике, — наиболее часто они используются для загрузки конфигурационной информации (и кодов программ). Для тех же целей применяются и другие трехпроводные и четырехпроводные интерфейсы, но здесь мы ограничимся лишь упоминанием об их существовании.
Интерфейсы питания,
заземление
и гальваническая развязка
По традиции «аппаратную» книгу заключает глава о «здоровом питании», очень необходимом для выживания аппаратных интерфейсов. Все внутренние устройства ПК, включая и интерфейсные адаптеры, получают напряжение от блока питания системного блока и связаны общей «схемной землей» — шиной GND. Часть внешних устройств получают питание от того же блока питания, пользуясь штатными и нештатными способами. Штатное питание выводится на интерфейсные разъемы клавиатуры и мыши PS/2 (+5 В), USB (+5 В) и Fire Wire (8-40 В). «Нештатным» способом питание можно получить от сигнальных линий LPT-порта (менее 5 В) и СОМ-порта (двуполярное, около 12 В), но лишь с небольшим током нагрузки и некоторыми аппаратными и программными ухищрениями. Питание от сигнальных цепей интерфейса используется мышью, электронными ключами защиты и иными устройствами с малым потреблением. Остальные внешние устройства питаются от собственных источников питания со своей «схемной землей» и цепями заземления, и при их стыковке с системным блоком (и между собой) могут возникать проблемы заземления, о которых речь пойдет ниже. Проблемы заземления радикально решаются применением гальванической развязки сигнальных цепей от «схемной земли», но эту развязку имеют далеко не все интерфейсы.
У каждой шины USB должен быть один (и только один!) хост — компьютер с контроллером USB. Хост делится на три основных уровня.
¦ Интерфейс шины USB обеспечивает физический интерфейс и протокол шины.
Интерфейс шины реализуется хост-контроллером, имеющим встроенный корне
вой хаб, обеспечивающий точки физического подключения к шине (гнезда USB
типа «А»). Хост-контроллер отвечает за генерацию (микро)кадров. На аппарат
ном уровне хост-контроллер обменивается информацией с основной памятью
компьютера, используя прямое управление шиной (bus-mastering) с целью
минимизации нагрузки на центральный процессор.
¦ Система USB, используя хост-контроллер(ы), транслирует клиентское «видение» обмена данными с устройствами в транзакции, выполняемые с реальными устройствами шины. Система отвечает и за распределение ресурсов USB —
100__________________________ Глава 4. Последовательные шины USB и FireWire
полосы пропускания и мощности источников питания (для устройств, питающихся от шины). Система состоит из трех основных частей:
• Драйвер хост-контроллера — HCD (Host Controller Driver) — модуль, привязанный к конкретной модели контроллера, обеспечивающий абстрагирование драйвера USB и позволяющий в одну систему включать несколько разнотипных контроллеров.
• Драйвер USB — USBD (USB Driver) — обеспечивает основной интерфейс (USBDI) между клиентами и устройствами USB. Интерфейс HCDI (Host Controller Driver Interface) между USBD и HCD спецификацией USB не регламентируется. Он определяется разработчиками ОС и должен поддерживаться разработчиками хост-контроллеров, желающих иметь поддержку своих изделий конкретными ОС. Клиенты не могут пользоваться интерфейсом HCDI; для них предназначен интерфейс USBDI. USBD обеспечивает механизм обмена в виде пакетов IRP (I/O Request Packet — пакет запроса ввода-вывода), состоящих из запросов на транспортировку данных по заданному каналу.
Кроме того, USBD отвечает за некоторое абстрактное представление устройства USB клиенту, которое позволяет выполнять конфигурирование и управление состоянием устройств (включая и стандартное
управление через конечную точку «О»). Реализация интерфейса USBDI
определяется операционной системой; в спецификации USB излагаются
только общие идеи.
• Программное обеспечение хоста реализует функции, необходимые для функ
ционирования системы USB в целом: обнаружение подключения и отключения устройств и выполнение соответствующих действий по этим событиям (загрузки требуемых драйверов), нумерацию устройств, распределение полосы пропускания и потребляемой мощности и т. п.
¦ Клиенты USB — программные элементы (приложения или системные компоненты), взаимодействующие с устройствами USB. Клиенты могут взаимодействовать с любыми устройствами (их конечными точками), подключенными к системе USB. Однако система USB изолирует клиентов от непосредственного обмена с какими-либо портами (в пространстве ввода-вывода) или ячейками памяти, представляющими интерфейсную часть контроллера USB.
В совокупности уровни хоста имеют следующие возможности:
¦ обнаружение подключения и отсоединения устройств USB;
¦ манипулирование потоками управления между устройствами и хостом;
¦ манипулирование потоками данных;
¦ сбор статистики активности и состояний устройств;
¦ управление электрическим интерфейсом между хост-контроллером и устрой
ствами USB, включая управление электропитанием.
Хост-контроллер является аппаратным посредником между устройствами USB и хостом. Программная часть хоста в полном объеме реализуется операционной
4.1. Шина USB
системой. До загрузки ОС может функционировать лишь усеченная часть ПО USB, поддерживающая только устройства, требующиеся для загрузки. Так, в BIOS современных системных плат имеется поддержка клавиатуры USB, реализующая функции сервиса Int 10h.
При загрузке системы USB эта «дозагрузочная» поддержка игнорируется — система начинает работу с контроллером «с чистого листа», то есть со сброса и определения всех подключенных устройств. По окончании работы ОС передача состояния USB «дозагрузочной» поддержке не предусматривается, так что для нее это событие тоже может рассматриваться как первоначальное включение. В спецификации РС'2001 выдвигается требование к BIOS поддержки USB в такой мере, чтобы обеспечивалась загрузка ОС с устройств USB. USB поддерживает динамическое подключение и отключение устройств. Нумерация (перенумерация) устройств шины идет постоянно, отслеживая изменения физической топологии.
Все устройства подключаются через порты хабов. Хабы определяют подключение и отключение устройств к своим портам и сообщают состояние портов при запросе от контроллера. Хост разрешает работу порта и адресуется к устройству через канал управления, используя нулевой адрес — USB Default Address. При начальном подключении или после сброса все устройства адресуются именно так.
Хост определяет, является новое подключенное устройство хабом или функцией, и назначает ему уникальный адрес USB. Хост создает канал управления (control pipe) с этим устройством, используя назначенный адрес и нулевой номер точки назначения.
Если новое устройство является хабом, хост определяет подключенные к нему устройства, назначает им адреса и устанавливает каналы. Если новое устройство является функцией, уведомление о подключении передается диспетчером USB заинтересованному ПО.
Когда устройство отключается, хаб автоматически запрещает соответствующий порт и сообщает об отключении контроллеру, Который удаляет сведения о данном устройстве из всех структур данных. Если отключается хаб, процесс удаления выполняется для всех подключенных к нему устройств. Если отключается функция, уведомление посылается заинтересованному ПО.
Хост-адаптер является важнейшим узлом интерфейса, определяющим производительность системы SCSI. В его задачу входит передача данных между хостом (программой, исполняемой центральным процессором) и другими устройствами, подключенными к шине, по протоколам вышеописанных физических интерфейсов. Структуры передаваемых блоков данных и команды устройств стандартизованы, их описание приводится в литературе [4, 9]. Однако архитектуры и программные модели адаптеров не стандартизованы (в отличие, например, от адаптеров AT А). Существует широкий спектр адаптеров, к простейшим можно подключать только устройства, некритичные к производительности. Такие адаптеры могут входить, например, в комплект поставки сканеров, а подключение к ним диска может оказаться невозможным. Высокопроизводительные адаптеры имеют собственный специализированный процессор, большой объем буферной памяти и используют высокоэффективные режимы прямого управления шиной для доступа к памяти компьютера. Адаптеры SCSI существуют для всех шин расширения (ISA, EISA, MCA, PCI, VLB, PCMCIA, CardBus), шин USB и FireWire и для LPT-порта. Ряд системных плат имеют встроенный SCSI-адаптер, подключенный к одной из локальных шин. При выборе интерфейса, к которому подключается хост-адаптер, учитывайте производительность — интерфейс не должен стать узким местом при обмене с высокопроизводительными устройствами SCSI. Наибольшую эффективность имеют хост-адаптеры для шины PCI. Конечно, за мощный адаптер для сервера приходится платить — его цена может превышать цену рядового настольного компьютера. Еще дороже хост-адаптеры с встроенными контроллерами RAID-массивов, которые содержат мощный RISC-процессор и большой объем локальной памяти.
142__________________________________________________ Глава 5. Шина SCSI
Конфигурирование хост-адаптеров с точки зрения шины SCSI не отличается от конфигурирования других устройств. Для современных адаптеров вместо джам-перов используется программное конфигурирование.
Утилита конфигурирования обычно входит в расширение BIOS, установленное на плате адаптера, и приглашение к ее вызову выводится на экран во время теста POST. Как и всякая карта расширения, хост-адаптер должен быть сконфигурирован с точки зрения шины расширения, к которой он подключается. Системные ресурсы для шинного SCSI-адаптера включают:
¦ область памяти для расширения ROM BIOS, необходимого для поддержки
конфигурирования устройств и дисковых функций (если в системе установлено
несколько однотипных хост-адаптеров, для них используется ROM BIOS с одного адаптера, а разнотипные хост-адаптеры не всегда могут работать вместе);
¦ область разделяемой буферной памяти;
¦ область портов ввода-вывода (I/O port);
¦ IRQ — запрос прерывания;
¦ DMA — канал прямого доступ к памяти (для шин ISA/EISA), часто используемый для захвата управления шиной (bus mastering).
Всем устройствам SCSI, в том числе и хост-адаптеру, требуются специальные драйверы. Базовый драйвер дисковых устройств входит в BIOS хост-адаптера; он обычно эмулирует трехмерную адресацию дискового сервиса Int 13h. Расширения, например ASPI (Advanced SCSI Programming Interface), загружаются отдельно. От драйверов сильно зависит производительность устройств SCSI. «Умное» ПО способно эффективно загружать работой устройства, а иногда и «срезать углы» — выполнять копирование данных между устройствами без выхода на системную шину компьютера. Наиболее предпочтительны драйверы, работающие в режиме прямого управления шиной (bus mastering); их применение позволяет реализовать все преимущества SCSI в многозадачных системах.
Применение излучателей и приемников инфракрасного (ИК) диапазона позволяет осуществлять беспроводную связь между парой устройств, удаленных на расстояние до нескольких метров. Инфракрасная связь — IR (Infra Red) Connection — безопасна для здоровья, не создает помех в радиочастотном диапазоне и обеспечивает конфиденциальность передачи. ИК-лучи не проходят через стены, поэтому зона приема ограничивается небольшим, легко контролируемым пространством. Инфракрасная технология привлекательна для связи портативных компьютеров со стационарными компьютерами или док-станциями. Инфракрасный интерфейс имеют некоторые модели принтеров, им оснащают многие современные малогабаритные устройства: карманные компьютеры (PDA), мобильные телефоны, цифровые фотокамеры и т. п.
Различают инфракрасные системы низкой (до 115,2 Кбит/с), средней (1,152 Мбит/с) и высокой (4 Мбит/с) скорости. Низкоскоростные системы служат для обмена короткими сообщениями, высокоскоростные — для обмена файлами между компьютерами, подключения к компьютерной сети, вывода на принтер, проекционный аппарат и т. п. Ожидаются более высокие скорости обмена, которые позволят передавать «живое видео». В 1993 году была создана ассоциация разработчиков систем инфракрасной передачи данных IrDA (Infrared Data Association), призванная обеспечить совместимость оборудования от различных производителей. В настоящее время действует стандарт IrDA 1.1, наряду с которым существуют и собственные системы фирм Hewlett Packard — HP-SIR (Hewlett Packard Slow Infra Red)
3.1. Инфракрасный интерфейс IrDA
79
и Sharp — ASK IR (Amplitude Shifted Keyed IR). Эти интерфейсы обеспечивают следующие скорости передачи:
¦ IrDA SIR (Serial Infra Red), HP-SIR -9,6-115,2 Кбит/с;
¦ IrDA HDLC, известный и как IrDA MIR (Middle Infra Red) - 0,576 и 1,152
Мбит/с;
¦ IrDA FIR (Fast Infra Red) - 4 Мбит/с;
¦ ASK IR - 9,6-57,6 Кбит/с.
IRRX(RX) |
Вход с приемника |
1 |
3 |
3 |
3 |
FIRRX (RXH) |
Вход с приемника FIR |
5 |
- |
- |
4 |
IRTX(TX) |
Выход на передатчик |
3 |
5 |
1 |
1 |
GND |
Общий |
2,7 |
4 |
2 |
2 |
Vcc (+5B) |
Питание |
4,6 |
1 |
5 |
5 |
NC |
Свободный |
— |
2 |
4 |
_ |
Для обращения программы к пространству ввода-вывода предназначены всего четыре инструкции процессора: IN (ввод из порта в регистр процессора), OUT (вывод в порт из регистра процессора), INS (ввод из порта в элемент строки памяти) и OUTS (вывод элемента из строки памяти в порт). Последние две инструкции, появившиеся с процессором 80286, могут использоваться с префиксом повтора REP, что обеспечивает быструю пересылку блоков данных между портом и памятью. Обмен данными с портами, при котором применяют строковые инструкции ввода-вывода, получил название PIO(Programmed Input/Output — программированный ввод-вывод). Скорость такого обмена превышает скорость стандартного канала прямого доступа (DMA), правда, DMA в отличие от PIO почти не занимает процессорного времени.
474 Глава 12. Архитектурные компоненты IBM PC-совместимого компьютера
Разрядность слова, передаваемого за одну инструкцию ввода-вывода, может составлять 8, 16 или 32 бита. В зависимости от «выровненности» адреса по границе слова и разрядности данных используемой шины это слово может передаваться за один или несколько циклов шины с указанием соответствующего нарастающего адреса в каждом цикле обращения к памяти. Инструкции ввода-вывода порождают шинные циклы обмена, в которых вырабатываются сигналы чтения порта/записи в порт. На шине ISA это сигналы IORD* и IOWR* соответственно; они и отличают пространство ввода-вывода от пространства памяти, где соответствующие операции чтения и записи вырабатывают сигналы MEMRD* и MEMWR*. На шине PCI разделение памяти и пространства ввода-вывода происходит иначе — здесь тип операции кодируется четырехбайтной командой, в зависимости от типа инструкции, выполняемой процессором.
Во избежание недоразумений и для экономии шинных циклов рекомендуется выравнивать адреса 16-битных портов по границе слова, а 32-битных — по границе двойного слова. Обращения по выровненным адресам выполняется за один цикл системной шины. Обращение по невыровненным адресам выполняется за несколько циклов, причем однозначная последовательность адресов обращений (которая зависит от модели процессора) не гарантируется.
Так, например, одна инструкция вывода слова по нечетному адресу приведет к генерации двух смежных шинных циклов записи. При программировании обращений следует учитывать специфику устройств ввода-вывода. Если, например, устройство допускает только 16-разрядные обращения, то старший байт его регистров будет доступен лишь при вводе-выводе слова по четному адресу.
Некоторую сумятицу в стройную систему адресации вводят регистры AT А. Здесь регистр 1FO (1 канал) является 16-битным регистром данных, но в то же время есть и совершенно независимый от него 8-битный регистр 1F1. В Serial ATA эта тема развита — здесь имеются еще четыре 16-битных регистра с адресами (относительно базового адреса блока командных регистров) 2, 3, 4 и 5, которые раньше были 8-битными.
В реальном режиме процессора программе доступно все пространство адресов ввода-вывода. В защищенном режиме 32-разрядных процессоров (частным случаем которого является и виртуальный режим V86) имеется возможность программного ограничения доступного пространства ввода-вывода, определяя его максимальный размер (начиная с нулевого адреса и в пределах 64 К), а внутри разрешенной области доступ может быть разрешен или запрещен для каждого конкретного адреса. Размер области и карта разрешенных портов (Ю Permission Bitmap) задается операционной системой в дескрипторе сегмента состояния задачи (TSS). При обращении по неразрешенному адресу вырабатывается исключение процессора, а поведение его обработчика определяется операционной системой. Возможно снятие задачи-нарушителя (знаменитое сообщение «приложение... выполнило недопустимую операцию и будет закрыто»). Возможен и другой вариант, когда по обращению к порту монитор операционной системы выполняет некоторые действия, создавая для программы иллюзию реальной операции ввода-вывода. Таким образом виртуальная машина по операциям ввода-вывода может общаться с виртуаль-
12.5. Процессоры х86________________________________________________ 475
ными устройствами. Заметим, что ОС Windows 9x не особо заботится о виртуализации и защите ввода-вывода; здесь, например, из DOS-окна можно обращаться к любым портам, даже к портам устройств, занятых операционной системой.
Сервисы BIOS Int I Ah позволяют считывать и модифицировать значения системного таймера, даты и времени, а также установки будильника часов реального времени CMOS RTC. Перечисленные ниже номера функций указываются при вызове в регистре АН.
1. АН=0 — чтение системного таймера (двойного слова по адресу 40:006Eh в BIOS Data Area, инкрементируемого по прерываниям от канала 0 счетчика-таймера 8253/8254 примерно раз в 55 мс. Таймер обнуляется при выполнении тестаPOST после аппаратного сброса). Возвращает значение таймера, в СХ — старшую часть, в DX — младшую. А1_=0, если за последние 24 часа не было переполнения таймера. В современных версиях сброс AL возвращает счетчик переполнений таймера, хранящийся в ячейке 40:0070h (в старых версиях это был флаг).
2. АН=1 — установка системного таймера (СХ — старшая часть, в DX — младшая) и сброс флага (счетчика) переполнения таймера в ячейке 40:0070h. В случае ошибки устанавливается флаг CF=1.
3. АН=2 — чтение времени из RTC. Возвращает в упакованном BCD-формате час (в регистре СН), минуту (CL), секунду (DH) и признак коррекции летнего/зимнего времени (DL=1 — коррекция используется, DL=0 — нет). Признаком успешной операции является флаг CF=0. Во избежание ошибок некоторых BIOS привызове флаг CF должен быть сброшен.
4. АН=3 — установка времени в RTC, назначение регистров и признак результата аналогичен функции 2.
12.8. Сервисы и прерывания BIOS______________________________________ 495
5. АН=4 — чтение даты из RTC. Возвращает в упакованном BCD-формате век(в регистре СН), две старшие цифры года (CL), месяц (DH) и день (DL). Признаком успешной операции является флаг CF=0. Во избежание ошибок некоторых BIOS при вызове флаг CF должен быть сброшен.
6. АН=5 — установка даты в RTC, назначение регистров и признак результата аналогичен функции 4.
7. АН=6 — установка времени срабатывания будильника RTC.
Возвращает в упакованном BCD-формате час (в регистре СН), минуту (CL) и секунду (DH). Если будильник уже установлен, переустановка не производится и возвращается флаг CF-1. При срабатывании будильник вызывает прерывание Int 4Ah.
8. АН=7 — отмена установки будильника.
Функции BIOS Int 15h позволяют программировать таймер CMOS RTC — вводить задержку или запускать таймер установки флага, указывая время в микросекундах (СХ — старшее слово, DX — младшее). Нулевое значение интервала не вызывает никаких действий. Достижимое разрешение в зависимости от производительности ПК может достигать единиц миллисекунд, максимальная выдержка — около 70 часов. Перечисленные ниже номера функций указываются при вызове в регистре АН или АХ.
9. AH=86h — задержка на заданное время. Управление будет возвращено вызвав шему процессу только через указанный интервал. По окончании задержки будет установлен бит 7 в ячейке BDA 0040:ООАО. Таймер может оказаться занятым, тогда вызов сразу возвратит флаг CF=1 (при успехе CF=0, а в AL окажется маска, записанная в 8259А#2).
10. AX=8300h — запуск таймера, устанавливающего флаг после указанной задержке бит 7 в ячейке, заданной регистрами ES: ВХ. При успешном запуске CF=0; если таймер занят (он один) — CF=1 и AL=0. Управление возвращается процессу сразу, а флаг будет установлен через заданное время. Перед завершением программа, запускавшая таймер, должна его сбросить функцией 830 lh (во-первых, чтобы освободить; во-вторых, чтобы снять «адскую машинку», которая неожиданно сама может изменить значение ячейки памяти, вполне возможно уже задействованную другим, ничего не «подозревающим» процессом).
И. AX=8301h —сброс того же таймера.
Поддержка клавиатуры заключается в обработке прерываний от устройства ввода и предоставлении сервисов ввода прикладным программам.
Прерывания, вызванные приходом кодов нажатия и отпускания клавиш, обрабатывает BIOS Int 9h. Каждый принятый скан-код (или цепочка) обрабатывается с учетом состояния клавиатурных флагов. Результат обработки (как правило, ASCII-символ в младшем байте и скан-код в старшем) помещается в клавиатурный буфер, расположенный в ОЗУ. По приему каждого символа указатель головы буфера увеличивается. Буфер организован в виде кольца, после достижения конца области буфера указатель головы установится на начало области. В случае переполнения буфера (указатель головы «догнал» указатель хвоста) очередное слово не записывается, и подается звуковой сигнал. Размер позволяет хранить описание шестнадцати фактов нажатий клавиш. Нажатие клавиш Ctrl, Shift, Alt и некоторых комбинаций в буфере не отмечается, но приводит к модификации бит ячеек флагов клавиатуры. Нажатие «системной» комбинации Ctrl+Alt+Del, клавиши PrintScreen (SysRq) и некоторых других к записи в клавиатурный буфер не приводит, а вызывает специальные процедуры.
Для обслуживания клавиатуры используются ячейки ОЗУ из области данных BIOS (BIOS Data Area):
¦ 0:0417,0:418 — флаги клавиатуры;
¦ 0:0419 — аккумулятор кода Alt-набора;
484______ Глава 12. Архитектурные компоненты IBM PC-совместимого компьютера
¦ 0:041А — указатель головы буфера (Buffer Head), 2 байта (модифицируется
при помещении символа в буфер);
¦ 0:041С — указатель хвоста буфера (Buffer Tail), 2 байта (модифицируется при извлечении символа из буфера);
¦ 0:041E-0:042D — область кольцевого буфера (16 слов).
Обработчик аппаратного прерывания до обработки принятого скан-кода вызывает прерывание BIOS IntlSh с AH=4Fh, а в AL находится принятый скан-код. Стандартный обработчик Int 15h(4Fh) просто выполняет возврат с CF=0, но его можно заменить специальным обработчиком, который будет при необходимости подменять принятые скан-коды на какие-либо иные (оставляя их в AL), что должно отмечаться установкой CF=1.
В старых версиях BIOS такой возможности перехвата не было, ее наличие можно определить вызовом Int 15h(COh).
Для клавиатуры USB или иного устройства ввода, заменяющего клавиатуру в качестве консоли, прерывание Int 9h должно вызываться программно при обработке каждого клавиатурного события. Обработчик этого прерывания должен выполнять те же действия: скан-код пропускать через Int 15h(4Fh) и помещать в клавиатурный буфер, а также модифицировать флаги клавиатуры.
Интерфейс прикладного уровня для клавиатуры представляет BIOS Int 16h. Его основное назначение — извлечение слов из клавиатурного буфера. Функция задается в регистре АН при вызове, результат помещается в регистр АХ.
¦ АН = OOh — чтение (с ожиданием готовности) и выборка слова из буфера
(меняется указатель хвоста). Индикаторы клавиатуры обновляются в соответ
ствии с состоянием флагов. Если буфер пуст, то на AT выполняется прерывание Int 15h (подфункция 90), что может использоваться ОС, например, для переключения задач. Чтобы программа не «зависала» на ожидании символа, предварительно стоит проверить готовность функцией Olh. Символы расширенной клавиатуры фильтруются — преобразуются в их аналоги 83-клавишной клавиатуры.
¦ АН = Olh — проверка готовности, чтение без выборки (указатели не изменяются). Признак наличия символа в буфере — установленный флаг ZF.
¦ АН = 02h — чтение состояния флагов (в AL — байт 0:417h, см. выше).
¦ АН = 03h — установка задержки и частоты автоповтора: BL — код задержки (00=250, 01=500,02=750,03=1000 мс), ВН - код частоты (см. п. 9.2.1).
¦ АН = 05h — запись слова из регистра СХ в буфер (меняется указатель головы). Признак успешной записи — AL=Q, если в буфере нет места, то AL=1.
¦ АН = 10h и AH=*llh — функции, аналогичные ООН и Olh, но предназначены специально для 101/102-клавишных клавиатур — в них не выполняется фильтрация символов расширенной клавиатуры.
Для ряда клавиш, отсутствующих в клавиатуре АТ-84, эти функции дадут результаты, отличающиеся от вызовов OOh и Olh.
12.8. Сервисы и прерывания BIOS_________________________________ 485
¦ AH=12h . — чтение расширенного состояния флагов (в АХ — слово KbdShif tFlagslOlRec), в котором младший байт совпадает с тем, что дает
i функция 02h (слово из 0:417h), а старший байт похож на слово из 0:418h. Назначение бит АХ:
• бит 0 — клавиша Shift (правая) нажата;
• бит 1 — клавиша Shift (левая) нажата; .
• бит 2 — клавиша Ctrl (любая) нажата;
• бит 3 — клавиша Alt (любая) нажата;
• бит 4 — включен индикатор Scroll Lock;
• бит 5 — включен индикатор Num Lock;
• бит 6 — включен индикатор Caps Lock;
• бит 7 — включен режим Insert;
• бит 8 — клавиша Ctrl (левая) нажата;
• бит 9 — клавиша Alt (левая) нажата;
• бит 10 — клавиша Ctrl (правая) нажата;
• бит 11 — клавиша Alt (правая) нажата;
• бит 12 — клавиша Scroll Lock нажата;
• бит 13 — клавиша Num Lock нажата;
• бит 14 — клавиша Caps Lock нажата;
• бит 15 — клавиша SysReq нажата.
Функции чтения буфера (00 и 10h) в регистре AL возвращают ASCII-код символа, в АН — скан-код. Символы, полученные нестандартным способом (в русском регистре или Alt-набором), сопровождаются нулевым скан-кодом. Alt-набор позволяет ввести в буфер любой символ — для этого его код в десятичной системе набирается на цифровой клавиатуре при нажатой клавише Alt, результат заносится в буфер при отпускании клавиши Alt.
При AL= 0 регистр АН содержит расширенный ASCII-код (Extended ASCII Keystroke). Дополнительные клавиши 101/102 клавиатур при использовании функций 10h-12h генерируют код EOh в младшем байте и скан-код, соответствующий аналогичным управляющим клавишам 83/84-клавишных клавиатур.
Функция записи (05h), несколько неожиданная для клавиатуры, позволяет легко имитировать работу оператора для различных демонстрационных программ. Если прикладная программа не перехватывает обслуживание клавиатуры на уровне аппаратного прерывания (In t 9h), то резидентная программа может ей «подбрасывать» слова в буфер, которые будут восприниматься как нажатие клавиш.
ASCII-коды буфера, соответствующие нажатию клавиш, приведены в [1, 7]. При русификации (или другой локализации) клавиатуры отслеживание переключения регистров (языков) ложится на обработчик аппаратного прерывания клавиатуры.
486______ Глава 12. Архитектурные компоненты IBM PC-совместимого компьютера
Функции дискового сервиса вызываются программным прерыванием Int 13h.
Традиционно дисковый сервис подразделяет физические диски на дискеты (diskette) и фиксированные диски (fixed disk). Набор функций (табл. 7.8) для этих классов устройств несколько различается как по составу, так и по реализации. Классы различаются по диапазонам номеров физических устройств: для дискет отводятся номера 0-7Fh (реально только 0-3), а для фиксированных дисков — 80h-FFh.
Контроллеры дисковых интерфейсов, имеющие в своем составе дополнительные модули BIOS, перехватывают вектор Int 13h, беря на себя обслуживание своих устройств. Когда в IBM PC/XT появились жесткие диски со своим контроллером, модуль BIOS этого контроллера, инициализирующийся во время теста POST, вставал на место Int 13 h, а указатель на исходный обработчик дискового сервиса (драйвер НГМД из системной BIOS) сохранялся на месте Int 40h. Хотя поддержка жестких дисков давно уже включена в системную BIOS, ради совместимости
12.8. Сервисы и прерывания BIOS______________________________________ 487
возможность использования прерывания Int 40h для вызова драйвера гибких дисков сохраняется. Интерфейс этого вызова совпадает clnt 13h,но номер устройства (в регистре DL) не должен превышать 7Fh.
Кроме функций дискового сервиса (Int 13h)c дисковыми устройствами связаны еще и векторы, обслуживающие аппаратные прерывания от контроллера НГМД — Int 0Eh (линия IRQ 6) и от контроллера жестких дисков — Int 76h (линия IRQ 14). При наличии двухканального порта АТА второй канал обычно задействует линию IRQ 15 (вектор 77h). В XT контроллер жестких дисков занимал линию IRQ 5 (вектор ODh). Дополнительные контроллеры дисков могут использовать и другие прерывания. Аппаратные прерывания вырабатываются контроллерами по завершении (нормальному и аварийному) внутренних операций. На эти прерывания BIOS не реагирует, а при инициализации их векторы направляются на программную заглушку (инструкцию IRET).
Стандартные драйверы дисковых функций BIOS (включая и расширенный сервис) имеют однозадачное происхождение.
Во время выполнения функции значи тельное процессорное время может затрачиваться на ожидание завершения операции устройством. Драйверы многозадачного режима построены иначе: у них есть вызывающая часть, инициализирующая начало операции, и обработчик аппаратного прерывания от контроллера, сообщающий операционной системе о выполнении операции и результате.
Традиционный сервис BIOS
Традиционный дисковый сервис работает в 16-разрядном режиме процессора, все параметры вызова передаются через регистры процессора. Адрес сектора задается в системе CHS и размещен весьма специфично. Сервис вызывается программным прерыванием Int 13h, при вызове принимаются следующие соглашения:
¦ номер функции задается в регистре АН и не должен превышать 3Fh;
¦ логический номер диска задается в регистре DL (бит 7 = 0 — признак обращения к НГМД);
¦ номер цилиндра (О-1023) задается в регистре СН (младшие8бит)иСЦ7:6] (стар
шие 2 бита);
¦ номер головки (0-255) задается в регистре DH;
¦ номер начального сектора (1-63) задается в регистре CL [ 5 :0];
¦ количество секторов, участвующих в операции, 8 бит — в регистре AL (0-255);
¦ указатель на начало буфера оперативной памяти для считываемых и записы
ваемых данных (address of buffer) — в регистрах Е S: ВХ;
¦ результат выполнения операции определяется по флагу переноса: С F = 0 —успешное выполнение операции, CF = 1 — обнаружены ошибки (код состояния возвращается в регистре АН, код завершения последней операции с дискетами хранится по адресу 40:4lh, с жесткими дисками — 40:74h);
¦ таблица параметров диска для дискет (DPT) задана указателем в памяти по
адресу 0:78h, для жестких дисков (HDPT) — 0:104h или 0:118h.
488
Глава 12. Архитектурные компоненты IBM PC-совместимого компьютера
Список функций традиционного сервиса приведен в табл. 12.7, подробнее они описаны в [4, 9].
Устройства могут не поддерживать некоторые функции, о чем драйверы должны «честно сообщить» кодом возврата Olh.
Таблица 12.7. Функции традиционного дискового сервиса
Сервисы BIOS I n t 17 h: обеспечивают инициализацию, вывод байта данных и опрос состояния принтера, подключенного к LPT-порту. При вызове функция задается в регистре АН, номер LPT-порта — в регистре DX.
¦ АН = ООН — вывод байта из регистра AL по протоколу Centronics (без аппаратных прерываний). Данные помещаются в выходной регистр, и, дождавшись готовности принтера (снятия сигнала Busy), формируется строб.
¦ АН = Olh — инициализация интерфейса и принтера (установка исходных уровней управляющих сигналов, формирование импульса lnit#, запрет аппаратных прерываний и переключение на вывод двунаправленного интерфейса).
¦ АН = 02h — опрос состояния принтера (чтение регистра состояния порта).
При возврате регистр АН содержит байт состояния, который собирается из бит регистра состояния SR [7:3] и программно формируемого флага тайм-аута. Биты 6 и 3 относительно байта, считанного из регистра состояния, инвертированы. Назначение бит байта состояния:
¦ бит 7 — не занято (сигнал Busy); нулевое значение означает, что принтер занят (буфер полон или состояние Off-Line, или ошибка);
¦ бит 6 — подтверждение (сигнал Ack#); единичное значение означает, что принтер подключен;
494______ Глава 12. Архитектурные компоненты IBM PC-совместимого компьютера
¦ бит 5 — конец бумаги (сигнал PaperEnd);
¦ бит 4 — принтер готов (сигнал Select); нулевое значение означает, что принтер в состоянии Off-Line;
¦ бит 3 — ошибка принтера (сигнал Error*); единичное значение соответствует ошибке;
¦ биты 2:1=00 (не используются);
¦ бит 0 — флаг тайм-аута, устанавливается при неудачной попытке вывода символа, если сигнал Busy не снимается в течение времени, определенного для данного порта в ячейках тайм-аута (в BIOS Data Area); в этом случае согласно протоколу Centronics строб данных не вырабатывается.
Перехват прерывания Int 17h является удобным способом внедрения собственных драйверов принтера. Потребность в них может возникать при подключении к порту принтера с интерфейсом ИPNP или необходимости перекодировки символов. Если разрабатываемый драйвер предназначен не только для перекодировки, но и изменения протокола (через Int 17h можно организовать вывод через LPT-порт по протоколу ИPNP и даже через СОМ-порт), следует внимательно отнестись к битам возвращаемого байта состояния. При их неправильном формировании попытки вывода на печать могут приводить к ошибочным сообщениям.
СОМ-порты поддерживаются сервисом BIOS Int 14h, который обеспечивает описанные ниже функции.
¦ ООН — инициализация (установка скорости обмена и формата посылок, заданных регистром AL; запрет источников прерываний). На сигналы DTR и RTS влияния не оказывает (после аппаратного сброса они пассивны).
¦ Olh — вывод символа из регистра AL (без аппаратных прерываний). Активируются сигналы DTR и RTS, и после освобождения регистра THR в него помещается выводимый символ. Если за заданное время регистр не освобождается, фиксируется ошибка тайм-аута и функция завершается.
492______ Глава 12. Архитектурные компоненты IBM РС-совместимого, компьютера
¦ 02h — ввод символа (без аппаратных прерываний). Активируется только сигнал DTR (RTS переходит в пассивное состояние), и ожидается готовность принятых данных, принятый символ помещается в регистр AL. Если за заданное время данные не получены, функция завершается с ошибкой тайм-аута.
¦ 03h — опрос состояния модема и линии (чтение регистров МSRиLSR). Эту гарантированно быструю функцию обычно вызывают перед функциями ввода-вывода во избежание риска ожидания тайм-аута.
При вызове I n t 14h номер функции задается в регистре АН, номер порта (0-3) — в регистре DX (0 — СОМ1, 1 — COM2...). При возврате из функций 0,1 и 3 регистр АН содержит байт состояния линии (регистр LSR), AL — байт состояния модема (MSR). При возврате из функции 2 нулевое значение бита 7 регистра АН указывает на наличие принятого символа в регистре AL; ненулевое значение бита 7 — на ошибку приема, которую можно уточнить функцией 3. Байт состояния линии (регистр АН) имеет следующий формат:
¦ бит 7 — ошибка тайм-аута (после вызова функции 2 — признак любой ошибки);
¦ бит 6 — регистр сдвига передатчика пуст (пауза передачи);
¦ бит 5 — промежуточный регистр передатчика пуст (готов принять символ для передачи);
Int 10h — видеосервис — предназначен для работы с графическим адаптером. Его первичной задачей является управление видеорежимом (BIOS Video Mode), определяющим формат экрана. BIOS адаптера должна выполнять программирование всех стандартных и специфических управляющих регистров для установки (смены) требуемого видеорежима и выбранных параметров развертки — кроме нее о способах этих переключений остальное ПО может и не знать. В пределах возможностей установленного видеорежима видеосервис предоставляет возможности отображения информации на различных уровнях. Простейший для программиста телетайпный режим позволяет посылать поток символов, которые будут построчно отображаться на экране с отработкой символов возврата каретки, перевода строки, обеспечивая «прокрутку» изображения при заполнении экрана. Есть функции и для полноэкранной работы с текстом, при которой доступны и атрибуты символа. В графическом режиме имеется возможность чтения и записи пиксела с указанными координатами. Однако видеосервисом Int 10h программисты пользуются далеко не всегда, поскольку работает он довольно медленно. Подробно рассматривать функции видеосервиса не будем (этому посвящены отдельные книги), отметим особо лишь функцию телетайпного вывода Int 10h(0Eh). При вызове AH=OEh, в AL — код выводимого символа, в BL — цвет (только для графического режима). Символ выводится в текущую позицию курсора, и курсор сдвигается на следующую, переходя на новую строку после конца предыдущей и прокручивая экран при его заполнении. Специальные символы вызывают возврат на начало строки (CR, код ODh), перевод строки (LF, OAh) и короткий гудок (BEL, 07h). Этой функцией часто пользуются для вывода сообщений программами, работающими на нижнем уровне (например, модули инициализации ПЗУ расширений BIOS, загрузчики и другие, не имеющие еще доступа к сервисам операционных систем). Программа вывода получается простейшей, работает на всех адаптерах и во всех режимах, но довольно медленно.
Интерфейс ATA (AT Attachment for Disk Drives) разрабатывался в 1986-1990 гг. для подключения накопителей на жестких магнитных дисках к компьютерам IBM PC AT с шиной ISA. Стандарт, выработанный комитетом ХЗТ10, определяет на-
360_______________________________ Глава 9. Интерфейсы устройств хранения
бор регистров устройств и назначение сигналов 40-контактного интерфейсного разъема. Интерфейс появился в результате переноса стандартного (для PC/AT) контроллера жесткого диска ближе к накопителю, то есть создания устройств со встроенным контроллером — IDE (Integrated Drive Electronics). Стандартный контроллер AT позволял подключать до двух накопителей, что в интерфейсе АТА означает параллельное подключение контроллеров двух устройств. В спецификации АТА фигурируют следующие компоненты.
¦ Хост-адаптер — средства сопряжения интерфейса АТА с шиной компьютера.
Хостом мы будем называть компьютер с хост-адаптером интерфейса АТА.
Хост-контроллер — более развитый вариант хост-адаптера.
¦ Ведущее устройство (Master) — ПУ, в спецификации АТА официально называемое Device-О (устройство 0).
¦ Ведомое устройство (Slave) — ПУ, в спецификации официально называемое Device-1 (устройство 1).
Хост-адаптер и устройства объединяются кабелем-шлейфом, соединяющим параллельно одноименные контакты интерфейсных разъемов. Регистры обоих контроллеров оказываются расположенными в одних и тех же областях пространства ввода-вывода. Для выбора устройства, исполняющего текущую команду, используется бит выбора накопителя (DEV) в регистре номера устройства и головки (drive/head register). Если бит DEV4), выбрано ведущее устройство, если DEV=1 — ведомое. Запись в этот регистр воспринимается сразу обоими устройствами, на обращения к остальным регистрам реагирует только выбранное. Достаточно универсальный набор сигналов позволяет подключать любое устройство со встроенным контроллером, которому в пространстве портов ввода-вывода достаточно того же набора регистров, способное поддержать режим выбора устройства через вышеупомянутый бит.
Принятая система команд и регистров, являющаяся ча стью спецификации АТА, ориентирована на блочный обмен данными с устройствами прямого доступа. Для иных устройств существует спецификация AT API, основанная на тех же аппаратных средствах, но позволяющая обмениваться пакетами управляющей информации (Package Interface, PI). Структура и наполнение пакетов позаимствованы из универсального интерфейса SCSI. Пакетный интерфейс позволяет расширить границы применения шины АТА.
Адресация в АТА имеет «дисковые корни»: для накопителей изначально указывали адрес цилиндра (cylinder), головки (head) и сектора (sector) — так называемая трехмерная адресация CHS. Сначала эта адресация точно соответствовала реальной геометрии — физически сектор действительно находился по указанному адресу. Позже по ряду причин диски АТА стали описывать внешней геометрией, отличающейся от реальной внутренней (например, разные зоны треков имеют разное число секторов, причем часть секторов может резервироваться на случай замены дефектных). При этом одно и то же устройство может иметь различную внешнюю геометрию. Преобразование адресов в реальные выполняется встроенным контроллером устройства. В системе CHS устройство АТА позволяет адресовать до 267 386 880 (65 536x16x255) секторов (блоков), что при размере сектора в 512 байт дает 136 902 082 560 байт (около 137 Гбайт). Позже пришли к линейной
9.2. Интерфейс АТА/ATAPI (IDE)_______________________________________ 361
адресации логических блоков LBA (Logical Block Addressing), где адрес блока (сектора) определяется 28-битным числом, что позволяет адресовать до 268 435 455 (228) блоков (немного больше, чем в CHS). Для устройств AT А, поддерживающих и CHS, и LBA, режим адресации определяется для каждой команды битом L (бит 6) регистра D/H; режимы могут чередоваться произвольным образом. Устройства ATAPI используют принятую в SCSI 32-битную логическую адресацию, позволяющую адресовать до 2 Тбайт (при 512-байтном блоке).
Если к шине АТА подключено одно устройство, оно должно быть ведущим. Если подключены два устройства, одно должно быть ведущим, другое — ведомым. О своей роли (ведущее или ведомое) устройства «узнают» с помощью предварительно установленных конфигурационных джамперов. Если применяется «кабельная выборка» (см. ниже), роль устройства определяется его положением на специальном ленточном кабеле. Оба устройства воспринимают команды от хост-адаптера одновременно. Однако исполнять команду будет лишь выбранное устройство. Выводить выходные сигналы на шину АТА имеет право только выбранное устройство. Такая система подразумевает, что, начав операцию обмена с одним из устройств, хост-адаптер не может переключиться на обслуживание другого до завершения начатой операции. Параллельно могут работать только устройства IDE, подключаемые к разным шинам (каналам) АТА. Спецификация АТА-4 определяет способ обхода этого ограничения, но эту возможность используют редко.
Для устройств IDE существует несколько разновидностей интерфейса.
¦ АТА, он же AT-BUS, — 16-битный интерфейс подключения к шине компьютера AT. Наиболее распространенный 40-проводный сигнальный и 4-проводный питающий интерфейс для подключения дисковых накопителей к компьютерам AT. Для миниатюрных (2,5" и менее) накопителей используют 44-проводный кабель, по которому передается и питание.
¦ PC Card ATA — 16-битный интерфейс с 68-контактным разъемом PC Card
(PCMCIA) для подключения к блокнотным PC. XT IDE (8 бит), он же XT-BUS, — 40-проводный интерфейс, похожий на АТА, но несовместимый с ним.
¦ MCA IDE (16 бит) — 72-проводный интерфейс, предназначенный специально для шины и накопителей PS/2.
¦ АТА-2 — расширенная спецификация АТА. Включает 2 канала, 4 устройства, PIO Mode 3, Multiword DMA Mode 1, Block mode, объем диска до 8 Гбайт, поддержка LBA и CHS.
¦ Fast АТА-2 разрешает использовать Multiword DMA Mode 2 (13,3 Мбайт/с), PIO Mode 4.
¦ АТА-3 — расширение АТА-2. Включает средства парольной защиты, улучшенного управления питанием, самотестирования с предупреждением приближения отказа — SMART ( Self Monitoring Analysis and Report Technology).
¦ ATA/ATAPI-4 — расширение АТА-3, включающее режим Ultra DMA со скоростью обмена до 33 Мбайт/с и пакетный интерфейс ATAPI. Появляется поддержка очередей и возможность перекрытия команд.
362___________________________ Глава 9. Интерфейсы устройств хранения
¦ ATA/ATAPI-5 — ревизия ATA/ATAPI-4: удаляются устаревшие команды
и биты, добавляются новые возможности защиты и управления энергопотреб
лением. Включает режим Ultra DMA со скоростью обмена до 66 Мбайт/с.
¦ ATA/ATAPI-6 — дополнения к ATA/ATAPI-5: потоковое расширение для чтения/записи аудио- и видеоданных, управление акустическим шумом, режим Ultra DMA со скоростью обмена до 100 Мбайт/с.
¦ Serial ATA — последовательный интерфейс.
¦ E-IDE (Enhanced IDE) — расширенный интерфейс, введенный фирмой Western Digital. Реализуется в адаптерах для шин PCI и VLB. Позволяет подключать до 4 устройств (к двум каналам), включая CD-ROM и стриммеры (ATAPI). Поддерживает РЮ Mode 3, Multiword DMA Mode 1, объем диска до 8 Гбайт, LBA и CHS. С аппаратной точки зрения практически полностью соответствует спецификации АТА-2.
Устройства ATA IDE, E-IDE, АТА-2, Fast АТА-2, АТА-3^ ATA/ATAPI-4, ATA/ ATAPI-5 и ATA/ATAPI-6 электрически совместимы. Степень логической совместимости достаточно высока (все базовые возможности АТА доступны). Однако для полного использования всех расширений необходимо соответствие спецификаций устройств, хост-адаптера и его ПО.
Разработкой спецификаций ATA/ATAPI занимается технический комитет Т13 американского Национального Комитета но стандартизации в области информационных технологий (NCITS). Разработанные им спецификации оформляются в виде стандартов ANSI.Спецификация ATA/ATAPI-6 объявлена последней версией параллельного интерфейса АТА, за которой следует последовательный интерфейс Serial ATA.
Ряд моделей звуковых карт имеют внутренний интерфейсный разъем подключения дочерней карты с MIDI-синтезатором (Daugterboard Connector). На разъем (табл. 8.19) с основной карты выводится сигнал MIDI-порта (ТТЛ, как и на разъем джойстика) и сигнал аппаратного сброса синтезатора, а с дочерней карты принимается стереофонический аналоговый сигнал, который поступает в микшер основной карты. В шинах питания аналоговая земля (AG) отделена от цифровой (DG). Дополнительно может использоваться и вход MIDI (тоже ТТЛ). Разъем может обозначаться и как WT (Wavetable) Connector, Waveblaster Connector.
Таблица 8.19. Назначение контактов разъема подключения дочерней карты Контакт Цепь Контакт Цепь
1 | DG | 2 | |||||
3 | DG | 4 | MIDIJDut* | ||||
5 | DG | 6 | +5 В | ||||
7 | DG | 8 | MIDI_ln# (необязательный) | ||||
9 | DG | 10 | +5 В | ||||
11 | DG | 12 | |||||
13 | 14 | +5 В | |||||
15 | AG | 16 | |||||
17 | AG | 18 | +12 В | ||||
19 | AG | 20 | Audio (R) | ||||
21 | AG | 22 | -12В | ||||
23 | AG | 24 | Audio (L) | ||||
25 | AG | 26 | Reset* |
8.6. Интерфейс игровых устройств — Game-порт__________________________ 349
ключения дочерней карты, то дочернюю карту можно подключить и к внешнему разъему джойстика/MIDI и аналоговым входам звуковой карты. Конечно, на дочернюю карту нужно подать питание, а также сигнал аппаратного сброса.
Кроме параллельного интерфейса, SCSI-3 может использовать и последовательный интерфейс Fibre (Fiber) Channel, или FCAL (Fibre Channel Arbitrated Loop — кольцо волоконного канала с арбитражем), который занимает промежуточное положение между интерфейсами периферийных устройств (SCSI-3) и технологиями локальных сетей. Этот интерфейс может иметь как электрическую (коаксиальный кабель), так и оптоволоконную реализацию. В обоих случаях частота 1 ГГц обеспечивает скорость передачи данных 100 Мбайт/с. Медный кабель допускает длину шины до 30 м, оптический — до 10 км. Здесь используется иной протокольный и физический уровни интерфейса и имеется возможность подключения к шине до 126 устройств (а не 8 или 16, как для параллельного интерфейса). Для двухточечного соединения возможен полнодуплексный режим (200 Мбайт/с), что невозможно в обычных параллельных шинах. Недавно фирма Adaptec выпустила адаптер со скоростью 2 Гбит/с (и оптика, и медь), обратно совместимый с обычным (1 Гбит/с). В полнодуплексном режиме достигается суммарная пропускная способность 400 Мбайт/с. В кольцо может объединяться до 126 узлов, длина кольца может достигать 10 км. По организации кольцо напоминает FDDI — все узлы собираются в замкнутую цепочку и транслируют приходящие кадры дальше по кольцу. Синхронизация передатчика каждого узла автономна, а для компенсации расхождения частот синхронизации используются межкадровые слова-заполнители, часть из которых может периодически отбрасываться или вводиться дополнительно при трансляции. Для обеспечения надежной передачи применяется кодирование 8В/10В, для скорости 100 Мбайт/с с учетом накладных расходов на обрамление кадров требуется битовая скорость в линии 1,0625 Гбит/с. Архитектурная модель FCAL состоит из пяти уровней FC-O...FC-4, нижний (FC-0) определяет среду передачи (оптоволокно или твинаксиальный кабель) и физический интерфейс. Верхний уровень (FC-4) определяет протоколы отображения, относящиеся как к интерфейсам периферийных устройств (SCSI и некоторые другие), так и к сетям (802.2 и IP).
Информация по кольцу передается кадрами размером 36-2148 байт. Обмен данными между устройствами возможен как с установлением соединений, так и без них. Одновременно может быть открыто множество соединений, причем относящихся к разным протоколам (например, SCSI и IP). Аппаратура Fibre Channel включает интерфейсные адаптеры, концентраторы, коммутаторы
5.3. Хост-адаптер SCSI_______________________________________________ 141
и маршрутизаторы. Интерфейсные адаптеры представляют собой карты для компьютеров (для высокопроизводительных шин, например PCI). С интерфейсом FCAL выпускаются устройства хранения данных (дисковые и ленточные накопители, массивы накопителей). Концентраторы для FCAL в принципе необязательны, но они позволяют организовать кольцо на звездообразной топологии и обеспечить обход отказавших (отключенных) узлов — без них кольцо становится уязвимым при отказе линии или устройства. Коммутаторы (как, например, в технологии Ethernet) позволяют для группы подключенных устройств организовывать соединения «каждый с каждым», что эффективно, например, в случае разделения (совместного использования) несколькими серверами нескольких устройств хранения. Маршрутизаторы или мосты позволяют соединять FCAL с другими средами передачи информации (например, с классическим интерфейсом SCSI или со средами локальных сетей). В настоящее время FCAL применяется для подключения устройств внешней памяти к серверам, когда требуется высокая производительность и значительное удаление устройств друг от друга. В принципе, FCAL позволяет организовывать разделение ресурсов, обеспечивая и резервирование линий связи, но здесь пока имеются сложности на уровне операционных систем.
Игровые устройства — джойстик, руль и педали автомобиля или иные — вырабатывают некоторые аналоговые и дискретные сигналы, которые можно ввести в компьютер. С самых первых моделей IBM PC был введен и фактически стандартизован интерфейс игрового адаптера — Game port, к которому можно подключить до двух джойстиков или иных устройств. Суммарно на порте доступно 4 координатных датчика (XI, Х2, Y1 и Y2), изменяющих сопротивление, и 4 дискретных входа для кнопок управления. Назначение координатных датчиков зависит от игры и конструкции манипулятора. Для авиасимуляторов XI может соответствовать перемещению рукоятки вверх-вниз, Y1 — влево-вправо, Х2 — нажатие левой и правой педалей, Y2 — рукоятка сектора газа. Для автомобильных рулей XI — руль, Y1 — газ, Х2 — тормоз (газ и тормоз могут быть совмещены в координате Y1). Кроме игровых целей порт может применяться и для подключения «серьезных» датчиков.
Современные игровые устройства имеют свой интеллект (микроконтроллер) и подключаются к компьютеру цифровым интерфейсом — по шине USB или через СОМ-порт. Их функциональные возможности богаче, они позволяют устанавливать и двустороннюю связь с игроком (вводить механические воздействия).
Адаптер Game-порта имеет в пространстве ввода-вывода один регистр с адресом 20 lh, биты которого при чтении отображают состояние кнопок и компараторов аналоговых сигналов. Ввод дискретных сигналов от кнопок пояснений не требует. Упрощенная схема одного канала аналогового ввода приведена на рис. 8.19. В начале преобразования конденсатор разряжается через ключ, после чего начинается его заряд, скорость которого определяется величиной сопротивления датчика (чем больше сопротивление, тем медленнее заряд). Напряжение на конденсаторе контролируется компаратором, который срабатывает по достижении определенного уровня. Выходы компараторов всех четырех каналов преобразования, как и дискретные входы, собираются в регистр (см. ниже), который может быть программно считан.
Преобразование выполняется чисто программно и на чинается по выводу любого байта в регистр адаптера (20lh), при этом биты 0-3 устанавливаются в единицу. Далее программа циклически выполняет чтение регистра адаптера и измеряет время до возврата в нулевое состояние бит 0-3, соответствующих четырем аналоговым каналам. Если аналоговый вход закорочен на шину GND или цепь измеряемого сопротивления разорвана, соответствующий бит не обнулится. Поэтому в программе преобразования должен быть предусмотрен тайм-аут. Для измеряемых сопротивлений в диапазоне 0-100 кОм время определяется по формуле
Т(мкс)=24,2+1 1хК(кОм).
350________ Глава 8. Специализированные интерфейсы периферийных устройств
Точность и линейность преобразования невысока, преобразование выполняется не быстро (до 1,12 мс) и сильно загружает процессор. Однако в отличие от «настоящих» аналого-цифровых преобразователей, этот достается даром — игровой адаптер входит в состав практически всех комбинированных плат последовательных и параллельных портов и звуковых карт.
Бит |
Назначение |
Контакт |
7 |
Джойстик В кнопка #2 |
14 |
6 |
Джойстик В кнопка #1 |
10 |
5 |
Джойстик А кнопка #2 |
7 |
4 |
Джойстик А кнопка #1 |
2 |
3 |
Джойстик В Y-координата (Y2) |
13 |
2 |
Джойстик В Х-координата (Х2) |
11 |
1 |
Джойстик А Y-координата (Y1) |
6 |
0 |
Джойстик А Х-координата (Х1) |
3 |
- |
GND |
4,5,(12) |
- |
+5 В |
1,8,9,(15) |
- |
MIDI In (Rx) — вход (на звуковой карте) |
15 |
- |
MIDI Out (Tx) — выход (на звуковой карте) |
12 |
Интерфейс JTAG (Joint Test Action Group) предназначен для тестирования сложных логических схем, установленных в целевое устройство. Этот интерфейс описан в стандарте IEEE 1149.1 Boundary Scan Architecture и является последовательным синхронным, но в связи со спецификой назначения значительно отличается от вышеописанных интерфейсов, ориентированных на передачу данных. Интерфейсом JTAG управляет одно устройство-контроллер (чаще всего это ПК с соответствующим интерфейсным адаптером), к которому может быть подключено несколько тестируемых устройств. Ниже перечислены сигналы интерфейса JTAG.
¦ ТСК (Test Clock) — сигнал синхронизации последовательных данных; генерируется контроллером. Частота синхронизации может достигать 16 МГц.
¦ IMS (Test Mode Select) — сигнал выбора тестового режима. Генерируется контроллером.
¦ TDI (Test Data Input) — входные данные, принимаемые устройством в последовательном двоичном коде (младшим битом вперед).
¦ ТОО (Test Data Output) — выходные данные, передаваемые устройством в последовательном двоичном коде.
¦ TRST (Test Logic Reset) — необязательный сигнал сброса логики интерфейсного порта, генерируемый контроллером.
Эти сигналы (все однонаправленные), имеющие обычные логические уровни, образуют тестовый порт ТАР (Test Access Port), через который тестируемое устройство подключается к тестирующему оборудованию (контроллеру). В задачу тестирующего оборудования входит формирование тестовых сигналов по программе тестирования, определенной разработчиком тестируемого устройства, и сравнение полученных результатов с эталонами. Один и тот же контроллер и порт могут использоваться для тестирования любого числа устройств, поддерживающих JTAG. Для этого устройства своими портами ТАР соединяются в цепочку (рис. 11.6). Стандартизованный логический формат позволяет контроллеру независимо общаться с каждым из устройств цепочки (для этого, конечно, они должны иметь исправные ячейки JTAG).