Аппаратные интерфейсы ПК

         

Параллельные интерфейсы — Centronics, IEEE , ИPNP


Параллельный интерфейс 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

В табл. 8. 4 приводится распайка кабеля подключения принтера с разъемом XI типа А (DB25-P) со стороны PC и Х2 типа В (Centronics-Щ или типа С (миниатюрный) со стороны принтера. Использование общих проводов (GND) зависит от качества кабеля (см. выше). В простейшем случае (18-проводный кабель) все сигналы GND объединяются в один провод. Качественные кабели требуют отдельного обратно­го провода для каждой сигнальной линии, однако в разъемах типа А и В для этого недостаточно контактов (в табл. 8.4 в скобках указаны номера контактов разъема PC типа А, которым соответствуют обратные провода). В разъеме типа С обрат­ный провод (GND) имеется для каждой сигнальной цепи; сигнальным контактам 1-17 этого разъема соответствуют контакты GND 19-35.

Таблица 8.4. Кабель подключения принтера

Х1, разъем PC типа А   Сигнал

X2, разъем PRN типа В   X2, разъем PRN типа С

1

2

3

4



5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

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

15

6

7

8

9

10

11

12

13

3

1

5

2

17

4

14

16

33

24 25

26 27

28 29

30 31

19 22

20 21 23

32 34 35

Ряд отечественных (и стран бывшего СЭВ) принтеров имеет интерфейс ИPNP (IFSP в документации на принтеры ROBOTRON). Он является близким род­ственником интерфейса Centronics, а отличия перечислены ниже.

¦     Линии данных инвертированы.

¦     Протокол квитирования несколько иной.

324

Глава 8. Специализированные интерфейсы периферийных устройств

¦     Ко всем входным линиям (на принтере) подключены пары согласующих ре­

зисторов: 220 Ом к питанию +5 В и 330 Ом к общему проводу. Это позволя­ет использовать длинные кабели, но перегружает большинство интерфейсных адаптеров PC.

¦     Сигналы ошибки и конца бумаги отсутствуют.

Интерфейс ИPNP может быть программно реализован через обычный LPT-порт, но для устранения перегрузки выходных линий согласующие резисторы из прин­тера желательно удалить. Порт, перегруженный по выходу, может преподносить всякого рода сюрпризы (естественно, неприятные и трудно диагностируемые).


Параллельные интерфейсы SCSI


Параллельный интерфейс SCSI существует в нескольких версиях, различающих­ся разрядностью шины, способами передачи сигналов и синхронизации. Физи­чески «узкий» интерфейс SCSI представляет собой шину, состоящую из 18 сиг­нальных и нескольких питающих цепей. В «широком» варианте число сигнальных цепей увеличено. Для защиты от помех каждая сигнальная цепь имеет собствен­ный обратный провод. На применяемых двухрядных разъемах контакты сигналь­ных и обратных цепей располагаются друг против друга. Это позволяет приме­нять в качестве кабелей как витые пары проводов, так и плоские ленточные кабели, где сигнальные и обратные провода чередуются.

По типу сигналов различают линейные (single ended) и дифференциальные (dif­ferential) версии 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

Наиболее популярный интерфейс Ultra2 SCSI обеспечивает хорошее сочетание пропускной способности шины при ее большей длине, цены устройств и совмес­тимости с традиционными устройствами SCSI.

Глава 5. Шина SCSI


Параллельный интерфейс АТА


Параллельный интерфейс АТА представляет собой шину, в которой все сигналы соответствуют стандартной логике ТТЛ:

¦     высокий уровень выходного сигнала не ниже 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

-

Зарезервирован

<
1   Тип сигнала для устройства: I — вход, О— выход, I/O — двунаправленный, TS — тристабильный, ОК —

открытый коллектор. Для хост-адаптера значения I и О имеют противоположный смысл.

2   У старых устройств сигнал может иметь тип ОК (при разнотипных сигналах на одной шине возможен

конфликт).

3   Сигналы, приведенные после символа /,используются только в режиме Ultra DMA (AT A-4).

4   У ведущего устройства —' вход, у ведомого — выход.

5   У ведомого устройства — только выход.

6   Контакты 41-44 используются только для миниатюрных дисков.

7   Начиная с АТА-3 - только CSEL.

8   Начиная с АТ А-3 зарезервирован.

364

Глава 9. Интерфейсы устройств хранения



Рис. 9.3. Ленточный кабель интерфейса АТА с кабельной выборкой

Начиная с ATA/ATAPI-4 в шлейфах узаконили кабельную выборку и для под­ключения устройства 1 определили средний коннектор. В нем контакт 28 либо не соединен с проводом, либо просто отсутствует. Вполне понятно, что при исполь­зовании кабельной выборки хост-контроллер подключать к среднему коннектору нельзя (как и к правому на рис. 9.3). Если номер устройства назначается джампером, то для 40-проводного кабеля можно подключать устройства и хост-контроллер к любым коннекторам произвольно (но желательно избегать «висячих» концов).

Для устойчивой работы в режиме Ultra DMA рекомендуется применение 80-про-водных кабелей, обеспечивающих чередование сигнальных цепей и проводов схем­ной земли (GND). Такие кабели требуются для режимов UltraDMA выше 2 (ско­рость выше 33 Мбайт/с). Эти кабели разделываются на специальные разъемы, имеющие 40-контактные гнезда с обычным назначением контактов, но ножевые контакты для врезки 80 проводов. В шлейфе для схемной земли используются либо все четные, либо все нечетные провода — это зависит от применяемых разъемов (на них должна быть маркировка EVN GND или ODD GND соответственно). Установка

9.2. Интерфейс АТА/ATAPI (IDE)_______________________________________ 365

на одном шлейфе разнотипных разъемов недопустима (тогда все 80 проводов ока­жутся соединенными вместе).


На 80-проводном кабеле в разъеме для подключения контроллера контакт 34 соединен с шиной GND и не соединен с проводом шлейфа; этим обеспечивается идентификация типа кабеля (CBLID). Провод шлейфа со­единяет контакты 34 разъемов устройств, что обеспечивает прохождение сигна­ла PDIAG* от ведомого устройства к ведущему. С учетом возможности кабельной выборки на 80-проводном шлейфе положение коннекторов уже однозначно.

¦     Коннектор хост-контроллера расположен на конце шлейфа, у него контакт 34 заземлен и не соединен со шлейфом. Корпус коннектора должен быть синего цвета .

¦     Коннектор устройства 0 расположен на противоположном конце шлейфа, у

него все контакты соединены со шлейфом. Корпус коннектора должен быть

черного цвета.

¦     Коннектор устройства 1 (необязательный) расположен в середине шлейфа, у него контакт 28 не соединен со шлейфом. Корпус коннектора должен быть серого цвета.

Если кабельная выборка не используется, то устройства 0 и 1 можно менять местами.

Спецификация АТА «узаконивает» как 40-контактный интерфейсный разъем, так и 4-контактный разъем питания (рис. 9.4), но для малогабаритных устройств пи­тание может подаваться по 44-проводному интерфейсному кабелю.



                                                             А                                                      б

Рис. 9.4. Разъемы интерфейса АТА (вилки на устройствах): а — интерфейсный, б — питания

Для большинства устройств применяется 40-контактный разъем с шагом контак­тов 2,54 мм. Рядом с ним могут располагаться дополнительные контакты, служа­щие для конфигурирования устройства и технологических целей (диагностики и других операций по служебному последовательному интерфейсу). Спецификация AT A/ AT API предусматривает два варианта, приведенные на рис. 9.5, а и б. Здесь пустым квадратиком обозначены позиции ключевых (пропущенных) выводов, контакты 1-40 используются для интерфейса (см. табл. 9.3), а контакты А-Н — для установки джамперов (табл. 9.4) и технологических целей.


Для миниатюрных устройств предназначен 50-контактный разъем с шагом выводов 2 мм (рис. 9.5, в), у которого контакты 1-44 соответствуют табл. 9.3, контакты A-D — табл. 9.4 (ис­пользуются для конфигурирования, а пара пропущенных контактов является до­полнительным ключом). Для 50-контактного кабеля принято назначение выводов накопителей IBM Thinkpad/Travelstar:

¦     контакт А через резистор 10 кОм соединяется с шиной +5 В;

¦     контакт В для устройства задает его роль: низкий уровень — устройство 0, высо­кий — устройство 1;





366________________________________ Глава 9. Интерфейсы устройств хранения

¦     контакт С определяет режим устройства по включении питания: низкий уро

вень — Standby, высокий — Idle;

¦     контакт D соединяется с контактом 28 (CSEL) и через резистор 10 кОм — с ши­ной +5 В.

Это назначение, позволяющее конфигурировать и адресацию, и режим потребле­ния, применяется не на всех устройствах. На винчестерах фирмы Toshiba контак­ты А и В могут использоваться как выход и вход последовательного интерфейса (В подтянут к шине +5 В через резистор 47 кОм), С — GND, D — роль устройства (низкий уровень для устройства 1).



Рис. 9.5. Дополнительные контакты на разъемах интерфейса АТА: а — SFF8057, б — SFF8058, в — SFF8212 (50-контактный разъем)

Таблица 9.4. Использование дополнительных контактов

Выборка

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

Для малогабаритных внешних устройств-существует довольно распространенный разъем HP 36, но в спецификацию ATA/ATAPI он не входит. Для устройств хра­нения на флэш-памяти используется коннектор, соответствующий спецификации CompactFlash Association.

В документации на устройства могут быть указаны несколько отличающиеся обо­значения сигналов.


Здесь приведены обозначения из стандарта ATA/ATAPI-4.

¦ RESET* (Device Reset) — сброс устройства (инвертированный сигнал сброса системной шины). Сигнал длительностью не менее 25 мкс вырабатывается пос­ле установления питающих напряжений. Сигнал вызывает сброс интерфейса в исходное состояние и устанавливает параметры по умолчанию.

Э.2. Интерфейс АТА/ATAPI (IDE)        ___________________________________ 367

¦     DA[2:0] (Device Address) — три младших бита системной шины адреса, исполь­зуемые для выбора регистров устройств.

¦     DD[15:0] (Device Data) — двунаправленная 16-битная шина данных между адап­тером и устройствами. При 8-битных обменах используются младшие биты D[7:0]. У устройства не должно быть «подтягивающего» резистора на линии DD7 — на хост-контроллере эта линия через резистор 10 кОм соединена с ши­ной GND. Это позволяет хосту определить факт отсутствия устройства на шине сразу после аппаратного сброса: при чтении регистра состояния отсутству­ющего устройства бит BSY окажется сброшенным.

¦     DIOR* (Device I/O Read) — строб чтения портов ввода-вывода. Данные фикси­руются по положительному перепаду сигнала.

¦     DIOW# (Device I/O Write) — строб записи портов ввода-вывода. Данные фик­сируются по положительному перепаду сигнала.

¦     IORDY (I/O channel Ready) — готовность устройства завершить цикл обмена. Низким уровнем сигнала во время цикла обмена устройство может ввести такты ожидания шины. Сигнал требуется при обмене в РЮ Mode 3 и выше. На хост-контроллере эта линия через резистор 1 кОм должна подтягиваться к шине питания.

¦     IOCS16* — разрешение 16-битных операций. Обращение ко всем регистрам, кроме регистра данных, всегда 8-битное. Для РЮ Mode 0,1,2 при активном сигнале обращения 16-битные, при неактивном — 8-битные. Для РЮ Mode 3,4 и DMA все обмены 16-битные, кроме дополнительных байтов (выходящих за границу 512-байтного сектора) «длинного» считывания и записи.


Начиная с ATA/ATAPI-3 не используется.

¦     DMARQ (DMA Request) — запрос обмена по каналу DMA (необязательный). При разрешении обмена сигнал (высокий уровень) вводится устройством по готовности к обмену. Введя сигнал DMARQ, устройство должно дождаться под­тверждения от хост-адаптера сигналом DMACK*, после чего может снять запрос DMARQ. Для очередной передачи запрос должен быть введен снова. В режиме Multiword DMA запрос может удерживаться на время передачи всех данных. Выход должен быть тристабильным, во время работы с DMA он может быть в активном состоянии (0 или 1) только у выбранного устройства. В АТА-1 для

этого сигнала мог использоваться как тристабильный, так и стандартный ТТЛ-

выход. Работа на одной шине устройств с разнотипными выходами DMARQ может привести к конфликтам. На хост-контроллере линия должна соединять­ся с шиной GND через резистор 5,6 кОм.

¦     DMACK# (DMA Acknowledge) — подтверждение DMA. Сигнал вырабатывает­ся хост-адаптером как подтверждение цикла передачи. Передача слова данных управляется сигналами DIOR* или DIOW*. Во время обмена по каналу DMA сигналы IOCS16#, CSO# и CS1# не используются, обмен всегда производит­ся 16-битными словами.

¦     INTRQ (Interrupt Request) — запрос прерывания. Выход должен быть триста­бильным, активный сигнал (логическую единицу) вырабатывает только вы-

368________________________________ Глава 9. Интерфейсы устройств хранения

бранное устройство, когда у него имеется необслуженный запрос прерывания и его вырабатывание не запрещено битом n IE N в регистре Device Control.За­прос сбрасывается по сигналу RESET*, установке бита SRST в регистре Devi се Control, записи в регистр команд или чтении регистра состояния. При обме­нах PIO запрос устанавливается в начале передачи каждого блока (сектора или группы секторов при многосекторных операциях). Исключения: по командам Format Track, Write Sector(S),Write Buffer и Write Long в начале пере­дачи первого блока данных запрос прерывания не вырабатывается.


При обме­ нах DMA запрос прерывания вырабатывается только по завершении операции. На хост-контроллере эта линия через резистор 10 кОм должна подтягиваться к шине GND.

¦     CSO# (Chip Select 0) — сигнал выбора блока командных регистров (Command Block Registers). Для первого канала он вырабатывается при наличии на сис­темной шине адреса порта ввода-вывода в диапазоне !FOh-lF7h (сигнал так­ же называют CS1FX*).

¦     CS1# (Chip Select 1) — выбор блока управляющих регистров (Control Block

Registers). Для первого канала он вырабатывается при наличии на системной шине адреса порта ввода-вывода в диапазоне 3F6h-3F7h (часто этот сигнал называется CS3FX*).

¦     PDIAG* (Passed Diagnostics) — сигнал о прохождении диагностики. Ведущее устройство наблюдает за этим сигналом, который ведомое устройство должно выработать в ответ на сброс или команду диагностики. Если ведомое устрой­ство обнаружено (по сигналу DASP#), ведущее устройство ожидает сигнал в те­чение 31с после сброса и 6 с после команды диагностики. Если за это время сигнал не появился, ведущее устройство отмечает этот факт установкой бита 7 регистра ошибок. Если ведомое устройство не обнаружено, ведущее обнуляет регистр состояния ведомого устройства и сообщает свое состояние сразу после завершения собственной самодиагностики. Сигнал служит только для связи двух устройств и хост-адаптером не используется (в АТА-4 контакт задейство­ван для сигнала CBLID*).

¦      CBLID* (Cable assembly type identifier) — идентификация типа кабеля. В 80-проводной сборке контакт 34 на разъеме хост-адаптера соединяется с шиной GND, а контакты 34 разъемов устройств соединяются между собой, но связи с разъ­емом хост-адаптера не имеют. На устройстве эта линия через резистор 10 кОм должна подтягиваться к шине питания. После прохождения сброса (когда сиг­нал PDIAG* снимается) хост может определить наличие 80-проводного кабеля по низкому уровню сигнала.



¦  DASP# (Device Active, Slave Present) — сигнал двойного назначения: индика­тор активности устройства и присутствия ведомого устройства. Устройства имеют выход типа «открытый коллектор» с нагрузочным резистором 10 кОм к шине +5 В. После сброса по сигналу RESET* или при инициализации по вклю­чении питания оба устройства в течение 1 мс должны деактивировать этот сиг­нал, после чего не позже чем через 400 мс его вводит ведомое устройство для сообщения о своем присутствии. Ведущее устройство не активирует этот сиг-

9.2. Интерфейс АТА/ATAPI (IDE)                                                                                            369

нал в течение 450 мс. Сигнал деактивируется ведомым устройством после по­лучения им команды или через 31 с автоматически (смотря что произойдет раньше). После этого сигнал может быть введен любым устройством как инди­катор активности. Адаптер использует этот сигнал для включения светодиод­ного индикатора доступа к диску.

¦   SPSYNC/CSEL (Spindle Synchronization/Cable Select) — синхронизация шпин­деля или выборка кабелем. Сигнал двойного назначения, которое должно быть единым для обоих устройств. Сигнал SPSYNC позволяет синхронизировать шпиндели устройств (актуально для RAID-массивов); используется по усмот­рению производителя накопителя, начиная с ATA/ATAPI-3 этот сигнал из спецификации изъят. Сигнал CSEL позволяет устройствам определять свой адрес по положению на специальном кабеле с разрывом провода 28 между разъемами двух устройств (малораспространенная «кабельная выборка»). Эта линия на хост-адаптере заземлена, и ведущее устройство получает заземленную линию, а ведомое — неподключенную. На устройстве линия подтягивается к высоко­му уровню резистором 10 кОм. Состояние сигнала (если он управляется хост-адаптером) должно удерживаться по крайней мере 31с после сигнала RESET*.

При использовании режима Ultra DMA четыре линии получают новое назначе­ние сигналов.

¦     STOP (Stop Ultra DMA burst) — останов передачи пакета Ultra DMA.



¦     DDMARDY* (Device Ultra DMA ready) — готовность устройства при приеме па­кета Ultra DMA (управление потоком).

¦     DSTROBE ( Host Ultra DMA data strobe) — строб данных устройства при пере­даче пакета хосту. Данные передаются по обоим перепадам DSTROBE.

¦     HDMARDY* (Host Ultra DMA ready) — готовность хоста при приеме им пакета Ultra DMA (управление потоком).

¦     HSTROBE (Host Ultra DMA data strobe) — строб данных хоста при передаче па­кета устройству. Данные передаются по обоим перепадам HSTROBE.

Для блокнотных ПК в стандарте имеется вариант интерфейса IDE на 68-контакт­ном разъеме PCMCIA (PC Card), приведенный в табл. 9.5. Здесь имеется ряд спе­цифичных сигналов.

¦     SELATA* (Select 68-pin ATA) — сигнал, которым хост идентифицирует режим использования разъема, PC Card (сигнал снят) или АТА (сигнал установлен, то есть низкий уровень). Этот сигнал хост должен установить до подачи питания на коннектор. В течение 19 мс после подачи питания устройство игнорирует все интерфейсные сигналы, кроме этого. Если этот сигнал активен, то устройство должно сконфигурироваться на режим АТА. Если сигнал неактивен, оно должно сконфигурироваться на режим PC Card или не отвечать на другие сигналы хоста.

¦     CD1 # и CD2# (Card Detect) заземляются в устройстве — по этим сигналам хост определяет присутствие устройства.

¦     CS1# (Device chip select 1) — выбор устройства, подается хостом на оба кон­такта (Ни 42), но устройство воспринимает только один из них.

370

Глава 9. Интерфейсы устройств хранения

¦     DMARQ, DMACK* и IORDY — не обязательны для использования.

¦     M/S# (Master/Slave) — инверсия сигнала CSEL. Хост выдает сигналы M/S# и CSEL до подачи питания, устройство воспринимает лишь один из них.

Для обеспечения «горячего» подключения разъем для цепи GND обеспечивает более раннее соединение при подключении и более позднее при отключении.


В устройстве сигналы CSO#, CS1#, RESET* и SELATA* подтягиваются к пассивному состоянию.

Таблица 9.5.68- контактный интерфейс АТА для PC Card (PCMCIA) Контакт   Сигнал    Контакт   Сигнал

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



9.2. Интерфейс АТА/ATAPI (IDE)_______________________________________ 371

Для компьютеров класса ЛТ существует 8-битная версия интерфейса, называемая XT-IDE, реже — XT-Bus. Этот интерфейс [2,5], как и AT А, реализован на 40-провод-ном кабеле, и многие его сигналы совпадают с 16-битной шиной AT А. Интерфейс XT-IDE можно рассматривать как подмножество AT А, хотя прямой совместимо­сти нет. Ряд устройств АТА имеют джампер выбора режима XT/AT (в накопите­лях Seagate на это указывает окончание «АХ» в обозначении модели).

Регистры устройств

Каждое устройство АТА имеет стандартный набор регистров, адресуемых сигна­лами от хост-адаптера (CSO#, CS1#, DA2, DA1, ОАО, DIOR* и DIOW#). Набор регис­тров (табл. 9.6) состоит из двух блоков, выбираемых сигналами CSO# и CS1#, из которых активным (низкий уровень, «О») может быть только один. В таблице приведены адреса регистров в пространстве ввода-вывода IBM PC-совместимого ПК для первого и второго каналов АТА.


При обращении к регистрам сигнал DMACK* должен быть неактивным. Блок командных регистров служит для посыл­ки команд устройству и чтения информации о его состоянии. Блок управляющих регистров используется для управления устройством и получения более подроб­ной информации о его состоянии. На действительность содержимого регистров командного блока и альтернативного регистра состояния указывает нулевое значе­ние бита BSY регистра состояния. Запись в регистры должна производиться лишь при BSY=0 и DRQ=0, кроме особо оговоренных случаев. Если устройство поддерживает управление энергопотреблением, в «спящем» режиме содержимое этих регистров недействительно и запись игнорируется, кроме особо оговоренных случаев.

Таблица 9.6. Регистры контроллеров устройств АТА

Адрес

Сигналы адресации канала №

Назначение (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

продолжение^

372________________________________ Глава 9. Интерфейсы устройств хранения



Таблица 9.6. (продолжение)

Адрес      Сигналы адресации канала №      Назначение (R — чтение, W — запись) (0 — низкий уровень, 1 — высокий)

1      2      CSO# CS1#   DA2   DA1   ОАО______________________________________________

1FX  17Х   Command Block Registers — блок командных регистров

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

R/W: Data (DR) — регистр данных

R: Error (ER) — регистр ошибок

W: Features (FR) — регистр свойств

R/W: Sector Count (SC) — регистр счетчика секторов

R/W: Sector Number (SN) — регистр номера

сектора/LBA[7:0]2

R/W: Cylinder Low (CL) — регистр младшего

байта номера цилиндраДВА[15:8]2

R/W: Cylinder High (CH) — регистр старшего байта номера цилиндра/1-ВА[23:1 б]2

R/W: Device/Head (D/H) — регистр номера устройства и головки/1_ВА[27:24]2

R: Status (SR) — регистр состояния

W: Command (CR) — регистр команд

1   Рекомендуется, чтобы на сигнал чтения по этому адресу устройство не отвечало.

2   Регистры сектора, цилиндра и головки в режиме LBA содержат указанные биты логического адреса.

Альтернативный регистр состояния AS (для первого канала адрес 3F6h, для вто­рого — 376h) имеет те же биты, что и основной (см. ниже), но его чтение не приво­дит ни к каким изменениям состояния устройства.

Регистр управления устройством DC (3F6h, 376h) служит для программного сбро­са обоих устройств одновременно и управления разрешением прерывания выбран­ного устройства. Запись в этот регистр возможна в любой момент. Программный сброс через регистр DC должен отрабатываться ив состоянии Sleep. Назначение битов регистра DC:

¦     биты [7:3] зарезервированы;



¦     бит 2 — SRST (Software Reset) — программный сброс, действует все время, пока бит не будет снят (оба устройства на шине воспринимают программный сброс одновременно);

¦     бит 1 — n IE N (Interrupt Enable) — инверсный бит разрешения прерывания (при нулевом значении бита выбранное устройство может вырабатывать сигнал INTRQ через тристабильный выход);

¦     бит 0 - 0.

Регистр адреса устройства DA (3F7h, 377h) использовался только в первой вер­сии АТА для совместимости со старыми контроллерами, чтением этого регистра можно было определить адресованный привод и головку. Регистр выпадает из блока (он совпадает с диагностическим регистром состояния онтроллера НГМД)

9.2. Интерфейс АТА/ATAPI (IDE)_______________________________________ 373

и рекомендуется, чтобы устройство АТА не отвечало на чтение этого регистра. Если устройство отвечает на чтение, то оно не должно управлять битом DD7 во избежание конфликта с контроллером НГМД, у которого по этой линии переда­ется бит смены носителя. Из-за несоблюдения этого требования могут возникать проблемы, когда контроллер (адаптер) АТА и контроллер НГМД находятся на разных платах. Назначение битов регистра DA:

¦     бит 7 — (HiZ) — высокоимпедансный, при считывании не выдается на шину;

¦     бит 6 — nWTG — инверсный признак записи (во время физического выполнения записи на носитель бит нулевой);

¦     биты [5:2] — nHS [3 :0] — номер головки (инверсные биты);

¦     биты [1:0] — nDS [1:0] — выбор устройства (инверсные биты): 10 — выбрано устройство 0, 01 — выбрано устройство 1.

Регистр данных DR (IFOh, 170h) может использоваться как 8-битный или 16-бит­ный в зависимости от типа данных, передаваемых в текущей команде. Обращение к этому регистру происходит в режиме обмена РЮ (когда сигнал DMACK* неак­тивен), при выполнении передач протокола РО (РЮ Out) хост производит запись в этот регистр, при PI (РЮ In) — чтение.


В режиме DMA обмен данными проис­ходит через порт данных, при этом активны сигналы DMARQ и DMACK*, а сигналы CSO# и CS1# неактивны.

Регистр ошибок ER (IFlh, 171h) хранит состояние выполнения последней опера­ции или диагностический код. После завершения операции на наличие ошибки указывает бит ERR регистра состояния.

Назначение битов регистра ER:

¦     бит 7 — зарезервирован;

¦     бит 6 — UNC (Uncorrectable Data Error) — неисправимая ошибка данных;

¦     бит 5 — МС (Media Changed) — смена носителя (после смены носителя первая команда обращения отвергается и устанавливается данный бит, после сброса бита следующие команды будут выполняться нормальным образом);

¦     бит 4 — IDN F (ID Not Found) — указывает на ненайденный идентификатор сектора;

¦     бит 3 — MCR (Media Change Requested) — индикатор запроса смены носителя (после обнаружения запроса смены носителя команды Door Lock будут воз­вращать бит ошибки ERR и бит MCR, бит MCR сбрасывается командами Door Unlock, Medi a Ej ect или сигналом аппаратного сброса);

¦     бит 2 — ABRT (Aborted Command) — устанавливается, если команда отвергну­та как недействительная или в случае возникновения иной ошибки;

¦     бит 1 —TK0NF (Track ONot Found) —указываетна то, что по команде Recalibrate не удалось найти нулевой трек;

¦     бит 0 — AMNF (Address Mark Not Found) — не найден адресный маркер данных в заголовке сектора.

374________________________________ Глава 9. Интерфейсу устройств хранения

После выполнения любого сброса или команды Execute Device Diagnostic регистр ошибок содержит диагностический код. Трактовка битов, за исключени­ем бита 2 (ABRT), может меняться в зависимости от исполненной команды.

Регистр свойств FR (IFlh, 171h) используется в зависимости от команды. В команде Set Features через него задается код подкоманды. Некоторые старые устройства могут игнорировать запись в этот регистр.


До принятия спецификации АТА-2 в этот регистр помещали значение рекомендуемого номера цилиндра для предкомпен-сации записи.

Регистр счетчика секторов SC (lF2h, 172h) содержит число секторов, участву­ющих в обмене. Хост инициализирует этот регистр до подачи команды (нулевое значение соответствует 256 секторам). По успешному завершению операции до­ступа к данным регистр должен обнулиться. Если команда завершилась с ошиб­кой, в регистре будет число секторов, которые должны быть переданы для успеш­ного завершения предыдущего запроса. Команды Initialize Device Parameters или Write Same могут переопределить значение этого регистра. В некоторых ко­мандах регистр используется для передачи иных параметров.

Регистры номера сектора S N (1 F3h, 173h) и номера цилиндра — младшего С L (1 F4h, 174h) и старшего байта СН (lF5h, 175h) — имеют двоякое назначение в зависимо­сти от выбранной системы адресации (CHS или LEA). Они инициализируются хост-адаптером, а в случае возникновения ошибки при выполнении операции устройство поместит в них адрес, по которому встретилась ошибка.

Регистр номера устройства и головки D/H (IFGh, 176h) кроме хранения части ад­ресной информации служит для выбора ведущего или ведомого устройства и ме­тода адресации.

Назначение битов регистра D/H:

¦     биты 7 и 5 вплоть до АТА-3 должны были быть единичными, в AT A/ AT API -4 их объявили устаревшими;

¦     бит 6 — L — единичным значением указывает на применение режима адреса­ции LBA, при нулевом значении бита используется режим CHS;

¦     бит 4 — DEV (Device) — выбор устройства, при DEV=0 выбрано ведущее, при DEV=1 — ведомое;

¦     биты [3:0] имеют двоякое назначение в зависимости от выбранной системы

адресации, в режиме CHS они содержат номер головки, в режиме LBA — старшие биты логического адреса.

Как и предыдущие (5М,СНиС1_), адресный регистр D/H инициализируется хост-адаптером, а в случае возникновения ошибки при операции устройство поместит в них адрес, по которому встретилась ошибка.


До принятия спецификации АТА- 2 считалось, что адресные регистры должны модифицироваться и после успешного выполнения операции, отражая текущее значение адреса в носителе. Регистр состояния S R (l F7h, 177h) отражает текущее состояние устройства в про­цессе выполнения команд: занятость, готовность, наличие ошибок и др. Чтение регистра состояния разрешает дальнейшее изменение его битов и сбрасывает запрос аппаратного прерывания.

9.2. Интерфейс АТА/ATAPI (IDE)    _____________________________________ 375

Назначение битов регистра SR описано ниже.

¦   Бит 7 — BSY (Busy) указывает на занятость устройства, значение этого бита действительно всегда. При BSY=1 устройство игнорирует попытки записи в ко­мандный блок регистров, а чтение этих регистров дает неопределенный резуль­тат. При BSY=0 регистры командного блока доступны, в это время устройство не может устанавливать бит DRQ, изменять значение битов Е RR и содержимое осталь­ных командных регистров (могут меняться только значения битов IDX, DRDY, DF,

DSC и CORR). Бит может устанавливаться на кратковременный интервал, так что хост может этого не заметить. Бит устанавливается:

•       при сбросе устройства;

•       по получении команды, если не устанавливается DRQ;

•       между передачами блоков данных в режиме РЮ и после них, пока не обну­лился DRQ;

•       во время передач данных в режиме DMA.

¦     Бит 6 — DRDY (Device Ready) указывает на готовность устройства к воспри­ятию любых кодов команд. Если состояние бита изменилось, оно не может вер­нуться обратно до чтения регистра состояния. При DRDY=0 устройство воспри­нимает только команды Execute Device Diagnostic и Initialize Device Parameters, прекращая выполнение текущей команды и сообщая об этом флагом ABRT в регистре ошибок и флагом ERR в регистре состояния. Другие команды приводят к непредсказуемым результатам.


Устройства AT API сбра­ сывают бит по любому сбросу и команде Execute Device Diagnostic. Бит устанавливается устройством AT A, когда оно готово к выполнению всех команд. Устройство AT API устанавливает бит до завершения выполнения команд, за исключением команд Device Reset и Execute Device Diagnostic.

¦     Бит 5 — DF (Device Fault) — индикатор отказа устройства.

¦     Бит 4 — DSC (Device Seek Complete) — индикатор завершения поиска трека. В командах, допускающих перекрытие, бит называется SERV (Service Required) — устройство требует обслуживания.

¦     Бит 3 — DRQ (Data Request) — индикатор готовности к обмену словом или бай­том данных.

¦     Бит 2 — CORR (Corrected Data) — индикатор исправленной ошибки данных.

¦     Бит 1 — I DX (Index) — индекс, трактуется особо каждым производителем.

¦     Бит 0 — ERR (Error) — индикатор ошибки выполнения предыдущей операции.

Дополнительная информация содержится в регистре ошибок. Если установ­

лен бит ERR, до приема следующей команды, программного или аппаратного сброса устройство не изменит состояние этого бита, а также регистра ошибок, регистра количества секторов и регистров цилиндра, головки и номера секто­ра. Для команд PacketnService бит называется СНК и служит признаком ис­ключительной ситуации.

В стандарте ATA/ATAPI-4 для некоторых команд биты 4 и 5 могут иметь иное назначение, а биты 1 и 2 объявлены устаревшими.

376

Глава 9. Интерфейсы устройств хранения

Назначение регистра команд CR (lF7h, 177h) очевидно из названия. Устройство начинает исполнять команду сразу, как только ее код записан в данный регистр. Команда Devi ce Reset выполняется устройством AT API независимо от состо­яния битов BSY и DRQ, и даже в состоянии Sleep.

Полный список команд АТА приведен в литературе [4,5,9].

Протоколы и режимы передачи данных

Программа общается с устройствами АТА через регистры, используя инструкции ввода-вывода IN и OUT.


Для передачи данных с максимальной скоростью приме­няют программный доступ РЮ к регистру данных инструкциями INSW/ OUTSW или по каналу DMA. Тип обмена (РЮ или DMA) определяется командой обращения. Программный доступ РЮ обязателен для всех устройств, команды режима DMA устройствами могут не поддерживаться. Параметры различных режимов обмена приведены в табл. 9.7.

Таблица 9.7. Параметры режимов передачи

Режим передачи

Минимальное

Скорость

Интерфейс

время цикла, не

передачи, Мбайт/с

РЮ 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 В пакете данных режима Ultra DMA за каждый такт передаются два слова данных, один по фронту синхронизирующего сигнала, другой по спаду. Период следования синхросигналов равен удвоенному времени цикла.

Программный доступ РЮ (Programmed Input/Output) выполняется в виде следу­ющих друг за другом операций чтения или записи в пространстве ввода-вывода по адресу регистра данных. Готовность устройства проверяется перед началом

9.2. Интерфейс ATA/ATAPI (IDE)_______________________________________ 377

передачи блока, после чего хост производит серию операций в определенном тем­пе, который определяется выбранным режимом РЮ Mode 0-4. Для каждого ре­жима определены допустимые параметры временной диаграммы цикла обмена.


Обмен РЮ программно реализуется с помощью процессорных инструкций вво­да- вывода строк REP INS или REP OUTS с занесенным в регистр СХ количеством слов (или байтов) в передаваемом блоке. Эти инструкции обеспечивают максималь­но возможную скорость обмена для данного процессора и системной шины. «Обуз­дать» процессор в соответствии с выбранным режимом входит в задачу адаптера AT А, который использует для удлинения цикла сигнал готовности шины (для ISA — IOCHRDY). Традиционные режимы 0,1 и 2 имеют временные параметры, фиксируемые только хост-адаптером. Для прогрессивных режимов АТА-2 (РЮ Mode 3 и выше) устройство может затормозить обмен, используя сигнал готовно­сти IORDY. Программный обмен на все время передачи блока занимает и процес­сор, и системную шину.

Обмен по каналу DMA занимает исключительно шины ввода-вывода и памяти. Процессору требуется выполнить только процедуру инициализации канала, после чего он свободен до прерывания от устройства в конце передачи блока (этим могут воспользоваться многозадачные системы). Стандартные каналы DMA шины ISA для интерфейса АТА не используются из-за низкой пропускной способности. Вы­сокопроизводительные адаптеры АТА имеют собственные более эффективные кон­троллеры. Режимы обмена по каналу DMA бывают одиночными и множественны­ми. При одиночном режиме — Singleword DMA — устройство для передачи каждого слова вырабатывает сигнал запроса DMARQ и сбрасывает его по сигналу DMACK#, подтверждающему цикл обмена. При множественном режиме — Multiword DMA — на сигнал DMARQ хост отвечает потоком циклов, сопровождаемых сигналами DMACK*. Если устройство не справляется с потоком, оно может приостановить его снятием сигнала DMARQ, а по готовности установить его снова. Множественный режим позволяет развить более высокую скорость передачи.

В спецификации ATA/ATAPI-4 появился новый режим — Ultra DMA, позволя­ющий перешагнуть барьер в 16,6 Мбайт/с, свойственный традиционным режимам и используемому кабелю. При этом обеспечивается и контроль достоверности передачи данных по шине, чего не делалось ни в РЮ, ни в стандартных режимах DMA (а зря!).


Стандартом АТА-4 было определено 3 режима Ultra DMA (0,1 и 2), впоследствии ввели новые; выбор режима осуществляется командой Set Features. В режимах Ultra DMA сигналы DMARQ и DMACK* сохраняют свое назначение, а вот смысл сигналов DIOR#, DIQW# и IORDY на время передачи пакета (Ultra DMA Burst) существенно меняется. В пакете данные на шине сопровождаются стробом, генери­руемым источником данных, причем для синхронизации используются оба перепа­да сигналов. Это позволяет повысить пропускную способность шины до 33 Мбайт/с, не увеличивая частоту переключения сигналов сверх 8,33 с"1 (этот предел для обыч­ного кабеля достигается в режиме РЮ Mode 4 и Multiword DMA Mode 2). Каждое переданное слово участвует в подсчете CRC-кода, который передается хост-кон­троллером в конце пакета. Подсчет ведется и источником данных, и приемником.

378________________________________ Глава 9. Интерфейсы устройств хранения

При несовпадении принятого устройством кода с ожидаемым кодом фиксирует­ся ошибка передачи, о которой устройство сообщает в конце исполнения коман­ды. Передача в пакете может приостановиться, если приемник снимет сигнал го­товности (DDMARDY* или HDMARDY*). Передача пакета может прекращаться по инициативе устройства (снятием сигнала) или хоста (сигналом STOP). Проти­воположная сторона должна подтвердить окончание цикла сигналом STOP или DMARQ соответственно.

Способ сообщения об ошибке передачи зависит от типа выполнявшейся коман­ды. Для команд READ DMA,WRITE DMA, READ DMA QUEUED или WRITE DMA QUEUED в регистре ошибок ER устанавливается бит 7 (ICRC) и бит 2 (ABRT). Для пакетной команды REQUEST SENSE (уточнить состояние) в случае ошибки в регистре состо­яния SR устанавливается бит О (СНК) и сообщается ключ состояния (Sense key) OBh (команда отвергнута). Для всех других пакетных команд в случае ошибки устанавливается бит СНК и сообщается состояние 04h (аппаратная ошибка), а в последующих командах REQUEST SENSE сообщается значениеЛ5С/А5СО 08h/03h (ошибка CRC при связи с логическим устройством).


Получив сообщение об ошиб­ке, хост должен повторить команду. Если ошибки появляются постоянно, хост должен понизить скорость обмена (вплоть до выхода из режима Ultra DMA).

Тип режима обмена определяется возможностями хост-адаптера (и его драйвера), устройств и кабеля, и для каждого устройства он будет ограничен минимумом из максимальных возможностей всех этих компонентов. Как правило, режимы уста­навливаются системой автоматически, но пользователю дается возможность при необходимости «подрезать крылья» контроллеру настройками BIOS Setup. Для работы в режимах Ultra DMA Mode 3 и выше требуется 80-проводный кабель, присутствие которого должно быть программно определено до включения это­го режима обмена. Правда, в спецификации есть оговорка, что при двухточечном соединении (контроллер—устройство) для режимов 3 и 4 можно использовать 40-проводный кабель (без среднего разъема). Система не должна позволить пользователю применить высокоскоростные режимы на обычном кабеле, при этом желательно, чтобы она сообщала об обнаруженном несоответствии. Для опреде­ления типа кабеля есть несколько возможностей [4].

¦ Определение типа кабеля через хост-контроллер, для чего хост-контроллер должен иметь приемник сигнала CBLID*. После включения питания или аппа­ратного сброса хост ожидает завершения протокола сброса и затем подает ко­манду идентификации Identyf у (Packet) Devi се устройству 1. Устройство 1 стандарта АТА-3 и выше обязано после сброса снять сигнал PDIAG#/CBLID# не позднее, чем по приходу первой команды. Если обнаружено старое устройство, то протокол идентификации кабеля хостом работать не будет (но со старым устройством на шлейфе включать высокоскоростной режим и не стоит). Совре­менное устройство снимет сигнал, и хост-адаптер сможет определить наличие 80-проводного кабеля по низкому уровню CBLID*. Некорректно работающее устройство может удержать низкий уровень сигнала, и в этом случае 40-про­водный кабель будет ошибочно трактоваться как 80-проводный.



9-2. Интерфейс АТА/ATAPI (IDE)_______________________________________ 379

¦     Определение типа кабеля через устройство не требует дополнительного при­

емника в контроллере — линия PDIAG#/CBLID# в хост-контроллере заземляет­ся через конденсатор емкостью 0,047 мкФ±20 %. Приемник сигнала идентифи­кации кабеля располагается в устройстве. Для определения типа кабеля хост посылает команду Identyf у (Packet) Device устройству 1, чтобы оно освобо­дило линию (сняло сигнал PDIAG*). Затем команда идентификации посылается устройству 0. Примерно через 30 мкс после получения команды устройство кратковременно обнуляет эту линию, затем отпускает и только через 20-30 мкс после этого считывает ее состояние и сообщает его в бите 13 слова 93. Линия подтягивается к +5 В резисторами 10 кОм, установленными в устройствах. Если используется 40-проводный кабель, то конденсатор в хост-адаптере не успеет перезарядиться и устройство сообщит нулевое значение бита. Если кабель 80-проводный, то конденсатор оказывается изолированным от линии PDIAG*/CBLID* в устройстве, и оно сообщит единичное значение бита. Если на хост-контроллере нет конденсатора, то даже 40-проводный кабель будет идентифи­

цироваться как 80-проводный, что опасно при передаче данных. Если некор­

ректно работающее ведомое устройство своевременно не отпустит линию, то

даже 80-проводный кабель будет казаться 40-проводным.

¦     Комбинированный метод определения типа кабеля предполагает наличие на

хост-контроллере и приемника сигнала CBLID#, и конденсатора (они друг дру­гу не мешают). Решение о наличии 80-проводного кабеля принимается, только если это подтвердят оба метода. Возможная ошибка идентификации будет без­опасной — при некорректном устройстве 1 на 80-проводном кабеле не будет включен высокоскоростной режим (наверное, это и к лучшему).

Правильный выбор режима обмена обеспечивает надежность и производитель­ность. Все устройства поддерживают режим РЮ Mode 0, в котором считывается блок параметров идентификации.


В блоке имеются поля, описывающие режим обмена по умолчанию и более эффективные режимы обмена, поддерживаемые устройством. Командой Set Features можно изменить параметры режима. Ино­гда накопитель не обеспечивает надежной передачи данных в заявленном высо­коскоростном режиме. Если данные начинают пропадать, первым делом следует понизить режим обмена.

BIOS определяет режим обмена с каждым устройством с учетом ограничений, заданных в Setup. Старые диски, не сообщающие своих параметров, могут не ра­ботать с новыми режимами PIO. На одном ленточном кабеле (канале ATА) могут присутствовать устройства с разным режимом обмена — спецификация это допус­кает. Однако реально могут возникать аппаратные или программные ограничения. Некоторые чипсеты не позволяют независимо программировать режим обмена для устройств канала. В таком случае при подключении двух разных устройств (например, PIO Mode 1 и 3) обмен с обоими устройствами будет происходить со скоростью меньшего (PIO Mode 1). Поэтому не рекомендуется к одному каналу АТА (порту IDE) подключать быстрый винчестер и медленный CD-ROM. Ино­гда завязка режимов обмена двух устройств обусловлена ограниченным набором параметров конфигурации в BIOS. Быстрые режимы множественного обмена по

380________________________________ Глава 9. Интерфейсы устройств хранения

DMA реализуются только драйверами ОС. «Глупый» драйвер может попытаться навязать медленный режим обоим устройствам канала, так что смешивать разные устройства не стоит и по этой причине.

Протокол обмена PIO хорош только для однозадачных ОС. Для многозадачных ОС больший интерес представляет обмен по протоколу DMA, если, конечно, под­держиваемый режим обеспечивает приемлемую скорость обмена. С точки зрения драйвера есть различия лишь между типами режимов (РЮ, DMA и UltraDMA); аппаратные нюансы режимов внутри типа влияют только на скорость передачи. Режим UltraDMA значительно отличается от обычного DMA необходимостью обработки возможных ошибок передачи по шине; в случае постоянных ошибок драйвер должен понизить режим UltraDMA (вплоть до перехода на традицион­ные режимы).



Протокол взаимодействия хоста с устройством выглядит следующим образом.

1.    Хост читает регистр состояния устройства, дожидаясь нулевого значения бита В S Y.Если присутствуют два устройства, хост обращается к ним «наугад» — состо­яние будет сообщаться последним выбранным устройством.

2.    Дождавшись освобождения устройства, хост записывает в регистр D/H байт,у которого бит DEV указывает на адресуемое устройство. Здесь кроется причи­на невозможности параллельной работы двух устройств на одной шине AT А:обратиться к устройству можно только после освобождения обоих устройств.

3.    Хост читает основной или альтернативный регистр состояния адресованного

устройства, дожидаясь признака готовности (DRDY=1).

4.    Хост заносит требуемые параметры в блок командных регистров.

5.    Хост записывает код команды в регистр команд.

6.    Устройство устанавливает бит BSY и переходит к исполнению команды.

Дальнейшие действия зависят от протокола передачи данных, заданного командой.

Для команд, не требующих передачи данных, следующий шаг (шаг 7) — последний. Завершив исполнение команды, устройство сбрасывает бит BSY и устанавливает запрос прерывания (если он не запрещен). К этому моменту в регистрах состо­яния и ошибок уже имеется информация о результате исполнения. Единичное зна­чение бита BSY может «промелькнуть» между шагами 6 и 7 так быстро, что хост его не зафиксирует, но для фиксации факта выполнения команды или ее части предназначен запрос прерывания.

Для команд, требующих чтения данных в режиме РЮ, процедура продолжается следующим образом.

7.    Подготовившись к передаче первого блока данных по шине АТА, устройство

устанавливает бит DRQ. Если была ошибка, она фиксируется в регистрах со­стояния и ошибок. Далее устройство сбрасывает бит BSY и устанавливает за­прос прерывания (если он не запрещен).

8.    Зафиксировав обнуление бита BSY (или по прерыванию), хост считывает регистр состояния, что приводит к сбросу прерывания от устройства.



9.2. Интерфейс АТА/ATAPI (IDE)_______________________________________ 381

9. Если хост обнаружил единичное значение бита DRQ, он производит чтение пер­вого блока данных в режиме PIO (адресуясь к регистру данных). Если обнару­жена ошибка, считанные данные могут быть недостоверными. После передачи блока данных возможно одно из следующих действий:

•       если на шаге 8 ошибка не обнаружена и требуется передача следующего

блока, устройство устанавливает бит BSY и данная последовательность повторяется с шага 7;

•       если есть ошибка или передан последний блок данных, устройство сбрасы­

вает бит DRQ и выполнение команды завершается.

Для операций записи данных после шага б для устройства начинается активная фаза записи на носитель, что отмечается установкой бита BSY.

Для команд, требующих записи данных в режиме PIO, процедура после шага 6 про­должается следующим образом.

7.    Подготовившись к приему первого блока данных по шине ATА, устройство устанавливает бит DRQ (если нет ошибок) и сбрасывает бит B5Y. Если была ошибка, она фиксируется.

8.    Зафиксировав обнуление бита BSY, хост считывает регистр состояния.

9.    Если хост обнаружил единичное значение бита DRQ, он производит запись пер­вого блока данных в режиме PIO по адресу в регистре данных.

10. После передачи блока данных возможно одно из следующих действий:

•       если обнаружена ошибка, устройство сбрасывает бит DRQ, устанавливает за­прос прерывания и выполнение команды завершается, а переданные по шине данные остаются устройством необработанными (не записываются на носитель);

•       если ошибка не обнаружена, устройство устанавливает бит BSY и перехо­дит к следующему шагу.

11. Устройство обрабатывает принятый блок данных, затем:

•       если нет ошибок и обработанный блок — последний, устройство сбрасыва­ет бит B5Y и устанавливает запрос прерывания, на чем выполнение коман­ды успешно завершается;



•       если обнаружена ошибка, выполнение команды завершается таким же об­

разом, но с установкой битов ошибок;

•       если нет ошибок и требуется передача следующего блока, процедура про­

должается.

12.  По готовности приема следующего блока устройство устанавливает бит DRQ, сбрасывает бит BSY и устанавливает запрос прерывания.

13.  По обнулении бита BSY (или по прерыванию) хост считывает регистр состояния.

14.  Обнаружив бит DRQ, хост выполняет запись очередного блока в регистр дан­ных, и последовательность повторяется с шага 11.

382________________________________ Глава 9. Интерфейсы устройств хранения

Команды с передачей данных в режиме DMA выполняются похожим образом, но с некоторыми исключениями.

¦     Вместо PIO используется прямой доступ к памяти. Хост должен инициализи­

ровать канал DMA до записи кода в регистр команд, чтобы при появлении сиг­нала DMARQ начался обмен.

¦     Запрос прерывания даже в многосекторных передачах производится один

раз — по выполнении команды.

Адаптеры и контроллеры шины АТА

Простейший адаптер АТА содержит только буферы сигналов шины и дешифра­тор зоны адресов. Все регистры контроллера и схемы кодирования размещены в самом устройстве IDE. Шина АТА требует выделения системных ресурсов — двух областей портов ввода-вывода и линии прерывания; дополнительно может потребоваться канал DMA. Интерфейсу АТА первого канала выделили ресурсы, ранее использовавшиеся контроллером жестких дисков. Второму каналу назна­чили ресурсы альтернативного контроллера жестких дисков. Позже определили ресурсы еще для двух каналов (табл. 9.8). Традиционному контроллеру жестких дисков выделялся канал DMA3, но он является 8-битным, в то время как шина АТА требует 16-битного канала DMA. Производительности стандартных каналов DMA для шины АТА явно недостаточно.

Таблица 9.8. Системные ресурсы каналов АТА



Канал   CSO                 CS1                IRQ

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

На системных платах с шиной PCI стандартом является установка двухканального адаптера, занимающего ресурсы каналов 1 и 2. В идеальном варианте двухканаль-ные контроллеры имеют шины, полностью изолированные друг от друга буфер­ными и логическими схемами. В самом дешевом варианте они используют общие буферы для линий данных и управляющих сигналов и отдельные только для некото­рых сугубо индивидуальных сигналов. С точки зрения логики здесь все в порядке, но следует учитывать нагрузочную способность (влияние паразитных параметров): суммарная длина обоих ленточных кабелей не должна превышать 46 см, а суммарная емкость каждой линии со всеми устройствами не должна превышать 35 пФ. Ина­че на высокоскоростных режимах обмена возможны неконтролируемые искаже­ния передаваемых данных. Стандарт ATA/ATAPI-6 предписывает следующее.

¦ В каждом канале должны быть собственные формирователи управляющих сиг­налов DIOR#, DIOW# и приемник IORDY (рекомендуемый вариант); либо долж­ны быть раздельные формирователи CSO# и CS1# (второй вариант логичнее, но хуже в плане помех). Такая конфигурация позволяет использовать все ре­жимы обмена, кроме Ultra DMA.

9.2. Интерфейс АТА/ATAPI (IDE)

383

¦     Для поддержки Ultra DMA 0,1 и 2 (до 33 Мбайт/с) к этим требованиям добав­

ляется наличие раздельных формирователей сигнала DMACK#.

¦     Для поддержки Ultra DMA 3 и выше (44-100 Мбайт/с) все линии должны

иметь раздельные приемопередатчики. Общими могут быть только сигналы

RESET*, INTRQ, DA(2:0), CSO#, CS1# и DASP#, но стандарт этого не рекомендует.

Поскольку скорость программного обмена задается хост-адаптером, интересно ин­дивидуальное программирование режимов РЮ Mode для каждого канала/устрой­ства.


Ряд чипсетов этого не допускает и при инициализации назначает общий минимальный режим. В результате подключение «тихоходного» устройства замед­ляет обмен быстрого соседнего устройства.

Современные системные платы оснащаются высокопроизводительными контрол­лерами шины AT А, обеспечивающими прямое управление шиной PCI (bus mastering) при обмене с устройствами в режимах DMA и Ultra DMA. Прямое управление шиной повышает суммарную производительность компьютера в многозадачных и многопоточных операционных системах. Сами по себе режимы DMA не дают вы­игрыша в скорости обмена по шине АТА — только режимы UltraDM A Mode 1 и выше превосходят по скорости режим РЮ Mode 4 (см. табл. 9.7). Однако обмен в режи­ме DMA значительно меньше загружает центральный процессор компьютера, и параллельно с дисковым обменом процессор может заниматься обработкой других потоков (задач). В однозадачных (и однопоточных) системах во время дискового обмена процессор все равно ничем другим не занимается, поэтому для них хорош и режим РЮ Mode. Для реального использования режима прямого управления в операционной системе должен быть установлен специальный драйвер Bus-Master, соответствующий используемому контроллеру АТА (как правило, чипсету сис­темной платы). Стандартный контроллер PCI IDE описан ниже. Операционная система MS-DOS режимы DMA (и прямое управление) не использует. Для мно­гозадачных ОС (Windows 9x/NT/2000, OS/2, Unix, Linux, NetWare...) драйверы могут входить в комплект поставки ОС или поставляться производителями сис­темных плат (контроллеров АТА). И наконец, режим DMA должны поддержи­вать подключаемые устройства. Практически все современные устройства поддер­живают Ultra DMA (или Multiword DMA), но если в паре с таким устройством к одному контроллеру подключено старое устройство, не поддерживающее этот режим, то прогрессивные режимы могут оказаться недоступными (по вине чипсе­та или драйвера) и для нового устройства.

ВНИМАНИЕ---------------------------------------------------------------------------------



Режим UltraDMA привлекателен не только скоростью и разгрузкой процессора, но и контро­лем достоверности передач по шине АТА (правда, этот контроль корректно работает не со все­ми драйверами).

Поскольку контроллеры АТА подключаются к 32-разрядной шине PCI, в них ввели возможность обращения к регистру данных АТА двойными словами. При этом за одну 32-битную операцию процессора и шины PCI по шине АТА последовательно передаются два 16-битных слова. Возможностью 32-разрядного доступа к регистру данных можно управлять через параметр IDE 32-bit Transfer (Enable/Disable) BIOS Setup.

384_____________________________     Глава 9. Интерфейсы устройств хранения

Более сложные контроллеры (отдельные карты расширения) могут иметь соб­ственную кэш-память и управляющий процессор. Они могут аппаратно поддер­живать «зеркальные» диски и организовывать RAID-массивы АТА-дисков. Не­которые адаптеры позволяют соединять несколько физических дисков в один логический на уровне вызовов BIOS.

Адаптеры АТА одно время часто размещали на звуковых картах (для подключе­ния CD-ROM). По умолчанию им назначают ресурсы канала 3 или 4. К этим ка­налам можно подключать винчестеры, но будет ли их там искать BIOS во время теста POST — вопрос. Современные версии BIOS позволяют хранить конфигура­ционные параметры четырех жестких дисков, более старые версии — двух. Четы­ре канала АТА физически позволяют подключить до восьми накопителей, но ра­бота с ними лимитирована программными ограничениями.

Существуют гибридные адаптеры для подключения АТА HDD к шинам XT и МСА или, например, к LPT-порту. В последнее время получили распространение пере­ходные адаптеры, позволяющие подключать устройства AT A/ AT API к шине USB. При использовании USB 2.0 простота подключения внешнего устройства будет сочетаться и с высокой скоростью передачи данных.

Контроллер PCI IDE

Для шины PCI существует стандартный вариант интерфейса контроллера IDE (название «АТА» здесь не очень уместно, поскольку оно ориентировано на ISA-подобную шину).


Спецификация « PCI IDE Controller Specification» появилась еще в 1994 году, она описывала реализацию контроллера, совместимого с интерфей­сом АТА. По сравнению с обычным контроллером, у данного контроллера в блоке управляющих регистров имеется лишь один адрес (устаревший регистр адреса недоступен). Чуть позже была опубликована спецификация «Programming Interface for Bus Master IDE Controller», описывающая работу с устройствами в режиме DMA с прямым управлением шиной. Двухканальный контроллер является одной функцией PCI; четырехканальный контроллер будет уже многофункциональным устройством PCI. Для контроллера определены два режима распределения ресурсов:

¦     режим совместимости (compatibility), в котором каналам выделяются тради­

ционные области адресов ввода-вывода и линии прерываний;

¦     естественный режим PCI (native-PCI), в котором базовые адреса блоков реги­стров и линии прерывания задаются в регистрах конфигурационного простран­ства и могут быть произвольно перемещаемы в любую область.

Распределение ресурсов для контроллера приведено в табл. 9.9. В режиме совме­стимости контроллер может работать только на первичной шине PCI, поскольку мост PCI-PCI не будет транслировать обращения по стандартным адресам на другую шину. В режиме PCI с перемещаемыми ресурсами контроллер может на­ходиться на любой шине. Конкретный контроллер может поддерживать измене­ние режима или один из режимов. Если контроллер по умолчанию (или всегда) работает в режиме совместимости, то для ПО он «прозрачен» — работа с ним не отличается от традиционного контроллера АТА. Текущий режим и возможность

9.2. Интерфейс ДТА/ATAPI (IDE)_______________________________________ 385

его смены отражается в байте программного интерфейса, являющегося последним элементом идентификатора класса устройства. Байт интерфейса имеет следу­ющее назначение битов:

¦     бит 7 (bus mastering) — возможность работы в режиме прямого управления;



¦     биты 6:4 — 000 ( признак стандартного интерфейса, соответствующего PCI IDE Controller Specification);

¦     бит 3 — индикатор программируемое™ режима для второго канала (возмож­ности изменения бита 2);

¦     бит 2 — режим второго канала: 0 — совместим со стандартным контроллером ATA IDE, 1 - PCI IDE;

¦     бит 1 — индикатор программируемости режима для первого канала (возмож­ности изменения бита 0);

¦     бит 0 — режим первого канала: 0 — совместим с ATA IDE, I — PCI IDE.

Таблица 9.9. Ресурсы контроллера PCI IDE

Ресурс                                            Режим совместимости:   Естественный режим PCI:

ресурсы для каналов      базовый адрес (смещение

в конфигурационном пространстве) для канала

12                                            12

Блок командных регистров

1FOh-1F7h

170h-177h

10h

14h

Блок управляющих регистров

3F6h

376h

18h

1Ch

Прерывание

14

15

Типовой контроллер имеет класс 01:01:80h и реализован в чипсетах большинства современных системных плат. Контроллер выглядит как расширение стандартно­го АТА-контроллера, обеспечивающего доступ к регистрам устройств AT A/ AT API по известным адресам. Расширение касается прямого управления шиной PCI (bus mastering), благодаря которому можно реализовать обмен данными с устройства­ми в режимах DMA. Контроллер позволяет использовать все доступные ему ре­жимы обмена РЮ (3,3-16,6 Мбайт/с), режимы DMA в стиле контроллера 8237 А (2-16,6 Мбайт/с) и режимы UltraDMA (16,6-100 Мбайт/с). Все настройки вре­менных параметров выполняются через конфигурационные регистры PCI, их со­став может быть специфичным. Однако с этими регистрами должна иметь дело только процедура POST, устанавливая для каждого обнаруженного устройства AT A/ AT API оптимальные режимы РЮ и DMA/UltraDMA. В эти настройки мо­жет вмешаться пользователь, установив какие-либо ограничивающие параметры в BIOS Setup.


В итоге после конфигурирования во время POST при обращении программ к устройствам остается выбор лишь между РЮ и DMA (если устрой­ство поддерживает DMA). Для обмена в режиме РЮ никаких специальных дей­ствий не требуется, программа просто выполняет чтение или запись в регистр дан­ных командами REP IN5/OUTS. Для обмена в режиме DMA требуется «зарядить» и запустить контроллер прямого управления, о чем и пойдет речь ниже.

386________________________________ Глава 9. Интерфейсы устройств хранения

Двухканальный контроллер имеет 16-байтный блок регистров, расположенный в пространстве портов ввода-вывода. Базовый адрес блока хранится в конфи­гурационном пространстве устройства по смещению 20h (берутся младшие 16 бит двойного слова). Расположение регистров в блоке показано в табл. 9.10, имена регистров имеют префикс BMI (Bus Master IDE) и окончание Р (Primary) для первого канала, S (Secondary) — для второго; в описании будем использовать окон­чание х (любой канал).

Таблица 9.10. Блок регистров контроллера PCI IDE

Смещение для канала   Длина, байт   Регистр для первого/второго каналов

J________ 2________________________________________________________________________

0              8                            1                        BMICP/BMICS (RW) — регистр команд: бит 0:

1 — запуск, 0 — останов; бит 3 — направление: 0 — чтение памяти, 1 — запись в память; биты 1 -2, 3-7 — резерв (0)

1                      9                           1                         Резерв (0)

2                      OAh                      1                        BMISP/BMISS— регистр состояния: бит 0 (R/O) —

активность канала; бит 1 (RWC) — ошибка обмена по PCI; бит 2 (RWC) — запрос прерывания от устройства; биты 3-4 — резерв (0); бит 5 (RW) — устройство 0 поддерживает DMA; бит 6 (RW) — устройство 1 поддерживает DMA; бит 7 — признак симплексного режима (1, если каналы не могут работать одновременно)



3                      OBh                      1                        Резерв (0)

4                      ОСИ                     4                         BMIDPTP/BMIDPTS(RW)— адрес таблицы

дескрипторов

Регистр команд BMICx, доступный по чтению и записи, используется для запуска контроллера и задания направления передачи. Запуск осуществляется при пере­ходе бита 0 из нуля в единицу, останов для текущего сеанса необратим. Останов контроллера (сброс бита) обычно выполняют по окончании выполнения коман­ды ATA/ATAPI (по прерыванию). Преждевременный останов приведет к ошибке выполнения команды с соответствующим сообщением. Направление должно быть задано до запуска контроллера, изменять его «на ходу» нельзя.

В регистре состояния BMISx биты 1 и 2 устанавливаются аппаратно, а сбрасывают­ся при записи байта с единичным значением в соответствующем бите. После сброса бита запроса прерывания он снова установится только по следующему фронту сигнала прерывания от устройства. Биты 5 и 6 устанавливаются программно, обыч­но когда POST определяет возможности подключенных устройств и программи­рует режимы контроллера. Регистр состояния должен быть прочитан после завер­шения выполнения команды для определения успешности операций на шине PCI. В регистр ВМI DPTx заносят адрес таблицы дескрипторов областей памяти, с кото­рыми производится обмен данными. Контроллер способен при чтении памяти собрать поток данных из произвольного числа областей (gathered read), а при запи­си «разбросать» поток по этим областям (scatter write). Такая возможность ветре-

9.2. Интерфейс ДТА/ATAPI (IDE)_______________________________________ 387

чалась еще в EISA-системах, она позволяет преодолевать барьеры на границах страниц, свойственные стандартным контроллерам DMA и страничной пере­адресации процессоров х86.


Каждый дескриптор занимает 8 байтов:

¦     байты 0-3 (двойное слово) — физический адрес начала области (четный);

¦     байты 4-5 (слово) — счетчик байтов (четный, 0000 соответствует 65 536);

¦     байты 6-7 (слово) — признак конца таблицы (бит 15), биты 0-14 не использу­ются (0).

Каждая область может быть расположена в произвольном месте памяти (кроме отображаемой на шину ISA) и иметь произвольный размер, но не должна пересе­кать границы страниц размером 64 Кбайт. Таблица дескрипторов должна быть выровнена по границе двойного слова и не должна пересекать границы страниц, имеющих размер 64 Кбайт. Число дескрипторов в таблице произвольно, послед­ний должен содержать признак конца таблицы. Обмен начинается с области, описанной первым дескриптором; за ней идет область следующего дескриптора и так далее до последнего. Контроллер остановится по исчерпании счетчика в по­следнем дескрипторе или по инициативе устройства, если в обмене должно участво­вать меньшее число данных. Если устройству данных не хватит, оно укажет на ошибку при завершении команды.

После запуска контроллера второй и нулевой биты регистра состояния отражают следующие ситуации:

¦     0,1 — происходит обмен с памятью, прерывания по концу операции еще нет;

¦     1,0 — обмен завершен, переданный объем соответствует объему описанных буферов (нормальное завершение);

¦     1,1 — устройство завершило обмен, но по команде АТА передано меньше дан­ных, чем описано в таблицах (допустимое завершение);

¦     0,0 — ошибка на шине (бит 1), или в таблицах описано меньше данных, чем в команде АТА.

Конфигурирование устройств

Устройства АТА перед подключением к шине должны быть корректно сконфигу­рированы. Конфигурирование подразумевает выбор типа интерфейса и опреде­ление адреса устройства. Тип интерфейса — XT или AT — определяется моделью накопителя.


В изделиях фирмы Seagate, например, тип обозначается последней буквой в шифре модели: А — АТА (16 бит,) X — для XT (8 бит), а сочетание АХ означает возможность выбора AT/XT с помощью джампера.

Существует два способа задания адреса устройства — кабельной выборкой или явным заданием адреса на каждом из устройств. Режим кабельной выборки включается перемычкой CS (Cable Select — кабельная выборка). В этом случае оба устройства на шине конфигурируются одинаково — в режим CS, а адрес устройства определяется его положением на специальном ленточном кабеле (см. рис. 9.3). Кабельная выборка будет работать, если она поддерживается и задана на всех

388________________________________ Глава 9. Интерфейсы устройств хранения

устройствах канала, включая хост-адаптер, который обеспечивает заземление кон­такта 28. При этом способе задания адресов синхронизация шпинделей накопи­телей через тот же провод контакта 28 исключается (актуально в RAID-массивах). Кабельная выборка применяется редко. Ее условное преимущество — унификация конфигурирования устройств, а недостатком является привязка физического по­ложения устройств к кабелю — ведущее устройство должно быть ближе к адаптеру, чем ведомое. Возможно подключение адаптера к среднему разъему, а устройств — к крайним, но это не всегда удобно.

Более распространен режим явной адресации, при котором используется обыч­ный «прямой» кабель (см. рис. 9.2). В этом случае перемычка CS не устанавли­вается, а адрес устройства задается перемычками, состав которых варьируется. В принципе, достаточно лишь указать устройству его номер (0/1), но в устрой­ствах, разработанных до стандарта AT А, ведущему устройству «подсказывали» о наличии ведомого (по интерфейсу АТА оно могло бы определить это само по сигналу DASP#). Ниже перечислены комбинации джамперов, которые можно уви­деть на устройствах IDE.

¦     M/S (Master/Slave — ведущее/ведомое) — переключатель адреса. Если на шине присутствует одно устройство, оно должно быть сконфигурировано как веду­щее.


Если на шине два устройства — одно должно быть ведущим, другое ведо­мым. Иногда джампер обозначается как C/D (диск С:/диск D:), но для второго канала IDE такое название некорректно. Когда появились первые IDE-диски емкостью 1 Гбайт, для преодоления барьера в 504 Мбайт некоторые модели допускали конфигурирование в виде двух устройств (0 и 1) половинной емкости. В таком режиме на их ленточный кабель IDE второе физическое*устройство подключать нельзя.

¦     SP (Slave Present), DSP (Drive Slave Present), Master but Slave is not ATA-compatible или Master but Slave uses only PDIAG-signal — устанавливается на ведущем устрой­стве для указания на присутствие ведомого. Если переключатель установлен, а ведомое устройство не подключено, POST даст сообщение об ошибке. Джам­пер применяется для дисков, не использующих сигнал DASP*.

¦     Single Drive — джампер, устанавливаемый на устройстве, если оно единственное на шине (встречается на дисках Western Digital). Устройство будет ведущим.

¦     ACT (Drive Active) — джампер, соединяющий линию DASP* с формировате­лем сигнала активности устройства. Устанавливается на устройстве 0, встре­чается редко.

¦     HSP — джампер, заземляющий линию DASP* (положение, взаимоисключающее ACT). Устанавливается на устройстве 1 для сигнализации о его присутствии (встречается редко).

Для полностью ATА-совместимых дисков правильно сконфигурированные устрой­ства определяются автоматически. Современные контроллеры АТА позволяют подключать даже единственное устройство как ведомое —интерфейсные функции ведущего берет на себя контроллер.

9.2. Интерфейс АТА/ATAPI (IDE)_______________________________________ 389

Разобраться с джамперами старых устройств трудно, если нет документации, однако обширная база данных по разным моделям встроена в справочный файл утилиты Disk Manager. У современных устройств лишние джамперы упраздни­ли, а существующие комментируются на наклейке (шильдике).Если джамперы устанавливаются рядом с интерфейсным разъемом, вероятно, они расположены в соответствии со стандартом АТА (см. рис. 9.5).

ВНИМАНИЕ---------------------------------------------------------------------------------

Следует учитывать, что перестановка джамперов часто воспринимается устройством только по включении питания. Кроме того, установка на один ленточный кабель двух разнотипных устройств, если они не являются АТА-устройствами, часто невозможна.


Параллельный порт и PnP


Большинство современных периферийных устройств, подключаемых к 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 могут искать интересующие их устрой­ства по идентификаторам или кодам класса. Если стоит задача «переучета» установ­ленных устройств, то она решается чтением конфигурационной информации по всем функциям всех устройств всех шин — это быстрее, чем перебирать все возмож­ные сочетания идентификаторов или классов кодов. Для найденных устройств программы должны определять реальные настройки чтением регистров конфигу­рационного пространства, учитывая возможность перемещения ресурсов по всему пространству и даже между пространствами памяти и ввода-вывода.

Функции 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


•       Бит 1 — поддержка механизма №2 для доступа к конфигурационному пространству;

•       Биты 2:3=00 (резерв);

•       Бит 4 — поддержка генерации специального цикла по механизму №1;

•       Бит 5 — поддержка генерации специального цикла по механизму №2;

•       Биты 6:7=00 (резерв).

В регистрах ВН и BL возвращается старший и младший номер версии (BCD-циф­ры), в CL — максимальный номер шины PCI, присутствующий в системе (число шин +1, поскольку они нумеруются с нуля последовательно). В регистре EDI может возвращаться линейный адрес точки входа 32-разрядных сервисов BIOS. Этот адрес возвращается не всеми версиями BIOS (некоторые не изменяют EDI); для проверки можно при вызове обнулять EDI и проверять на нуль возвращенное значение.

¦   АХ = В102Н — поиск устройства по идентификатору. При вызове в СХ указыва­ется идентификатор устройства, в DX — идентификатор производителя, в SI —индекс (порядковый номер) устройства. При успешном возврате в ВН — номер шины, в BL[7:3] — номер устройства, BL[2:0] — номер функции. Для нахожде­ния всех устройств с указанными идентификаторами вызовы выполняют, по­следовательно инкрементируя SI от 0 до получения кода возврата 86h.

12.9. Расширения ROM BIOS__________________________________________ 497

¦     AX = B103h — поиск устройства по коду класса. При вызове в ЕСХ[23:16] указы­вается код класса, в ЕСХ[15:8] — подкласса, в ЕСХ[7:0] — интерфейс, в SI — ин­декс устройства (аналогично предыдущему). При успешном возврате в ВН —номер шины, в BL[7:3] — номер устройства, BL[2:0] — номер функции.

¦     АХ - B106h — генерация специального цикла PCI. При вызове в BL указывается номер шины, в EDX — данные специального цикла.

¦     АХ = В108h — чтение байта конфигурационного пространства устройства PCI. При вызове в ВН — номер шины, в BL[7:3] — номер устройства, BL[2:0] — номер функции, в DI — номер регистра (О-FFh).


При успешном возврате в CL — счи­танный байт.

¦     АХ = B109h — чтение слова конфигурационного пространства устройства PCI. При вызове в ВН — номер шины, в BL[7:3] — номер устройства, BL[2:0] — номер функции, в DI — номер регистра (О-FFh, четный). При успешном возврате в СХ — считанное слово.

¦     АХ = В10Ah — чтение двойного слова конфигурационного пространства устройства PCI. При вызове в ВН — номер шины, в BL[7:3] — номер устройства, BL[2:0] — номер функции, в DI — номер регистра (О-FFh, кратный 4). При ус­пешном возврате в ЕСХ — считанное двойное слово.

¦     АХ = В 10Bh — запись байта конфигурационного пространства устройства PCI. При вызове в ВН — номер шины, в BL[7:3] — номер устройства, BL[2:0] — номер функции, в DI — номер регистра (О-FFh), в CL — записываемый байт.

¦     АХ = В10СН — запись слова конфигурацгЛрнного пространства устройства PCI. При вызове в ВН — номер шины, в BL[7:3] — номер устройства, BL[2:0] — номер функции, в DI — номер регистра (О-FFh, четный), в СХ — записываемое слово.

¦     АХ = BWAh — запись двойного слова конфигурационного пространства устрой­ства PCI. При вызове в ВН — номер шины, в BL[7:3] — номер устройства, BL[2:0] — номер функции, в DI — номер регистра (О-FFh, кратный 4), в ЕСХ — записываемое двойное слово.


Питание от интерфейса, или Причины неработоспособности мыши


При подключении к СОМ-порту устройств с небольшим энергопотреблением возникает соблазн получить питание от выходных линий интерфейса. Если ли­нии управления 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

«Disable Wide». Дополнительно может потребоваться терминация старшего бай­та и относящихся к нему управляющих линий, чтобы обеспечить на них надежное пассивное состояние («висящие» входы восприимчивы к помехам). Некоторые версии встроенного микропрограммного обеспечения позволяют работать устрой­ствам и без дополнительных терминаторов. Идентификаторы всех устройств долж­ны быть в диапазоне 0-7 (по тем же соображениям, что и в предыдущем случае). Рассмотрим различные конфигурации подключения устройств к контроллеру SCSI (рис. 5.7). Контроллер может быть расположен на карте расширения, уста­навливаемой в слот PCI или ISA, или же встроен в системную плату. Устройства, подключаемые к нему, могут быть как внутренними (разного рода дисковые и лен­точные устройства), так и внешними (те же, а также сканеры и другие периферий­ные устройства). Теминаторы расставляются исходя из конкретных условий.



Рис. 5.7. Подключение устройств к карте контроллера SCSI: а, в, г— правильно;

б —неправильно

Правила подключения достаточно просты:

¦ концы кабельного шлейфа не должны висеть в воздухе (как на рис. 5.7, б);

¦     на устройствах, подключенных к концам шлейфа, должны быть включены внут­

ренние терминаторы (на рисунке обозначено как TRM=ON) или же установ­

лен внешний (рис. 5.7, г);

¦     на промежуточных устройствах терминаторы должны быть отключены (TRM=OFF).

Если контроллер SCSI смонтирован на дополнительной интерфейсной карте, то разъем, к которому подключаются внешние устройства, расположен достаточно близко к внутреннему, так что длинной линии между ними нет. В этом случае тер­минация внешнего разъема хлопот не доставляет: когда используется только внут­реннее (рис. 5.7, а) или только внешнее (рис. 5.7, г) подключение, терминатор на

138

Глава 5. ШинаSCSI

контроллере включают. Когда используется и внешнее, и внутреннее подключе­ние (рис. 5.7, в), терминатор на контроллере отключают.



Если используется внутреннее подключение, а внешние устройства подключают­ ся не все время, то приходится переключать терминатор контроллера в соответ­ствии с текущей конфигурацией. В старых контроллерах приходилось вскрывать системный блок и переставлять джамперы. В новых контроллерах вскрытия не требуется — терминаторы включаются/отключаются программно (утилитой SCSI Setup) или даже автоматически. Если по какой-либо причине переключать терминатор контроллера не хочется, можно его отключить и пользоваться внеш­ним, устанавливая его на внешний разъем (снаружи корпуса компьютера), когда внешние устройства не подключены.

Когда контроллер SCSI установлен на системной плате, он имеет только один разъем, к которому подключается кабель-шлейф. Если требуется только внутрен­нее или только внешнее подключение (рис. 5.8, а и б), то терминатор на контролле­ре включают. Если используется и внутреннее, и внешнее подключение (рис. 5.8, в), терминатор на контроллере отключают. Если используется универсальный ка­бель-шлейф с внутренними и внешним разъемами (как на рис. 5.8, в), но внешних устройств нет, то терминатор на контроллере должен быть отключен, а на внеш­нем разъеме должен быть установлен внешний терминатор.



Рис. 5.8. Подключение устройств к интегрированному контроллеру SCSI

Кабели и терминаторы могут входить в комплект адаптеров SCSI или системных плат со встроенным контроллером SCSI, а могут приобретаться отдельно. То, что входит в стандартный комплект поставки, не всегда подходит для конкретного применения. Так, например, в комплекте с системной платой CT-6BTS, имеющей контроллер Ultra-Wide SCSI, поставляется универсальный «широкий» (wide) шлейф (как показанный на рис. 5.8, в, но с меньшим количеством внутренних разъемов) и «узкий» внутренний. Для подключения только внутренних дисково­дов Wide SCSI такого комплекта недостаточно: нужен внешний терминатор! Мож-

5.1. Параллельные интерфейсы SCSI

139

но, конечно, отрезать часть шлейфа, идущую от разъема для подключения конт^ роллера к внешнему разъему, но жалко!



Контроллеры Wide SCSI обычно имеют и разъемы для подключения обычных («уз­ких», или narrow) устройств. На той же системной плате CT-6BTS кроме 68-кон­тактного разъема Wide SCSI имеется и 50-контактный — для обычных устройств. Узкий (8-разрядный) интерфейс можно рассматривать как подмножество широ­кого (16-разрядного), у которого используется только младшая половина шины данных. В простых одноканальных контроллерах (как на этой плате) контакты узкого разъема запараллелены с частью контактов широкого. При этом можно использовать смесь широких и узких устройств, для чего терминаторы на контрол­лере разделены на две половины: терминаторы младшего байта (TrmL) и старше­го байта (ТгтН) могут управляться независимо. На рис. 5.9, а и б, приведены корректные способы смешанного подключения (устройства с терминаторами на концах шлейфов подразумеваются). На рис. 5.9, в приведена некорректная схема — здесь в младшем байте и в сигналах управления окажутся три терминатора (пере­грузка передатчиков) или «висячий» конец (отражения!). Заметим, что штатными кабелями из комплекта поставки платы (именно они и изображены на рис. 5.9, в) корректно смешанное подключение выполнить нельзя.











Рис. 5.9, Подключение узких и широких устройств SCSI: а, б — правильно; в — неправильно

Если следовать вышеприведенным правилам (и не превышать разрешенную дли­ну и число подключений), то при исправном оборудовании шина SCSI будет ра­ботать надежно, как ей и полагается. Если правила нарушать, то возможны вари­анты. Есть определенные модели контроллеров и устройств, для которых мелкие «шалости» с терминаторами «сойдут с рук». Так, например, может быть прощен

140                                                                                                         Глава 5. Шина SCSI

(или почти прощен) висящий конец без терминатора (если он не очень длинный). Устройства могут работать (ОС будет загружаться, диски читаться), но, возмож­но, с не всегда заметными сбоями.Правда, если используется ОС Windows NT, то заглянув в журнал регистрации событий (Event Log), можно увидеть «букет» крас­ных фонариков, связанных с устройствами SCSI. «Пышность» этого букета будет зависеть от тяжести нарушений и «норова» используемых устройств. Есть модели, придерживающиеся «строгих правил», и при нарушении терминации устройства работать вообще не будут. Как поступать в каждом конкретном случае, наверное, дело инсталлятора — на «лишний» терминатор или кабель другой конфигурации может просто не хватить денег. Но теория, увы, такова.


Полубайтный режим ввода — Nibble Mode


Полубайтный режим предназначен для двунаправленного обмена и может работать на всех стандартных портах. Порты имеют 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

HostBusy — сигнал квитирования. Низкий уровень означает готовность к приему тетрады, высокий подтверждает прием тетрады

Высокий уровень указывает на обмен в режиме 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 мА» к СОМ-порту



Последовательные мыши — MS Mouse и PC Mouse


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

Системная поддержка последовательной мыши осуществляется только на уровне ОС (сервисы вызываются через Int ЗЗп), драйвер мыши — загружаемый или встроенный в ОС. BIOS мышь не поддерживает, даже если и пользуется ею для навигации в BIOS Setup. Еще раз подчеркнем, что для работы мыши обязательно требуется линия аппаратного прерывания — IRQ4 или IRQ3 для последовательных мышей на портах СОМ1 или COM2 соответственно.


Последовательные шины на базе I


Интерфейс последовательной шины PC, введенной фирмой Philips как простое и дешевое средство сопряжения микросхем бытовой электроники, стал фактиче­ским промышленным стандартом для устройств различного назначения. Он очень удобен для обмена небольшими объемами данных, например, для конфигурации раз­личных устройств. Спецификация шины PC определяет протокол двусторонней передачи данных по двум сигнальным линиям. Приложения этого протокола могут быть самыми разнообразными, информационная «начинка» зависит от конкретных применений. На основе интерфейса PC построены шины ACCESS.bus и SMBus, рассмотренные ниже (о работе интерфейса PC с микросхемами памяти см. п. 7.3.3).



Последовательный интерфейс Serial АТА


Параллельный интерфейс АТА исчерпал свои ресурсы пропускной способности, достигшей 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 В

<


Рис. 9.6. Разъемы Serial ATA: a — полный разъем на устройстве, б — сигнальный сегмент кабельного разъема, в — питающий сегмент кабельного разъема, г — сигнальный сегмент разъема хост-адаптера, д — разъем хоста для непосредственного подключения устройства Регистры Serial ATA Каждое устройство, подключенное к адаптеру Serial ATA, представляется тремя блоками регистров, два из которых соответствуют традиционным регистрам АТА (см. п. 9.2.1) и называются «теневыми», третий блок — новый. Привязка адре­сов блоков к адресному пространству хоста стандартом не регламентируется; для PCI-контроллера блоки задаются регистрами конфигурационного пространства и «теневые» регистры могут располагаться по стандартным адресам АТА. В блоке управляющих регистров, как и в АТА, используется лишь один (AS для чтения, DC для записи). В блоке командных регистров разрядность регистров SC, SN, CL и СН расширена до 16 бит, назначение младших байтов сохранилось. В режи­ме LBA старшие байты регистров SN, С L и СН несут биты логического адреса [24:31], [32:39] и [40:47] соответственно. В регистре D/H бит DEV игнорируется (при эмуля­ции пар устройств на одном канале бит DEV используется для выбора устройства). Из спецификации не совсем ясно, используются ли младшие биты D/H для задания бит LBA[27:24], поскольку эти же биты фигурируют в старшем байте SN. Новый блок регистров SCR (Serial ATA Status and Control registers) состоит из 16 смежных 32-разрядных регистров SCR0-SCR15, из которых пока определены лишь 3 (остальные зарезервированы). Регистр SStatus (SCR0) — регистр текущего состояния интерфейса хост адаптера (только чтение). ¦ Биты [3:0] — поле DET, подключение устройств: •       0000 — устройство не обнаружено, физической связи нет; •       0001 — устройство обнаружено, но физическая связь не установлена; •       ООП — устройство обнаружено, физическая связь установлена;

•       0100 — устройство отключено (запретом интерфейса или запуском внутрен­него теста).

9.2. Интерфейс АТА/ATAPI (IDE)_______________________________________ 393

¦   Биты [7:4] — SPD, скорость:

•       0000 — нет согласованной скорости ( устройство не подключено или связь не установлена);

•       0001 — согласована скорость 1-го поколения.

¦   Биты [11:8] — поле IPM, состояние энергопотребления интерфейса:

•       0000 — устройство не обнаружено, физической связи нет;

•       0001 — интерфейс в активном состоянии;

•       0010 — интерфейс в состоянии PARTIAL;

•       0110 — интерфейс в состоянии SLUMBER.

Остальные биты и значения полей зарезервированы.

Регистр SError (SCR1) — регистр диагностической информации, относящейся к ин­терфейсу. В регистре представлены ошибки, накапливающиеся с момента последней очистки регистра. Регистр очищается операцией сброса, отдельные биты можно сбрасывать операцией записи в регистр (единицы в позициях сбрасываемых бит).

¦   Биты [15:0] — поле ERR, ошибки, обрабатываемые обычным программным

обеспечением:

•       бит 9 — С — устойчивая неисправимая ошибка связи или нарушение целост­ности данных (может возникать при неправильном подключении, отказе или отключении устройства);

•       бит 11 — Е — внутренняя ошибка, обнаруженная хост-адаптером (если

ошибка повторяется после сброса, она может быть признаком несовмести­

мости адаптера и устройства);

•       бит 0 — I — исправленное нарушение целостности данных (не требует дей­ствий со стороны ПО, но может учитываться, например, для принятия ре­шения о снижении скорости);

•       бит 1 — М — исправленная ошибка связи (может возникать при временном отключении устройства, потере синхронизации, не требует действий со сто­роны ПО);



•       бит 10 — Р — протокольная ошибка, требует сброса интерфейса и повтора операции (в случае устойчивости может быть признаком несовместимости устройства и адаптера);

•       бит 8 — Т — не исправленное нарушение целостности данных, требует по­втора операции.

¦   Биты [31:16] — поле DIAG, используемое диагностическим ПО:

•       бит 19 — В — ошибка декодирования 10В/8В;

•       бит 21 — С — ошибка CRC на канальном уровне;

•       бит 20 — D — ошибка паритета блоков данных (Disparity);

•       бит 26 — F — неопознанный тип FIS (ошибка, обнаруженная на транспорт­ном уровне при корректном CRC-коде);

•       бит 17 — I — внутренняя ошибка физического уровня интерфейса;

394________________________________ Глава 9. Интерфейсы устройств хранения

•       бит 16 — N — сигнал готовности физического уровня менял состояние;

•       бит 22 — Н — ошибка подтверждения кадров (может возникать как следствие ошибок В, С, D);

•       бит 23 — S — ошибка последовательности состояний канального уровня;

•       бит 24 — Т — ошибка на транспортном уровне;

•       бит 18 — W — обнаружен пробуждающий сигнал Сотт Wake.

Остальные биты зарезервированы.

Регистр SControl (SCR2) — регистр управления интерфейсом (запись и чтение).

¦   Биты [3:0] — поле DET, управление обнаружением и инициализацией устройств:

•       0000 — нет действий;

•       0001 — инициализация и установление соединения (эквивалентно аппарат­ному сбросу);

•       0100 — запрет интерфейса и перевод физического уровня в режим Offline.

¦   Биты [7:4] — поле SPD, задает ограничение на скорость при согласовании со­единений:

•       0000 — нет ограничений;

•       0001 — скорость не выше 1-го поколения.

¦   Биты [11:8] — поле IPM, управление энергорежимом интерфейса:

•       0000 — нет ограничений;

•       0001 — запрет перехода в состояние PARTIAL;

•       0010 — запрет перехода в состояние SLUMBER;

•       0011 — запрет перехода в состояние PARTIAL и SLUMBER.

Остальные биты и значения полей зарезервированы.


Постоянная и полупостоянная память — ROM, PROM, EPROM


Масочные постоянные запоминающие устройства — ПЗУ или 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.



Рис. 7.18. Расположение выводов микросхем EPROM в корпусах DIP: a — DIP-24, б — DIP-28, В — DIP-32



Рис. 7.19. Расположение выводов микросхем EPROM в корпусах TSOP и PLCC: а — TSOP-32, б — PLCC-32

281

7.3. Энергонезависимая память

Таблица 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

-

<


Назначение выводов микросхем EPROM приведено в табл. 7.22. Таблица 7.22. Назначение выводов микросхем EPROM

Сигнал Назначение

СЕ#      Chip Enable — разрешение доступа. Низкий уровень разрешает обращение

к микросхеме, высокий уровень переводит микросхему в режим пониженного потребления

ОЕ# Output Enable — разрешение выходных буферов. Низкий уровень при низком уровне СЕ# разрешает чтение данных из микросхемы. У некоторых типов микросхем на этот же вывод в режиме программирования подается напряжение VPP

DQx      Data Input/Output — двунаправленные линии шины данных. Время доступа при чтении отсчитывается от установки действительного адреса или сигнала СЕ# (в зависимости от того, что происходит позднее)

Ах Address — входные линии шины адреса. Линия А9 допускает подачу высокого (12В) напряжения для чтения кода производителя (АО = 0) и устройства (АО = 1), при этом на остальные адресные линии подается логический ноль

PGM#    Programm — импульс программирования (некоторые микросхемы не имеют этого

сигнала, их программирование осуществляется по сигналу СЕ# при высоком уровне Vpp) Vpp       Программирующее напряжение питания (для некоторых типов — импульс) Vcc       Питание (+5 В)

Отметим основные свойства EPROM.

¦     Стирание информации происходит сразу для всей микросхемы под воздей­

ствием облучения и занимает несколько минут. Стертые ячейки имеют единич­

ные значения всех бит.

¦     Запись может производиться в любую часть микросхемы побайтно, в пределах

байта можно маскировать запись отдельных бит, устанавливая им единичные

значения данных.

282___________________________       Глава 7. Интерфейсы электронной памяти

¦     Защита от записи осуществляется подачей низкого (5 В) напряжения на вход Vpp в рабочем режиме (только чтение).

¦     Защита от стирания производится заклейкой окна.


Прерывания


На шине 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-порта


Обычно 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

Подключение сканера к LPT-порту эффективно, только если порт обеспечивает хотя бы двунаправленный режим (Bi-Di), поскольку основной поток — ввод. Луч­ше использовать порт ЕСР, если этот режим поддерживается сканером (или ЕРР, что маловероятно).

Подключение внешних накопителей (Iomega Zip Drive, CD-ROM и др.), адаптеров ЛВС и других симметричных устройств ввода-вывода имеет свою специфику.

В режиме SPP наряду с замедлением работы устройства заметна принципиальная

асимметрия этого режима: чтение данных происходит в два раза медленнее, чем

(весьма небыстрая) запись. Применение двунаправленного режима (Bi-Di или PS/2Туре 1) устранит эту асимметрию — скорости сравняются. Только перейдя на ЕРР или ЕСР, можно получить нормальную скорость работы. В режиме ЕРР или ЕСР подключение к LPT-порту почти не уступает по скорости подключению через ISA- контроллер. Это справедливо и при подключении устройств со стандартным ин­терфейсом шин к LPT-портам через преобразователи интерфейсов (например,LPT- IDE, LPT- SCSI, LPT- PCMCIA). Заметим, что винчестер IDE, под­ключенный через адаптер к LPT-порту, для системы может быть представлен как устройство SCSI (это логичнее с программной точки зрения).

В табл. 1.13 описано назначение выводов разъема LPT-порта в различных режи­мах и их соответствие битам регистров стандартного порта.



44

Глава 1. Параллельный интерфейс — LPT-порт

Таблица 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#

1   Символом «\» отмечены инвертированные сигналы (1 в регистре соответствует низкому уровню линии).

2   Определяется пользователем.


Применение шины USB


Благодаря своей универсальности и способности эффективно передавать разнород­ньш трафик, шина USB применяется для подключения к PC самых разнообразных устройств. Она призвана заменить традиционные порты PC — СОМ и LPT, а так­же порты игрового адаптера и интерфейса MIDI. Спецификация USB 2.0 позво­ляет говорить и о подключении традиционных «клиентов» шин АТА и SCSI, а так­же захвате части ниши применения шины FireWire. Привлекательность USB придает возможность подключения/отключения устройств на ходу и возможность их использования практически сразу, без перезагрузки ОС. Удобна и возможность подключения большого количества (до 127) устройств к одной шине, правда, при наличии хабов. Хост-контроллер интегрирован в большинство современных сие-

102^^_________________________ Глава 4. Последовательные шины USB и FireWire

темных плат. Выпускаются и карты расширения с контроллерами USB (обычно для шины PCI). Однако повсеместное применение USB сдерживается недостаточ­ной активностью разработчиков ПО (производителей оборудования): просматри­вая перечни устройств, мы видим, что для всех указывается поддержка в Win­dows 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 должен быть инициализирован — задан начальный адрес и размер пересылаемого блока памя­ти, направление и режим обмена. После инициализации канала обмен выполня­ется по инициативе ПУ.

Для интерфейса ПУ каждый канал 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), который может быть использован устройством для формирования сиг­нала аппаратного прерывания.




Рис. 6.З. Цикл обмена DMA

Диаграмма обратной пересылки (из памяти в ПУ) отличается только тем, что на месте сигнала IOR# будет сигнал MEMR#, а на месте MEMW* — сигнал IOW#. Направление обмена и параметры режима задаются программированием кон­троллера DMA.

Цикл DMA, и так довольно длинный, может быть растянут устройством с помо­щью сигнала IOCHRDY (но сократить его сигналом OWS# невозможно). Запраши­вать удлинение цикла может только адресованная память — подразумевается, что когда ПУ выставляет запрос DRQx, оно уже должно быть готово к обмену.

На 16-битной шине ISA доступно 7 каналов DMA: четыре 8-битных (номера 0-3) и три 16-битных (5-7), подключенные к первичному и вторичному контроллерам соответственно. Канал 4 используется для каскадирования (соединения контрол­леров). На 8-битном слоте доступны только четыре 8-битных канала (в XT только 3 — канал 0 требовался для регенерации памяти).

Кроме приведенного на рисунке режима одиночной передачи возможны и иные, описанные в п. 12.4.

6.1. Шины ISA, EISA и PC/104                                                                                                 159

Напомним, что по 8-битным каналам DMA за один сеанс настройки контроллера можно передавать не более 64К байт данных, начинающихся с любого адреса (но не пересекая границ страниц, см. п. 12.3.2 и 12.5). По 16-битным каналам за сеанс можно передавать не более 64К слов данных, начинающихся с четного адреса, и границы страниц иные. Используя DMA в режимах, отличных от одиночного, длительность непрерывной передачи не должна превышать 15 мкс (для обесцече­ния регенерации памяти).


Прямой доступ к памяти, эмуляция ISA DMA (PC/PCI)


Как было сказано выше, шина 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-порт, другой — около подключаемого объекта.




Рис. 11.9. Адаптер трехпроводных интерфейсов для LPT-порта

Несколько сложнее получаются адаптеры этих интерфейсов для СОМ-портов. Здесь можно программно генерировать сигналы DTR и RTS и считывать состо­яния сигналов CIS, DSR, DCD и RI. Усложнение заключается в необходимости использования преобразователей уровней сигналов RS-232C в ТТЛ (для этого вы­пускается ряд микросхем, например фирмами Maxim, Sypex), для которых требу­ется подача питания.

Для интерфейсов SPI и JTAG тоже можно использовать LPT-порт, здесь даже не требуется организация двунаправленных линий. Сигналы SCK и MOSI (SPI), TCK, TMS, ТОО и TRST (JTAG) можно подключить к любым выходным линиям порта, MISO (SPI), TDI (JTAG) — к любой входной линии. Простейший адаптер содер­жит лишь последовательные резисторы 100-150 Ом, включенные в сигнальные цепи для уменьшения «звона» и влияния кабеля на схему. Однако такая схема может надежно работать лишь при небольшой длине кабеля (20-30 см), что не всегда удобно. Более надежна и удобна схема с буферами, способными переходить в высокоимпедансное состояние (например, 74НС244 или 1556АП5). Плата с бу­фером может соединяться с ЬРТ-пор'том довольно длинным кабелем, а от нее к устройству идет короткий кабель. Программно-управляемый перевод буфера выходных сигналов в третье состояние позволяет логически отключать адаптер от программируемой схемы, что особенно удобно в процессе отладки програм­мируемых устройств. Именно так устроен популярный адаптер «ByteBlaster», применяемый для программирования конфигурируемой логики фирмы Altera и других. Адаптер вместе с ПО может обеспечивать протокол SPI (быть ведущим устройством в варианте с двухточечной топологией), JTAG и собственный прото­кол программирования устройств «Serial Passive». Схемы различных адаптеров и ПО для них можно легко найти в Сети.

Программная реализация последовательных протоколов ограничивает скорость передачи данных на уровне 50-150 Кбит/с при работе LPT-порта в стандарт­ном режиме.В режиме ЕРР или ЕСР можно достичь скорости и 1-2 Мбит/с, но

11.5. Программно-управляемая реализация последовательных интерфейсов 453

при этом адаптер несколько усложняется (поскольку в этих интерфейсах тре­буется одновременно принимать и передавать данные). Решить проблему произ­водительности, а заодно и расширить функциональные возможности позволяет использование специализированных интерфейсных адаптеров для шин PCI или ISA, выпускаемых рядом фирм. Есть и внешние устройства с интерфейса­ми USB или Ethernet. Правда, цена этих адаптеров и устройств существенно отличается от цены простого адаптера, который можно изготовить и самосто­ятельно.


Программный доступ к конфигурационному пространству и генерация специальных циклов


Поскольку конфигурационное пространство 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

Для обращения к устройству, находящемуся на ненулевой шине, используется цикл типа 1. Здесь главный мост передает адресную часть регистра CONGIG_ADDRESS на главную шину PCI, обнуляя старшие биты (31:24) и устанавливая в битах 1:0 признак типа «01» (рис. 6.9, в). Мост, опознавший номер подключаемой им шины, передает транзакцию на эту шину, декодируя поле номера устройства в позици­онный код (как это делал главный мост для своей шины) и обнуляя биты AD[1:0].

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

<


Рис. 6.9. Адресация конфигурационных циклов: а — формат регистра CONFIG_ADDRESS, б — формат адреса на шине в цикле типа 0, в — формат адреса на шине в цикле типа 1

Если конфигурационный цикл не воспринимается ни одним из устройств, мосты могут эту ситуацию отрабатывать двояко: фиксировать отсутствие устройства (сработает Master Abort) или же выполнять операции вхолостую. Однако в любом случае чтение конфигурационного регистра несуществующего устройства (функ­ции) должно возвращать значение FFFFFFFFh (это будет безопасной информа­цией, поскольку даст недопустимое значение идентификатора устройства). Если главный мост подключает несколько равноранговых шин (peer buses), то одна из них назначается условно главной, так что вышеописанная логика сохраняется. Чтобы не заботиться об изучении реальной топологии шин, для конфигурацион­ных обращений программам удобно использовать вызовы PCI BIOS, которые имеются для всех режимов процессора (оптимизировать быстродействие здесь не приходится, поскольку эти обращения выполняются не так уж и часто).

Специальный цикл генерируется при записи в CON FI G_DATA, когда в регистре CONG I G_ ADDRESS все биты [15:8] единичные, [7:0] нулевые, номер шины, на которой форми­руется цикл, задается битами [23:16]. В специальном цикле адресная информация не передается (он широковещательный), но путем задания номера шины можно управлять его распространением. Если хост генерирует специальный цикл с нуле­вым адресом шины, то на главную шину этот цикл выйдет как цикл типа 0 и всеми остальными мостами распространяться не будет. Если требуется полная широ-

204_____________________________________ Глава 6. Шины и карты расширения

ковещательность, то хост должен записать ненулевой адрес шины; тогда на глав­ную шину специальный цикл выйдет с типом 1, и все остальные мосты пропустят его на свои шины. Специальный цикл1, генерируемый ведущим устройством шины, действует только на шине этого устройства и не распространяется через мосты.


Если требуется полная широковещательность, это ведущее устройство должно генерировать специальный цикл посредством записей в регистры CONG I G_ADDRE S 5 и CONFIG_DATA, задавая ненулевой номер шины.

Для работы механизма №2в пространстве ввода-вывода зарезервированы два 8-битных порта с адресами OCF8H и OCFAh, входящие в главный мост. Этот меха­низм использует отображение конфигурационного пространства устройств PCI на область COOO-CFFF пространства ввода-вывода. Поскольку этой области (4 К портов) недостаточно для отображения конфигурационного пространства всех устройств всех шин PCI, формирование адреса выполняется весьма замыслова­тым образом. В регистре CSE (Configuration Space Enable) с адресом OCFSh биты 7:4 являются ключом разрешения отображения: при нулевом ключе область СООО-CFFFh остается нормальной частью пространства ввода-вывода, а при ненуле­вом — отображается на конфигурационное пространство. Биты [3:1] несут номер функции, к пространству которой адресуются обращения. Единичное значение бита 1 вызывает формирование специального цикла (Special Cycle Enable, SCE). При обращении к конфигурационному пространству устройств нулевой шины чтение или запись двойного слова в порт по адресу COOO-CFFCh генерирует кон­фигурационный цикл, в котором из адреса порта биты [2:7] поступают на шину AD[2:7] как индекс регистра конфигурационного пространства, а биты [11:8] деко­дируются в позиционный код выбора устройства (линии IDSEL) на линиях AD [31:16]. Номер функции на линии AD[10:8] поступает из регистра CSE, линии AD[1:0] нулевые. Для обращения к устройствам ненулевой шины служит регистр перена­правления (Forward Register) с адресом OCFAh, в который помещают номер шины (по сбросу этот регистр обнуляется). Если номер шины ненулевой, то генерирует­ся цикл типа 1 (см. рис. 6.9, в), в котором номер функции поступает из регистра CSE, младшие 4 бита номера устройства поступают с битов адреса (AD15=0), а номер шины — из регистра перенаправления (биты AD[1:0]=01 и AD[31:24]=0 формируются аппаратно).

Для генерации специального цикла по этому механизму в регистре CSE устанав­ливается ненулевой ключ, номер функции 111 и SCE=1, после чего выполняется запись по адресу порта CFOOh. В зависимости от содержимого регистра перена­правления будет сгенерирован специальный цикл типа 0 или типа 1 (см. выше).


Пропускная способность шины


Шина 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)

<
12.3. Аппаратные прерывания

457

AT и PS/2    PC/XT

Назначение

380-38F        380-38F          Синхронный адаптер SDLC/BSC #2

3AO-3AF      ЗАО-ЗА9        Синхронный адаптер BSC#1

ЗВО-ЗВВ      ЗВО-ЗВВ         Монохромный адаптер (MDA)

ЗВ4-ЗС9                               PS/2 видеосистема

3BC--3BF      3BC-3BF         Параллельный порт LPT1 платы MDA

3CO--3CF     3CO-3CF         EGA#1

3CO-3DF      3CO-3DF         VGA

3DO-3DF      3DO-3DF        CGA/EGA

ЗЕО-ЗЕ7                              COM3

3E8-3EF                               COM3

3FO-3F7       3FO-3F7          Контроллер НГМД #1

3F6-3F7                                Порты команд IDE*1

3F8-3FF        3F8-3FF          СОМ1

Каждой шине назначается своя область адресов ввода, поэтому дешифратор адре­сов, расположенный на системной плате, при чтении открывает соответствующие буферы данных, так что реально считываться будут данные только с одной шины. При записи в порты данные (и сигнал записи) могут распространяться по всем шинам компьютера. В стандартном распределении адреса Oh-OFFh отведены для устройств системной платы. При наличии (и разрешении работы) периферийных устройств на системной плате чтение по этим адресам не распространяется на шины расширения. Для современных плат со встроенной периферией и несколь­кими шинами (ISA, PCI) распределением адресов управляет BIOS через регист­ры конфигурирования чипсета.


Протокол


Все обмены (транзакции) с устройствами 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 и его системным программным обеспечением.



Протокол IEEE


Протокол 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, представляющий адрес в позиционном коде.
Адрес определяет номер той линии шины данных, которая осуществляет выбор­ку данного устройства. Устройство с нулевым адресом выбирается низким уров­нем на линии DBO# (SCSI ID-00000001), с адресом 7 - на линии DB7# (SCSI ID=10000000). Для ИУ значение идентификатора определяет приоритет устрой­ства при использовании шины; наибольший приоритет имеет устройство с боль­шим значением адреса. Понятия адрес и идентификатор часто путают, но это все­го лишь две различные формы представления одного и того же параметра. В любой момент обмен информацией по шине может происходить только между парой устройств. Операцию начинает инициатор обмена ИУ (initiator), а целевое устройство ЦУ (target) ее исполняет. ИУ выбирает ЦУ по его идентификатору. Чаще всего роли устройств фиксированы: хост-адаптер является инициатором (ИУ), а периферийное устройство — целевым (ЦУ). Возможны комбинированные устройства, выступающие в роли и ИУ, и ЦУ. В ряде случаев роли устройств меня­ются: ЦУ может, пройдя фазу арбитража, выполнить обратную выборку (Reseleci) ИУ для продолжения прерванной операции. При выполнении команды копиро­вания (Сору) ИУ дает указание ведущему устройству копирования (Copy Master) на обмен данными, который может производиться и с другим ЦУ (для которого ведущее устройство копирования выступит в роли ИУ).

Информация по шине данных передается побайтно (пословно) асинхронно, ис­пользуя механизм запросов (REQuest) и подтверждений (ACKnowledge). Каждый байт контролируется на нечетность (кроме фазы арбитража), но контроль может быть отключен. Интерфейс имеет возможность синхронной передачи данных, ускоряющей обмен (в SCSI-1 синхронного режима не было). Шина может находиться в одной из перечисленных ниже фаз. Роли источников сигналов между ИУ и ЦУ описаны в табл. 5.9.

5. Параллельные интерфейсы SCSI                                                                              130

Таблица 5.9 Источники сигналов SCSI



1   АА: источник сигнала — устройство, активное в арбитраже;



2   WA: источник сигнала — устройство — победитель в арбитраже;

3  SID: каждое устройство управляет только битом данных, соответствующим значению его SCSI ID;

* I: источник сигнала — ИУ;

5  Т: источник сигнала — ЦУ.

В фазе Bus Free шина находится в состоянии покоя — нет никаких процессов об­мена; она готова к арбитражу. Признаком является пассивное состояние линий BSY# и SEL#.

В фазе Arbitration устройство может получить право на управление шиной. Дождав­шись покоя шины (Bus Free), устройство вводит сигнал BSY# и свой идентификатор SCSI ID. Если идентификаторы выставили несколько устройств одновременно, то право на управление шиной получает устройство с наибольшим адресом, а осталь­ные устройства отключаются до следующего освобождения шины. Устройство, вы­игравшее арбитраж, вводит сигнал SEL* и переходит в фазу Selection или Reselection. В фазе Selection ИУ, выигравшее арбитраж, вводит на шину данных результат логической функции ИЛИ от пары идентификаторов — своего и ЦУ, — сопровож­дая его битом паритета. Установкой сигнала ATN# ИУ указывает, что следующей фазой будет Message OUT. ИУ снимает сигнал BSY#. Отсутствие сигнала I/O* от­личает данную фазу от Reselection. Адресованное ЦУ отвечает сигналом BSY#, если паритет корректный и на шине данных присутствует только пара идентификато­ров (его и ИУ). На некорректные значения данных устройства отвечать не долж­ны. Если за заданное время ЦУ не ответило, срабатывает тайм-аут, ИУ освобож­дает шину или вводит сигнал сброса RST#.

Фаза Reselection аналогична предыдущей, но ее вводит ЦУ. Фаза появляется в том случае, когда ЦУ на время исполнения команды отключалось от шины. По завер­шении внутренней операции это устройство, выиграв арбитраж, будет вызывать ИУ, которое ранее породило исполнение операции. ЦУ снимает сигнал BSY#, актив­ность сигнала I/O* отличает данную фазу от фазы Selection. Адресованное ИУ отве­чает сигналом BSY#, условия ответа и тайм-аут аналогичны предыдущей фазе.



5.1. Параллельные интерфейсы SCSI____________________________________ 131

В фазах Command, Data, Status и Message по шине данных передается информа­ция, фазы идентифицируются сигналами MSG#, C/D# и I/O* (табл. 5.10), которы­ми управляет ЦУ. ИУ может потребовать посылки сообщения (фаза Message OUT) введением сигнала ATN#, а ЦУ может освободить шину, сняв сигналы MSG#, C/D#, I/O* и BSY#.

Таблица 5.10. Информационные фазы SCSI

Сигнал                                       Фаза                              Направление

MSG#   C/D#     l/0#

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

Временные диаграммы асинхронного обмена приведены на рис. 5.5. Здесь переда­ча каждого байта сопровождается взаимосвязанной парой сигналов REQ#/ACK#. ИУ фиксирует принимаемые данные, получив сигнал REQ# (по отрицательному перепаду). ЦУ считает принимаемые данные действительными по отрицательно­му перепаду сигнала АСК#. Асинхронный обмен поддерживается всеми устрой­ствами для всех фаз передачи информации.



Рис. 5.5. Временные диаграммы асинхронного обмена (DI — данные от ИУ, DT — данные от ЦУ)

Фазы передачи данных Data OUT и Data IN по предварительной «договоренно­сти» устройств могут выполняться и в синхронном режиме обмена, диаграммы которого приведены на рис. 5.6. При согласовании синхронного режима опре­деляются минимальные длительности и периоды управляющих импульсов АСК# и REQ#, а также допустимое отставание подтверждений от запросов (REQ/ACK offset agreement). ЦУ передает серию данных, сопровождаемых стробами REQ# (рис. 5.6, а), в темпе, ограниченном установленными временными параметрами. ИУ фиксирует принимаемые данные по отрицательному перепаду сигнала REQ#,

132

Глава 5. Шина SCSI

но отвечать на них сигналом АСК# может с некоторым опозданием.


Как только отставание числа принятых сигналов АСК# от числа посланных REQ# достигнет оговоренного предельного значения (в данном примере — 2), ЦУ приостановит об­мен до прихода очередного подтверждения АСК#. Операция считается завершен­ной, когда число принятых подтверждений совпадет с числом посланных запро­сов. При приеме данных ЦУ механизм согласования остается тем же, но данные фиксируются по отрицательному перепаду сигнала АСК# (рис. 5.6, б).

ВНИМАНИЕ

В спецификации SCSI-1 момент возобновления передачи после устранения отставания опи­сан нечетко, в результате разработчики могли посчитать, что очередной запрос (и данные) может последовать лишь после окончания (положительного перепада) сигнала АСК#. Устрой­ство, на это рассчитанное, может терять данные: для него последний сигнал REQ# (и дан­ные) является неожиданным и выглядит как превышение согласованного смещения.



Рис. 5.6. Временные диаграммы синхронного обмена: а — передача; б— прием

Обмен при разрядности 16 бит происходит аналогично. Если в последней фазе данных используются не все байты, передатчик обязан снабдить корректным би­том паритета и неиспользуемые байты.

При описании фаз передачи данных не говорилось о временных задержках. Они определяются спецификацией так, чтобы возможный «перекос» — неодновременный приход сигналов, вызванный задержкой как в электронных схемах, так и в разных проводах кабеля, — не влиял на устойчивость протокола. В асинхронном режиме обмена на скорость передачи информации влияет и длина кабеля, поскольку изме­нения состояний участников обмена привязываются к сигналам, распространя-

5.1. Параллельные интерфейсы SCSI                                                                                    133

ющимся по кабелю с ограниченной скоростью. Если в широкой шине имеется пара кабелей (А и В, что на практике встречается редко), то в каждом из них использу­ется своя пара управляющих сигналов (REQ#/ACK# и REQB#/ACKB#), поскольку эти кабели могут иметь разную длину.



В фазе Command ЦУ запрашивает от ИУ команду. В фазе Status ЦУ делает запрос на передачу И У информации о своем состоянии. В фазах Data IN и Data OUT ЦУ делает запросы на передачу данных к ИУ и от него соответственно. Фазы Message IN и Message O UT служат для передачи сообщений. Фазу Message OUT'ЦУ вводит в ответ на условие Attention, порождаемое ИУ сигналом ATN#, когда оно нуждает­ся в посылке сообщения ЦУ. Фазу Message Ш ЦУ вводит при необходимости по­сылки сообщения ИУ.

Между фазами передачи информации сигналы BSY#, SEL#, REQ# и АСК# должны оставаться в неизменном состоянии, меняться могут только значения сигналов C/D#, I/O#, MSG# и шины данных.

Сигналы ATN# и RST# могут порождать условия Attention и Reset соответственно, причем асинхронно по отношению к фазам шины. Эти условия могут привести к изменению предопределенного порядка фаз. Сигнал ATN# вводится ИУ во время любой фазы, кроме арбитража и состояния покоя шины. Сигнал RST# вводится в любой момент любым устройством, и по условию Reset все устройства должны немедленно освободить шину. В зависимости от настройки, принятой для всех устройств конкретной системы, возможно выполнение одного из двух вариантов сброса. «Жесткий» сброс переводит устройства в состояние, принятое по включе­нию питания, сбрасывая все текущие процессы, очереди и т. п. В случае «мягкого» сброса после освобождения шины устройства пытаются завершить начатые опе­рации, сохраняя текущие значения настроек.

Каждый процесс ввода-вывода состоит из следующей последовательности фаз шины: из состояния Bus Free через фазу Arbitration переход к фазе Selection или Reselection. Далее следуют фазы передачи информации (Command, Data, Status, Message), За­вершающей фазой является Message In, в которой передается сообщение Disconnect или Command Complete, после чего шина переходит в состояние покоя Bus Free.

Архитектура SCSI обеспечивает для каждого процесса ввода-вывода сохранение набора из трех указателей (saved SCSI pointers): для команды, состояния и дан­ных.


ИУ имеет текущий набор указателей (только один), в который копируется сохраненный набор для текущего процесса. Текущие указатели указывают на оче­редной байт команды, состояния и данных, которые будут передаваться между памятью ИУ и ЦУ. Сохраненные указатели команды и состояния всегда указыва­ют на начала блоков дескрипторов команд и состояния. Сохраненный указатель данных указывает на начало блока данных до тех пор, пока ЦУ не пришлет сообще­ние Save Data Pointer. По его приему будет сохранен текущий указатель данных. Когда ЦУ отключается от шины, информация о текущем процессе ввода-вывода содержится в сохраненном наборе указателей. При возобновлении процесса ЦУ сообщением Restore Pointers может потребовать у ИУ скопировать сохраненный набор в текущий и продолжить выполнение команд данного процесса ввода-вывода.

134                                                                                                                       Глава 5. Шина SCSI

ВНИМАНИЕ-------------------------------------------------------------------------------------------------------

Поскольку указатель данных может быть модифицирован ЦУ до завершения ввода-вывода, определение реального количества переданных данных с помощью указателя дает ненадеж­ные результаты.


Протокол шины PCI


В каждой транзакции (обмене по шине) участвуют два устройства — инициатор (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 — сигнал о событиях, вызывающих изменение режима


потребления (дополнительный сигнал, введенный в PCI 2.2)

CLKRUN*      Clock running — шина работает на номинальной частоте синхронизации. Снятие сигнала означает замедление или остановку синхронизации с целью снижения потребления (для мобильных применений)

PRSNT[1,2]# Present — индикаторы присутствия платы, кодирующие запрос потребляемой мощности. На карте расширения одна или две линии индикаторов соединяются с шиной GND, что воспринимается системной платой

RST#                Reset — сброс всех регистров в начальное состояние

IDSEL              Initialization Device Select — выбор устройства в циклах конфигурационного

считывания и записи

SERR#         System Error — системная ошибка. Ошибка паритета адреса данных в специальном цикле или иная катастрофическая ошибка, обнаруженная устройством. Активизируется любым устройством PCI и вызывает NMI

REQ64*        Request 64 bit — запрос на 64-битный обмен. Сигнал вводится 64-битным

инициатором, по времени он совпадает с сигналом FRAME*. Во время окончания сброса (сигналом RST*) сигнализирует 64-битному устройству о том, что оно подключено к 64-битной шине. Если 64-б.итное устройство не обнаружит этого сигнала, оно должно переконфигурироваться на 32-битный режим, отключив буферные схемы старших байтов

АСК64*        Подтверждение 64-битного обмена. Сигнал вводится 64-битным ЦУ, опознавшим свой адрес, одновременно с DEVSEL*. Отсутствие этого подтверждения заставит инициатор выполнять обмен с 32-битной разрядностью

INTA#, INTB*, Interrupt А, В, С, D — линии запросов прерывания, чувствительность к уровню, INTC#, INTD* активный уровень — низкий, что допускает разделяемость (совместное использование)линий

CLK                 Clock — тактовая частота шины. Должна лежать в пределах 20—33 МГц,

вPCI2.1— до 66 МГц

M66EN         66MHz Enable — разрешение частоты синхронизации до 66 МГц

6.2. Шина PCI                                                                                                                                179



Сигнал        Назначение

SDONE         Snoop Done — сигнал завершенности цикла слежения для текущей транзакции. Низкий уровень указывает на незавершенность цикла слежения за когерентностью памяти и кэша. Необязательный сигнал, используется только устройствами шины с кэшируемой памятью

SBO#               Snoop Backoff — попадание текущего обращения к памяти абонента шины

в модифицированную строку кэша. Необязательный сигнал, используется только абонентами шины с кэшируемой памятью при алгоритме обратной записи

ТСК                 Test Clock — синхронизация тестового интерфейса JTAG

TDI                 Test Data Input — входные данные тестового интерфейса JTAG

TOO                Test Data Output — выходные данные тестового интерфейса JTAG

TMS                Test Mode Select — выбор режима для тестового интерфейса JTAG

TRST              Test Logic Reset — сброс тестовой логики

В каждый момент времени шиной может управлять только одно ведущее устрой­ство, получившее на это право от арбитра. Каждое ведущее устройство имеет пару сигналов — REQ# для запроса на управление шиной и GNT* для подтверждения предоставления управления шиной. Устройство может начинать транзакцию (устанавливать сигнал FRAME*) только при активном полученном сигнале GNT*. Снятие сигнала GNT* не позволяет устройству начать следующую транзакцию, а при определенных условиях (см. ниже) заставляет прекратить начатую транзак­цию. Арбитражем запросов на использование шины занимается специальный узел, входящий в чипсет системной платы. Схема приоритетов (фиксированный, циклический, комбинированный) определяется программированием арбитра.

Для адреса и данных используются общие мультиплексированные линии AD. Четы­ре мультиплексированные линии С/ВЕ[3:0] обеспечивают кодирование команд в фазе адреса и разрешения байт в фазе данных. В начале транзакции ведущее устрой­ство активизирует сигнал FRAME*, по шине AD передает целевой адрес, а по лини­ям С/ВЕ# — информацию о типе транзакции (команде).


Адресованное ЦУ отзы­вается сигналом DEVSEL*. Ведущее устройство указывает на свою готовность к обмену данными сигналом IRDY#, эта готовность может быть выставлена и раньше получения DEVSEL*. Когда к обмену данными будет готово и ЦУ, оно установит сиг­нал TRDY*. Данные по шине AD передаются только при одновременном наличии сигналов IRDY# и TRDY*. С помощью этих сигналов ведущее устройство и ЦУ со­гласуют свои скорости, вводя такты ожидания. На рис. 6.7 приведена временная диаграмма обмена, в которой и ведущее устройство, и ЦУ вводят такты ожидания. Если бы они оба ввели сигналы готовности в конце фазы адреса и не снимали их до конца обмена, то в каждом такте после фазы адреса передавались бы по 32 бита данных, что обеспечило бы выход на предельную производительность обмена.

Количество фаз данных в пакете явно не указывается, но перед последней фазой данных ведущее устройство при введенном сигнале IRDY* снимает сигнал FRAME*. В одиночных транзакциях сигнал FRAME* активен лишь один такт. Если устрой­ство не поддерживает пакетные транзакции в ведомом режиме, то оно должно по­требовать прекращения пакетной транзакции во время первой фазы данных (введя сигнал STOP* одновременно с TRDY*). В ответ на это ведущее устройство завер­шит данную транзакцию и продолжит обмен последующей транзакцией с новым

180

Глава 6. Шины и карты расширения

значением адреса. После последней фазы данных ведущее устройство снимает сиг­нал IRDY#, и шина переходит в состояние покоя (PCI Idle) — оба сигнала FRAME* и IRDY# находятся в пассивном состоянии. Инициатор может начать следующую транзакцию и без такта покоя, введя FRAME* одновременно со снятием IRDY#. Такие быстрые смежные транзакции (Fast Back-to-Back) могут быть обращены как к одному, так и к разным ЦУ. Первый тип поддерживается всеми устройствами PCI, выступающими в роли ЦУ. На поддержку второго типа (она необязательна) указы­вает бит 7 регистра состояния (см. п. 6.2.12). Инициатору разрешают (если он умеет) использовать быстрые смежные транзакции с разными устройствами (битом 9 регистра команд), только если все агенты шины допускают быстрые обращения.





Рис. 6.7. Цикл обмена на шине PCI

Шина позволяет уменьшить мощность (ток), потребляемую устройствами, ценой снижения производительности, применяя пошаговое переключение линий AD[31:0] и PAR (address/data stepping). Здесь возможны два варианта.

¦ Плавный шаг (continuous stepping) — начало формирования сигналов слабо­

точными формирователями за несколько тактов до введения сигнала-квалифи-

катора действительной информации (FRAME# в фазе адреса, IRDY# или TRDY# в фазе данных). За эти несколько тактов сигналы «доползут» до требуемого зна­чения при меньшем токе.

¦     Дискретный шаг (diskrete stepping) — нормальные формирователи срабатыва­ют не все сразу, а группами (например, побайтно), в каждом такте по группе. При этом снижаются броски тока, поскольку одновременно переключается меньше формирователей.

Устройство само может и не пользоваться этими возможностями (см. бит 7 реги­стра команд), но должно «понимать» такие циклы. Задерживая сигнал FRAME*, устройство рискует потерять право доступа к шине, если арбитр получит запрос от более приоритетного устройства.

6.2. Шина PCI______________________________________________________ 181

Протокол квитирования обеспечивает надежность обмена — ведущее устройство всегда получает информацию об отработке транзакции ЦУ. Средством повыше­ния надежности (достоверности) является применение контроля паритета: линии AD[31:0] и С/ВЕ[3:0]# и в фазе адреса, и в фазе данных защищены битом паритета PAR (количество единичных бит этих линий, включая PAR, должно быть четным). Действительное значение PAR появляется на шине с задержкой в один такт относи­тельно линий AD и С/ВЕ#. При обнаружении ошибки ЦУ вырабатывается сигнал PERR* (со сдвигом на такт после действительности бита паритета). В подсчете паритета при передаче данных учитываются все байты, включая и недействительные (отмеченные высоким уровнем сигнала С/ВЕх#). Состояние бит, даже и в недействи­тельных байтах данных, во время фазы данных должно оставаться стабильным.



Каждая транзакция на шине должна быть завершена планово или прекращена, при этом шина должна перейти в состояние покоя (сигналы FRAME* и IRDY# пассив­ны). Завершение транзакции выполняется либо по инициативе ведущего устрой­ства, либо по инициативе ПУ. Ведущее устройство может завершить транзакцию одним из следующих способов.

¦     Нормальное завершение ( Camletiori) выполняется по окончании обмена данными.

¦     Завершение по тайм-ауту (Time-out) происходит, когда во время транзакции у ведущего устройства отбирают право на управление шиной (снятием сигнала GNT#) и истекает время, указанное в его таймере Latency Timer. Это может слу­читься, если адресованное ЦУ оказалось непредвиденно медленным или за­планирована слишком длинная транзакция. Короткие транзакции (с одной - двумя фазами данных) даже в случае снятия сигнала GNT# и срабатывания таймера завершаются нормально. Транзакция отвергается (Master-Abort), когда в течение заданного времени ве­дущее устройство не получает ответа ЦУ (DEVSEL*).

Транзакция может быть прекращена по инициативе ЦУ; для этого оно может вве­сти сигнал STOP*. Возможны три типа прекращения.

¦     Повтор (Retry) — сигнал STOP* вводится при пассивном сигнале TRDY* до пер­вой фазы данных. Эта ситуация возникает, когда ЦУ из-за внутренней занято­сти не успевает выдать первые данные в положенный срок (16 тактов). Повтор является указанием ведущему устройству на необходимость нового запуска той же транзакции.

¦     Отключение (Disconnect) — сигнал STOP* вводится во время или после первой фазы данных. Если сигнал STOP* введен при активном сигнале TRDY* очеред­ной фазы данных, то эти данные передаются и на том транзакция завершается. Если сигнал STOP* введен при пассивном сигнале TRDY*, то транзакция заверша­ется без передачи данных очередной фазы. Отключение производится, когда ЦУ неспособно своевременно выдать или принять очередную порцию данных пакета.

¦     Отказ (Target-Abort) — сигнал STOP* вводится одновременно со снятием сигна­ла DEVSEL* (в предыдущих случаях во время появление сигнала STOP* сигнал DEVSEL* был активен). После этого данные уже не передаются. Отказ вводит­ся, когда ЦУ обнаруживает фатальную ошибку или иные условия, по которым оно уже никак не сможет обслужить данный запрос.

182-:________________________________________________________________ Глава 6. Шины и карты расширения

Использование трех типов прекращения вовсе не обязательно для всех ЦУ, одна­ко любое ведущее устройство должно быть готово к завершению транзакций по любой из этих причин.


Проверка конфигурирования


Тестирование последовательных портов (как и параллельных) начинают с про­верки их опознавания системой. Список адресов установленных портов обычно появляется в таблице, выводимой 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


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 Dis­covery 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


В микросхеме ROM BIOS, установленной на системной плате, поддерживаются только стандартные (по назначению и реализации) устройства. При необходимости дополнительные устройства, устанавливаемые в слоты шин расширения (ISA, PCI, PCMCIA), могут иметь микросхемы ПЗУ своей программной поддержки — Add­itional 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

Сигнатура (признак начала модуля): байт 0=55h, байт1=ААп

Длина, указанная в блоках по 512 байт

Точка входа процедуры инициализации, заканчивающейся дальним возвратом Ret Far (вызывается инструкцией Far Call во время POST).
Обычно здесь располагается трехбайтная инструкция JMP, указывающая на начало процедуры

Резерв

Указатель на структуру данных PCI (только для карт PCI), см. ниже п. 12.9.1

1Ah                 2         Указатель на структуру расширенного заголовка карт ISA PnP, см. ниже

п. 12.9.2

В традиционном заголовке присутствовали только первые 3 поля, указатели на структуры PCI и ISA PnP ввели позже. Корректным считается модуль, начина­ющийся с признака АА55Н (значения слова с учетом порядка байтов) и нулевой суммой (по модулю 256) всех байтов в объявленной области (реальная длина мо­дуля может превышать объявленную, но байт контрольной суммы, естественно, должен входить в объявленную область).

В случае обнаружения корректного модуля POST дальним вызовом (Call Far) вызывает процедуру инициализации модуля, начинающуюся с 3-го адреса заго­ловка модуля. Ответственность за ее корректность полностью ложится на разра­ботчика. Процедура может переопределять векторы прерываний, обслуживаемых BIOS. Переопределив на себя Bootstrap (Int 19h), можно получить управление при загрузке, что и используется, например, для удаленной загрузки компьютеров через локальную сеть (Remote Boot Reset). Если стандартное продолжение проце­дуры загрузки не требуется, а дополнительный модуль представляет собой( напри­мер, управляющую программу для какого-либо оборудования, вместо процедуры инициализации в ПЗУ может находиться и основная программа, не возвраща­ющая управление системной последовательности POST.

Процедура инициализации и программная поддержка устройства в ПЗУ должны быть написаны таким образом, чтобы им были безразличны абсолютные адреса,

12.9. Расширения ROM BIOS__________________________________________ 499

по которым они размещаются в пространстве памяти. На картах расширения, как правило, имеются аппаратные средства изменения базового адреса, а иногда и раз­мера ПЗУ (джамперы или программно-управляемые переключатели). Это позво­ляет бесконфликтно разместить модули ПЗУ нескольких установленных карт.


По сравнению с традиционным способом использования ПЗУ, когда оно, будучи разрешенным, постоянно присутствует в области памяти, имеется более рацио­нальный способ подключения расширений ROM BIOS, основанный на модели DDIM (Device Driver Initialization Model — модель инициализации драйвера устройств). POST определяет наличие ПЗУ по найденному заголовку и копирует его содержимое (по объявленной длине) в свободное пространство верхней памя­ти (ОЗУ), оставляя разрешенной запись в эту область. Далее в этой копии (в ОЗУ) вызывается процедура инициализации (по адресу 3). Эта процедура, написанная в соответствии с моделью DDIM, должна определить, каким образом ее запусти­ли: традиционным (в ПЗУ) или в соответствии с DDIM (в ОЗУ). Определить это она может просто — попыткой модификации области ее «тела», которая в ПЗУ, естественно, не приведет к изменению содержимого памяти. Обнаружив режим DDIM (память модифицируема), процедура выполняет все необходимые дей­ствия по инициализации. Далее она определяет, какую часть копии (начиная от начала заголовка) требуется оставить в памяти на время загрузки и регулярной работы системы, отсекая не нужное в дальнейшем тело процедуры инициализа­ции. Попутно она может в оставляемом модуле установить какие-либо парамет­ры, требуемые для работы драйвера устройства. Наконец, она модифицирует поле длины в заголовке и контрольную сумму так, чтобы фрагмент модуля оставался корректным, и дальним возвратом отдает управление тесту POST. Теперь POST снова анализирует заголовок (но уже копии в ОЗУ) и запрещает запись в область ОЗУ (страницу с размером, кратным 4 К), которую «попросила» оставить проце­дура инициализации. Далее POST, по возможности, запрещает работу (отобра­жение в область UMA) исходного модуля ПЗУ и продолжает свой путь к вызову процедуры начальной загрузки. Основное преимущество данного метода — возмож­ность более рационального использования памяти в UMA (обычные ПЗУ «висят» в ней в полном объеме, невзирая на реальные потребности).


Второе преимущество — возможность сохранения параметров, вычисляемых процедурой инициализации (она может задействовать параметры, полученные в процессе выполнения теста POST), в «замораживаемой» области памяти. Кроме того, как правило, медленные микросхемы ПЗУ на все время исполнения подменяются быстрым системным ОЗУ (не используя впрямую механизма теневой памяти). Процедура инициализа­ции ПЗУ карт ISA с моделью DDIM должна проверять окружение, в котором она работает (см. выше); безусловная работа DDIM гарантируется только для карт PGI.

Для более эффективной работы DDIM желательно использовать не только стан­дартную, но и расширенную память (за пределами первого мегабайта), в то время как POST работает в реальном режиме процессора. Решить эту проблему помога­ет режим «Big Real Mode», который поддерживают все 32-разрядные процессоры (см. п. 12.3.1). Специально для предоставления доступа ко всей памяти процеду­рами инициализации фирмы Phoenics и Intel разработали спецификацию РММ

500       Глава 12. Архитектурные компоненты 'ВМ PC-совместимого компьютера

(POST Memory Manager Specification), версия 1.01 была опубликована в конце 1997 г. Эта спецификация определяет несколько дополнительных сервисов BIOS, позволяющих выделять, находить и освобождать блоки в любой, в том числе и рас­ширенной памяти. Клиенты этого сервиса запрашивают блок памяти требуемого размера, a BIOS возвращает физический 32-разрядный адрес начала выделяемого блока (если она способна его выделить). Клиент помечает свой блок 32-битным индексом (handle), по которому его в дальнейшем можно найти функцией поиска. Анонимный блок (индекс FFFFFFFFh) поиску не поддается. Этими сервисами можно пользоваться только до начала процедуры начальной загрузки (Int 19h), работу с вентилем Gate A20 они берут на себя. Перед начальной загрузкой BIOS освобождает и обнуляет все блоки расширенной памяти, занятые с помощью этих сервисов. Сервисами РММ могут пользоваться процедуры инициализации карт расширения, атаюке процедуры BCV, описанные в заголовке ПЗУ карт PnP (см.ниже). Процедуры, на которые указывает BEV, ими пользоваться не могут, поскольку вызы­ваются после входа Bint 19h. Наличие сервисов РММ определяется по контрольной структуре, начинающейся со строки-сигнатуры $РММ и расположенной на границе параграфа в области EOOOO-FFFFOh. Программный интерфейс можно найти в вы­шеуказанном документе, который доступен на сайте http://www.phoenix.com/techs.


Разработка собственных устройств PCI


При рассмотрении протокола 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 можно снаб­дить и периферийные устройства собственной разработки. Для этого выпускается широкий ассортимент микросхем, со стороны 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


Ниже перечислены некоторые дополнения основного стандарта 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


Протокол 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

Низкий уровень — цикл записи, высокий — цикл чтения

Строб данных. Низкий уровень устанавливается в циклах передачи данных

Строб адреса. Низкий уровень устанавливается в адресных циклах

Сброс ПУ (низким уровнем)

Прерывание от ПУ

Сигнал квитирования. Низкий уровень

разрешает начало цикла (установку строба

в низкий уровень), переход в высокий —

разрешает завершение цикла (снятие строба)

Двунаправленная шина адреса/данных


Используется по усмотрению разработчика периферии

Используется по усмотрению разработчика периферии

Используется по усмотрению разработчика периферии

1 Сигналы действуют в последовательности согласования (см. ниже).

ЕРР- порт имеет расширенный набор регистров (табл. 1.5), который занимает в пространстве ввода-вывода 5-8 смежных байт.

Таблица 1.5. Регистры ЕРР-порта

Имя регистра

Смещение

Режим

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-битных операций ввода-вывода

В отличие от программно-управляемых режимов, описанных выше, внешние сиг­налы ЕРР-порта для каждого цикла обмена формируются аппаратно по одной операции записи или чтения в регистр порта. На рис. 1.3 приведена диаграмма цикла записи данных, иллюстрирующая внешний цикл обмена, вложенный в цикл записи системной шины процессора (иногда эти циклы называют связанными). Адресный цикл записи отличается от цикла данных только стробом внешнего интерфейса.

Цикл записи данных состоит из следующих фаз.

Программа выполняет цикл вывода (IOWR*) в порт 4 (ЕРР Data Port).

Адаптер устанавливает сигнал Write* (низкий уровень), и данные помещают­

ся на выходную шину LPT-порта.

При низком уровне Wait* устанавливается строб данных.

Порт ждет подтверждения от ПУ (перевода Wait* в высокий уровень).

Снимается строб данных — внешний ЕРР-цикл завершается.



Завершается процессорный цикл вывода.

ПУ устанавливает низкий уровень Wait*, указывая на возможность начала сле­

дующего цикла.



Рис. 1.3. Цикл записи данных ЕРР

Пример адресного цикла чтения приведен на рис. 1.4. Цикл чтения данных отли чается только применением другого стробирующего сигнала.

Главной отличительной чертой ЕРР является выполнение внешней передачи в< время одного процессорного цикла ввода-вывода. Это позволяет достигать высо ких скоростей обмена (0,5-2 Мбайт/с). ПУ, подключенное к параллельному пор ту ЕРР, может работать со скоростью устройства, подключаемого через слот ISA

28_________________________       Глава 1. Параллельный интерфейс — LPT-порт

Протокол блокированного квитирования (interlocked handshakes) позволяет авто­матически настраиваться на скорость обмена, доступную и хосту, и ПУ. ПУ может регулировать длительность всех фаз обмена с помощью всего лишь одного сигна­ла Wait*. Протокол автоматически подстраивается под длину кабеля — вносимые задержки приведут только к удлинению цикла. Поскольку кабели, соответству­ющие стандарту IEEE 1284 (см. выше), имеют одинаковые волновые свойства для разных линий, нарушения передачи, связанного с «состязаниями» сигналов, происходить не должно. При подключении сетевых адаптеров или внешних дис­ков к ЕРР-порту можно наблюдать непривычное явление: снижение производи­тельности по мере удлинения интерфейсного кабеля.



Рис. 1.4. Адресный цикл чтения ЕРР

Естественно, ПУ не должно «подвешивать» процессор на шинном цикле обмена. Это гарантирует механизм тайм-аутов PC, который принудительно завершает любой цикл обмена, длящийся более 15 мкс. В ряде реализаций ЕРР за тайм-аутом интерфейса следит сам адаптер — если ПУ не отвечает в течение определенного времени (5 мкс), цикл прекращается и в дополнительном (не стандартизованном) регистре состояния адаптера фиксируется ошибка.

Устройства с интерфейсом ЕРР, разработанные до принятия IEEE 1284, отлича­ются началом цикла: строб DataStb* или AddrStb* устанавливается независимо от состояния WAIT*.


Это означает, что ПУ не может задержать начало следующего цикла (хотя может растянуть его на требуемое время). Такая спецификация называется ЕРР 1.7 (предложена Xircom). Именно она применялась в контрол­лере 82360. Периферия, совместимая с IEEE 1284 ЕРР, будет нормально работать с контроллером ЕРР 1.7, но ПУ в стандарте ЕРР 1.7 может отказаться работать с контроллером ЕРР 1284.

С программной точки зрения контроллер ЕРР-порта выглядит просто (см. табл. 1.5). К трем регистрам стандартного порта, имеющим смещение О, 1 и 2 относитель­но базового адреса порта, добавлены два регистра (ЕРР Address Port n EPP Data Port), чтение и запись в которые вызывает генерацию связанных внешних циклов.

Назначение регистров стандартного порта сохранено для совместимости ЕРР-порта с ПУ и ПО, рассчитанными на применение программно-управляемого обмена. Поскольку сигналы квитирования адаптером вырабатываются аппарат-

1.3. Стандарт IEEE 1284_______________________________________________ 29

но, при записи в регистр управления CR биты О, 1 и 3, соответствующие сигналам Strobe*, AutoFeed* и Selecting должны иметь нулевые значения. Программное вмешательство могло бы нарушить последовательность квитирования. Некоторые адаптеры имеют специальные средства защиты (ЕРР Protect), при включении ко­торых программная модификация этих бит блокируется.

Использование регистра данных ЕРР позволяет осуществлять передачу блока данных с помощью одной инструкции REP INSB или REP OUTSB. Некоторые адап­теры допускают 16/32-битное обращение к регистру данных ЕРР. При этом адап­тер просто дешифрует адрес со смещением в диапазоне 4-7 как адрес регистра данных ЕРР, но процессору сообщает о разрядности 8 бит. Тогда 16- или 32-бит­ное обращение по адресу регистра данных ЕРР приведет к автоматической гене­рации двух или четырех шинных циклов по нарастающим адресам, начиная со смещения 4. Эти циклы будут выполняться быстрее, чем то же количество оди­ночных циклов. Более «продвинутые» адаптеры для адреса регистра данных ЕРР сообщают разрядность 32 бит и для них до 4 байт может быть передано за один цикл обращения процессора.


Таким образом обеспечивается производитель­ность до 2 Мбайт/с, достаточная для адаптеров локальных сетей, внешних ди­сков, стриммеров и CD-ROM. Адресные циклы ЕРР всегда выполняются только в однобайтном режиме.

Важной чертой ЕРР является то, что обращение процессора к ПУ осуществляется в реальном времени — нет буферизации. Драйвер способен отслеживать состоя­ние и подавать команды в точно известные моменты времени. Циклы чтения и за­писи могут чередоваться в произвольном порядке или идти блоками. Такой тип обмена удобен для регистро-ориентированных ПУ или ПУ, работающих в реаль­ном времени, например устройств сбора информации и управления. Этот режим пригоден и для устройств хранения данных, сетевых адаптеров, принтеров, скане­ров и т. п.

К сожалению, режим ЕРР поддерживается не всеми портами — он отсутствует, к примеру, в ряде блокнотных ПК. Так что при разработке собственных устройств ради большей совместимости с компьютерами приходится ориентироваться на режим ЕСР.