Параллельный интерфейс Centronics ориентирован на передачу потока байт данных к принтеру и прием сигналов состояния принтера. Этот интерфейс поддерживается всеми LPT-портами компьютеров. Его отечественным аналогом является интерфейс ИPNP-М. Понятие «Centronics» относится как к набору сигналов и протоколу взаимодействия, так и к 36-контактному разъему на принтерах. Назначение сигналов интерфейса приведено в табл. 8.3, а временные диаграммы обмена с принтером показаны на рис. 8.5.
Таблица 8.3. Сигналы интерфейса Centronics
Рис. 8.5. Передача данных по протоколу Centronics
Передача данных начинается с проверки готовности принтера — состояния линии Busy. Строб данных может быть коротким — доли микросекунды, и порт заканчи-
322_________ Глава 8. Специализированные интерфейсы периферийных устройств
вает его формирование, не обращая внимания на сигнал Busy. Во время строба данные должны быть действительными. Подтверждением приема байта (символа) является сигнал Ack#, который вырабатывается после приема строба через неопределенное время (за это время принтер может выполнять какую-либо длительную операцию, например прогон бумаги). Импульс Ack# является запросом принтера на прием следующего байта, его задействуют для формирования сигнала прерывания от порта принтера. Если прерывания не используются, то сигнал Ack# игнорируется и весь обмен управляется парой сигналов Strobe* и Busy. Свое состояние принтер может сообщить порту по линиям Select, Error*, PaperEnd — по ним можно определить, включен ли принтер, исправен ли он и есть ли бумага. Формированием импульса на линии lnit# принтер можно проинициализировать (при этом он очистит и весь свой буфер данных). Режимом автоматического перевода строки, как правило, не пользуются, и сигнал AutoLF* имеет высокий уровень. Сигнал Selectln* позволяет логически отключать принтер от интерфейса.
Через параллельный порт (LPT) протокол Centronics может быть реализован чисто программно, используя стандартный режим порта (SPP), достигая скорости передачи до 150 Кбайт/с при полной загрузке процессора.
8.3. Интерфейсы принтеров и плоттеров
323
Strobe» |
1 |
DataO |
2 |
Data1 |
3 |
Data2 |
4 |
DataS |
5 |
Data4 |
6 |
DataS |
7 |
Data6 |
8 |
Data7 |
9 |
Ack# |
10 |
Busy |
11 |
PaperEnd |
12 |
Select |
13 |
Auto LF# |
14 |
Error# |
32 |
lnit# |
31 |
Select ln# |
36 |
GND(1) |
19 |
GND (2 3) |
20 21 |
GND (4 5) |
22 23 |
GND (6 7) |
24 25 |
GND (8 9) |
26 27 |
GND(11 15) |
29 |
GND(101213) |
28 |
GND(141617) |
30 |
Параллельный интерфейс SCSI существует в нескольких версиях, различающихся разрядностью шины, способами передачи сигналов и синхронизации. Физически «узкий» интерфейс SCSI представляет собой шину, состоящую из 18 сигнальных и нескольких питающих цепей. В «широком» варианте число сигнальных цепей увеличено. Для защиты от помех каждая сигнальная цепь имеет собственный обратный провод. На применяемых двухрядных разъемах контакты сигнальных и обратных цепей располагаются друг против друга. Это позволяет применять в качестве кабелей как витые пары проводов, так и плоские ленточные кабели, где сигнальные и обратные провода чередуются.
По типу сигналов различают линейные (single ended) и дифференциальные (differential) версии SCSI. Их кабели и разъемы идентичны, но электрической совместимости устройств нет.
В широко используемой линейной версии SE (Single Ended) каждый сигнал передается потенциалом с ТТЛ-уровнями относительно общего провода. Здесь общий (обратный) провод для каждого сигнала тоже должен быть отдельным, что снижает перекрестные помехи. В SCSI-1 применяются передатчики с открытым коллектором, приемники на биполярных транзисторах. Высокий уровень при пассивном состоянии передатчиков обеспечивают пассивные терминаторы (см. п. 5.1.2). В SCSI-2 стали применять и передатчики с активным снятием сигнала (active negation). Схема с открытым коллектором для снятия сигнала просто «отпускает» линию, и ее потенциал возвращается в исходное состояние только под действием терминаторов. При активном снятии выходная схема передатчика кратковременно форсирует переход линии к потенциалу пассивного состояния, после чего «отпускает» линию; при этом создается иллюзия возможности работы без терминаторов. В SCSI-3 стандарт SPI предписывает использование интерфейсных схем KMC-n(CMOS).
Дифференциальная версия Diff, или HVD, для каждой цепи задействует пару проводников, по которым передается парафазный сигнал.
Здесь используются специальные дифференциальные приемопередатчики, применяемые и в интерфейсе RS-485, что позволяет значительно увеличить длину кабеля, сохраняя скорость обмена. Дифференциальный интерфейс применяется в дисковых системах серверов, но в обычных PC не распространен. Интерфейс HVD (но еще с названием Diff) появился в SCSI-2, а в стандарте SPI-3 (SCSI-3 1999 года) он уже упразднен, поскольку скорость Ultra2 и выше он не выдерживает.
5.1. Параллельные интерфейсы SCSI ___________________________ 117
Низковольтный дифференциальный интерфейс LVD позволяет работать на частотах 40, 80 и 160 МТ/с в устройствах Ultra2, UltralGO и Ultra320 SCSI при длине шины 25 м (8 устройств) или 12 м (16 устройств). Устройства LVD совместимы с устройствами SE благодаря возможности их автоматического переконфигурирования (Multimode LVD). Устройства LVD распознают напряжение на линии DIFFSENS и по низкому уровню напряжения на ней способны переключаться из режима LVD (дифференциальный) в SE (линейный). Контакт разъема, на который выводится эта цепь, в устройствах SE заземлен, что и обеспечивает автоматическое «понижение» режима всех устройств шины до SE, если имеется хотя бы одно устройство SE.
Скорость передачи данных определяется частотой переключений сигналов, измеряемой в МТ/с, разрядностью, а в последних версиях и способом синхронизации (одиночная или двойная). Изначально разрядность шины SCSI составляла 8 бит (Narrow), а частота — до 5 МТ/с. Широкий (wide) вариант шины имеет разрядность 16 бит. Комбинации этих параметров обеспечивают широкий диапазон пропускной способности (табл. 5.1), достигающей уже 320 Мбайт/с. В обозначениях пропускной способности интерфейсов встречаются разночтения, здесь приводятся названия, используемые фирмой Western Digital в 2000 году. Fast SCSI означает частоту передач 10 МТ/с, временные диаграммы для такого режима определены в SCSI-2. Краткое название Fast-20 соответствует полному «Fast Wide SCSI» (16 бит, 10 MT/s).
Режим Ultra SCSI указывает на частоту передач 20 МТ/с, он определен для параллельного интерфейса в SCSI-3. Краткое название Fast-40 соответствует полному «Wide Ultra SCSI» (16 бит, 20 MT/s). Режим Ultra2 SCSI указывает на частоту передач 40 МТ/с, краткое название Fast-80 соответствует полному «Wide Ultra2 SCSI» (16 бит, 40 MT/s). Этот режим, определенный в SCSI-3, в настоящее время является самым распространенным для новых устройств с параллельной шиной. Он реализован только в низковольтной дифференциальной версии интерфейса — LVD. В SCSI-3 понятие UltraS SCSI довольно широкое. Ultral60 SCSI означает скорость 160 Мбайт/с и существует только в «широком» (16 бит) варианте. Здесь применяется синхронизация по обоим фронтам сигнала, а также контроль достоверности передач по CRC-кодам, что позволяет «выжать» из кабеля максимальную скорость передачи (как и в Ultra DMA интерфейса ATA). В 2001 году появился интерфейс Ultra320 SCSI со скоростью 320 Мбайт/с.
Таблица 5.1. Скорость передачи данных (Мбайт/с) по параллельной шине SCSI |
|||||
Разрядность шины, бит Разновидность Обычная Fast |
Fast-20 (Ultra) |
Fast-40 (Ultra2) |
Ultra 160 (UltraS) |
Ultra320 |
|
8 (Narrow) 16 (Wide) |
5 10 10 20 |
20 40 |
40 80 |
160 |
320 |
Параллельный интерфейс АТА представляет собой шину, в которой все сигналы соответствуют стандартной логике ТТЛ:
¦ высокий уровень выходного сигнала не ниже 2,4 В (при токе до 400 мкА, сигнал DMARQ — до 500 мкА), низкий уровень не выше 0,5 В (при токе 4 мА, для линии DASP ради совместимости со старыми устройствами — 12 мА);
¦ высокий уровень входного сигнала не ниже 2,0 В, низкий уровень не выше 0,8 В.
Все информационные сигналы интерфейса передаются через 40-контактный разъем, у которого ключом является отсутствующий на вилке и закрытый на розетке контакт 20. Использование в качестве ключа выступа на корпусе розетки и прорези в бандаже вилки стандартом не приветствуется. Для соединения устройств применяется плоский многожильный кабель-шлейф, длина кабеля не должна превышать 0,46 м(18"), допустимая емкость проводников — неболее 35 пФ. Терминаторы стандартом не предусматриваются (они имеются в каждом устройстве и хост-адаптере), но если кабель с тремя разъемами (розетками) используют для подключения одного устройства, то устройство и хост-адаптер рекомендуется подключать к противоположным концам кабеля. Состав информационных сигна-
9.2. Интерфейс ATA/ATAPI (IDE)
363
лов интерфейса АТА приведен в табл. 9.3, вид кабеля — на рис. 9.2. В большинстве кабелей одноименные контакты всех разъемов соединяются своими проводами и все коннекторы равноправны. Встречаются (редко) ленточные кабели с кабельной выборкой, изображенные на рис. 9.3. В них провод 28 перерезан, так что контакт 28 (CSEL) для ведущего устройства заземлен через хост-адаптер, а для ведомого — не подключен. Кабель должен соответствовать системе адресации, выбранной для обоих устройств.Таблица 9.3. Интерфейс ATA (IDE)
Сигнал | Тип1 | Контакт | Контакт | Тип1 | Сигнал | ||||||
reSet# | 1 | 1 | 2 | - | GND | ||||||
DD7 | I/OTS | 3 | 4 | I/OTS | DD8 | ||||||
DD6 | I/OTS | 5 | 6 | I/OTS | DD9 | ||||||
DD5 | I/OTS | 7 | 8 | I/O TS | DD10 | ||||||
DD4 | I/OTS | 9 | 10 | I/OTS | DD11 | ||||||
DD3 | I/OTS | 11 | 12 | I/O TS | DD12 | ||||||
DD2 | I/OTS | 13 | 14 | I/OTS | DD13 | ||||||
DD1 | I/OTS | 15 | 16 | I/OTS | DD14 | ||||||
DDO | I/OTS | 17 | 18 | I/OTS | DD15 | ||||||
GND | - | 19 | 20 | - | Ключ (нет штырька) | ||||||
DMARQ | OTS2 | 21 | 22 | - | GND | ||||||
DlOWtf/STOP3 | 1 | 23 | 24 | - | GND | ||||||
DIOR#/HDMARDY#/HSTROBE3 | 1 | 25 | 26 | - | GND | ||||||
IORDY/DDMARDY#/DSTROBE3 | OTS2 | 27 | 28 | I/O | SPSYNC/CSEL7 | ||||||
DMACK# | 1 | 29 | 30 | - | GND | ||||||
INTRQ | OTS2 | 31 | 32 | ОOK | IOCS16#8 | ||||||
DA1 | 1 | 33 | 34 | I,O> | PDIAG#/CBLID3 | ||||||
DAO | 1 | 35 | 36 | 1 | DA2 | ||||||
CSO# | 1 | 37 | 38 | 1 | CS1# | ||||||
DASP# | I/O OK5 | 39 | 40 | - | GND | ||||||
+5 В (Logic) | - | 41е | 426 | - | +5 В (Motor) | ||||||
GND | - | 436 | 446 | - | Зарезервирован |
Выборка |
SFF8057 |
SFF8058 |
SFF8212 |
Toshiba (1996) |
Используемые контакты |
Е-Н |
A-F |
A-D |
A-D |
Кабельная выборка |
E-F |
A-B |
B-D |
B-D |
Master |
G-H |
E-F |
- |
- |
Master при наличии Slave |
G-H,E-F |
E-F |
- |
- |
Slave |
- |
C-D |
A-B |
C-D |
1 |
GND |
35 |
GND |
2 |
DD3 |
36 |
CD1# |
3 |
DD4 |
37 |
DD11 |
4 |
DD5 |
38 |
DD12 |
5 |
DD6 |
39 |
DD13 |
6 |
DD7 |
40 |
DD14 |
7 |
CSO# |
41 |
DD15 |
8 |
42 |
CS1# |
|
9 |
SELATA* |
43 |
|
10 |
44 |
DIOR# |
|
11 |
CS1# |
45 |
DIOW# |
12 |
46 |
||
13 |
47 |
||
14 |
48 |
||
15 |
49 |
||
16 |
INTRQ |
50 |
|
17 |
+5 В |
51 |
+5 В |
18 |
52 |
||
19 |
53 |
||
20 |
54 |
||
21 |
55 |
M/S# |
|
22 |
56 |
CSEL |
|
23 |
57 |
||
24 |
58 |
RESET# |
|
25 |
59 |
IORDY* |
|
26 |
60 |
DMARQ |
|
27 |
DA2 |
61 |
DMACK# |
28 |
DA1 |
62 |
DASP# |
29 |
DAO |
63 |
PDIAG* |
30 |
DDO |
64 |
DD8 |
31 |
DD1 |
65 |
DD9 |
32 |
DD2 |
66 |
DD10 |
33 |
67 |
CD2# |
|
34 |
GND |
68 |
GND |
Адрес |
Сигналы адресации канала № |
Назначение (R — чтение, W — запись) |
||||
(0 — низкий уровень, 1 — высокий) |
||||||
1 |
2 |
CSO# |
CS1# |
DA2 |
DA2 DA1О |
|
1 |
1 |
X |
X X |
Нет обращения (шина данных в третьем |
||
состоянии) |
||||||
0 |
0 |
X |
x X |
Недопустимый адрес (шина данных в третьем |
||
состоянии) |
||||||
3FX |
37Х |
Control Block Registers — блок управляющих регистров |
||||
1 |
0 |
0 |
X X |
Не используется (шина данных в третьем |
||
состоянии) |
||||||
1 |
0 |
1 |
0 X |
Не используется (шина данных в третьем |
||
состоянии) |
||||||
3F6 |
376 |
1 |
0 |
1 |
1 0 |
R: Alternate Status (AS) — альтернативный |
регистр состояния |
||||||
3F6 |
376 |
1 |
0 |
1 |
1 0 |
W: Device Control (DC) — регистр управления |
устройством |
||||||
3F7 |
377 |
1 |
0 |
1 |
1 1 |
R: Drive Address (DA) — регистр адреса |
(не используется)1 |
1F0 |
170 |
0 |
1 |
0 |
0 |
0 |
1F1 |
171 |
0 |
1 |
0 |
0 |
1 |
1F1 |
171 |
0 |
1 |
0 |
0 |
1 |
1F2 |
172 |
0 |
1 |
0 |
1 |
0 |
1F3 |
173 |
0 |
1 |
0 |
1 |
1 |
1F4 |
174 |
0 |
1 |
1 |
0 |
0 |
1F5 |
175 |
0 |
1 |
1 |
0 |
1 |
1F6 |
176 |
0 |
1 |
1 |
1 |
0 |
1F7 |
177 |
0 |
1 |
1 |
1 |
1 |
1F7 |
177 |
0 |
1 |
1 |
1 |
1 |
Режим передачи |
Минимальное |
Скорость |
Интерфейс |
время цикла, не |
передачи, Мбайт/с |
||
РЮ mode 0 |
600 |
3,3 |
АТА |
РЮ mode 1 |
383 |
5,2 |
АТА |
РЮ mode 2 |
240 |
8,3 |
АТА |
РЮ mode 3 |
180 |
11,1 |
E-IDE, АТА-2 |
(используется IORDY) |
|||
РЮ mode 4 |
120 |
16,6 |
E-IDE, Fast АТА-2 |
(используется IORDY) |
|||
Singleword DMA Mode 0 |
960 |
2,08 |
АТА |
Singleword DMA Mode 1 |
480 |
4,16 |
АТА |
Singleword DMA Mode 2 |
240 |
8,33 |
АТА |
Multiword DMA Mode 0 |
480 |
4,12 |
АТА |
Multiword DMA Mode 1 |
150 |
13,3 |
АТА-2 |
Multiword DMA Mode 2 |
120 |
16,6 |
FastАТА-2 |
Ultra DMA Mode 0 |
120' |
16,6 |
ATA/ATAPI-4 |
Ultra DMA Mode 1 |
80' |
25 |
ATA/ATAPI-4 |
Ultra DMA Mode 2 |
601 |
33 |
ATA/ATAPI-4 |
Ultra DMA Mode 3 |
451 |
44,4 |
ATA/ATAPI-5 |
Ultra DMA Mode 4 |
ЗО1 |
66,6 |
ATA/ATAPI-5 |
Ultra DMA Mode 5 |
201 |
100 |
ATA/ATAPI-6 |
1 |
1FOh-1F7h |
3F6h-3F7h |
14 |
2 |
170h-177h |
376h-377h |
15или 10 |
3 |
1E8h-1Efh |
3Eeh-3Efh |
12 или 11 |
4 |
168h-16Fh |
36Eh-36Fh |
10 или 9 |
Блок командных регистров |
1FOh-1F7h |
170h-177h |
10h |
14h |
Блок управляющих регистров |
3F6h |
376h |
18h |
1Ch |
Прерывание |
14 |
15 |
Большинство современных периферийных устройств, подключаемых к LPT-nop-ту, поддерживает стандарт 1284 и функции PnP. Для поддержки этих функций компьютером с аппаратной точки зрения достаточно иметь контроллер интерфейса, соответствующий стандарту 1284. Если подключаемое устройство поддерживает PnP, оно по протоколу согласования режимов 1284 способно «договориться» с портом, представляющим «интересы» компьютера, о возможных режимах обмена. Далее, для работы PnP подключенное устройство должно сообщить операционной системе все необходимые сведения о себе. Как минимум это идентификаторы производителя, модели и набор поддерживаемых команд. Более развернутая информация об устройстве может содержать идентификатор класса, подробное описание и идентификатор устройства, с которым обеспечивается совместимость. В соответствии с принятой информацией для поддержки данного устройства операционная система может предпринять действия по установке требуемого программного обеспечения.
Устройства с поддержкой PnP распознаются ОС на этапе ее загрузки, если, конечно же, они подключены к порту интерфейсным кабелем и у них включено пита-
42_____________________________ Глава 1. Параллельный интерфейс— LPT-порт
ние. Если ОС Windows обнаруживает подключенное устройство PnP, отличающееся от того, что прописано в ее реестре для данного порта (или просто новое устройство), она пытается установить требуемые для устройства драйверы из дистрибутива ОС или из комплекта поставки нового устройства. Если Windows не желает замечать вновь подключенного устройства PnP, это может свидетельствовать о неисправности порта или кабеля. Система PnP не работает, если устройство подключается дешевым «не двунаправленным» кабелем, у которого отсутствует связь по линии Selectln* (контакт 17 порта LPT и контакт 36 разъема Centronics).
Для облегчения взаимодействия с устройствами PCI имеются дополнительные функции BIOS, доступные как из реального, так и защищенного режима работы процессора. Эти функции, предназначенные для работы с конфигурационным пространством и генерации специальных циклов PCI, приходится поддерживать потому, что циклы конфигурационных обращений, как и специальный цикл, выполняются специфическим образом (см. выше). Остальные функции взаимодействия с устройствами через их пространства памяти и ввода-вывода, а также обработка прерываний, в поддержке со стороны BIOS не нуждаются, поскольку выполняются непосредственно командами процессора. Функция проверки наличия PCI BIOS позволяет определить доступные механизмы генерации этих особых циклов, и, зная их работу, программа в дальнейшем может и не пользоваться вызовами PCI BIOS.
Программы с помощью функций PCI BIOS могут искать интересующие их устройства по идентификаторам или кодам класса. Если стоит задача «переучета» установленных устройств, то она решается чтением конфигурационной информации по всем функциям всех устройств всех шин — это быстрее, чем перебирать все возможные сочетания идентификаторов или классов кодов. Для найденных устройств программы должны определять реальные настройки чтением регистров конфигурационного пространства, учитывая возможность перемещения ресурсов по всему пространству и даже между пространствами памяти и ввода-вывода.
Функции PCI BIOS для 16-битного интерфейса реального режима, V86 и 16-битного защищенного режима, вызываются через прерывание I nt lAh. Номер функции задается при вызове в регистре АХ. Возможна и программная имитация прерывания дальним вызовом по физическому адресу OOOFFE6EH (стандартная точка входа в обработчик I nt lAh) с предварительным занесением в стек регистра флагов. Для 32-разрядных вызовов защищенного режима все эти же функции вызываются через точку входа, найденную через каталог 32-разрядных сервисов, при этом назначение входных и выходных регистров и флага CF сохраняется. До использования 32-разрядного интерфейса следует сначала найти его каталог и убедиться в наличии сервисов PCI. Вызовы требуют глубокого стека (до 1024 байт). Функции PCI BIOS:
¦ АХ - BlOlh — проверка присутствия PCI BIOS;
¦ АХ - B102h — поиск устройства по идентификатору;
¦ АХ - ВЮЗЬ — поиск устройства по коду класса;
¦ АХ = В106h — генерация специального цикла PCI;
¦ АХ = BIOS, B109 и BlOAh — чтение байта, слова и двойного слова конфигурационного пространства устройства PCI;
¦ АХ = В10В, В10С, BlODh — запись байта, слова и двойного слова конфигурационного пространства устройства PCI.
6.3. Магистральный интерфейс AGP_________________________________ 211
При подключении к СОМ-порту устройств с небольшим энергопотреблением возникает соблазн получить питание от выходных линий интерфейса. Если линии управления DTR и RTS не используются по прямому назначению, их можно задействовать как питающие с напряжением около 12 В. Ток короткого замыкания на «схемную землю» ограничен буферной микросхемой передатчика на уров-
2.10. Неисправности и тестирование СОМ-портов__________________________ 77
не 20 мА. При инициализации порта эти линии переходят в состояние «выключено», то есть вырабатывают положительное напряжение. Линия TD в покое находится в состоянии логической единицы, так что на выходе вырабатывается отрицательное напряжение. Потенциалами линий можно управлять через регистры СОМ-порта (выход TD вырабатывает положительное напряжение, если установить бит BRCON). Питание можно получать и с сигнальных линий через выпрямительные диоды с использованием накопительных конденсаторов. При этом, конечно, следует учитывать, сколько времени выходной сигнал находится в нужном состоянии (чтобы накопленной энергии хватало).
Двуполярным питанием от линий интерфейса (+V от DTR и RTS, -V от TD) пользуются все манипуляторы, подключаемые к СОМ-портам. Зная это, в случае неработоспособности мыши с данным портом следует проверить напряжения на соответствующих контактах разъема. Бывает, что с конкретным портом не работает только конкретная мышь (модель или экземпляр), хотя другие мыши с этим портом и эти же мыши с другими портами работают нормально. Здесь дело может быть в уровнях напряжений. Стандарт требует от порта выходного напряжения не менее 5 В (абсолютного значения), и если данный порт обеспечивает только этот минимум, некоторым мышам не хватит мощности для питания светодиодов (главных потребителей энергии).
Порт получает двуполярное питание через системную плату от блока питания компьютера. Отсутствие на выходе блока питания напряжения +12 В обычно обнаружится по неработоспособности дисков. Отсутствие напряжения -12 В «заметят» только устройства, подключенные к СОМ-портам. Блок питания теоретически контролирует наличие этих напряжений на своем выходе (сообщая о неполадках сигналом Power Good, вызывающим аппаратный сброс). Встречаются упрощенные схемы блоков питания, у которых контролируются не все напряжения. Кроме того, возможны плохие контакты в разъеме подключения питания к системной плате.
Подключение устройств к шине SCSI относительно несложно, но имеются нюансы при смешении разнотипных устройств на одной шине. Пропускная способность шины SCSI, «освоенная» компьютером, определяется, естественно, возможностями хост-контроллера. Шина SCSI обеспечивает хорошую совместимость устройств с параллельными интерфейсами разных поколений, «узких» и «широких», но зачастую одно старое устройство способно свести на нет мощь новых устройств, подключенных к шине. По типу интерфейса совместимыми являются только SE и LVD.
ВНИМАНИЕ
Смешивать устройства LVD с HVD на одной шине нельзя!136 Глава 5. Шина SCSI
Устройства LVD можно использовать на одной шине с SE, но при этом все устройства перейдут в режим SE, и шина не сможет работать в режиме Ultra2, свойственном устройствам LVD. Интерфейс LVD, являясь дифференциальным, требует, чтобы каждый обратный провод (сигнал +) приходил на вход своего приемника; в версии SE все обратные провода на устройстве соединялись вместе и подключались к шине GND. Если на шине с устройствами LVD имеется хотя бы одно устройство SE, то линия DIFFSENS окажется заземленной и все устройства LVD перейдут в режим SE. При конфигурировании устройство LVD может быть принудительно переведено в режим SE установкой джампера «Force SE». Если на шине присутствуют устройства UltralGO и Ultra2 (или еще ниже), то шина будет работать в самом низком из этих режимов. Принудительно запретить режим UltralGO (понизить до Ultra2) можно джампером «Disable U160».
Подключение «узкого» устройства к «узкой» шине — самая простая задача, поскольку здесь обычно встречаются лишь два типа разъемов (не считая Mac SCSI) — внешний (типа Centronics) и внутренний. Устройства должны быть сконфигурированы (см. выше), каждому должен быть назначен уникальный (на шине) идентификатор SCSI ID, формально — любой в диапазоне 0-7.
Длина шины не должна превышать допустимого предела, на обоих концах шины (и только там!) должны быть установлены и включены терминаторы. На линию TERMPWR должно подаваться питание (чаще от хост-адаптера), что можно проверить, замерив напряжение на соответствующих контактах разъема.
Подключение «широкого» устройства к «широкой» шине может оказаться несколько сложнее, поскольку здесь больше разнообразия в разъемах. Из-за этого может потребоваться применение переходных адаптеров от одного типа разъема к другому. Также могут возникнуть сложности с подключением терминаторов, особенно для устройств LVD, среди которых внутренние терминаторы встречаются редко, а внешние могут занимать отдельный разъем на кабеле. Идентификаторы устройств можно задавать в диапазоне 0-15.
Подключение «узкого» устройства к «широкой» шине требует применения переходного адаптера с 68- на 50-контактный разъем. Старший байт в этом адаптере не должен терминироваться, если подключаемое устройство не крайнее на шине. Если же устройство крайнее, то в адаптере старший байт должен терминироваться и на самом устройстве должен быть установлен терминатор. Выбор положения устройства (крайнее или промежуточное) может определяться имеющимся адаптером. Идентификаторы устройств должны устанавливаться в диапазоне 0-7 для всех устройств, поскольку невидимость идентификаторов 8-15 узким устройством не позволит процедуре арбитража работать нормально (см. выше). Поскольку все «узкие» устройства — это SE-устройства, линия DIFFSENS окажется заземленной и все устройства LVD перейдут в режим SE. Существуют, однако, и адаптеры-мосты, при подключении SE-устройства позволяющие остальным находиться в режиме LVD. Определить режим можно, замерив напряжение на 16-м контакте 68-контактного разъема (46-м 80-контактного).
Подключение «широкого» устройства к «узкой» шине также потребует применения специального адаптера, и на «широком» устройстве следует установить джампер
5.1. Параллельные интерфейсы SCSI
137
Полубайтный режим предназначен для двунаправленного обмена и может работать на всех стандартных портах. Порты имеют 5 линий ввода состояния, используя которые ПУ может посылать в хост байт тетрадами (nibble — полубайт, 4 бита) за два приема. Сигнал Ack#, вызывающий прерывание, которое может использоваться в данном режиме, соответствует биту 6 регистра состояния, что усложняет программные манипуляции с битами при сборке байта. Сигналы порта приведены в табл. 1.2, временные диаграммы — на рис. 1.1.
Таблица 1.2. Сигналы LPT-порта в полубайтном режиме ввода Контакт Сигнал SPP I/O Бит Описание
14 | AutoFeed# | 0 | CR.1 | ||||
17 | Selectln* | 0 | CR.3 | ||||
10 | Ack# | I | SR.6 | ||||
11 12 13 15 | Busy РЕ Select Error# | I I 1 1 | SR.7 SR.5 SR.4 SR.3 |
Высокий уровень указывает на обмен в режиме IEEE 1284 (в режиме SPP уровень низкий)
PtrClk. Низкий уровень означает готовность тетрады, высокий — ответ на сигнал HostBusy
Прием бита данных 3, затем бита 7 Прием бита данных 2, затем бита 6 Прием бита данных 1, затем бита 5 Прием бита данных 0, затем бита 4
Рис. 1.1. Прием данных в полубайтном режиме Прием байта данных в полубайтном режиме состоит из следующих фаз:
1. Хост сигнализирует о готовности приема данных установкой низкого уровня
на линии HostBusy.
2. ПУ в ответ помещает тетраду на входные линии состояния.
3. ПУ сигнализирует о готовности тетрады установкой низкого уровня нд ли
нии PtrClk.
4. Хост устанавливает высокий уровень на линии HostBusy, указывая на занятость приемом и обработкой тетрады.
24
Глава 1. Параллельный интерфейс — LPT-порт
5. ПУ отвечает установкой высокого уровня на линии PtrClk.
6. Шаги 1-5 повторяются для второй тетрады.
Полубайтный режим сильно нагружает процессор, и поднять скорость обмена выше 50 Кбайт/с не удается. Безусловное его преимущество в том, что он работает на всех портах. Его применяют в тех случаях, когда поток данных невелик (например, для связи с принтерами). Однако при связи с адаптерами локальных сетей, внешними дисковыми накопителями и CD-ROM прием больших объемов данных требует изрядного терпения со стороны пользователя.
Из последовательных интерфейсов в принтерах чаще всего используется RS-232C для подключения к СОМ-порту. Встречаются принтеры с последовательными интерфейсами «токовая петля» или RS-422, которые подключаются к СОМ-порту через специальные переходники. Принтеры работают всегда по асинхронному протоколу передачи и, как правило, позволяют настраивать конфигурацию последовательного интерфейса. Задается частота передачи, формат посылки (число информационных, старт- и стоп-битов, контроль паритета) и протокол управления потоком: программный XON/XOFF или аппаратный RTS/CTS. Подключение принтеров и плоттеров к СОМ-порту требует применения кабеля, соответствующего выбранному протоколу, схемы кабелей приведены на рис. 8.6 и 8.7. Аппаратный протокол предпочтительнее — стандартный драйвер СОМ-порта пользуется именно им. Естественно, параметры интерфейса принтера должны соответствовать параметрам, заданным для задействованного СОМ-порта. Порт конфигурируется, например, DOS-командой MODE. Заметим, что при печати средствами DOS (командами COPY или PRINT) прерывания от порта не используются.
Рис. 8.6. Кабель подключения принтера с протоколом RTS-CTS
Если принтер имеет интерфейс «токовая петля», то для него потребуется преобразователь сигналов, простейшая схема которого приведена на рис. 8.8. Здесь принтер подключается по токовой петле к СОМ-порту с аппаратным управлени-
8.3. Интерфейсы принтеров и плоттеров
325
ем потоком. Для получения двуполярного сигнала, требуемого для входных сигналов СОМ-порта, применяется питание от интерфейса.
Рис. 8.8. Подключение принтера с интерфейсом «токовая петля 20 мА» к СОМ-порту
Serial Mouse — мышь с последовательным интерфейсом, подключаемая через 9- или 25-контактный разъем СОМ-порта (табл. 8.2). Эта мышь имеет встроенный микроконтроллер, который обрабатывает сигналы от координатных датчиков и кнопок. Каждое событие — перемещение мыши или нажатие-отпускание кнопки кодируется двоичной посылкой по интерфейсу RS-232C. Для передачи информации применяется асинхронная передача, а двуполярное питание, требуемое по протоколу RS-232, обеспечивается от управляющих линий интерфейса. Недостатком Serial Mouse является то, что она занимает СОМ-порт и требует монопольного владения его штатной линии прерывания (IRQ4 для СОМ1 и IRQ3 для COM2). Конечно, то, что для использования мыши порту СОМ1 требуется именно прерывание IRQ4, является недостатком не самой мыши, а ее программного драйвера, но для пользователя, не увлекающегося написанием «мышиных» драйверов, важен только факт этого ограничения. Две основные разновидности — MS Mouse (Microsoft Mouse) и PC Mouse (Mouse Systems Mouse) — требуют раз-
318________ Глава 8. Специализированные интерфейсы периферийных устройств
ных драйверов, многие мыши имеют переключатель MS/PC. Эти два типа «мышей» при одинаковой скорости 1200 бит/с, одном стоп-бите и отсутствии контроля паритета используют различные форматы посылок.
¦ MS Mouse: 1 бит данных, трехбайтный пакет (в «классическом» варианте), положительным значениям соответствует перемещение по координате X вправо, а по координате Y вниз. Для трехкнопочных мышей добавляется четвертый байт, передаваемый только при изменении состояния средней кнопки. Для 3D-мыши четвертый байт имеет иное назначение.
¦ PC Mouse: 8 бит данных, пятибайтный пакет, положительным значениям соответствует перемещение по координате X вправо, а по координате Y вверх.
Из рассмотрения данных форматов становятся понятными беспорядочные перемещения указателя мыши на экране при несоответствии драйвера типу мыши.
Несовместимость может проявляться и более неприятным образом: к примеру, ОС Windows 95 при загрузке (и установке) вообще не воспринимает мышь, работающую в режиме PC Mouse (ей «не нравится» идентификатор, сообщаемый мышью при инициализации). При загруженной ОС переключение режима приводит «только» к непредсказуемым прыжкам указателя мыши и ложным срабатываниям кнопок.
Таблица 8.2. Разъемы Serial Mouse
Сигнал Контакт DB9 Контакт DB25 ЦепьСОМ-порта
Data |
2 |
3 |
RxD |
GND |
5 |
7 |
GND |
+V(питание) |
7,(4) |
4, (20) |
RTS, (DTR) |
-V (питание) |
3 |
2 |
TxD |
Интерфейс последовательной шины PC, введенной фирмой Philips как простое и дешевое средство сопряжения микросхем бытовой электроники, стал фактическим промышленным стандартом для устройств различного назначения. Он очень удобен для обмена небольшими объемами данных, например, для конфигурации различных устройств. Спецификация шины PC определяет протокол двусторонней передачи данных по двум сигнальным линиям. Приложения этого протокола могут быть самыми разнообразными, информационная «начинка» зависит от конкретных применений. На основе интерфейса PC построены шины ACCESS.bus и SMBus, рассмотренные ниже (о работе интерфейса PC с микросхемами памяти см. п. 7.3.3).
Параллельный интерфейс АТА исчерпал свои ресурсы пропускной способности, достигшей 100 Мбайт/с в режиме UltraDM A Mode 5. Для дальнейшего повышения пропускной способности интерфейса (но, конечно же, не самих устройств хранения, которые имеют гораздо меньшие внутренние скорости обмена с носителем) было принято решение о переходе на последовательный интерфейс. Цель перехода — улучшение и удешевление кабелей и коннекторов, улучшение условий охлаждения устройств внутри системного блока (избавление от широкого шлейфа), обеспечение возможности разработки компактных устройств, облегчение конфигурирования устройств пользователем. Попутно расширяется адресация блоков (достижение предельной емкости адресации АТА в 137 Гбайт не за горами). Спецификация Serial ATA версии 1.0 опубликована в 2001 г. и доступна в Сети по адресу www.serialata.org. Сейчас уже ведутся работы над новой спецификацией Serial ATA II с большей пропускной способностью и специальными средствами для поддержки сетевых устройств хранения. Приведенная ниже информация относится к версии 1.0.
Интерфейс Serial ATA является хост-центрическим, в нем определяется только взаимодействие хоста с каждым из подключенных устройств, а взаимодействие между ведущим и ведомым устройствами, свойственное традиционному интерфейсу АТА, исключается. Программно хост видит множество устройств, подключенных к контроллеру, как набор каналов АТА, у каждого из которых имеется единственное ведущее устройство. Имеется возможность эмуляции пар устройств (ведущее — ведомое) на одном канале, если такая необходимость возникнет. Программное взаимодействие с устройствами Serial ATA практически совпадает с прежним, набор команд соответствует ATA/ATAPI-5. В то же время аппаратная реализация хост-адаптера Serial ATA сильно отличается от примитивного (в исходном варианте) интерфейса АТА. В параллельном интерфейсе АТА хост-адаптер был простым средством, обеспечивающим программное обращение к регистрам, расположенным в самих подключенных устройствах.
В Serial ATA ситуация иная: хост-адаптер имеет блоки так называемых «теневых» регистров (Shadow Registers), совпадающих по назначению с обычными регистрами устройств АТА. Каждому подключенному устройству соответствует свой набор регистров. Обращения к этим теневым регистрам вызывают процессы взаимодействия хост-адаптера с подключенными устройствами и исполнение команд.
390________________________________ Глава 9. Интерфейсы устройств хранения
В стандарте рассматривается многоуровневая модель взаимодействия хоста и устройства, где прикладным уровнем является обмен командами, информацией о состоянии и хранимыми данными. На физическом уровне для передачи информации между контроллером и устройством используются две пары проводов. Данные передаются кадрами, транспортный уровень формирует и проверяет корректность информационных структур кадров (Frame Information Structure, FIS). Для облегчения высокоскоростной передачи на канальном уровне данные кодируются по схеме 8В/10В (8 бит данных кодируются 10-битным символом) и скремблиру-ются, после чего по физической линии передаются по простейшему методу NRZ (уровень сигнала соответствует передаваемому биту). Между канальным и прикладным уровнем имеется транспортный уровень, отвечающий за доставку кадров. На каждом уровне имеются свои средства контроля достоверности и целостности.
В первом поколении Serial ATA данные по кабелю передаются со скоростью 1500 Мбит/с, что с учетом кодирования 8В/10В обеспечивает скорость 150 Мбайт/с (без учета накладных расходов протоколов верхних уровней). В дальнейшем планируется повышать скорость передачи, и в интерфейсе заложена возможность согласования скоростей обмена по каждому интерфейсу в соответствии с возможностями хоста и устройства, а также качеством связи. Хост-адаптер имеет средства управления соединениями, программно эти средства доступны через специальные регистры Serial ATA.
В стандарте предусматривается управление энергорежимом интерфейсов.
Каж дый интерфейс кроме активного состояния может находиться в состояниях PARTIAL и SLUMBER с пониженным энергопотреблением, для выхода из которых требуется заметное время (10 мс).
Команды, требующие передачи данных, могут исполняться в различных режимах обмена. Обращение в режиме PIO и традиционный способ обмена по DMA (legacy DMA) выполняется аналогично привычному интерфейсу АТ А. Однако внутренний протокол обмена между хост-адаптером и устройствами позволяет передавать между ними разноплановую информацию (структуры FIS определены не только для команд, состояния и собственно хранимых данных). В приложении D к спецификации описывается весьма своеобразный способ обмена по DMA, который предполагается основным (First-party DMA) для устройств Serial ATA. В традиционном контроллере DMA адаптера АТ А для каждого канала имеется буфер, в который перед выполнением операции обмена загружают дескрипторы блоков памяти, участвующей в обмене (см. п. 9.2.1). Теперь же предполагается, что адресная информация, относящаяся к оперативной памяти хост компьютера, будет доводиться до устройства хранения, подключенного к адаптеру Serial ATA. Эта информация из устройства хранения при исполнении команд обмена выгружается в контроллер DMA хост-адаптера и используется им для формирования адреса текущей передачи. Мотивы и полезность этого нововведения не совсем понятны; расплатой за некоторое упрощение хост-адаптера (особенно многоканального) является усложнение протокола и расширение функций, выполняемых устройством хранения. Все-таки более привычно традиционное разделение функций, при котором задача устройств внешней памяти — хранить данные, «не интересуясь» тем, в каком месте оперативной памяти компьютера они должны находиться при операциях обмена.
9.2. Интерфейс АТА/ATAPI (IDE)_______________________________________ 391
Физический интерфейс Serial ATA
Последовательный интерфейс АТА, как и его параллельный предшественник, предназначен для подключений устройств внутри компьютера.
Длина кабелей не превышает 1 м, при этом все соединения радиальные, каждое устройство подключается к хост-адаптеру своим кабелем. В стандарте предусматривается и непосредственное подключение устройств к разъемам кросс-платы с возможностью «горячей» замены. Стандарт определяет новый однорядный двухсегментный разъем с механическими' ключами, препятствующими ошибочному подключению. Сигнальный сегмент имеет 7 контактов (S1-S7), питающий — 15 (Р1-Р15); все контакты расположены в один ряд с шагом 1,27 мм. Назначение контактов приведено в табл. 9.11. Малые размеры разъема (полная длина — около 36 мм) и малое количество цепей облегчают компоновку системных плат и карт расширения. Питающий сегмент может отсутствовать (устройство может получать питание и от обычного 4-контактного разъема АТА). Вид разъемов приведен на рис. 9.6. Для обеспечения «горячего» подключения контакты разъемов имеют разную длину, в первую очередь соединяются контакты «земли» Р4 и Р12, затем остальные «земли» и контакты предзаряда конденсаторов в цепях питания РЗ, Р7 и Р13 (для уменьшения броска потребляемого тока), после чего соединяются основные питающие контакты и сигнальные цепи.
Таблица 9.11. Разъем Serial ATA Контакт Цепь Назначение
51 |
GND |
Экран |
52 |
А+ |
Дифференциальная пара сигналов А |
53 |
А- |
Дифференциальная пара сигналов А |
54 |
GND |
Экран |
55 |
В- |
Дифференциальная пара сигналов В |
56 |
В+ |
Дифференциальная пара сигналов В |
57 |
GND |
Экран |
Ключи и свободное пространство |
||
Р1 |
V33 |
Питание 3,3 В |
Р2 |
V33 |
Питание 3,3 В |
РЗ |
V33 |
Питание 3,3 В, предзаряд |
Р4 |
GND |
Общий |
Р5 |
GND |
Общий |
Р6 |
GND |
Общий |
Р7 |
V5 |
Питание 5 В, предзаряд |
Р8 |
V5 |
Питание 5 В |
Р9 |
V5 |
Питание 5 В |
Р10 |
GND |
Общий |
Р11 |
Резерв |
|
Р12 |
GND |
Общий |
Р13 |
V12 |
Питание 12В, предзаряд |
Р14 |
V12 |
Питание 12 В |
Р15 |
V12 |
Питание 12 В |
Масочные постоянные запоминающие устройства — ПЗУ или ROM — имеют самое высокое быстродействие (время доступа 30-70 не). Эти микросхемы в PC широкого применения не получили ввиду сложности модификации содержимого (только путем изготовления новых микросхем); они иногда применялись в качестве знакогенераторов в некоторых моделях графических адаптеров CGA, MDA, HGC.
Однократно программируемые постоянные запоминающие устройства — ППЗУ или PROM — имеют аналогичные параметры и благодаря возможности программирования изготовителем оборудования (а не микросхем) находят более широкое применение для хранения кодов BIOS и в графических адаптерах. Программирование этих микросхем осуществляется только с помощью специальных программаторов, в целевых устройствах они устанавливаются в «кроватки» или запаиваются. Как и масочные, эти микросхемы практически нечувствительны к электромагнитным полям (в том числе и к рентгеновскому облучению), и несанкционированное изменение их содержимого в устройстве исключено (конечно, не считая отказа).
Репрограммируемые постоянные запоминающие устройства — РПЗУ tmnEPROM -т до недавних пор были самыми распространенными носителями BIOS как на системных платах, так и в адаптерах, а также использовались в качестве знакогенераторов. Наиболее популярные микросхемы имеют восьмибитную организацию
7.3. Энергонезависимая память_________________________________________ 279
и обозначение вида 27xx-tt или 27Cxx-tt для микросхем CMOS. Здесь хх определяет емкость в килобитах: 2708 — 1 К х 8 — родоначальник семейства, 2716/32/64/128/ 256/512 имеют емкость 2/4/8/16/32/64 Кбайт соответственно, 27010 и 27020 -128 и 256 Кбайт. Время доступа tt лежит в диапазоне 50—250 не. Шестнадцатибитные микросхемы (например, 27001 или 27002 емкостью 64 К или 128 К 16-битных слов) в PC применяются редко.
Микросхемы EPROM тоже программируются на программаторах, но относительно простой интерфейс записи позволяет их программировать и в устройстве (но не в штатном его режиме работы, а при подключении внешнего программатора). Стирание микросхем осуществляется ультрафиолетовым облучением в течение нескольких минут.
Специально для стирания микросхемы имеют стеклянные окошки. После программирования эти окошки заклеивают, предотвращая стирание под действием солнечного или люминесцентного облучения. Время стирания зависит от расстояния до источника облучения, его мощности и объема микросхемы (более емкие микросхемы стираются быстрее). Вместо штатных стирающих устройств можно пользоваться и обычной медицинской ультрафиолетовой лампой с расстояния порядка 10 см. Для микросхем 2764 ориентировочное время стирания составляет 5 минут. Стирание переводит все биты в единичное состояние. «Недостертые» микросхемы при программировании могут давать ошибки, передержка при стирании снижает количество возможных циклов перепрограммирования (в пределе — до нуля).
Некоторые микросхемы, похожие по виду и обозначению на стираемые ультрафиолетом, не имеют окна (они упакованы в дешевый пластмассовый корпус). Эти микросхемы либо стираются рентгеновским облучением (что не совсем удобно), либо допускают лишь однократно программирование, которое может выполняться и по заказу фирмой-производителем микросхем. Их интерфейс полностью совпадает с интерфейсом обычных микросхем EPROM 27хх.
С программированием ПЗУ приходится сталкиваться при русификации графических адаптеров (CGA, MDA, HGC) и принтеров с незагружаемыми знакогенераторами, а также при замене (или восстановлении) системной микросхемы BIOS или микросхемы Boot ROM — микросхемы удаленной загрузки для адаптера локальной сети. Распространенные программаторы EPROM имеют интерфейс подключения к СОМ- или LPT-порту PC или подключаются через собственную карту расширения (обычно с шиной ISA). Время программирования зависит от типа и объема микросхемы и применяемого алгоритма программирования. Классический алгоритм с 50-миллисекундными импульсами записи каждой ячейки для современных микросхем практически не используется. Более быстрые «интеллигентные» алгоритмы позволяют записывать 8 килобайт (2764) менее чем за минуту.
Вся процедура программирования может затягиваться при использовании медленного интерфейса связи программатора с PC (например, СОМ-порт на скорости 2400 бод) за счет длительной процедуры копирования данных в буфер программатора.
280
Глава 7. Интерфейсы электронной памяти
Интерфейс микросхем постоянной памяти в режиме чтения совпадает с интерфейсом статической памяти. Для программирования (записи) требуется приложение ко входу Vpp напряжения программирования, которое для различных типов EPROM лежит в диапазоне 12-26 В (обычно указывается на корпусе микросхемы). Комбинации управляющих сигналов, формирующие импульсы записи для EPROM разной емкости, различны. При напряжении на входе VPP 5 В и ниже модификация памяти (запись) невозможна ни при каких комбинациях управляющих сигналов, и микросхемы работают строго в режиме ROM. Этот режим и используется для микросхем BIOS, так что никакой вирус им не страшен.
В PC чаще всего применяют микросхемы EPROM в корпусах DIP и PLCC (табл. 7.21), расположение выводов популярных микросхем приведено на рис. 7.18 и 7.19.
281 |
Таблица 7.21. Популярные микросхемы EPROM |
|||
Микросхема |
Корпус |
Рисунок |
Примечание |
и организация |
|||
2716 — 2Кх8 |
DIP-24 |
7.18,а |
20 = ОЕ#; 21 = Vpp |
2732 —4Кх8 |
DIP-24 |
7.18,а |
20 = OE#/Vpp,21=A11 |
2764 —8Кх8 |
DIP-28 |
7.18,6 |
1 = VPP, 22 = OE#; 26 = NC, 27 = PGM# |
27128 —16Кх8 |
DIP-28 |
7.18,6 |
1 = VPP, 22 = OE#; 26 = A13, 27 = PGM# |
27256 —32 Кх 8 |
DIP-28 |
7.18,6 |
1 =VPP,22 = OE#;26 = A13,27 = A14 |
27512 —64Кх8 |
DIP-28 |
7.18,6 |
1 = A15, 22 = OE#/Vpp, 26 = A13,27 = A14 |
27010—128 Кх 8 |
DIP-32 |
7.18,8 |
30 = NC |
27010 —128 Кх 8 |
TSOP-32 |
7.19,а |
6 = NC |
27010—128 Кх8 |
PLCC-32 |
7.19,6 |
30 = NC |
27020 —256 Кх 8 |
DIP-32 |
7.18,в |
- |
27020 —256 Кх 8 |
TSOP-32 |
7.19,а |
- |
27020 —256 Кх 8 |
PLCC-32 |
7.19,6 |
- |
На шине ISA имеются линии запросов маскируемых и немаскируемых аппаратных прерываний. Линии запросов маскируемых прерываний IRQ2-IRQ7 поступают на входы первичного контроллера прерываний, IRQ9-IRQ15 — на входы вторичного. Контакт В4 (IRQ2/9) запрос IRQ2 вырабатывал только у машин РХ/ХТ. На всех современных машинах (класса AT) он является запросом IRQ9, хотя на многих адаптерах (всех 8-битных) он обозначается как IRQ2. Приоритеты у запросов убывают по порядку IRQ9...IRQ15 и далее IRQ3...IRQ7. Запросы от конкретных линий могут быть замаскированы записью в регистры контроллера (см. п. 12.4), общий запрет/разрешение осуществляется манипулированием флагом разрешения прерываний (IF) процессора. Устройство может использовать одну или несколько линий запроса прерывания. На используемой линии запроса устройство в покое должно формировать низкий уровень сигнала, а при возникновении условия прерывания устанавливать на нем высокий уровень запроса. Неиспользуемые линии должны быть электрически отключены от шины или же их выходные формирователи должны переводиться в третье состояние. Переход из низкого в высокий уровень является сигналом для контроллера прерываний на формирование запроса прерывания к процессору. Устройство должно удерживать высокий уро-
6.1. Шины ISA, EISA и PC/104_________________________________________ 161
вень запроса до тех пор, пока к нему не обратится программа-обработчик прерывания, что будет означать не только обнаружение, но и правильную идентификацию источника запроса прерывания. Если запрос снят преждевременно, идентификация будет некорректной. Детально механизм обслуживания прерываний рассмотрен в п. 12.4.
Способ подачи сигнала прерывания, принятый в ISA, — чувствительность к уровню, причем к высокому, — имеет меньшую помехозащищенность, чем срабатывание по отрицательному перепаду, и отрезает путь к нормальному разделению (совместному использованию) линий запросов.
Линия ЮСНК# позволяет вызывать немаскируемое прерывание (NMI), на которое процессор реагирует вне зависимости от каких-либо флагов. Это прерывание принято использовать для сообщения о серьезных ошибках, требующих реакции системы, но не для регулярной работы. Вызов NMI от данной линии разрешается установкой бита 3 (EIC) системного порта 06lh, а признаком того, что прерывание NMI вызвано сигналом ЮСНК#, является единичное значение бита 6 (IOCHK) того же порта.
В PC-совместимых компьютерах прерывания от устройств PCI обслуживаются с помощью традиционной связки пары контроллеров 8259А, расположенных на системной плате (см. п. 12.4), к которым обращается команда «подтверждение прерывания». Прерывания на шине PCI свободны от одной из нелепостей системы прерываний ISA. Устройство PCI вводит сигнал прерывания низким уровнем (выходом с открытым коллектором или стоком) на выбранную линию INTA#, INTB#, INTC# или INTD*. Этот сигнал должен удерживаться до тех пор, пока программный драйвер, вызванный по прерыванию, не сбросит запрос прерывания, обратившись по шине к данному устройству. Если после этого контроллер прерываний снова обнаруживает низкий уровень на линии запроса, это означает, что запрос на ту же линию ввело другое устройство, разделяющее данную линию с первым, и оно тоже требует обслуживания. Линии запросов от слотов PCI и PCI-устройств системной платы коммутируются на входы контроллеров прерываний относительно произвольно. Конфигурационное ПО может определить и указать занятые линии запросов и номер входа контроллера прерываний обращением к конфигурационному пространству устройства (см. п. 6.2.12). Программный драйвер, прочитав конфигурационные регистры, тоже может определить эти параметры для того, чтобы установить обработчик прерываний на нужный вектор и при обслуживании сбрасывать запрос с требуемой линии. К сожалению, в конфигурационных регистрах не нашлось стандартного места для бита, индицирующего введение запроса прерывания данным устройством, — тогда бы в прерываниях для PCI не было бы проблем с унификацией поддержки разделяемых прерываний.
Каждая функция устройства PCI может задействовать свою линию запроса прерывания, но должно быть готовым к ее разделению (совместному использованию) с другими устройствами. Если устройству требуется только одна линия запроса, то оно должно занимать линию INTA#, если две — INTA# и INTB#, и так далее. С учетом циклического сдвига линий запроса это правило позволяет установить в 4 сосед-
В процессорах х86 используются аппаратные прерывания, программные прерывания и исключения. Аппаратные прерывания были описаны выше; кроме того, к ним относится и специфичное (и неиспользуемое прикладными программами) прерывание SMI для входа в режим системного управления (SMM). Программные прерывания по сути прерываниями и не являются — это лишь короткая форма дальнего вызова ограниченного количества процедур, выполняемая инструкцией Int N (N=0-255). Программные прерывания, в частности, используются для вызовов сервисов BIOS и DOS. Исключения генерируются процессором и сопроцессором, когда при исполнении инструкций возникают особые условия (например, деление на ноль или срабатывание защиты). Исключения занимают векторы прерываний 0-31, которые частично пересекаются с векторами аппаратных прерываний ведущего контроллера и NMI, а также с векторами сервисов BIOS. В процессорах 8086/88 исключения назывались внутренними прерываниями, их было совсем мало. По мере «взросления» процессоров добавлялись новые исключения; исключениями особо богаты современные процессоры при работе в защищенном режиме. На исключениях строится защита и виртуальная память в многозадачных ОС защищенного режима.
В реальном режиме прерывания работают довольно просто, и их обработчики могут находиться в любом месте физически адресуемой памяти (ОЗУ или ПЗУ). В таблице прерываний, начинающейся с нулевого адреса, каждый вектор прерываний представляется дальним указателем на процедуру обработки (16-байтные смещение и сегмент). Внедрение собственных обработчиков прерываний представляет собой несложную задачу, если прерывание используется монопольно одним устройством и соответствующим ему единственным модулем ПО. В реальном режиме любая программа может управлять флагом разрешения аппаратных прерываний; некорректное управление флагом может приводить к различным неприятностям — от сбоя системного времени до «зависания» компьютера.
В защищенном режиме прерывания работают гораздо сложнее.
Обычно LPT-порт используют для подключения принтера (см. п. 8.3.1), однако этим его применение не исчерпывается.
Для связи двух компьютеров по параллельному интерфейсу применяются различные кабели в зависимости от режимов используемых портов. Самый простой и медленный — полубайтный режим, работающий на всех портах. Для этого режима в кабеле достаточно иметь 10 сигнальных и один общий провод. Распайка разъемов кабеля приведена в табл. 1.11. Связь двух PC данным кабелем поддерживается стандартным ПО типа Interlnk из MS-DOS или Norton Commander. Заметим, что здесь применяется свой протокол, отличный от описанного в п. 1.3.1.
Таблица 1.11. Кабель связи PC-PC (4-битный)
Х1, разъем РС#1 Х2, разъем РС#2 Бит Контакт Контакт БитDR.O | 2 | 15 | SR.3 | ||||
DR.1 | 3 | 13 | SR.4 | ||||
DR.2 | 4 | 12 | SR.5 | ||||
DR.3 | 5 | 10 | SR.6 | ||||
DR.4 | 6 | 11 | SR.7 | ||||
SR.6 | 10 | 5 | DR.3 | ||||
SR.7 | 11 | 6 | DR.4 | ||||
SR.5 | 12 | 4 | DR.2 | ||||
SR.4 | 13 | 3 | DR.1 | ||||
SR.3 | 15 | 2 | DR.O |
GND 18-25 18-25 GND
Разъемы XI и Х2 - DB25-P (вилки).Высокоскоростная связь двух компьютеров может выполняться и в режиме ЕСР (режим ЕРР неудобен, поскольку требует синхронизации шинных циклов ввода-вывода двух компьютеров).
В табл. 1.12 приведена распайка кабеля, в аналогичной таблице предыдущих книг автора (см. [2] и [5]) была ошибка (перепутаны контакты 13 и 15). Из всех сигналов
1.6. Применение LPT-порта_____________________________________________ 43
в кабеле не используется лишь PeriphRequest* (контакт 15). В цепи линий данных рекомендуется вставить последовательные резисторы (0,5-1 кОм), препятствующие протеканию слишком больших токов, когда порты данных обоих компьютеров находятся в режиме вывода. Эта ситуация возникает, когда коммуникационное ПО компьютеров еще не запущено. Связь в режиме ЕСР поддерживается Windows Эх, в комплект поставки этих ОС входит драйвер PARALINK.VxD, но из-за внутренней ошибки он неработоспособен.
«Заплатку» на этот драйвер, а также тестовую утилиту и необходимые описания можно найти в сети (www.lpt.com, www.lvr.com/parport.htm).
Таблица 1.12. Кабель связи PC-PC в режиме ЕСР и байтном режиме
Разъем Х1 Разъем Х2
Контакт Имя в ЕСР Имя в ЕСР Контакт
1 |
HostClk |
PeriphClk |
10 |
14 |
HostAck |
PeriphAck |
11 |
17 |
1284Active |
Xflag |
13 |
16 |
ReverseRequest* |
AckReverse* |
12 |
10 |
PeriphClk |
HostClk |
1 |
11 |
PeriphAck |
HostAck |
14 |
12 |
AckReverse* |
ReverseRequest* |
16 |
13 |
Xflag |
1284Active |
17 |
2,3...9 |
Data [0:7] |
Data [0:7] |
2,3..•9 |
44 |
Таблица 1 |
.13. Назначение выводов разъема LPT-порта и бит регистров в режимах SPP, ЕСР и ЕРР |
||||
Контакт |
I/O |
Бит1 |
SPP |
ECP |
EPP |
1 |
0/I |
CR.O\ |
Strobe# |
HostClk |
Write» |
2 |
0/I |
DR.O |
DataO |
Data 0 |
DataO |
3 |
0/I |
DR.1 |
Datal |
Datal |
Datal |
4 |
0/I |
DR. 2 |
Data 2 |
Data 2 |
Data 2 |
5 |
0/I |
DR.3 |
DataS |
DataS |
DataS |
6 |
0/I |
DR.4 |
Data 4 |
Data 4 |
Data 4 |
7 |
0/I |
DR.5 |
Data S |
Data S |
Data S |
8 |
0/I |
DR.6 |
Data 6 |
Data 6 |
Data 6 |
9 |
0/I |
DR.7 |
Data 7 |
Data 7 |
Data 7 |
10 |
I |
SR.6 |
Ack# |
PeriphClk |
INTR# |
11 |
I |
SR.A |
Busy |
PeriphAck |
Wait# |
12 |
I |
SR.5 |
PaperEnd |
AckReverse* |
__ 2 |
13 |
I |
SR.4 |
Select |
Xflag |
—2 |
14 |
0/I |
CR.1\ |
Auto LF# |
HostAck |
DataStb* |
15 |
I |
SR.3 |
Error» |
PeriphRequest* |
__ 2 |
16 |
0/I |
CR.2 |
lnit# |
ReverseRequest* |
Reset» |
17 |
0/I |
CR.3\ |
Select ln# |
1284Active |
AddrStb# |
Благодаря своей универсальности и способности эффективно передавать разнородньш трафик, шина USB применяется для подключения к PC самых разнообразных устройств. Она призвана заменить традиционные порты PC — СОМ и LPT, а также порты игрового адаптера и интерфейса MIDI. Спецификация USB 2.0 позволяет говорить и о подключении традиционных «клиентов» шин АТА и SCSI, а также захвате части ниши применения шины FireWire. Привлекательность USB придает возможность подключения/отключения устройств на ходу и возможность их использования практически сразу, без перезагрузки ОС. Удобна и возможность подключения большого количества (до 127) устройств к одной шине, правда, при наличии хабов. Хост-контроллер интегрирован в большинство современных сие-
102^^_________________________ Глава 4. Последовательные шины USB и FireWire
темных плат. Выпускаются и карты расширения с контроллерами USB (обычно для шины PCI). Однако повсеместное применение USB сдерживается недостаточной активностью разработчиков ПО (производителей оборудования): просматривая перечни устройств, мы видим, что для всех указывается поддержка в Windows 98/SE/ME, а вот в графах Linux, MacOS, Unix и даже Windows 2000 часто стоят неприятные пометки N/A (Not Allowed — «не дозволено»). Для того чтобы система USB заработала, необходимо, чтобы были загружены драйверы хост-контроллера (или контроллеров, если их несколько). При подключении устройства к шине USB ОС Windows выдает сообщение «Обнаружено новое устройство» и, если устройство подключается впервые, предлагает загрузить для него драйверы. Многие модели устройств уже известны системе, и драйверы входят в дистрибутив ОС. Однако может потребоваться и драйвер изготовителя устройства, который должен входить в комплект поставки устройства, или его придется искать в Сети. К сожалению, не все драйверы работают корректно — «сырой» драйвер начальной версии, возможно, потребуется заменить более «правильным», чтобы устройство нормально опознавалось и хорошо работало.
Но это общее горе пользователей любых устройств, а не только устройств для шины USB.
Перечислим основные области применения USB.
¦ Устройства ввода — клавиатуры, мыши, трекболы, планшетные указатели
и т. п. Здесь USB предоставляет для различных устройств единый интерфейс.
Целесообразность использования USB для клавиатуры неочевидна, хотя в паре с мышью USB (подключаемой к порту хаба, встроенного в клавиатуру) сокращается количество кабелей, тянущихся от системного блока на стол пользователя.
¦ Принтеры. USB 1.1 обеспечивает примерно ту же скорость, что и LPT-порт
в режиме ЕСР, но при использовании USB не возникает проблем с длиной кабеля и подключением нескольких принтеров к одному компьютеру (правда, требуются хабы). USB 2.0 позволит ускорить печать в режиме высокого разрешения за счет сокращения времени на передачу больших массивов данных.
Однако есть проблема со старым ПО, которое непосредственно работает с LPT-
портом на уровне регистров, — на принтер USB оно печатать не сможет.
¦ Сканеры. Применение USB позволяет отказаться от контроллеров SCSI или от занятия LPT-порта. USB 2.0 при этом позволит еще и повысить скорость передачи данных.
¦ Аудиоустройства — колонки, микрофоны, головные телефоны (наушники).
USB позволяет передавать потоки аудиоданных, достаточные для обеспечения самого высокого качества. Передача в цифровом виде от самого источника сигнала (микрофона со встроенным преобразователем и адаптером) до приемника и цифровая обработка в хост-компьютере позволяют избавиться от наводок, свойственных аналоговой передачи аудиосигналов. Использование этих аудио-компонентов позволяет в ряде случаев избавиться от звуковой карты компьютера — аудиокодек (АЦП и ЦАП) выводится за пределы компьютера, а все функции обработки сигналов (микшер, эквалайзер) реализуются центральным процессором чисто программно. Аудиоустройства могут и не иметь собственно колонок и микрофона, а ограничиться преобразователями и стандартными гнездами («Джеками») для подключения обычных аналоговых устройств.
4.1. Шина USB^\_____________________________________________________ 103
¦ Музыкальные синтезаторы и MIDI-контроллеры с интерфейсом USB. Шина USB позволяет компьютеру обрабатывать потоки множества каналов MIDI (пропускная способность традиционного интерфейса MIDI уже гораздо ниже возможностей компьютера).
¦ Видео- и фотокамеры. USB 1.1 позволяет передавать статические изображения любого разрешения за приемлемое время, а также передавать поток видеоданных (живое видео) с достаточной частотой кадров (25-30 Кбит/с) только с невысоким разрешением или сжатием данных, от которого, естественно, страдает качество изображения. USB 2.0 позволяет передавать поток видеоданных высокого разрешения без сжатия (и потери качества). С интерфейсом USB выпускают как камеры, так и устройства захвата изображения с телевизионного сигнала и TV-тюнеры.
¦ Коммуникации. С интерфейсом USB выпускают разнообразные модемы, включая кабельные и xDSL, адаптеры высокоскоростной инфракрасной связи (IrDA FIR) — шина позволяет преодолеть предел скорости СОМ-порта (115,2 Кбит/с), не повышая загрузку центрального процессора. Выпускаются и сетевые адаптеры Ethernet, подключаемые к компьютеру по USB. Для соединения нескольких компьютеров в локальную сеть выпускаются специальные устройства, выполняющие коммутацию пакетов между компьютерами. Непосредственно (без дополнительных устройств) портами USB соединить между собой даже два компьютера нельзя — на одной шине может присутствовать лишь один хост-контроллер (см. выше). Специальное устройство для связи пары компьютеров выглядит как «таблетка», врезанная в кабель USB с двумя вилками типа «А»
на концах. Объединение более двух компьютеров осложняется и топологиче
скими ограничениями USB: длина одного сегмента кабеля не должна превышать 5 м, а использовать хабы для увеличения дальности неэффективно (каждый хаб дает всего 5 м дополнительного удаления).
¦ Преобразователи интерфейсов позволяют через порт USB, имеющийся теперь практически на всех компьютерах, подключать устройства с самыми разнообразными интерфейсами: Centronics и IEEE 1284 (LPT-порты), RS-232C (эмуляция UART 16550A — основы СОМ-портов) и другие последовательные интерфейсы (RS-422, RS-485, V.35...), эмуляторы портов клавиатуры и даже Game-порта, переходники на шину AT A, ISA, PC Card и любые другие, для которых достаточно производительности.
Здесь USB становится палочкой-выручалочкой, когда встает проблема 2-го (3-го) LPT- или СОМ-порта в блокнотном ПК и в дру гих ситуациях. При этом ПО преобразователя может обеспечить эмуляцию
классического варианта «железа» стандартных портов IBM PC, но только под управлением ОС защищенного режима. Приложение MS-DOS может обращаться к устройствам по адресам ввода-вывода, памяти, прерываниями, каналами DMA, но только из сеанса MS-DOS, открытого в ОС с поддержкой USB (чаще это Windows). При загрузке «голой» MS-DOS «палочка-выручалочка» не работает. Преобразователи интерфейсов позволяют продлить жизнь устройствам с традиционными интерфейсами, изживаемыми из PC спецификациями РС'99 и РС'2001. Скорость передачи данных через конвертер USB — LPT может оказаться даже выше, чем у реального LPT-порта, работающего в режиме SPP.
104__________________________ Глава 4. Последовательные шины USB и FireWire
¦ Устройства хранения — винчестеры, устройства чтения и записи CD и DVD, стриммеры — при использовании USB 1.1 получают скорость передачи, соизмеримую со скоростью их подключения к LPT, но более удобный интерфейс (как аппаратный, так и программный). При переходе на USB 2.0 скорость передачи данных становится соизмеримой с АТА и SCSI, а ограничений по количеству устройств достичь трудно. Особенно интересно использование USB для электронных устройств энергонезависимого хранения (на флэш-памяти) — такой накопитель может быть весьма компактным (размером с брелок для ключей) и емким (пока 16-256 Мбайт, в перспективах — гигабайт и более). Выпускаются устройства для мобильного подключения накопителей с интерфейсом АТА-ATAPI — по сути, это лишь преобразователи интерфейсов, помещенные в короб
ку-отсек формата 5" или 3,5", а иногда выполненные прямо в корпусе 36-контактного разъема АТА. Имеются и устройства чтения-записи карт SmartMedia Card и CompactFlash Card.
¦ Игровые устройства — джойстики всех видов (от «палочек» до автомобильных рулей), пульты с разнообразными датчиками (непрерывными и дискретными) и исполнительными механизмами (почему бы не сделать кресло автогонщика с вибраторами и качалками?) — подключаются унифицированным способом.
При этом исключается ресурсопожирающий интерфейс старого игрового адаптера (упраздненного уже в спецификации РС'99).
¦ Телефоны — аналоговые и цифровые (ISDN). Подключение телефонного аппарата позволяет превратить компьютер в секретаря с функциями автодозвона, автоответчика, охраны и т. п.
¦ Мониторы — здесь шина USB используется для управления параметрами монитора. Монитор сообщает системе свой тип и возможности (параметры синхронизации) — это делалось и без USB по шине DDC. Однако USB-мониторы позволяют системе еще и управлять ими — регулировки яркости, контраста, цветовой температуры и т. п. могут теперь выполняться программно, а не только от кнопок лицевой панели монитора. В мониторы, как правило, встраивают хабы. Это удобно, поскольку настольную периферию не всегда удобно включать в «подстольный» системный блок.
¦ Электронные ключи — устройства с любым уровнем интеллектуальности защиты — могут быть выполнены в корпусе вилок USB. Они гораздо компактнее и мобильнее аналогичных устройств для СОМ- и LPT-портов.
Конечно же, перечисленными классами устройств сфера применения шины USB не ограничивается.
Хабы USB выпускаются как в виде отдельных устройств, так и встраиваются в периферийные устройства (клавиатуры, мониторы). Как правило, хабы питаются от сети переменного тока (они должны питать подключаемые устройства). Выпускают и хабы, устанавливаемые внутрь системного блока компьютера и питающиеся от его блока питания. Такие хабы дешевле внешних и не требуют дополнительной питающей розетки. Один из вариантов исполнения — установка хаба на скобку,
4.1. Шина USB__________________________________________________ 105
монтируемую в окно для дополнительных разъемов. Доступ к их разъемам со «спины» системного блока не очень удобен для пользователей. Другой вариант — хаб, устанавливаемый в 3"-отсек. Его разъемы легкодоступны, индикаторы состояния портов хорошо видны, но не всегда удобны кабели, выходящие с передней панели системного блока.С другой стороны, для подключения электронных ключей (если их приходится часто менять) или миниатюрных накопителей этот вариант — самый удобный.
Недавно появились и новые вспомогательные устройства, увеличивающие дальность связи (distance extender). Это пара устройств, соединяемых между собой обычным кабелем «витая пара» (или оптоволокном), включаемая между периферийным устройством и хабом. «Удлинитель» со стороны периферии может иметь и хаб на несколько портов. К сожалению, увеличение дистанции упирается в ограничения на время задержки сигнала, свойственные протоколу шины USB, и достижимо лишь удаление до 100 м. Но даже и эта длина позволяет расширить сферу применения USB, например для удаленного видеонаблюдения.
В случае прямого управления шиной (bus mastering) инициатором обмена становится контроллер какого-либо устройства или интерфейса, но не процессор и не канал DMA. Прямое управление позволяет контроллеру, не отвлекая центральный процессор, выполнять обмен данными с высокой производительностью и, возможно, по более сложным правилам и без ограничений, присущих каналам DMA (невозможность пересечения границы страницы). Контроллер, как правило, обеспечивает обмен данными между системным ОЗУ и своим периферийным устройством или интерфейсом. В принципе он может общаться с памятью или портами другого абонента шины, но для упрощения организации всех информационных связей центральным «перевалочным пунктом» все-таки является системное ОЗУ. Получить право на управление шиной ISA может только контроллер, подключенный к 16-битному слоту. Для арбитража запросов на управление шиной от нескольких источников — центрального процессора, контроллера DMA и контроллеров-абонентов шины используется второй контроллер DMA (каналы 5-7). Устройство, желающее получить управление, выставляет запрос DRQx (x=5...7), по которому контроллер DMA запрашивает управление шиной у центрального процессора. Получив подтверждение от процессора, контроллер устанавливает сигнал AEN (для блокировки дешифрации адреса портов) и формирует сигнал DACKx. Получив этот сигнал, устройство устанавливает низкий уровень на линии MASTER*, по которому контроллер шины DMA снимает сигнал AEN и освобождает линии командных сигналов. Таким образом, управление шиной переходит к данному устройству до тех пор, пока оно не снимет запрос DRQx. В режиме прямого управления шиной ISA устройство становится полновластным и бесконтрольным хозяином как самой шины, так и системы в целом (через мост шины). Если шина захватывается более чем на 15 мкс, контроллер устройства должен заботиться о регенерации памяти (см. ниже). Устройства (и память), к которым обращается задатчик шины, могут потребовать введения тактов ожидания сигналом IOCHRDY, и это требование должно удовлетворяться.
Прямой доступ к памяти позволяет абоненту шины организовывать обмен данными между своим регистром и памятью под управлением контроллера DMA, минуя центральный процессор. До выполнения обмена канал DMA должен быть инициализирован — задан начальный адрес и размер пересылаемого блока памяти, направление и режим обмена. После инициализации канала обмен выполняется по инициативе ПУ.
Для интерфейса ПУ каждый канал DMA представляется парой сигналов: запрос обмена — DRQx и подтверждение обмена — DACKx#, где х — номер используемого канала. На рис. 6.3 приведена диаграмма стандартного цикла передачи байта (для 8-битного канала) или слова (для 16-битного) от ПУ в память по каналу DMA. Цикл передачи блока байтов или слов в память будет выглядеть следующим образом.
1. По сигналу DRQx контроллер DMA запрашивает управление шиной и дожидается его предоставления процессором (и другими контроллерами шины).
2. Контроллер выставляет адрес ячейки памяти и формирует в одном цикле шины
сигналы IOR#, DACKx* и MEMW#. Адрес на всех линиях, включая LA[23:17], действителен во время всего цикла (защелкивание не требуется), BALE=H в течение всего цикла. Сигнал DACKx# указывает на то, что операция выполняется для канала х, a IOR# — на направление в канале (для пересылки из памяти в канал использовался бы сигнал IOW#). Чтобы по сигналу IOR# не было ложного чтения (по IOW# — ложной записи) порта, адрес которого совпадает с адресом памяти, присутствующим в цикле DMA, контроллер высоким уровнем сигнала
158
Глава 6. Шины и карты расширения
AEN запрещает портам дешифрацию адреса. Байт, считанный из ПУ, в том же цикле шины записывается в ячейку памяти.
3. Контроллер модифицирует счетчик адреса и повторяет шаги 1-2 для каждого следующего сигнала DRQx, пока не будет исчерпан счетчик циклов. В последнем цикле обмена контроллер формирует общий сигнал окончания ТС (Terminate Count), который может быть использован устройством для формирования сигнала аппаратного прерывания.
Как было сказано выше, шина PCI не предоставляет возможности прямого доступа к памяти с использованием централизованного контроллера в стиле 8237А (как для шины ISA). Для разгрузки центрального процессора от рутинных перекачек данных предлагается прямое управление шиной со стороны устройств, называемых ведущими устройствами шины (PCI Bus Master). Степень интеллектуальности ведущего устройства может быть различной. В простейшем варианте ведущее устройство обеспечивает пересылку блоков данных между устройством и системной памятью (или памятью других устройств) по указанию от CPU. Здесь CPU командами обращения к определенным регистрам ведущего устройства задает начальный адрес, длину блока, направление пересылки и разрешает запуск передачи. После этого пересылка выполняется по готовности (или инициативе) устрой* ства, без отвлечения CPU. Таким образом выполняется прямой доступ к памяти (DMA). Более сложный контроллер DMA может организовывать сцепку буферов при чтении, разбросанную запись и т. п. — возможности, знакомые еще по «продвинутым» контроллерам DMA для ISA/EISA. Более интеллектуальное ведущее устройство, как правило, обладающее собственным микроконтроллером, не ограничивается такой простой работой по указке CPU — оно выполняет обмены уже по программе своего контроллера.
Для совместимости устройств PCI со старым PC-ориентированным ПО и упрощения устройств PCI фирма Intel разработала специальный протокол PC/PCI DMA, изменяющий назначение пары сигналов REQi# и GNTi# для заранее выбранного агента шины, являющегося «проводником» DMA. Этот агент имеет внешние (по отношению к шине PCI) пары сигналов DRQx# и DACKx# с логикой, аналогичной одноименным сигналам ISA (см. п. 6.1), а линии REQi# и GNTi# в процессе запроса управления шиной использует особым образом. Когда агент получает запрос DRQx (один или несколько), он по линии REQi# передает в последовательном коде номера активных линий запросов DRQx, с синхронизацией по линии CLK. В первом такте CLK передается старт-бит — низкий уровень REQi#, во втором — активность запроса DRQO, затем DRQ1 и так далее до DRQ7, после чего сохраняется низкий уровень REQ#. На это сообщение арбитр ответит по линии GNTi# посылкой, также начинающейся со старт-бита, за которой последуют три бита кода номера канала, которому дается подтверждение DACK* для передачи данных в этой транзакции. Агент должен сообщать арбитру обо всех изменениях линий запроса, в том числе и о снятии сигналов запроса. Механизм PC/PCI DMA может быть реализован только в чипсете системной платы.
192_____________________________________ Глава 6. Шины и карты расширения
В реальном режиме (при отключенной страничной переадресации) логический адрес, формируемый прикладной программой, совпадает с физическим адресом, фигурирующим на шинах расширения. Тут все просто, правда, в стандартном (а не большом) реальном режиме доступен только первый мегабайт адресов (только устройства в области UMA).
В защищенном режиме в принципе доступно все физическое адресное простран
ство, но появляются проблемы, связанные с отображением логических адресов на
физические. Отображением (поддержкой таблиц переадресации) ведает ОС, при
ложения могут только узнать карту отображений (получить список физических
адресов страниц для какой-то области своей виртуальной памяти). Какие-то об
ласти могут в данный момент и не присутствовать в ОЗУ (они могут быть выгру^
женными на диск). У драйверов устройств возможностей больше — они могут за
просить блок памяти с последовательными физическими страницами и потребовать
фиксации определенных страниц (запретить их выгрузку из ОЗУ).
12.5. Процессоры х86________________________________________________ 473
При организации прямого доступа к памяти, как по стандартным каналам DMA, так и используя ведущие устройства шин ISA и PCI, возникает проблема пересечения границ страниц. Если приложение хочет выполнить обмен по DMA с областью доступной ей памяти непосредственно, то оно должно запросить у ОС физический адрес, которому соответствует логический адрес предполагаемого буфера обмена. Именно этот физический адрес должен задаваться устройству, выполняющему DMA, при инициализации сеанса обмена (указании начального адреса, длины блока и запуске канала). В каждом сеансе обмена не должна пересекаться граница страницы, которой оперирует блок страничной переадресации, поскольку следующая логическая страница может иметь физическое отображение в произвольном (относительно предыдущей страницы) месте. Чаще всего ОС оперирует страницами по 4 Кбайт, при этом пересылка больших блоков данных ведется «короткими перебежками», между которыми процессор должен выполнять повторную инициализацию DMA.
Эта проблема решается усложнением контроллеров DMA — применением «разбросанной записи» в память (scatter write) и «собирающего чтения» памяти (gather read). Контроллеру DMA задается список описателей блоков (начальный адрес и длина). Отработав очередной блок памяти, контроллер переходит к следующему, и так до конца списка. Такие возможности имеет, например, стандартный контроллер PCI IDE (см. п. 9.2.1). Стандартный контроллер DMA имеет и другую «страничную проблему», связанную с реализацией регистров страниц (см. п. 12.4).
Проблема пересечения границ может решаться и иначе, без усложнения контроллера DMA. Для этого в памяти резервируется буфер значительного размера, отображенный на непрерывную область физической памяти, и обмен данными физическое устройство выполняет только с этим буфером. Однако такой буфер рядовое приложение создать не может; он может быть организован лишь драйвером устройства. Приложения могут только получать указатели на этот буфер и обмениваться с ним данными. Таким образом, по пути от приложения к устройству появляется дополнительная «перевалочная база» (буфер драйвера) и дополнительная пересылка данных, что приводит к дополнительным затратам времени.
Все программы в IBM PC-совместимом компьютере исполняются центральным процессором, принадлежащим к семейству х86. Любое устройство для процессора представляет собой лишь набор регистров (ячеек), отображенных в пространство памяти и (или) ввода-вывода, и необязательно источник аппаратных прерываний. Современные процессоры х86, работающие в защищенном режиме, имеют довольно сложные механизмы виртуализации памяти, ввода-вывода и прерываний, из-за которых приходится различать физические и логические пространства (адреса памяти и ввода-вывода) и события (операции ввода-вывода, прерывания). Физический адрес ячейки памяти или порта ввода-вывода — это адрес, формируемый для обращения к данной ячейке на физических шинах компьютера (системной шине процессора, шине PCI, ISA). Логический адрес — это тот адрес, который формируется исполняемой программой (по замыслу программиста) для доступа к требуемой ячейке. Физическая операция ввода-вывода или обращения к памяти — это процесс (шинный цикл), во время которого генерируются электрические сигналы, обеспечивающие доступ к данной ячейке (порту). Логическая операция — это исполнение программной инструкции (команды) обращения к интересующей ячейке. Логическая операция не всегда порождает ожидаемую физическую операцию: при определенных условиях она может блокироваться средствами защиты процессора, вызывая даже принудительное завершение программы, или же эмулироваться, создавая иллюзию физического исполнения.
Безопасность в защищенном режиме базируется на 4-уровневой системе привилегий. В большинстве современных ОС ради упрощения и экономии процессорного времени используются только два крайних уровня — нулевой (supervisor), с неограниченными возможностями, и третий (user), с самыми жесткими ограничениями. Смена уровней привилегий при исполнении программы занимает много тактов процессора, но это вынужденная плата за реализацию защиты, без которой устойчивую ОС не построить. Более подробно механизмы защиты и виртуализации памяти, ввода-вывода и прерываний в процессорах х86 описаны в литературе [6, 7], здесь же изложены лишь некоторые прикладные аспекты их работы.
12.5. Процессоры х86________________________________________________ 469
Рассмотренные выше интерфейсы — PC, SMBus, SMI, SPI и JTAG — имеют общее свойство: они управляются и синхронизируются контроллером и не требуют фиксированной частоты синхронизации. Это позволяет для многих применений программно реализовать их на любом компьютере или микроконтроллере. На рис. 11.9 приведена схема простейшего адаптера интерфейсов I2C, SMBus или SMI для LPT-порта. Здесь сигнал SCL (или MDC в SMI) формируется непосредственно от выходной линии Strobe; для его переключения достаточно последовательно записывать в бит О регистра CR (порт с адресом LPT_BASE+2) нули (высокий уровень сигнала) и единицы (низкий). Двунаправленный сигнал SDA (МОЮ в SMI) реализуется чуть сложнее: для передачи нуля в бит 1 регистра CR (LPT_BASE+2) записывается единица, для передачи единицы — нуль. На время чтения в этот бит должен быть записан нуль (чтобы на выходе был высокий уровень), данные (инверсные) считываются из бита 7 регистра SR (LPT_BASE+1). В адаптере должен использоваться диод с малым прямым падением напряжения. Лучше всего для этого подходят германиевые меза-диоды Д310 или Д311; кремниевые диоды, даже с барьерами Шоттки, здесь работают хуже (возможен слишком высокий формируемый уровень нуля).
Программная реализация протоколов в среде DOS и Windows 9x не вызывает особых затруднений» поскольку здесь программист может обращаться к регистрам порта непосредственно. В более защищенных ОС (UNIX, Linux, Windows NT/ 2000) для обращения к регистрам LPT-порта требуются вызовы API.
При использовании данных адаптеров следует внимательно относиться к проблемам защиты от помех. Непосредственно с адаптера сигналы можно передавать
452
Глава 11. Вспомогательные последовательные интерфейсы и шины
лишь на небольшие расстояния (десятки сантиметров). Для передачи на большие расстояния (если ПК не приблизить к объекту) подойдут преобразователи уровней сигналов ТТЛ в дифференциальные сигналы интерфейса RS-422 и обратно. При этом адаптер разделяется на 2 блока, соединенные кабелем, — первый блок устанавливается на LPT-порт, другой — около подключаемого объекта.
Поскольку конфигурационное пространство PCI обособлено, в главный мост приходится вводить специальный механизм доступа к нему командами процессора, который «умеет» обращаться только к памяти или вводу-выводу. Этот же механизм используется и для генерации специальных циклов. Для PC-совместимых компьютеров предусмотрено два механизма, из которых в спецификации 2.2 оставлен только первый (Configuration Mechanism #1). Номер механизма, которым пользуется конкретная системная плата, можно узнать путем вызова PCI BIOS.
Конфигурационные циклы адресуются к конкретному устройству (микросхеме PCI), для которого должен быть сформирован сигнал выборки IDSEL (единичное значение). Номер функции и адрес регистра декодируется самим устройством. Поскольку сигнал IDSEL воспринимается устройством только в фазе адреса, для него используют позиционное кодирование в линиях старших битов шины AD (конфигурационное пространство всех устройств занимает лишь малую часть пространства с 32-битной адресацией). На этих линиях в фазе адреса конфигурационного обращения может быть лишь один единичный бит, остальные — нулевые. Таким образом, только одно устройство будет выбрано сигналом IDSEL.
Для работы механизма № 1 в пространстве ввода-вывода зарезервированы 32-битные порты с адресами OCF8H и OCFCh, входящие в главный мост. Для обращения к конфигурационному пространству в порт CONFIG_ADDRESS (RW, адрес CF8h) заносят 32-разрядный адрес, декодируемый в соответствии с рис. 6.9, а. После занесения адреса обращением к порту CONFIG_DATA (RW, адрес CFCh) можно прочитать или записать содержимое требуемого конфигурационного регистра. В регистре CONFIG_ADDRESS бит 31 является разрешением формирования конфигурационных и специальных циклов. В зависимости от номера шины, указанного в этом регистре, главный мост генерирует конфигурационные циклы одного из двух типов.
Для обращения к устройству, находящемуся на нулевой шине (подключенной к главному мосту), используется цикл типа 0 (биты 1:0=00).
Главный мост декодирует поле номера устройства в позиционный код, помещаемый на линии AD[31:11 ]; номер адресуемой функции, адрес регистра и биты 1:0=00 передаются на шину прозрачно (рис. 6.9,б). Устройству 0 соответствует бит AD11, устройству 1 — AD12, устройству 20 — AD31. Поскольку нулевым устройством является главный мост, который и осуществляет декодирование, на шину единичное значение AD11 в цикле типа 0 не выводится. Устройства PCI, расположенные в микросхеме главного моста, могут использовать номера 21-31, для которых линий AD уже не хватает. На системной плате вход IDSEL каждого слота или микросхемы PCI-устройства соединяется со своей линией адреса. Как правило, слоты подключаются, начиная с линии AD31 (и «вниз»), микросхемы устройств PCI, расположенные на системной плате, подключаются, начиная с AD12 (и «вверх»), но может быть и иной порядок. Цикл типа 0 игнорируется всеми другими мостами, подключенными к нулевой шине.
6.2. Шина PCI
203
31 |
30 24 |
23 |
16 |
15 |
11 |
10 |
8 |
7 |
2 |
10 |
||
1 |
Резерв (0) |
Номер шины |
Номер устройства |
Номер функции |
Адрес регистра |
00 |
||||||
а |
||||||||||||
31 |
11 |
10 |
8 |
7 |
2 |
10 |
||||||
Позиционный (только один Е |
код выборки сигнала IDSEL бит может быть единичным) |
Номер функции |
Адрес регистра |
00 |
||||||||
б |
||||||||||||
31 |
24 |
23 |
16 |
15 |
11 |
10 |
8 |
7 |
2 |
10 |
||
0 |
Номер шины |
Номер устройства |
Номер функции |
Адрес регистра |
00 |
Шина PCI является самой высокоскоростной шиной расширения современных ПК, однако и ее реальная пропускная способность, увы, не так уж и высока. Рассмотрим наиболее распространенный вариант: разрядность 32 бита, частота 33 МГц. Как указывалось выше, пиковая скорость передачи данных внутри пакетного цикла составляет 132 Мбайт/с, то есть за каждый такт шины передаются 4 байта данных (33x4=132). Однако пакетные циклы выполняются далеко не всегда. Процессор общается с устройствами PCI инструкциями обращения к памяти или вводу-выводу через главный мост, который шинные транзакции процессора транслирует в транзакции шины PCI. Поскольку у процессоров х86 основные регистры 32-разрядные, то одна инструкция порождает транзакцию с устройством PCI, в которой передается не более 4 байт данных, что соответствует одиночной передаче. Если же адрес передаваемого (двойного) слова не выровнен по соответствующей границе, то будут порождены два одиночных цикла или один пакетный с двумя фазами данных, но в любом случае это обращение будет выполняться дольше, чем при выровненном адресе.
6.2. Шина PCI______________________________________________________ 187
Однако при записи массива данных в устройство PCI (передача с последовательно нарастающим адресом) мост может пытаться организовать пакетные циклы. У современных процессоров (начиная с Pentium) шина данных 64-битная и применяется буферизация записи, так что два последовательных 32-битных запроса записи объединятся в один 64-битный. Этот запрос, если он адресован к 32-битному устройству, мост попытается передать пакетом с двумя фазами данных. «Продвинутый» мост может пытаться собирать в пакет и последовательные запросы, что может породить пакет существенной длины. Пакетные циклы записи можно наблюдать, например, передавая массив данных из ОЗУ в устройство PCI строковой инструкцией MOVSD, используя префикс повтора REP. Тот же эффект даст и цикл последовательных операций LODSW, STOSW (и иных инструкциях обращения к памяти).
Поскольку у современных процессоров ядро исполняет инструкции гораздо быстрее, чем шина способна вывести их результаты, между инструкциями, порождающими объединяемые записи, процессор может успеть выполнить еще несколько операций. Однако если пересылка данных организуется директивой языка высокого уровня, которая ради универсальности работает гораздо сложнее вышеприведенных ассемблерных примитивов, транзакции, скорее всего, будут уже одиночными (у буферов записи процессора не хватит «терпения» придержать один 32-битный запрос до появления следующего, или же произойдет принудительная выгрузка буферов записи процессора или моста по запросу чтения, см. п. 6.2.10).
Что касается чтения из устройства PCI, то здесь пакетный режим организовать сложнее. Буферизации чтения у процессора, естественно, нет (операцию чтения можно считать выполненной лишь по получению реальных данных), и даже строковые инструкции будут порождать одиночные циклы. Однако у современных процессоров имеются возможности генерации запросов чтения более 4 байт. Для этого можно использовать инструкции загрузки данных в регистры ММХ (8 байт) или ХММ (16 байт), а из них уже выгружать данные в ОЗУ (которое работает много быстрее устройств PCI).
Строковые инструкции ввода-вывода (INSW, OUTSW с префиксом повторения REP), используемые для программированного ввода-вывода блоков данных (PIO), порождают серии одиночных транзакций, поскольку все данные блока относятся к одному адресу PCI.
Посмотреть, каким образом происходит обращение к устройству, несложно при наличии осциллографа: в одиночных транзакциях сигнал FRAME* активен всего 1 такт, в пакетных он длиннее. Число фаз данных в пакете соответствует числу тактов, во время которых активны оба сигнала IRDY* и TRDY*.
Стремиться к пакетизации транзакций записи стоит только в том случае, если устройство PCI поддерживает пакетные передачи в ведомом (target) режиме. Если это не так, то попытка пакетизации приведет даже к небольшой потере производительности, поскольку транзакция будет завершаться по инициативе ведомого устройства (сигналом STOP*), а не инициатора обмена, на чем теряется один такт шины.
Так, к примеру, можно наблюдать, как при записи массива в память PCI, выполняемой директивой языка высокого уровня, устройство среднего быстродействия (вводящее лишь 3 такта ожидания готовности) принимает данные каждые 7 тактов,
188___________________________________ Глава 6. Шины и карты расширения
что при частоте 33 МГц и разрядности 32 бита дает скорость 33x4/7=18,8 Мбайт/с. Здесь 4 такта занимает активная часть транзакции (от сигнала FRAME* до снятия сигнала IRDY*) и 3 такта паузы. То же устройство по инструкции MOVSD принимает данные каждые 8 тактов шины (33x4/8=16,5 Мбайт/с). Эти данные — результат наблюдения работы PCI-ядра, выполненного на основе микросхемы FPGA фирмы Altera, не поддерживающего пакетные транзакции в ведомом режиме. То же самое устройство при чтении памяти PCI работает существенно медленнее — инструкцией REP MOWSW с него удалось получать данные каждые 19-21 тактов шины (скорость 33x4/20=6,6 Мбайт/с). Здесь сказывается и большая задержка устройства (оно выдает данные лишь в 8 такте после появления сигнала FRAME*), и то, что процессор начинает следующую пересылку лишь дождавшись данных от предыдущей. Трюк с использованием регистра ХММ здесь дает положительный эффект, несмотря на потерю такта (на прекращение транзакции непакетным устройством), поскольку каждый 64-битный запрос процессора выполняется парой смежных транзакций PCI, между которыми пауза всего в пару тактов. Для определения теоретического предела пропускной способности вернемся к рис. 6.7, чтобы определить минимальное время (число тактов) транзакций чтения и записи. В транзакции чтения после подачи команды и адреса инициатором (такт 1) меняется текущий «владелец» шины AD. На этот «разворот», или «пируэт» (turnaround), уходит такт 2, что обусловливается задержкой сигнала TRDY* целевым устройством. Далее может следовать фаза данных (такт 3), если целевое устройство достаточно расторопно. После последней фазы данных требуется еще 1 такт на обратный «пируэт» шины AD (в нашем случае это такт 4).
Таким образом, чтение одного слова (4 байта) занимает минимум 4 такта по 30 не (33 МГц). Если эти транзакции следуют непосредственно друг за другом (если на такое способен инициатор и у него не отбирают право на управление шиной), то можно говорить о максимальной скорости чтения в 33 Мбайт/с при одиночных транзакциях. В транзакциях записи шиной AD все время управляет инициатор, так что здесь нет потери тактов на «пируэт». При расторопном целевом устройстве, не вносящем дополнительных тактов ожидания, скорость записи может достигать 66 Мбайт/с.
Скорость, соизмеримую с максимальной пиковой, можно получить только при пакетных передачах, когда имеют место дополнительные 3 такта при чтении и 1 при записи. Так, для чтения пакета с числом фаз данных 4 требуется 7 тактов (V- 16/(7хЗО) байт/не - 76 Мбайт/с), а для записи - 5 (V= 16/(5x30) байт/не = 106,6 Мбайт/с). При числе фаз данных в 16 скорость чтения может достигать 112 Мбайт/с, а записи — 125 Мбайт/с.
В этих выкладках не учитывались потери времени, связанны со сменой инициатора. Инициатор может начинать транзакцию по получении сигнала GNT#, только убедившись в том, что шина находится в покое (сигналы FRAME* и IRDY* пассивны); на фиксацию покоя уходит один такт. Как видно, захватывать для одного инициатора большую часть пропускной способности шины можно, увеличивая длину пакета. Однако при этом возрастет задержка получения управления шиной для других устройств, что не всегда допустимо. Отметим также, что далеко не все устройства способны отвечать на транзакции без тактов ожидания, так что реальные цифры будут скромнее.
6.2. Шина PCI_______________________________________________________ 189
Итак, для выхода на максимальную производительность обмена устройства PCI сами должны быть ведущими устройствами шины, причем способными генерировать пакетные циклы. Поддержку пакетного режима имеют далеко не все устройства PCI, а у имеющих, как правило, есть существенные ограничения на максимальную длину пакета.Радикально повысить пропускную способность позволяет переход на частоту 66 МГц и разрядность 64 бита, что обходится недешево. Для того, чтобы на шине могли нормально работать устройства, критичные к времени доставки данных (сетевые адаптеры, устройства, участвующие в записи и воспроизведении аудио-видеоданных и др.), не следует пытаться выжать из шины ее декларированную полосу пропускания полностью. Перегрузка шины может привести, например, к потере пакетов из-за несвоевременности доставки данных. Заметим, что адаптер Fast Ethernet (100 Мбит/с) в полудуплексном режиме занимает полосу около 13 Мбайт/с (10% декларируемой полосы обычной шины), а в полнодуплексном — уже 26 Мбайт/с. Адаптер Gigabit Ethernet даже в полудуплексном режиме вписывается в полосу шины уже с натяжкой (он «выживает» лишь за счет больших внутренних буферов), для него больше подходит 64 бит/66 МГц.
Основную часть физического адресного пространства PC занимает оперативная память (ОЗУ), начинающаяся с нулевого адреса. В нее вклинивается область адресов AOOOOh-FFFFFh — Upper Memory Area (UMA), 384 Кбайт — верхняя память, зарезервированная со времен IBM PC для системных нужд. В UMA размещаются области буферной памяти адаптеров шины (E)ISA (например, видеопамять) и постоянная память (BIOS с расширениями). ОЗУ продолжается и за областью UMА. Под самой верхней границей физического адресного пространства имеется образ памяти системной ROM BIOS.
Для доступности сервисов BIOS в реальном режиме все ПК имеют образ ROM BIOS в адресах EOOOOh-FFFFFh или FOOOOh-OFFFFFh. Кроме того, образ BIOS должен находиться и под самой верхней границей адресного пространства, поскольку все процессоры х86 по аппаратному сбросу стартуют с адреса начала последнего параграфа памяти (FFFFOh - 8086/88, FFFFFOh - 80286 и 386SX, FFFFFFFOh - 386DX и выше с 32-разрядной шиной адреса, FFFFFFFFOh - Р6 и выше с 36-разрядной шиной адреса).
Для компьютеров класса АТ-286 и 386SX с 24-битной шиной адреса верхняя граница оперативной памяти — FDFFFFh (максимальный размер 15,9 Мбайт). Область
12.2. Пространство ввода-вывода____________________________________ 455
FEOOOOh-FFFFFFh содержит образ ROM BIOS, обращение к этой области эквивалентно обращению к ROM BIOS по адресам OEOOOOh-OFFFFFh. Для ПК на процессорах 386DX и выше с 32-битной шиной адреса теоретический предел объема ОЗУ — почти 4 Гбайт, верхний образ BIOS находится в адресах FFFEOOOOh-FFFFFFFFh. Для ПК на процессорах Р6+ с 36-битной шиной адреса предел объема ОЗУ — почти 64 Гбайт и верхний образ BIOS находится в адресах FFFFEOOOOh-FFFFFFFFFh.
Области физических адресов, не занятые ОЗУ и ROM BIOS, могут быть использованы устройствами шин (E)ISA и PCI (AGP).
Для памяти адаптеров, устанавливаемых в шину ISA, безусловно доступна часть области адресов UMA AOOOOh-EFFFFh или AOOOOh-DFFFFh (до начала ROM BIOS). В этой области располагаются и модули расширений BIOS (см.
п. 12.7.1). Карты ISA могут иметь память и в области FEOOOOh-FFFFFFh, но она программно доступна лишь в защищенном (и большом^реальном) режимах процессора. Для отображения этой области памяти на шину ISA (а не ОЗУ) в CMOS Setup предусмотрен параметр Memory Hole At 15-16М, но его включение не позволит использовать оперативную память свыше 15 Мбайт.
Поскольку шина ISA имеет 24-разрядную шину адреса, ведущие устройства этих
шин (ISA Bus Master) способны обращаться к памяти (ОЗУ и память адаптеров)
в пределах первых 16 Мбайт (000000-FFFFFFh). To же ограничение касается и
стандартного контроллера DMA, которым могут пользоваться устройства шины
ISA (и иные устройства системной платы). Л
Шина PCI имеет 32-разрядную шину адреса, так что ее ведущим устройствам доступна вся физическая память1. Для устройств PCI могут выделяться любые области адресов, свободные от ОЗУ, ROM BIOS и устройств ISA. Области адресов памяти, используемые каждым устройством PCI, описаны в заголовках их конфигурационных пространств. Эти данные требуются при распределении ресурсов и настройке мостов PCI в процессе инициализации шины.
Пространство ввода-вывода в IBM PC, как и в процессорах х86, отделено от пространства памяти. У всех этих процессоров, в том числе и 32-разрядных, в пространстве ввода-вывода используется 16-разрядная адресация (диапазон адресов О-FFFFh). Для дешифрации адресов портов в оригинальном PC из 16 бит использовались только младшие 10 (А0-А9), что обеспечивает обращением портам в диапазоне адресов 0-3FFL Старшие биты адреса, хотя и поступают на шину, устройствами игнорируются. В результате обращения по адресам, к примеру 378h, 778h, B78h и F78h, будут восприниматься устройствами одинаково. Это упрощение, нацеленное на снижение стоимости как системной платы, так и схем плат адаптеров, для шины ISA никто не отменял. Традиционные адаптеры для шины ISA, называемые Legacy Card («наследие тяжелого прошлого»), для старших бит адреса не имеют
1 Для пока еще экзотических вариантов системных плат с памятью более 4 Гбайт и 36-разрядной физической адресацией последних моделей процессоров PCI может использовать двухадресные циклы обращения с 64-битным адресом.456
Глава 12. Архитектурные компоненты IBM PC-совместимого компьютера
1 даже печатных ламелей на своем краевом разъеме. Впоследствии перешли к 12-битной адресации устройств шины ISA, но ее приходится применять £ оглядкой на возможное присутствие устройств с 10-битной адресацией. В адаптерах для шин МСА и PCI и во всех современных системных платах используются все 16 бит адреса. Карта распределения адресов ввода-вывода стандартных устройств PC приведена в табл. 12.1. Эта карта подразумевает 10-битную дешифрацию адреса. Естественно, что в конкретном компьютере реально присутствуют не все перечисленные устройства, но в то же время там могут оказаться другие, не попавшие в таблицу.
Таблица 12.1. Стандартная карта портов ввода-вывода AT и PS/2 PC/XT Назначение
000-OOF | 000-OOF | Контроллер DMA #1 8237 | |||
010-01F | PS/2 — расширение DMA#1 | ||||
020-021 | 020-021 | Контроллер прерываний #1 — 8259А | |||
040-05F | 040-043 | Таймер (PC/XT: 8253, AT: 8254) | |||
060 | 060 | Диагностический регистр POST (только запись) | |||
060-063 | Системный интерфейс 8255 | ||||
060,064 | Контроллер клавиатуры AT 8042 | ||||
061 | Источники NMI и управление звуком | ||||
070-07F | Память CMOS и маска NMI | ||||
080 | Диагностический регистр- | ||||
080-08F | 080-083 | Регистры страниц DMA | |||
090-097 | PS/2 микроканал, арбитр | ||||
ОАО | Маска NMI | ||||
OAO-OBF | Контроллер прерываний #2 — 8259А | ||||
OCO-ODF | Контроллер DMA #2 8237А-5 | ||||
OFO-OFF | Сопроцессор 80287 | ||||
100-1EF | PS/2 управление микроканалом | ||||
170-177 | Контроллер НЖМД #2 (IDE#2) | ||||
1FO-1F7 | Контроллер НЖМД #1 (IDE#1) | ||||
200-207 | 200-20F | Игровой адаптер | |||
210-217 | Блок расширений | ||||
238-23F | COM4 | ||||
278-27F | 278-27F | Параллельный порт LPT2 (LPT3 при наличии MDA) | |||
2А2-2АЗ | 4acbiMSM48321RS | ||||
2CO-2DF | 2CO-2DF | EGA #2 | |||
2ЕО-2Е7 | COM4 | ||||
2E8-2EF | COM4 | ||||
2F8-2FF | 2F8-2FF | COM2 | |||
300-31F | ПлатЬ прототипа | ||||
320-32F | Жесткий диск XT | ||||
338-33F | COM3 <, | ||||
370-377 | Контроллер НГМД #2 | ||||
376-377 | Порты комайд IDE#2 | ||||
378-37F | 378-37F | Параллельный порт LPT1 (LPT2 при наличии MDA) |
Все обмены (транзакции) с устройствами USB состоят из двух-трех пакетов. Каждая транзакция планируется и начинается по инициативе контроллера, который посылает пакет-маркер (token packet). Он описывает тип и направление передачи, адрес устройства USB и номер конечной точки. В каждой транзакции возможен обмен только между адресуемым устройством (его конечной точкой) и хостом. Адресуемое маркером устройство распознает свой адрес и готовится к обмену-Источник данных (определенный маркером) передает пакет данных (или уведомление об отсутствии данных, предназначенных для передачи). После успешного" приема пакета приемник данных посылает пакет квитирования (handshake packet )? Последовательность пакетов в транзакциях иллюстрирует рис. 4.4. Хост-контроллер организует обмены с устройствами согласно своему плану распределения ресурсов. Контроллер циклически (с периодом 1,0±0,0005 мс) форми-рует кадры (frames), в которые укладываются все запланированные транзакции (рис. 4.5). Каждый кадр начинается с посылки маркера SOF (Start Of Frame),
96____________________ Глава 4. Последовательные шины USB и FireWire
который является синхронизирующим сигналом для всех устройств, включая хабы. В конце каждого кадра выделяется интервал времени EOF (End Of Frame), на время которого хабы запрещают передачу по направлению к контроллеру. В режиме HS пакеты SOF передаются в начале каждого микрокадра (период 125±0,0625 мкс). Хост планирует загрузку кадров так, чтобы в них всегда находилось место для транзакций управления и прерываний. Свободное время кадров может заполняться передачами массивов (bulk transfers). В каждом (микро)кадре может быть выполнено несколько транзакций, их допустимое число зависит от длины поля данных каждой из них.
Рис. 4.5. Поток кадров USB
Для обнаружения ошибок передачи каждый пакет имеет контрольные поля CRC-кодов, позволяющие обнаруживать все одиночные и двойные битовые ошибки. Аппаратные средства обнаруживают ошибки передачи, а контроллер автоматически производит трехкратную попытку передачи. Если повторы безуспешны, сообщение об ошибке передается клиентскому ПО.
Все подробности организации транзакций от клиентского ПО изолируются контроллером USB и его системным программным обеспечением.
Протокол 1394 реализуется на трех уровнях (рис. 4.7).
¦ Уровень транзакций (Transaction Layer) преобразует пакеты в данные, пре
доставляемые приложениям, и наоборот. Он реализует протокол запросов-
ответов, соответствующий стандарту ISO/IEC 13213:1994 (ANSI/IEEE 1212,
редакции 1994 г.) архитектуры регистров управления и состояния CSR
(Control and Status Register) для микрокомпьютерных шин (чтение, запись,
блокировка). Это облегчает связь шины 1394 со стандартными параллель
ными шинами.
¦ Уровень связи (Link Layer) из данных физического уровня формирует пакеты
и выполняет обратные преобразования. Он обеспечивает обмен узлов датаграм-
мами с подтверждениями. Уровень отвечает за передачу пакетов и управление
изохронными передачами.
Рис. 4.7. Трехуровневая структура FireWire
110__________________________ Глава 4. Последовательные шины USB и FireWire
¦ Физический уровень (Physical Layer) вырабатывает и принимает сигналы шины. Он обеспечивает инициализацию и арбитраж, предполагая, что в любой момент времени работает только один передатчик. Уровень передает потоки данных и уровни сигналов последовательной шины вышестоящему уровню. Между этими уровнями возможна гальваническая развязка, при которой микросхемы физического уровня питаются от шины. Гальваническая развязка необходима для предотвращения паразитных контуров общего провода, которые могут появиться через провода защитного заземления блоков питания.
Аппаратная часть FireWire обычно состоит из двух специализированных микросхем — трансиверов физического уровня PHY Transceiver и моста связи с шиной LINK Chip. Связь между ними возможна, например, по интерфейсу IBM-Apple LINK-PHY. Микросхемы уровня связи выполняют все функции своего уровня и часть функций уровня транзакций; остальная часть уровня транзакций выполняется программно.
Для передачи асинхронных сообщений используется 64-битная адресация регистров устройств 1394. В адресе выделяется 16 бит для адресации узлов сети: 6-битное поле идентификатора узла допускает до 63 устройств в каждой шине; 10-битное поле идентификатора шины допускает использование в системе до 1023 шин разного типа (включая внутренние), соединенных мостами.
Протокол шины позволяет обращаться к памяти (регистрам) устройств в режиме DMA. В адресном пространстве каждого устройства имеются конфигурационные регистры, в которых содержится вся информация, необходимая для взаимодействия с ним других устройств. Данные передаются пакетами, в начале каждого пакета передаются биты состояния арбитража. Устройство может передавать данные только после успешного прохождения арбитража. Имеются два основных типа передач данных — изохронный, ради которого и строилась шина, и асинхронный. Изохронные передачи обеспечивают гарантированную полосу пропускания и время задержки, асинхронные передачи обеспечивают гарантированную доставку.
Асинхронные сообщения передаются между двумя устройствами. Инициатор посылает запрос требуемому устройству, на который оно сразу (через короткий интервал зазора, в котором шина находится в покое) отвечает подтверждением приема, положительным (АСК) или отрицательным (NACK), если обнаружена ошибка данных. Содержательный ответ на запрос (если требуется) будет передан обратно аналогичным способом (получатель должен послать подтверждение). Если подтверждение АСК не получено, передачи будут повторяться несколько раз до достижения успеха или фиксации ошибки.
Изохронные передачи ведутся широковещательно. В сети может быть организовано до 64 изохронных каналов, и каждый пакет изохронной передачи, кроме собственно данных, несет номер канала. Целостность данных контролируется CRC-кодом. Изохронные передачи всех каналов «слышат» все устройства шины, но из всех пакетов принимают только данные интересующих их каналов. Устройство-источник изохронных данных (камера, приемник, проигрщватель) на этапе конфигурирования получает номер и параметры выделенного ему канала.
4.2. Шина IEEE 1394— FireWireШ111
Шина поддерживает динамическое реконфшурирование — возможность «горячего» подключения и отключения устройств. Когда устройство включается в сеть, оно широковещательно передает короткий асинхронный пакет самоидентификации.
Все уже подключенные устройства, приняв такой пакет, фиксируют появление новичка и выполняют процедуру сброса шины. По сбросу производится определение структуры шины, каждому узлу назначается физический адрес и производится арбитраж мастера циклов, диспетчера изохронных ресурсов и контроллера шины (см. ниже). Через секунду после сброса все ресурсы становятся доступными для последующего использования, и каждое устройство имеет полное представление обо всех подключенных устройствах и их возможностях. Отключение устройства от шины также обнаруживается всеми устройствами. Благодаря наличию линий питания интерфейсная часть устройства может оставаться подключенной к шине даже при отключении питания функциональной части устройства.
Мастер циклов — устройство, посылающее каждые 125 мкс короткие широковещательные пакеты начала циклов. В каждом таком пакете мастер циклов передает значение 32-битного счетчика времени, инкрементируемого с частотой 24,576 МГц, для каждого узла, поддерживающего изохронный обмен. В каждом цикле сначала передается по одному пакету каждого активного изохронного канала, затем на некоторое время зазора шина находится в состоянии покоя. После этого зазора начинается часть цикла, отводящаяся для передачи асинхронных пакетов. Каждое устройство, нуждающееся в асинхронной передаче, в этой части цикла может передать по одному пакету. Устройство, не имеющее пакета для передачи, шину и не занимает. После того как все нуждающиеся устройства передадут по одному пакету, в оставшееся время до конца цикла устройства могут передать и дополнительные пакеты.
Диспетчер изохронных ресурсов — устройство, ведающее распределением номеров каналов и полосы шины для изохронных передач. Диспетчер требуется, когда на шине появляется хоть одно устройство, способное к изохронной передаче. Диспетчер выбирается посредством арбитража из числа устройств, поддерживающих изохронный обмен. После сброса устройства, нуждающиеся в изохронной передаче, запрашивают требуемую полосу.
Полоса измеряется в специальных единицах распределения, число которых в 125- микросекундном цикле составляет 6144. Единица занимает около 20 не, что соответствует времени передачи одного квад-лета (quadlet, 32-битное слово) на частоте 1600 Мбит/с. Такой способ измерения полосы учитывает возможность совместной работы устройств с разными скоростями — в одном цикле соседние пакеты могут передаваться на разных скоростях. Как минимум 25 мкс цикла резервируется под асинхронный трафик, поэтому суммарная распределяемая полоса изохронного трафика составляет 4915 единиц. Для цифрового видео, например, требуется полоса 30 Мбит/с (25 Мбит/с на видеоданные и 3-4 Мбит/с на аудиоданные, синхронизацию и заголовки пакетов). В S100 устройства цифрового видео запрашивают около 1800 единиц, в S200 — около 900. Если требуемая полоса недоступна, диспетчер откажет устройству и не выделит ему номер канала. Устройство, не получившее канал, будет периодически повторять запрос. Когда изохронный обмен становится ненужным узлу, он должен освободить
112_______________________ Глава 4. Последовательные шины USB и FireWire
свою полосу и номер канала, чтобы этими ресурсами смогли воспользоваться другие устройства. Обмен управляющей информацией устройств с диспетчером производится асинхронными сообщениями.
Контроллер шины (Bus Master) — необязательный элемент сети 1394, который осуществляет управление устройствами. Им может являться компьютер, редактирующее устройство цифровой записи или специальный интеллектуальный пульт управления. Контроллер шины, реализующий карты топологии и скоростей (TopologyJMap и Speed_Map), допускает использование нескольких частот в одной шине, в соответствии с возможностями конкретной пары устройств, участвующих в обмене. Иначе при подключении устройств, рассчитанных на разные скорости, все передачи будут происходить на скорости, доступной для всех активных устройств.
Назначение сигналов параллельной шины раскрывает табл. 5.8. Все сигналы являются L-активными: активному состоянию и логической единице соответствует низкий потенциал, что в данной книге отмечено символом «#» после мнемоники цепи. Обратные (парафазные) цепи обозначаются знаком «+».
Таблица 5.8. Назначение сигналов шины SCSI Сигнал Назначение BSY# Busy — шина занятаSEL# Select — выбор ЦУ инициатором (Select) или инициатора целевым устройством
(Reselect)
C/D# Control/Data — управление (низкий уровень)/данные (высокий уровень)
I/O» Input/Output — направление передачи относительно ИУ: вводу в ИУ соответствует
низкий уровень. Используется для различия прямой (Select) и обратной (Reselect) выборки: фазе Selection соответствует низкий уровень5.1. Параллельные интерфейсы SCSI____________________________________ 129
Сигнал Назначение MSG# Message — передача сообщения DB[0:31 ]# Data Bus — инверсная шина данныхDP[0:3]# Data Parity — инверсные биты паритета, дополняют количество единичных битов байта до нечетного. DPO# относится к DB[0:7],... DP3# — к DB[24:31]. В фазе арбитража не действуют
TERMPWR Terminator Power — питание терминаторов
ATN# Attention — внимание (намерение ИУ послать сообщение)
REQ# Request — запрос от ЦУ на пересылку данных
ACK# Acknowledge — подтверждение передачи (ответ на REQ#)
RST# Reset —сброд
DIFFSENS Признак дифференциального (LVD) интерфейса: ниже 0,7 В — линейный SE; 0,9-1,9 В— дифференциальный LVD; выше 2,4 В — дифференциальный HVD
Каждое устройство SCSI, подключенное к шине, должно иметь свой уникальный адрес, назначаемый при конфигурировании. Для 8-битной шины диапазон значений адреса 0-7, для 16-битной — 0-15. Адрес задается предварительной установкой переключателей или джамперов. Для хост-адаптера возможно программное конфигурирование. Адресация устройств на шине в фазах выборки осуществляется через идентификатор SCSI ID, представляющий адрес в позиционном коде.
0 |
0 |
0 |
Data OUT |
0 |
0 |
1 |
Data IN |
0 |
1 |
0 |
Command |
0 |
1 |
1 |
Status |
1 |
0 |
0 |
Зарезервировано |
1 |
0 |
1 |
Зарезервировано |
1 |
1 |
0 |
Message OUT |
1 |
1 |
1 |
Message IN |
В каждой транзакции (обмене по шине) участвуют два устройства — инициатор (initiator) обмена, он же ведущее (master) устройство, и целевое (target) устройство (ЦУ), оно же ведомое (slave). Шина PCI все транзакции трактует как пакетные: каждая транзакция начинается фазой адреса, за которой может следовать одна или несколько фаз данных. Состав и назначение интерфейсных сигналов шины приведены в табл. 6.11.
178 | Глава 6. | Шины и карты расширения | |||||||
Таблица 6. | 11. | Сигналы шины PCI | |||||||
Сигнал | Назначение |
AD[31:0] Address/Data — мультиплексированная шина адреса/данных. В начале транзакции передается адрес, в последующих тактах —данные
С/ВЕ[3:0]# Command/Byte Enable — команда/разрешение обращения к байтам. Команда, определяющая тип очередного цикла шины, задается четырехбитным кодом в фазе адреса „
FRAME* Кадр. Введением сигнала отмечается начало транзакции (фаза адреса), снятие сигнала указывает на то, что последующий цикл передачи данных является последним в транзакции
DEVSEL* Device Select — устройство выбрано (ответ ЦУ на адресованную к нему транзакцию)
IRDY* Initiator Ready — готовность ведущего устройства к обмену данными
TRDY* Target Ready — готовность ЦУ к обмену данными
STOP* Запрос ЦУ к ведущему устройству на остановку текущей транзакции
LOCK* Сигнал захвата шины для обеспечения целостного выполнения операции. Используется мостом, которому для выполнения одной операции требуется выполнить несколько транзакций PCI
REQ# Request — запрос от ведущего устройства на захват шины
GNT# Grant — предоставление ведущему устройству управления шиной
PAR Parity — общий бит паритета для линий AD[31:0] и С/ВЕ[3:0]#
PERR* Parity Error — сигнал об ошибке паритета (для всех циклов, кроме специальных). Вырабатывается любым устройством, обнаружившим ошибку
РМЕ# Power Management Event — сигнал о событиях, вызывающих изменение режима
Тестирование последовательных портов (как и параллельных) начинают с проверки их опознавания системой. Список адресов установленных портов обычно появляется в таблице, выводимой BIOS перед загрузкой ОС. Список можно посмотреть с помощью тестовых программ или прямо в BIOS Data AREA с помощью отладчика.
Если BIOS обнаруживает меньше портов, чем установлено физически, значит, двум портам присвоен один адрес или установлен нестандартный адрес какого-либо порта. Проблемы могут возникать с адресами портов COM3 и COM4: не все версии BIOS будут искать порты по альтернативным адресам 3EOh, 338h, 2EOh и 238h; иногда не производится поиск по адресам 3E8h и 2E8h. Нумерация найденных портов, отображаемая в заставке, может вводить в заблуждение: если установлены два порта с адресами 3F8h и 3E8h, в заставке они могут называться СОМ1 и COM2, и по этим именам на них можно ссылаться. Однако те же порты в заставке могут называться СОМ1 и COM3 (поскольку 3E8h является штатным адресом для COM3), но попытка сослаться на порт COM3 будет неудачной, поскольку в дан-
74________________________ Глава 2. Последовательный интерфейс — СОМ-порт
ном случае адрес 3E8h будет находиться в ячейке 0:402h BIOS Data Area, соответствующей порту COM2, а в ячейке порта COM3 (0:404h) будет нуль — признак отсутствия такового порта. «Объяснить» системе, где какой порт, можно вручную с помощью любого отладчика, занеся правильные значения базовых адресов в ячейки BIOS Data Area (это придется делать каждый раз после перезагрузки ОС перед использованием «потерянного» порта). Существуют тестовые утилиты, позволяющие находить порты (например, Port Finder).
Если двум портам назначен один и тот же адрес; тестовая программа обнаружит ошибки порта только с помощью внешней заглушки (ExternalLoopBacK). Программное тестирование порта без заглушки не покажет ошибок, поскольку при этом включается диагностический режим (см. описание UART) и конфликтующие (по отдельности исправные) порты будут работать параллельно, обеспечивая совпадение считываемой информации. В «реальной жизни» нормальная работа конфликтующих портов невозможна. Разбираться с конфликтом адресов удобно, последовательно устанавливая порты и наблюдая за адресами, появляющимися в списке.
Если физически установлен только один порт и его не обнаруживает BIOS, причины те же, что с LPT-портом: либо он отключен при конфигурировании, либо вышел из строя. Неисправность может устраниться при вынимании/вставке платы адаптера в слот системной шины.
При работе с С ОМ-портом задействуются соответствующие аппаратные прерывания — их используют при подключении модема, мыши и других устройств ввода. Неработоспособность этих устройств может быть вызвана некорректной настройкой запроса прерывания. Здесь возможны как конфликты с другими устройствами, так и несоответствие номера прерывания адресу порта.
Bluetooth (синий зуб) — это фактический стандарт на миниатюрные недорогие средства передачи информации с помощью радиосвязи между мобильными (и настольными) компьютерами, мобильными телефонами и любыми другими
3.2. Радиоинтерфейс Bluetooth__________________________________________ 83
портативными устройствами на небольшие расстояния. Разработкой спецификации занимается группа лидирующих фирм в областях телекоммуникаций, компьютеров и сетей — 3Com, Agere Systems, Ericsson, IBM, Intel, Microsoft, Motorola, Nokia, Toshiba. Эта группа, образовавшая Bluetooth Special Interest Group, и вывела данную технологию на рынок. Спецификация Bluetooth свободно доступна в Сети (www.bluetooth.com), правда, она весьма объемна (около 15 Мбайт PDF-файлов). Открытость спецификации должна способствовать ее быстрому распространению, что уже и наблюдается на практике. Здесь позволим себе сократить название технологии до «ВТ» (это не официальное сокращение). Само название представляет собой прозвище датского короля, объединившего Данию и Норвегию, — намек на всеобщую объединяющую роль технологии.
Каждое устройство ВТ имеет радиопередатчик и приемник, работающие в диа
пазоне частот 2,4 ГГц. Этот диапазон в большинстве стран отведен для промышленной, научной и медицинской аппаратуры и не требует лицензирования, что обеспечивает повсеместную применимость устройств. Для ВТ используются радиоканалы с дискретной (двоичной) частотной модуляцией, несущая частота каналов F=2402+k (МГц), где k=0 78. Для нескольких стран (например, Франции, где в этом диапазоне работают военные) возможен сокращенный вариант с F-2454+k (k-0 22). Кодирование простое — логической единице соответствует положительная девиация частоты, нулю — отрицательная. Передатчики могут быть трех классов мощности, с максимальной мощностью 1, 2,5 и 100 МВт, при
чем должна быть возможность понижения мощности с целью экономии энергии.
Передача ведется с перескоком несущей частоты с одного радиоканала на другой,
что помогает в борьбе с интерференцией и замираниями сигнала. Физический
канал связи представляется определенной псевдослучайной последовательностью
используемых радиоканалов (79 или 23 возможных частот). Группа устройств, разделяющих один канал (то есть «знающих» одну и ту же последовательность перескоков), образует так называемую пикосетъ (piconet), в которую может входить от 2 до 8 устройств. В каждой пикосети имеется одно ведущее устройство и до 7 активных ведомых. Кроме того, в зоне охвата ведущего устройства в его же пикосети могут находиться «припаркованные» ведомые устройства: они тоже «знают» последовательность перескоков и синхронизируются (по перескокам) с ведущим устройством, но не могут обмениваться данными до тех пор, пока ведущее устройство не разрешит их активность. Каждое активное ведомое устройство пикосети имеет свой временный номер (1-7); когда ведомое устройство деактивируется (паркуется), оно отдает свой номер для использования другими. При
последующей активизации оно уже может получить иной номер (потому-то он и
временный). Пикосети могут перекрываться зонами охвата, образуя «разбросан
ную» сеть (scatternet). При этом в каждой пикосети ведущее устройство только одно, но ведомые устройства могут входить в несколько пикосетей, используя раз деление времени (часть времени он работает в одной, часть — в другой пикосети). Более того, ведущее устройство одной пикосети может быть ведомым устройством другой пикосети. Эти пикосети никак не синхронизированы, каждая из них использует свой канал (последовательность перескоков).
84______________________________________ Глава 3. Беспроводные интерфейсы
Канал делится на тайм-слоты длительностью 625 икс, слоты последовательно нумеруются с цикличностью 227. Каждый тайм-слот соответствует одной частоте, несущей в последовательности перескоков (1600 перескоков в секунду). Последовательность частот определяется адресом ведущего устройства пикосети. Передачи ведутся пакетами, каждый пакет может занимать от 1 до 5 тайм-слотов.
Если пакет длинный, то он весь передается на одной частоте несущей, но отсчет слотов по 625 мкс продолжается, и после длинного пакета следующая частота будет соответствовать очередному номеру слота (то есть несколько перескоков будут пропущены). Ведущее и ведомые устройства ведут передачу поочередно: в четных слотах передачу ведет ведущее устройство, а в нечетных — адресованное им ведомое устройство (если ему есть что «сказать»).
Между ведущим и ведомыми устройствами могут устанавливаться физические связи двух типов: синхронные и асинхронные.
Синхронные связи (они же изохронные) с установлением соединения, SCO link (Synchronous Connection-Oriented), используются для передачи изохронного трафика (например, оцифрованного звука). Эти связи типа «точка—точка» предварительно устанавливает ведущее устройство с выбранными ведомыми устройствами, и для каждой связи определяется период (в слотах), через который для нее резервируются слоты. Связи получаются симметричные двусторонние. Повторные передачи пакетов в случае ошибок приема не используются. Ведущее устройство может установить до трех связей SCO с одним или разными ведомыми устройствами. Ведомое устройство может иметь до трех связей с одним ведущим устройством или иметь по одной связи SCO с двумя различными ведущими устройствами. По сетевой классификации связи SCO относятся к коммутации цепей.
Асинхронные связи без установления соединения, ACL link (Asynchronous Connection-Less), реализуют коммутацию пакетов по схеме «точка—множество точек» между ведущим устройством и всеми ведомыми устройствами пикосети. Ведущее устройство может связываться с любым из ведомых устройств пикосети в слотах, не занятых под SCO, послав ему пакет и потребовав ответа. Ведомое устройство имеет право на передачу, только получив обращенный к нему запрос ведущего устройства (безошибочно декодировав свой адрес). Для большинства типов пакетов предусматривается повторная передача в случае обнаружения ошибки приема.
Ведущее устройство может посылать и безадресные широковещательные па кеты для всех ведомых устройств своей пикосети. С каждым из своих ведомых устройств ведущее устройство может установить лишь одну связь ACL.
Информация передается пакетами, в которых поле данных может иметь длину 0-2745 бит. Для связей ACL предусмотрено несколько типов пакетов с защитой CRC-кодом (в случае обнаружения ошибки предусматривается повторная передача) и 1 беззащитный (без повторных передач). Для связей SCO данные не защищаются CRC-кодом, и следовательно, повторные передачи по ошибке приема не предусмотрены.
Защита данных от искажения и контроль достоверности производится несколькими способами. Данные некоторых типов пакетов защищаются CRC-кодом, и приемник информации должен подтверждать прием правильного пакета или сообщить об ошибке приема. Для сокращения числа повторов применяется избыточное
3.2. Радиоинтерфейс Bluetooth__________________________________________ 85
кодирование FEC (Forward Error Correction code). В схеме FEC 1/3 каждый полезный бит передается трижды, что позволяет выбрать наиболее правдоподобный вариант мажорированием. Схема FEC 2/3 несколько сложнее, здесь используется код Хэмминга, что позволяет исправлять все однократные и обнаруживать все двукратные ошибки в каждом 10-битном блоке.
Каждый голосовой канал обеспечивает скорость по 64 Кбит/с в обоих направлениях. В канале может использоваться кодирование в формате РСМ (импульсно-кодовая модуляция) или CVSD (Continuous Variable Slope Delta Modulation — вариант адаптивной дельта импульсно-кодовой модуляции). Кодирование РСМ допускает компрессию по G.711; оно обеспечивает лишь сугубо «телефонное» качество сигнала (имеется в виду цифровая телефония, 8-битные выборки с частотой 8 Кбит/с). Кодер CVSD обеспечивает более высокое качество — он упаковывает входной РСМ-сигнал с частотой выборок 64 Кбит/с, однако и при этом спектральная плотность сигнала в полосе частот 4-32 кГц должна быть незначительной.
Для передачи высококачественного аудиосигнала голосовые (речевые) каналы ВТ непригодны, однако сжатый сигнал (например, поток МРЗ) вполне можно передавать по асинхронному каналу передачи данных.
Асинхронный канал может обеспечивать максимальную скорость 723,2 Кбит/с в асимметричной конфигурации (оставляя для обратного канала полосу 57,6 Кбит/с) или же 433,9 Кбит/с в каждую сторону в симметричной конфигурации.
Для обеспечения безопасности в ВТ применяется аутентификация и шифрование данных на уровне связи (link layer), которые, конечно же, могут дополняться и средствами верхних протокольных уровней.
Важной частью ВТ является протокол обнаружения сервисов SDP (Service Discovery Protocol), позволяющий устройству найти «интересного собеседника». В дальнейшем, установив с ним соединение, устройство сможет воспользоваться требуемыми сервисами (например, выводить документы на печать, подключиться к Сети и т. п.).
Протокол RFCOMM обеспечивает эмуляцию последовательного порта (9-провод-ного RS-232) через L2CAP. С его помощью традиционные кабельные соединения устройств (в том числе и нуль-модемные) могут быть легко заменены на радиосвязь, без каких-либо модификаций ПО верхних уровней. Протокол позволяет устанавливать и множественные связи (одного .устройства с несколькими), и радиосвязь заменит громоздкие и дорогие мультиплексоры и кабели. Через протокол RFCOMM может работать протокол ОВЕХ, используемый в инфракрасных беспроводных соединениях (в иерархии протоколов IrDA), Через RFCOMM может работать и протокол РРР, над которым стоят протоколы стека TCP/IP, — это открывает дорогу во все приложения для Интернета. Через RFCOMM работают и АТ-команды, управляющие телефонными соединениями и сервисами передачи факсов (эти же команды используются в модемах для коммутируемых линий). Специальный бит-ориентированный телефонный протокол TCS BIN (Telephony Control protocol — Binary), определяющий сигнализацию вызова для связи устройств ВТ (речевой связи и обмена данными), тоже работает через L2CAP.В протоколе имеются и средства управления группами устройств TCS.
86______________________________________ Глава 3. Беспроводные интерфейсы
Интерфейс хост-контроллера HCI (Host Controller Interface) — это единообразный метод доступа к аппаратно-программным средствам нижних уровней ВТ. Он предоставляет набор команд для управления радиосвязью, получения информации о состоянии и собственно передачи данных. Через этот интерфейс происхо- дит взаимодействие протокола L2CAP с аппаратурой ВТ. Физически аппаратура ВТ может подключаться к различным интерфейсам: шине расширения (например, PC Card), шине USB, СОМ-порту. Для каждого из этих подключений имеете.» соответствующий протокол транспортного уровня HCI — прослойка, обеспечивающая независимость HCI от способа подключения.
Недостатки стандартного порта частично устраняли новые типы портов, появившиеся в компьютерах PS/2.
Двунаправленный порт 1 (Туре 1 parallel port) — интерфейс, введенный в PS/2. Такой порт кроме стандартного режима может работать в режиме ввода или двунаправленном режиме. Протокол обмена формируется программно, а для указания направления передачи в регистр управления порта введен специальный бит CR. 5: 0 — буфер данных работает на вывод, 1 — на ввод. Не путайте этот порт, называемый также enhanced bi-directional, с ЕРР. Данный тип порта «прижился»' и в обычных компьютерах, в CMOS Setup он может называться PS/2 или Bi-Di. Порт с прямым доступом к памяти (Туре 3 DMA parallel port) применялся в PS/2 моделей 57,90,95. Был введен для повышения пропускной способности и разгрузки процессора при выводе на принтер. Программе, работающей с портом, требовалось только задать в памяти блок данных, подлежащих выводу, а затем вывод по протоколу Centronics производился без участия процессора.
Позже появились другие адаптеры LPT-портов* реализующие протокол обмена Centronics аппаратно, — Fast Centronics. Некоторые из них использовали FIFO-буфер данных — Parallel Port FIFO Mode. He будучи стандартизованными, такие порты разных производителей требовали наличия собственных специальных драйверов. Программы, использующие прямое управление регистрами стандартных портов, не могли задействовать их дополнительные возможности. Такие порты часто входили в состав мультикарт VLB. Существуют их варианты с шиной ISA, а также встроенные в системную плату.
22_____________________________ Глава 1. Параллельный интерфейс — LPT-порт
В микросхеме ROM BIOS, установленной на системной плате, поддерживаются только стандартные (по назначению и реализации) устройства. При необходимости дополнительные устройства, устанавливаемые в слоты шин расширения (ISA, PCI, PCMCIA), могут иметь микросхемы ПЗУ своей программной поддержки — Additional ROM BIOS (дополнительные модули ROM BIOS), они же Expansion ROM. Эта необходимость возникает, когда программная поддержка устройств требуется до загрузки ОС и прикладного ПО. В таком модуле может содержаться и вся программа функционирования специализированного бездискового контроллера на базе PC. Расширения ROM BIOS используют графические адаптеры EGA/VGA/SVGA, некоторые контроллеры жестких дисков, контроллеры SCSI, сетевые адаптеры с удаленной загрузкой и другие периферийные устройства. Для модулей расширения устройств с шиной ISA в пространстве памяти зарезервирована область CSOOOh-
498 Глава 12. Архитектурные компоненты IBM PC-совместимого компьютера
F4000h. POST сканирует эту область с шагом 2 Кбайт в поисках дополнительных модулей BIOS на завершающем этапе выполнения (после загрузки векторов прерываний указателями на собственные обработчики). Дополнительный модуль BIOS графического адаптера (EGA, VGA, SVGA...) имеет фиксированный адрес СОООО и инициализируется раньше (на шаге инициализации видеоадаптера). Устройства с шиной PCI в своем конфигурационном пространстве содержат лишь признак использования модуля расширения, а его приписку к адресам памяти назначает POST,
Дополнительный модуль ROM BIOS должен иметь заголовок, выровненный по границе 2-килобайтной страницы памяти, формат заголовка ПЗУ иллюстрирует табл. 12.8.
Таблица 12.8. Заголовок модуля дополнительного ПЗУ Смещение Длина Назначение
0 | 2 | ||
2 | 1 | ||
3 | 3 | ||
6-17h | |||
18h | 2 |
Длина, указанная в блоках по 512 байт
Точка входа процедуры инициализации, заканчивающейся дальним возвратом Ret Far (вызывается инструкцией Far Call во время POST).
Обычно здесь располагается трехбайтная инструкция JMP, указывающая на начало процедуры
Резерв
Указатель на структуру данных PCI (только для карт PCI), см. ниже п. 12.9.1
1Ah 2 Указатель на структуру расширенного заголовка карт ISA PnP, см. ниже
п. 12.9.2
При рассмотрении протокола PCI становится ясно, что разработка собственных PCI-устройств на логике малой и средней степени интеграции — занятие неблагодарное. Собственно протокол шины не так уж и сложен, но реализация требований к конфигурационным регистрам проблематична. Серийные устройства PCI, как правило, являются однокристальными — в одной микросхеме размещается и интерфейсная, и функциональная части устройства. Разработка таких микросхем весьма дорогостояща и имеет смысл лишь с перспективами массового выпуска. Для создания отладочных образцов и мелкосерийных изделий ряд фирм выпускают интерфейсные микросхемы PCI различного назначения. Со стороны PCI практически все эти микросхемы поддерживают одиночные целевые транзакции (target transactions), совершенные модели допускают и пакетные циклы. Более сложные микросхемы выполняют и функции ведущего устройства шины, организуя каналы DMA для обмена с системной памятью. Обмены по этим каналам могут инициироваться как программно со стороны хоста (host initiated DMA), так и с периферийной стороны микросхемы (target initiated DMA), в зависимости от возможностей микросхем. С периферийной стороны встречаются интерфейсы для подключения периферийных микросхем, микроконтроллеров и распространенных семейств микропроцессоров, универсальных и сигнальных. Довольно широкий выбор микросхем представлен на сайте www.plxtech.com, этой темой занимаются и иные фирмы.
Интересно решение построения интерфейса PCI на конфигурируемой логике FPGA (Field Programmable Gate Array — программируемый массив вентилей). Здесь PCI-ядро, а также функции целевого и ведущего устройств занимают 10-15 тысяч вентилей в зависимости от требуемых функций (см. www.xilink.com, www. altera.com). Микросхемы FPGA выпускаются на 20, 30 и 40 тысяч вентилей — оставшаяся часть может быть использована для реализации функциональной части устройства, буферов FIFO и т. п.
Быстро перевести разработки с шиной ISA на PCI можно с помощью микросхем-мостов PCI-ISA (см., например, www.iss-us.com).
Несмотря на довольно сложный протокол обмена, интерфейсом USB можно снабдить и периферийные устройства собственной разработки. Для этого выпускается широкий ассортимент микросхем, со стороны USB различающихся скоростями обмена (LS, FS или HS), числом и возможностями конечных точек (тип передач, размер буфера). Функциональное назначение этих микросхем различно. С портом USB выпускаются микроконтроллеры на ядре MCS51, М68НС05, М68НС11 или RISC-архитектуры; они различаются объемом памяти (оперативной и энергонезависимой), производительностью, питанием, потреблением. Микроконтроллеры могут иметь встроенные устройства АЦП/ЦАП, дискретные линии ввода-вывода общего назначения, последовательные и параллельные порты различных типов. Их можно использовать для подключения устройств с любыми интерфейсами, сигнальных процессоров и т. п. Из этого ассортимента можно выбрать подходящую микросхему, на базе которой разрабатываемое устройство будет реализовано с минимальным числом дополнительных элементов. К микроконтроллерам прилагаются и средства разработки их встроенного ПО (firmware) — самой сложной части такого устройства. Есть микроконтроллеры с USB, способные работать без программирования энергонезависимой памяти; микроконтроллеры серии EzUSB фирмы Cypress Semiconductor каждый раз загружают свою программу в ОЗУ по шине USB из хост-компьютера в процессе подключения. Конечно, такая гибкость нужна не всегда, и до подключения к компьютеру устройство остается «мертвым».
Есть и периферийные микросхемы — порты USB, подключаемые к микроконтроллерам параллельной 8/16-битной шиной данных с обычным набором управляющих сигналов (CS#, RD#, WR#...), линией запроса прерывания и, возможно, сигналами канала DMA. Выпускаются и специализированные преобразователи интерфейсов USB в последовательный (RS-232, RS-422/485) и параллельный, не требующие
106__________________________ Глава 4. Последовательные шины USB и FireWire
программирования (нужно лишь записать в EEPROM идентификатор устройства). Есть и микросхемы USB, сочетающие в себе и функции, и хабы. Все варианты не перечислить, тем более что все время появляются новые микросхемы. Информацию о них можно найти в Сети (www.cypress.com, www.devasys.com, www.iged.com, www.microchip.com, www.netchip.com, www.motorola.com, www.semiconductor.philips.com, www.natsemi.com, www.intel.com, www.ftdichip.com, www.gigatechnology.com). Немаловажная часть разработки собственных устройств — программное обеспечение для хост-компьютера, которое доносит до пользователя всю пользу устройства. В ряде случаев удается воспользоваться готовыми драйверами (например, драйвером виртуального СОМ-порта для преобразователя интерфейса). В других случаях ПО приходится писать самостоятельно, и хорошо, когда изготовитель микросхем с USB заботится о предоставлении инструментальных средств разработки всех частей ПО.
Ниже перечислены некоторые дополнения основного стандарта IEEE 1284.
¦ IEEE P1284.1 «Standard for Information Technology for Transport Independent
Printer/Scanner Interface (TIP/SI)». Этот стандарт разрабатывается для управления и обслуживания сканеров и принтеров на основе протокола NPAP (Network Printing Alliance Protocol).
¦ IEEE P1284.2 «Standard for Test, Measurement and Conformance to IEEE
Std. 1284» — стандарт для тестирования портов, кабелей и устройств на совместимость с IEEE 1284.
¦ IEEEP1284.3 «Standard for Interface and Protocol Extensions to IEEE Std. 1284Compliant Peripheral and Host Adapter Ports» — стандарт на драйверы и использование устройств прикладным программным обеспечением (ПО). Приняты спецификации BIOS для использования ЕРР драйверами DOS. Прорабатывается стандарт на разделяемое использование одного порта цепочкой устройств или группой устройств, подключаемых через мультиплексор.
¦ IEEEP1284.4 «Standard for Data Delivery and Logical Channels for IEEE Std. 1284 Interfaces» направлен на реализацию пакетного протокола достоверной передачи данных через параллельный порт. Основой служит протокол MLC (Multiple Logical Channels) фирмы Hewlett-Packard, однако совместимость с ним в окончательной версии стандарта не гарантируется.
1.5. Параллельный порт и PnP____________________________________ 41
Динамическая память, применяемая в компьютере в качестве системного ОЗУ, а также, возможно, находящаяся на картах расширения, требует регенерации — периодического обновления (refresh) всех строк матрицы. На системной плате всегда имеется контроллер регенерации памяти, в задачу которого входит регуляр-
160_____________________________________ Глава 6. Шины и карты расширения
ный перебор строк памяти с формированием специального цикла регенерации. Каждые 15 мкс контроллер регенерации формирует цикл регенерации (сигнал REFRESH*), диаграмма которого аналогична циклу DMA, но вместо чтения данных выполняется регенерация. В этом цикле считывания данных из микросхем памяти не производится, но стробы строк формируются (подробнее о методах регенерации см. в книге «Аппаратные средств IBM PC. Энциклопедия»). На шине ISA контроллер регенерации работает как нулевой канал DMA (в старых машинах он непосредственно и использовался). Каждые 15 мкс контроллер регенерации формирует сигнал REFRESH*, во время действия которого устанавливается AEN=H и BALE=H, формируется сигнал MEMR#, а на линиях SA[7:0] устанавливается адрес текущей регенерируемой строки. Диаграмма цикла регенерации аналогична циклу DMA, но сигнал REFRESH* указывает на то, что вместо чтения данных выполняется регенерация.
Если какое-либо устройство захватывает управление шиной более чем на 15 мкс, оно должно позаботиться о регенерации памяти. Для этого раз в 15 мкс оно должно вырабатывать сигнал REFRESH*, «отпуская» все адресные и управляющие сигналы. При этом контроллер шины, расположенный на системной плате и отвечающий за регенерацию памяти, сформирует очередной адрес на линиях SA[7:0] и сигнал MEMR*, а также установит AEN=0 и BALE=1 на все время цикла регенерации. Если устройство, надолго захватившее шину, сигнал регенерации не формирует, то запросы регенерации накапливаются в контроллере регенерации, и, как только управление будет возвращено, эти запросы будут немедленно удовлетворены. Однако число безнаказанно пропущенных запросов ограничено свойствами динамической памяти, и очередь запросов в контроллере регенерации может ограничиваться, например, четырьмя.
Протокол EPP (Enhanced Parallel Port — улучшенный параллельный порт) был разработан компаниями Intel, Xircom и Zenith Data Systems задолго до принятия стандарта IEEE 1284. Этот протокол предназначен для повышения производительности обмена по параллельному порту, впервые был реализован в чипсете Intel 386SL (микросхема 82360) и впоследствии принят множеством компаний как дополнительный протокол параллельного порта. Версии протокола, реализованные до принятия IEEE 1284, отличаются от нынешнего стандарта (см. ниже). Протокол ЕРР обеспечивает четыре типа циклов обмена:
¦ запись данных;
¦ чтение данных;
26
Глава 1. Параллельный интерфейс — LPT-порт
запись адреса;
чтение адреса.
Назначение циклов записи и чтения данных очевидно. Адресные циклы используются для передачи адресной, канальной и управляющей информации. Циклы обмена данными отличаются от адресных циклов применяемыми стробирующи-ми сигналами. Назначение сигналов порта ЕРР и их связь с сигналами SPP объясняются в табл. 1.4.
Таблица 1.4. Сигналы LPT-порта в режиме ввода-вывода ЕРР
Контакт Сигнал SPP Имя в ЕРР I/O Описание______________________________________
1 | Strobe» | Write* | 0 | ||||
14 | AutoLF# | DataStb* | 0 | ||||
17 | Selectln* | AddrStb# | 0 | ||||
16 | lnit# | Reset» | 0 | ||||
10 | Ack# | INTR# | 1 | ||||
11 | Busy | Wait# | 1 | ||||
2-9 | Data [0:7] | AD[0:7] | I/O | ||||
12 | PaperEnd | AckDataReq1 | 1 | ||||
13 | Select | Xflag' | 1 | ||||
15 | Error* | DataAvaiW1 | 1 |
Низкий уровень — цикл записи, высокий — цикл чтения
Строб данных. Низкий уровень устанавливается в циклах передачи данных
Строб адреса. Низкий уровень устанавливается в адресных циклах
Сброс ПУ (низким уровнем)
Прерывание от ПУ
Сигнал квитирования. Низкий уровень
разрешает начало цикла (установку строба
в низкий уровень), переход в высокий —
разрешает завершение цикла (снятие строба)
Двунаправленная шина адреса/данных
Имя регистра |
Смещение |
Режим |
R/W |
Описание |
SPP Data Port |
+0 |
SPP/EPP |
W |
Регистр данных SPP |
SPP Status Port |
+1 |
SPP/EPP |
R |
Регистр состояния SPP |
SPP Control Port |
+2 |
SPP/EPP |
W |
Регистр управления SPP |
EPP Address Port |
+3 |
EPP |
R/W |
Регистр адреса ЕРР. Чтение или запись в него генерирует связанный цикл чтения или записи адреса ЕРР |
EPP Data Port |
+4 |
EPP |
R/W |
Регистр данных ЕРР. Чтение (запись) генерирует связанный цикл чтения (записи) данных ЕРР |
1.3. Стандарт |
IEEE 1284 |
27 |
|||
Имя регистра |
Смещение |
Режим |
R/W |
Описание |
|
Not Defined |
+5...+7 |
ЕРР |
N/A |
В некоторых контроллерах могут использоваться для 16-32-битных операций ввода-вывода |