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

         

Режим ЕСР


Протокол ЕСР (Extended Capability Port — порт с расширенными возможностя­ми) был предложен Hewlett Packard и Microsoft для связи с ПУ типа принтеров или сканеров. Как и ЕРР, данный протокол обеспечивает высокопроизводитель­ный двунаправленный обмен данными хоста с ПУ. Протокол ЕСР в обоих направлениях обеспечивает два типа циклов:

¦ циклы записи и чтения данных;

¦     командные циклы записи и чтения.

Командные циклы подразделяются на два типа: передача канальных адресов и пе­редача счетчика RLC (Run-Length Count).

30

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

В отличие от ЕРР вместе с протоколом ЕСР сразу появился стандарт на программ­ную (регистровую) модель его адаптера, изложенный в документе «The IEEE 1284 Extended Capabilities Port Protocol and ISA Interface Standard» компании Microsoft. Этот документ определяет свойства протокола, не заданные стандартом IEEE 1284:

¦     компрессия данных хост-адаптером по методу RLE;

¦     буферизация FIFO для прямого и обратного каналов;

¦     применение DMA и программного ввода-вывода.

Компрессия в реальном времени по методу RLE (Run-Length Encoding) позволя­ет достичь коэффициента сжатия 64:1 при передаче растровых изображений, ко­торые имеют длинные строки повторяющихся байт. Компрессию можно исполь­зовать, только если ее поддерживают и хост, и ПУ.

Канальная адресация ЕСР применяется для адресации множества логических устройств, входящих в одно физическое. Например, в комбинированном устрой­стве факс/принтер/модем, подключаемом только к одному параллельному порту, возможен одновременный прием факса и печать на принтере. В режиме SPP, если принтер установит сигнал занятости, канал будет занят данными, пока принтер их не примет. В режиме ЕСР программный драйвер просто адресуется к другому логическому каналу того же порта.

Протокол ЕСР переопределяет сигналы SPP (табл. 1.6). Таблица 1.6. Сигналы LPT-порта в режиме ввода-вывода ЕСР




Контакт Сигнал SPP  Имя в ЕСР

HostClk

HostAck

I/O  Описание

Strobe# AutoLF*

1 14

О    Строб данных, используется в паре с PeriphAck для передачи в прямом направлении (вывод)

О    Указывает тип цикла (команда/данные) при передаче в прямом направлении. Используется как сигнал подтверждения в паре с PeriphClk для передачи в обратном направлении

17

Selectln*

1284Active

0

16

lnit#

ReverseRequest#

0

10

Ack#

PeriphClk

I

11

Busy

PeriphAck

I

12

PaperEnd

AckReverse*

I

13

Select

Xflag1

I

Высокий уровень указывает на обмен

в режиме IEEE 1284 (в режиме SPP уровень

низкий)

Запрос реверса. Низкий уровень сигнализирует о переключении канала на передачу в обратном направлении

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

Используется как сигнал подтверждения в паре с HostClk для передачи в прямом направлении. Индицирует тип команда/ данные при передаче в обратном направлении

Подтверждение реверса. Переводится

в низкий уровень в ответ на ReverseRequest*

Флаг расширяемости

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

Контакт Сигнал SPP Имя в ЕСР                     I/O  Описание

15         Error*                   PeriphRequest*1   I      Устанавливается ПУ для указания

на доступность (наличие) обратного канала передачи1

2-9        Data [0:7]      Data [0:7]                        I/O   Двунаправленный канал данных

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

Адаптер ЕСР тоже генерирует внешние протокольные сигналы квитирования аппаратно, но его работа существенно отличается от режима ЕРР.

На рис. 1.5, а приведена диаграмма двух циклов прямой передачи: за циклом дан­ных следует командный цикл. Тип цикла задается уровнем на линии HostAck: в цик­ле данных — высокий, в командном цикле — низкий. В командном цикле байт может содержать канальный адрес или счетчик RLE. Отличительным призна­ком является бит 7 (старший): если он нулевой, то биты 0-6 содержат счетчик RLE (0-127), если единичный — то канальный адрес.


На рис. 1.5, б показана пара цик­лов обратной передачи.

В отличие от диаграмм обмена ЕРР, на рис. 1.5 не приведены сигналы циклов системной шины процессора. В данном режиме обмен программы с ПУ раз­бивается на два относительно независимых процесса, которые связаны через FIFO-буфер. Обмен драйвера с FIFO-буфером может осуществляться как с ис­пользованием DMA, так и программного ввода-вывода. Обмен ПУ с буфером аппаратно выполняет адаптер ЕСР. Драйвер в режиме ЕСР не имеет информа­ции о точном состоянии процесса обмена, но обычно важно только то, завершен он или нет.

Прямая передача данных на внешнем интерфейсе состоит из следующих шагов:

1.   Хост помещает данные на шину канала и устанавливает признак цикла дан­

ных (высокий уровень) или команды (низкий уровень) на линии HostAck.

2.   Хост устанавливает низкий уровень на линии HostClk, указывая на действи­

тельность данных.

3.   ПУ отвечает установкой высокого уровня на линии PeriphAck.

4.   Хост устанавливает высокий уровень линии HostClk, и этот перепад может ис­пользоваться для фиксации данных в ПУ.

5.   ПУ устанавливает низкий уровень на линии PeriphAck для указания на готов­ность к приему следующего байта.

Поскольку передача в ЕСР происходит через FIFO-буферы, которые могут при­сутствовать на обеих сторонах интерфейса, важно понимать, на каком этапе дан­ные можно считать переданными. Данные считаются переданными на шаге 4, ког­да линия HostClk переходит в высокий уровень. В этот момент модифицируются счетчики переданных и принятых байт. В протоколе ЕСР есть условия, вызыва­ющие прекращение обмена между шагами 3 и 4. Тогда эти данные не должны рас­сматриваться как переданные.

32

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



Рис. 1.5. Передача в режиме ЕСР: а — прямая, б — обратная

Из рис. 1.5 видно и другое отличие ЕСР от ЕРР. Протокол ЕРР позволяет драйве­ру чередовать циклы прямой и обратной передачи, не запрашивая подтверждения на смену направления.


В ЕСР смена направления должна быть согласована: хост запрашивает реверс установкой ReverseRequest*, после чего он должен дождать­ся подтверждения сигналом AckReverse*. Поскольку предыдущий цикл мог вы­полняться по прямому доступу, драйвер должен дождаться завершения прямого доступа или прервать его, выгрузить буфер FIFO, определив точное значение счет­чика переданных байт, и только после этого запрашивать реверс.

Обратная передача данных состоит из следующих шагов:

1.    Хост запрашивает изменение направления канала, устанавливая низкий уро­

вень на линии ReverseRequest*.

2.    ПУ разрешает смену направления установкой низкого уровня на линии

AckReverse*.

3.    ПУ помещает данные на шину канала и устанавливает признак цикла данных

(высокий уровень) или команды (низкий уровень) на линии PeriphAck.

4.    ПУ устанавливает низкий уровень на линии PeriphClk, указывая на действи­

тельность данных.

5.    Хост отвечает установкой высокого уровня на линии HostAck.

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

6.   ПУ устанавливает высокий уровень линии PeriphClk; этот перепад может ис­пользоваться для фиксации данных хостом.

7.   Хост устанавливает низкий уровень на линии HostAck для указания на готов­ность к приему следующего байта.


Режимы и регистры ЕСР-порта


Программный интерфейс и регистры ЕСР для адаптеров IEEE 1284 определяет спецификация Microsoft. Порт ЕСР может работать в различных режимах, при­веденных в табл. 1.7, где код соответствует полю Mode регистра ECR (биты [7:5]).

Таблица 1.7. Режимы ЕСР-порта

Код    Режим

0           

SPP mode, стандартный (традиционный) режим

1            Bi-directional mode, двунаправленный порт (тип 1 для PS/2)

10         Fast Centronics, однонаправленный с использованием FIFO и DMA

11         ЕСР Parallel Port mode, собственно режим ЕСР

100     ЕРР Parallel Port mode, режим ЕРР1

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

110     Test mode, тестирование работы FIFO и прерываний

111     Configuration mode, доступ к конфигурационным регистрам

' Этот режим не входит в спецификацию Microsoft, но трактуется как ЕРР многими адаптерами портов, если в CMOS Setup установлен режим ЕСР+ЕРР.

Регистровая модель адаптера ЕСР (табл. 1.8) использует свойства архитектуры стандартной шины и адаптеров ISA, где для дешифрации адресов портов ввода-вывода задействуются только 10 младших линий шины адреса. Поэтому, напри­мер, обращения по адресам Port, Port+400h, Port+800h... будут восприниматься как обращения к адресу Port, лежащему в диапазоне 0-3FFh. Современные PC и адаптеры декодируют большее количество адресных бит, поэтому обращения по адресам 0378h и 0778Н будут адресованы двум различным регистрам. Помещение дополнительных регистров ЕСР «за спину» регистров стандартного порта (сме­щение 400-402Н) преследует две цели. Во-первых, эти адреса никогда не исполь­зовались традиционными адаптерами и их драйверами, и их применение в ЕСР не приведет к сужению доступного адресного пространства ввода-вывода. Во-вто­рых, этим обеспечивается совместимость со старыми адаптерами на уровне режи­мов 000-001 и возможность определения факта присутствия ЕСР-адаптера по­средством обращения к его расширенным регистрам.


Каждому режиму ЕСР соответствуют (и доступны) свои функциональные регис­тры. Переключение режимов осуществляется записью в регистр ECR. «Дежурны­ми» режимами, включаемыми по умолчанию, являются 000 или 001. В любом из них работает полубайтный режим ввода. Из этих режимов всегда можно переклю­читься в любой другой, но из старших режимов (010-111) переключение возмож-

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

но только в 000 или 001. Для корректной работы интерфейса перед выходом из старших режимов необходимо дождаться завершения обмена по прямому досту­пу и очистки FIFO-буфера.

В режиме 000 (SPP) порт работает как однонаправленный программно-управля­емый SPP-порт.

В режиме 001 (Bi-Di PS/2) порт работает как двунаправленный порт PS/2 типа 1. От режима 000 отличается возможностью реверса канала данных по биту CR. 5.

Режим 010 (Fast Centronics) предназначен только для высокопроизводительного вывода через FIFO-буфер с использованием DMA. Сигналы квитирования по протоколу Centronics вырабатываются аппаратно. Сигнал запроса прерывания вырабатывается по состоянию FIFO-буфера, но не по сигналу Ack# (запрос оди­ночного байта «не интересует» драйвер быстрого блочного вывода).

Режим 011 является собственно режимом ЕСР, описанным выше, Поток данных и команд, передаваемых в ПУ, помещается в FIFO-буфер через регистры ECPDFIFO и ECPAFIFO соответственно. Из FIFO они выводятся с соответствующим призна­ком цикла (состояние линии HostAck). Принимаемый поток данных от ПУ извле­кается из FIFO-буфера через регистр ECPDFIFO. Получение адреса в командном цикле от ПУ не предусматривается. Обмен с регистром ECPDFIFO может произво­диться и по каналу DMA.

Компрессия по методу RLE при передаче выполняется программно. Для передачи подряд более двух одинаковых байт данных в регистр ЕС PAFIFO записывается байт, у которого младшие 7 бит содержат счетчик RLC (значение RLC-127 соответству­ет 128 повторам), а старший бит нулевой..После этого в ECPDFIFO записывается сам байт.


Принимая эту пару байт (командный байт и байт данных), ПУ осуще­ ствляет декомпрессию. При приеме потока от ПУ адаптер ЕСР декомпрессию осуществляет аппаратно и в FIFO-буфер помещает уже декомпрессированные данные. Отсюда очевидно, что вывод данных с одновременным использованием компрессии и DMA невозможен.

Режим 100 (ЕРР) — один из способов включения режима ЕРР (если таковой под­держивается адаптером и разрешен в CMOS Setup).

Режим 110 (Test Mode) предназначен для тестирования взаимодействия FIFO и прерываний. Данные могут передаваться в регистр TFIFO и из него с помощью DMA или программным способом. На внешний интерфейс обмен не воздейству­ет. Адаптер отрабатывает операции вхолостую на максимальной скорости интер­фейса (как будто сигналы квитирования приходят без задержек). Адаптер следит за состоянием буфера и по мере необходимости вырабатывает сигналы запроса прерывания. Таким образом программа может определить максимальную пропуск­ную способность канала.

Режим 111 (Configuration mode) предназначен для доступа к конфигурационным регистрам. Выделение режима защищает адаптер и протокол от некорректных изменений конфигурации в процессе обмена.

Как уже упоминалось, каждому режиму ЕСР соответствуют свои функциональ­ные регистры (табл. 1.8).

35

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

Таблица 1.8.

Регистры ЕСР

Смещение

Имя

R/W

Режимы ЕСР1

Название

000

DR

R/W

000-001

Data Register

000

ECPAFIFO

R/W

011

ЕСР Address FIFO

001

SR

R/W

Все

Status Register

002

CR

R/W

Все

Control Register

400

SDFIFO

R/W

010

Parallel Port Data FIFO

400

ECPDFIFO

R/W

011

ECP Data FIFO

400

TFIFO

R/W

110

Test FIFO

400

ECPCFGA

R

111

Configuration Register A

401

ECPCFGB

R/W

111

Configuration Register В

402

ECR

R/W

Все

Extended Control Register

1 Регистры доступны только в данных режимах (указаны значения бит 7-5 регистра ECR).



Регистр данных DR используется для передачи данных только в программно-управляемых режимах (000 и 001).

Регистр состояния SR передает значение сигналов на соответствующих линиях (как в SPP).

Регистр управления CR имеет назначение бит, совпадающее с SPP. В режимах 010,011 запись в биты 0,1 (сигналы AutoLF* и Strobe*) игнорируется. Регистр ECPAFIFO служит для помещения информации командных циклов (канального адреса или счетчика RLE, в зависимости от бита?) в FIFO-буфер. Из буфера информация будет выдана в командном цикле вывода. Регистр SDFIFO используется для передачи данных в режиме010. Данные, запи­санные в регистр (или посланные по каналу DMA), передаются через буфер FIFO по реализованному аппаратно протоколу Centronics. При этом должно быть зада­но прямое направление передачи (бит CR. 5-0).

Регистр DFIFO используется для обмена данными в режиме 011 (ЕСР). Данные, записанные в регистр или считанные из него (или переданные по каналу DMA), передаются через буфер FIFO по протоколу ЕСР.

Регистр TFIFO обеспечивает механизм тестирования FIFO-буфера в режиме 110.

Регистр ECPCFGA позволяет считывать информацию об адаптере (идентификаци­онный код в битах [7:4]).

Регистр ECPCFGB позволят хранить любую информацию, необходимую драйверу. Запись в регистр не влияет на работу порта.

Регистр ECR — главный управляющий регистр ЕСР. Его биты имеют следующее назначение:

¦     ECR[7:5] -ЕСР MODE - задают режим ЕСР;

¦     ECR. 4 — ERRINTREN* — (Error Interrupt Disable) запрещает прерывания по сиг­налу Error* (при нулевом значении бита по отрицательному перепаду на этой линии вырабатывается запрос прерывания);

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

¦      ECR. 3 — DMAEN — (DMA Enable) разрешает обмен по каналу DMA;

¦      ECR. 2 — SERVICEINTR — (Service Interrupt) запрещает сервисные прерывания, которые вырабатываются по окончании цикла DMA (если он разрешен), по порогу заполнения/опустошения FIFO-буфера (если не используется DMA) и по ошибке переполнения буфера сверху или снизу;



¦      ECR.1 — FIFOFS — (FIFO Full Status) сигнализирует о заполнении буфера; при FIFOFS= lb буфере нет ни одного свободного байта;

¦      ECR.0 — FIFOES — (FIFO Empty Status) указывает на полное опустошение бу­фера; комбинация FIFOFS=FIFOES=1 означает ошибку работы с FIFO (пере­полнение сверху или снизу).

Когда порт находится в стандартном или двунаправленном режимах (000 или 001), первые три регистра полностью совпадают с регистрами стандартного порта. Так обеспечивается совместимость драйвера со старыми адаптерами и старых драйве­ров с новыми адаптерами.

По интерфейсу с программой ЕСР-порт напоминает ЕРР: после установки ре­жима (записи кода в регистр ECR) обмен данными с устройством сводится к чте­нию или записи в соответствующие регистры. За состоянием FIFO-буфера на­блюдают либо по регистру ECR, либо по обслуживанию сервисных прерываний от порта. Весь протокол квитирования генерируется адаптером аппаратно. Обмен данными с ЕСР-портом (кроме явного программного) возможен и по прямому доступу к памяти (каналу DMA), что эффективно при передаче больших блоков данных.


Родственные интерфейсы и преобразователи уровней


В последовательном интерфейсе далеко не всегда используют двуполярные сиг­налы RS-232C — это неудобно, хотя бы из-за необходимости использования дву-полярного питания приемопередатчиков. Сами микросхемы вышеописанных при­емопередатчиков UART работают с сигналами логики ТТЛ или КМОП; такие же сигналы используются, например, и в сервисных портах винчестеров и других устройств. Многие устройства (в том числе карманные ПК и мобильные телефо­ны) имеют внешний последовательный интерфейс с уровнями низковольтной логики. Конечно, сигналы обычной логики не имеют столь высокой помехоустой­чивости, как RS-232C, но не всегда это и требуется.

Для взаимного преобразования уровней интерфейса RS-232C и логики специаль­но выпускаются буферные микросхемы приемников (с гистерезисом) и передат­чиков двуполярного сигнала. При несоблюдении правил заземления и коммута­ции они обычно становятся первыми жертвами «пиротехнических» эффектов. Раньше их нередко устанавливали в «кроватки», что облегчало их замену. Цоко-левка популярных микросхем формирователей сигналов RS-232C приведена на рис. 2.7. Часто буферные схемы входят прямо в состав интерфейсных БИС. Это удешевляет изделие, экономит место на плате, но в случае аварии оборачивается крупными финансовыми потерями. Вывести из строя интерфейсные микросхе­мы замыканием сигнальных цепей маловероятно: ток короткого замыкания пере­датчиков обычно не превышает 20 мА.

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


2.2. Родственные интерфейсы и преобразователи уровней                                                  55

Рис. 2.7. Формирователи сигналов RS-232C: а — приемник 1489 (А — вход RS-232,

С ^ управление гистерезисом (ТТЛ), Y — выход ТТЛ); б — передатчик 1488


(А, В — входы ТТЛ, Y — выход RS-232, VDD = +12 В, VEE = -12 В); в — таблица

состояния выходов передатчика (*1 В — логическая единица)

Когда требуется большая помехоустойчивость (дальность и скорость переда­чи), применяют иные электрические варианты последовательных интерфейсов: RS-422A (V.11, Х.27), RS-423A (V.10, Х.26), RS-485. На рис. 2.8 приведены схемы соединения приемников и передатчиков, а также показаны ограничения на длину линии (L) и максимальную скорость передачи данных (V). Несимметричные линии интерфейсов RS-232C и RS-423A имеют самую низкую защищенность от синфаз­ной помехи, хотя дифференциальный вход приемника RS-423A позволяет в ка­кой-то мере исправить ситуацию. Лучшие параметры имеют интерфейсы RS-422A и RS-485, работающие на симметричных линиях связи. В них для передачи каж­дого сигнала используются дифференциальные приемопередатчики с отдельной (витой) парой проводов для каждой сигнальной цепи.





 

Рис. 2.8. Стандарты последовательных интерфейсов

56

Глава 2. Последовательный интерфейс — СОМ-порт

Интерфейсы EIA-RS-422 (ITU-T V.ll, X.27) и EIA-RS-485 (ISO 8482) используют симметричную передачу сигнала и допускают как двухточечную, так и шинную топологию соединений. В них информативной является разность потенциалов между проводниками А и В. Если на входе приемника UA-UB>0,2 В (А положи-тельнее В) — состояние «выключено» (space), UA-UB<-0,2 В (А отрицатель­нее В) — состояние «включено» (mark). Диапазон |UA-UB|<0,2 В является зоной нечувствительности (гистерезис), защищающей от воздействия помех. На выхо­дах передатчика сигналы UA и UB обычно переключаются между уровнями 0 и +5 В (КМОП) или +1 и +4 В (ТТЛ), дифференциальное выходное напряжение долж­но лежать в диапазоне 1,5-5 В. Выходное сопротивление передатчиков 100 Ом. Интерфейсы электрически совместимы между собой, хотя и имеют некоторые различия в ограничениях. Принципиальное отличие передатчиков RS-485 — воз­можность переключения в третье состояние.


Передатчики RS-422/485 совместимы с приемниками RS-423. Основные параметры интерфейсов приведены в табл. 2.3, топологию соединений иллюстрирует рис. 2.9.

Чтобы увеличить число узлов, можно повысить входное сопротивление приемни­ков, но при этом снижается допустимая скорость или максимально возможная дальность передачи. Максимальная скорость передачи на коротких расстояниях (до 10 м) ограничивается быстродействием передатчиков (достижима частота 25 МГц). На средних расстояниях ограничение определяется емкостью кабеля (1200 бит/с - 25 нФ, 9600 бит/с - 30 нФ, 115 кбит/с -250 пФ). Максимальная дальность (1200 м) ограничена сопротивлением петли постоянному току.

Таблица 2.3. Параметры интерфейсов RS-422 и RS-485

Параметр____________________________________ RS-422____________ RS-485_____________

0,2

0,2

-6,8...+6,8

-6,8...+11,8

-7...+7

-7...+12

4

12

10060

60

1 передатчик

32 (передатчиков,

+10 приемников

приемников или

их комбинаций)

1200 (100 кбит/с)

1200 (100 кбит/с)

12(10Мбит/с)

12(10Мбит/с)

На дальнем конце

На обоих концах

от передатчика

<150Ha шинуGND

<250 на шину

с потенциалом

-7...+12 Вили между

проводами А и В

Порог срабатывания, |UA-UB|,В Допустимое напряжение синфазной помехи, В1 Допустимое напряжение на входах, В1 Входное сопротивление приемника, кОм

Минимальное сопротивление нагрузки передатчика, Ом

Максимальное число узлов

Максимальная длина, м Терминаторы, R=100Ом Ток короткого замыкания, мА

1 Напряжение измеряется относительно «схемной земли» узла.

2.2. Родственные интерфейсы и преобразователи уровней

57



     А                                                          б                                                      в

Рис. 2.9. Топология интерфейсов: а — RS-422, б — RS-485 четырехпроводный, в — RS-485 двухпроводный

Интерфейс RS-485 может быть в двух версиях: двухпроводной и четырехпровод-ной.


Четырехпроводная версия (рис. 2.9, б) выделяет задающий узел (master), передатчик которого работает на приемники всех остальных. Передатчик зада­ющего узла всегда активен — переход в третье состояние ему не нужен. Передат­чики остальных ведомых (slave) узлов должны иметь тристабильные выходы, они объединяются на общей шине с приемником ведущего узла. В двухпроводной версии (рис. 2.9, в) все узлы равноправны.

В вырожденном случае — при двухточечном соединении — интерфейсы RS-485 и RS-422 эквивалентны, и третье состояние не используется.

Для определенности состояния покоя шины RS-485, когда нет активных пере­датчиков, на линию устанавливают активные терминаторы, «растягивающие» потенциалы проводов. В покое провод В должен иметь более положительный по­тенциал, чем А.

При многоточечном соединении необходимо организовать метод доступа к среде передачи. Чаще всего используют полинг (polling) — опрос готовности к переда­че, выполняемый ведущим устройством, или передачу права доступа в соответ­ствии с определенным (установленным) регламентом. Иногда используют и ме­тоды случайного доступа (аналогично Ethernet).

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

Интерфейс RS-422 часто используется для подключения периферийных устройств (например, принтеров). Интерфейс RS-485 популярен в качестве шин устройств промышленной автоматики.

Интерфейс «токовая петля» для представления сигнала использует не напря­жение, а ток в двухпроводной линии, соединяющей приемник и передатчик.

58

Глава 2. Последовательный интерфейс — СОМ-порт

Логической единице (состоянию «включено») соответствует протекание тока 20 мА, а логическому нулю — отсутствие тока.


Такое представление сигналов для вышеописанного формата асинхронной посылки позволяет обнаружить обрыв линии — приемник заметит отсутствие стоп-бита (обрыв линии действует как постоянный логический нуль).



 Рис. 2.10. Соединение «схемных земель» для интерфейсов RS-422 и RS-485

Токовая петля обычно предполагает гальваническую развязку входных цепей при­емника от схемы устройства. При этом источником тока в петле является пере­датчик (этот вариант называют активным передатчиком). Возможно и питание от приемника (активный приемник), при этом выходной ключ передатчика может быть также гальванически развязан с остальной схемой передатчика. Существу­ют упрощенные варианты без гальванической развязки, но это уже вырожденный случай интерфейса. Заметим, что интерфейс MIDI (см. п. 8.5.3) с «классической» токовой петлей несовместим.

Токовая петля с гальванической развязкой позволяет передавать сигналы на расстояния до нескольких километров, но при невысоких скоростях (выше 19 200 бит/с не используют, а на километровых расстояниях допустима скорость до 9600 бит/с и ниже). Допустимое расстояние определяется сопротивлением пары проводов и уровнем помех. Поскольку интерфейс требует пары проводов для каждого сигнала, обычно используют только два сигнала последовательного ин­терфейса (4-проводная линия). В случае двунаправленного обмена применяются только сигналы передаваемых и принимаемых данных, а для управления потоком используется программный метод XON/XOFF. Если двунаправленный обмен не требуется, применяют одну линию данных, а для управления потоком обратная линия задействуется для сигнала CTS (аппаратный протокол) или встречной ли­нии данных (программный протокол). При надлежащем ПО одной токовой пет­лей можно обеспечить двунаправленную полудуплексную связь двух устройств. При этом каждый приемник «слышит» как сигналы передатчика на противопо­ложной стороне канала, так и сигналы своего передатчика. Они расцениваются коммуникационными пакетами просто как эхо-сигнал.


Для безошибочного при­ема передатчики должны работать поочередно.

Токовая петля позволяет использовать выделенные физические линии без моде­мов, но на малых скоростях. Иногда по токовой петле подключают терминалы с интерфейсом RS-232C, если не хватает штатной длины интерфейса или требует­ся гальваническая развязка. Преобразовать сигналы RS-232C в токовую петлю несложно — на рис. 2.11 приведена простейшая схема преобразователя примени-

2.3. Асинхронный режим передачи

59

тельно к подключению терминала. Для получения двуполярного сигнала, требу­емого для входных сигналов СОМ-порта, применяется питание от интерфейса. Схема может быть усложнена для защиты оптронов от перегрузки и улучшения формы потенциальных сигналов. Допустимая скорость определяется и быстродей­ствием применяемых оптронов (скорость 9600 бит/с достигается практически на любых оптронах).



Рис. 2.11. Преобразование интерфейса RS-232C в «токовую петлю»


ROM BIOS карт ISA PnP


Для поддержки технологии PnP и расширения возможностей управления началь­ной загрузкой в спецификации PnP BIOS ввели дополнительный указатель на структуру расширенного заголовка (Expansion Header Structure). Расширенный заголовок имеет формат, приведенный в табл. 12.9. В одном ПЗУ может находить­ся несколько расширенных заголовков (это требуется для многофункциональных карт расширения), связанных в цепочку. В каждом расширенном заголовке может указываться смещение следующего заголовка относительно начала стандартного заголовка. Наличие и действительность расширенного заголовка проверяется по его сигнатуре и контрольной сумме. Сумма всех байтов расширенного заголовка, включая байт контрольной суммы, должна быть нулевой.

Таблица 12.9. Расширенный заголовок ROM BIOS карт ISA PnP

Смещение

Длина

Назначение

Oh

4 байта

Сигнатура, строка $PnP (символы ASCII)

04h

байт

Версия структуры (01 h)

05h

байт

Длина (в параграфах по 16 байт)

06h

слово

Смещение следующего заголовка (OOOOh, если нет больше)

08h

байт

Резерв(0)

09h

байт

Контрольная сумма

OAh

двойное слово

Идентификатор устройства PnP

OEh

слово

Указатель на строку идентификатора производителя (0, если нет)

10h

слово

Указатель на строку названия продукта (0, если нет)

12h

Збайт

Код типа устройства

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

Смещение  Длина                 Назначение

15h

байт

16h

слови

18h

слово

1Ah

слово

1Ch

слово

1Eh

слово

Индикаторы устройства

Вектор подключения BCV (Boot Connection Vector) — 0, если нет

Вектор отключения (Disconnect Vector) — 0, если нет

Точка входа для загрузки BEV (Bootstrap Entry Point) — 0, если нет

Резерв (0)

Вектор получения информации о статических ресурсах (Static Resource Information Vector) — Real/Protected mode (0 если нет)

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

Байт индикаторов устройства имеет следующее назначение битов:

¦     бит 7 — ПЗУ поддерживает модель инициализации устройства (Device Driver Initialization Model);

¦     бит 6 — ПЗУ может затеняться оперативной памятью;

¦     бит 5 — ПЗУ может каптироваться по чтению;

¦     бит 4 — ПЗУ требуется лишь для загрузки с данного устройства;

¦     бит 3 — резерв (0);

¦     бит 2 — является устройством загрузки (IPL-устройство);

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

¦     бит 0 — устройство вывода (дисплей).

Вектор подключения BCV (Boot Connection Vector, он же Interrupt Connection Vector) указывает смещение для процедуры, дальний вызов которой приведет к перехвату векторов прерываний первичных устройств ввода, вывода или загрузки (сервисов Int 9h, Int 10п или Int 13h соответственно), в зависимости от параметров, пере­данных в регистрах процессора. При вызове этой процедуры в регистре АХ единицы в битах 0,1 и 2 запрашивают перехват сервисов Int 9h, Int 10hилиInt 13п соот­ветственно (остальные биты нулевые), ES: DI указывает на контрольную структу­ру PnP BIOS (System BIOS PnP Installation Check Structure), BX содержит селек­тивный номер (CSN) карты ISA PnP (для других карт FFFFh); DX содержит адрес порта чтения ISA PnP (для других карт FFFFh).

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

Точка входа для загрузки BEV требуется, если устройство может использоваться в качестве загрузочного, но не обеспечивает блочных функций сервиса Int 13h. Тогда системная микросхема BIOS может дальним вызовом вызвать эту процеду­ру вместо выполнения сервиса Int 19h.


Таким образом, например, может выпол­няться удаленная загрузка ( Remote Programm Loading, RPL) по сети.

502______ Глава 12. Архитектурные компоненты IBM PC-совместимого компьютера

Вектор получения информации о статических ресурсах задает смещение процеду­ры, вызов которой выгрузит в память дескрипторы занимаемых ресурсов (в фор­матах, аналогичных структурам для ISA PnP). Адрес буфера размером не менее 1024 байт задается регистрами ES: DI при вызове данной процедуры.

Процедура инициализации, которая начинается со смещения 3 в заголовке ПЗУ, для карт PnP должна подчиняться определенным требованиям (до этой спецификации специальных требований не было), принимать параметры и сообщать код возврата.

¦     При вызове процедуры Е S: DI указывает на контрольную структуру PnP BIOS, ВХ содержит CSN карты ISA PnP (для других карт FFFFh); DX — адрес порта чтения ISA PnP (для других карт FFFFh).

¦     При исполнении процедура может переопределять любые векторы прерыва­

ний и изменять данные в BDA и Е BDA, но перед возвратом она обязана восстано­вить прежние указатели для Int 9h, Int 10h, Int 13h и все прежние значения связанных с ними переменных в BDA и EBDA.

¦     При возврате в АХ возвращаются признаки проинициализированного устройства:

•       бит 8 — устройство начальной загрузки, поддерживающее блочные функ­ции INT 13h;

•       бит 7 — устройство вывода, поддерживающее символьный вывод («телетайп­ный» режим) INT 10h;

•       бит 6 — устройство ввода, поддерживающее символьный ввод I NT 9h;

•       биты 5:4 — состояние подключения загрузочного устройства: 00 — не под­ключено, 01 — неизвестно, 10 — подключено (для устройства RPL соедине­ние установлено), 11 — резерв;

•       биты 3:2 — состояние подключения устройства вывода (аналогично преды­дущему);



•       биты 1:0 — состояние подключения устройства ввода (аналогично предыдущему).

Как видно из данного описания, расширенный заголовок и правила поведения процедуры инициализации позволяют системной BIOS более гибко пользовать­ся функциями дополнительных модулей BIOS — традиционные дополнительные модули со стороны системной BIOS были практически неуправляемыми. Заголо­вок данного вида может использоваться и картами ISA без поддержки PnP. Если эти карты будут передавать информацию о своих статических ресурсах, они ока­жут большую услугу для распределения ресурсов системой BIOS с поддержкой PnP. Таким образом, приспособить карту для работы в среде PnP можно всего лишь модификацией содержимого ее ПЗУ расширения BIOS.

Карта ISA PnP может быть установлена в разные системы, имеющие BIOS как с поддержкой PnP, так и без. Процедура инициализации должна исполняться адек­ватно обнаруженной среде: без PnP BIOS она должна работать традиционным способом, при необходимости загрузки перехватывая INT 19h, а в среде PnP BIOS она должна вести себя скромнее, лишь предоставляя системной BIOS требуемые интерфейсы и точки входа.

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


Сервисы и прерывания BIOS


Системная BIOS предоставляет ряд сервисов низкого уровня, в основном пред­назначенных для обслуживания ввода-вывода и имеющих отношения к стан­дартным аппаратным интерфейсам. Традиционные сервисы BIOS обычно вы­зываются в реальном режиме или V86 посредством инструкций программных прерываний (Int xx). Большинство сервисов может быть вызвано и через фак­тически стандартизованные точки входа (адреса в области ROM BIOS) дальни­ми вызовами процедур (CAL L f a r) с предварительным помещением в стек регис­тра флагов (сервисы построены как обработчики прерыаний). Все традиционные сервисы BIOS работают в 16-разрядном режиме процессора, и ими можно пользо­ваться в реальном режиме, V86 и малопривлекательном 16-разрядном защищен­ном режиме.

Для процессоров 386+ оптимальным по эффективности является 32-разрядный защищенный режим. Для того чтобы из этого режима можно было пользоваться сервисами BIOS (правда, не всеми) без промежуточных переключений, по ини­циативе фирмы Phoenix ввели 32-разрядные вызовы BIOS32. Адрес точки входа BIOS32 заранее не известен, но известен способ его нахождения: в диапазоне ад­ресов памяти OEOOOO-OFFFFFh на границе параграфов (младшие 4 бита адреса нулевые) ищется строка-сигнатура "_32_" (число 325F5F33H) заголовка, за кото­рой следует физический адрес точки входа. Сами сервисы вызываются дальними вызовами точки входа в сервис. Номер, параметры вызываемых функций и резуль­таты передаются на регистрах процессора.

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

12.8. Сервисы и прерывания BIOS____________________________________ 481

Внутренние прерывания:

¦ Int 00h — деление на 0;

¦      Int 01h — пошаговый режим;

¦      Int 03h — точка останова;

¦      Int 04h — переполнение;

¦      Int 06h — недопустимая команда 286+;


¦      Int 07h — вызов отсутствующего NPU.

Аппаратные прерывания:

¦      Int 02h — немаскируемое прерывание;

¦      Int 08h - таймер 8253/8254;

¦      Int 09h — клавиатура;

¦      Int 0Ah - IRQ2/9;

¦      Int 0Bh- IRQ3;

¦      Int 0Ch-IRQ4;

¦      Int 0Dh — IRQ5;

¦      Int 0Eh — IRQ6 — контроллер гибких дисков;

¦      Int 0Fh-IRQ7;

¦      Int 70h - CMOS-таймер;

¦      Int 7Ih — IRQ9 (перенаправлено на Int 0Ah);

¦      Int 72h- IRQ10;

¦      Int 73h — IRQ11;

¦      Int 74h — IRQ 12 (контроллер мыши PS/2);

¦      Int 75h — IRQ 13 — исключение сопроцессора;

¦      Int 76h — IRQ14— контроллер жестких дисков;

¦      Int 77h-IRQ15.

ПРИМЕЧАНИЕ

Прерывания Int 70h-77h имеют место только в AT.

Функции ROM BIOS (16-битные сервисы):

¦      Int 05h (FOOO:FF54h) - печать экрана;

¦      Int 10h — видеосервис;

¦      Int llh — чтение списка оборудования (слово из BDA 0040:001 0h), возвра­

щает в АХ:

•       биты 15:14 — число обнаруженных LPT-портов: 00 —0,... 11 — 3;

•       бит 13 — резерв;

•     бит 12 — обнаружен игровой адаптер;

482______ Глава 12. Архитектурные компоненты IBM PC-совместимого компьютера

•       биты 11:9 — число обнаруженных СОМ-портов: 000 —0,... 111 — 7;

•       бит 8 — наличие контроллера DMA;

•       биты 7:6 — число обнаруженных НГМД: 00 — 1,... 11 — 4;



•       биты 5:4 — активный видеорежим: 00 — резерв, 10 — 80-колоночный цвет­ной, 01 — 40-колоночный цветной, 11 — монохромный;

•       биты 3:2 — размер ОЗУ на системной плате (теперь обычно 00);

•       бит 1 — присутствие математического сопроцессора;

•       бит 0 — присутствие дисководов;

¦     Int 12h — размер непрерывной памяти;

¦     Int 13h — дисковый сервис (блочный ввод-вывод);

¦     Int 14h — обслуживание СОМ-портов;

¦     Int 15h — АТ-функции (системный сервис, функции определяются значени­

ем АН/АХ):

•       00-ОЗЬ — управление и обмен данными с кассетным магнитофоном (были когда-то и такие «стриммеры»!) на старых PC;

•       4fh — перехват клавиатуры;

•       53xxh — сервисы управления потреблением АРМ (Advanced Power Mana­gement);

•       8300h — запуск таймера, устанавливающего флаг в заданной ячейке;

•       830 lh — сброс того же таймера;

•       84h — джойстик (см. п. 8.6);

•       86h — программируемая задержка;

•       87h — перемещение блока расширенной памяти;

•       88h — получение размера расширенной памяти;

•       89h — переключение в режим V86;

•       COh — получение системной конфигурации, при успешном выполнении (CF=0, AH=0) ES:BX указывает на таблицу данных конфигурации;

•       80-82h, 85h, 90h, 91h — функции многозадачных ОС (BIOS устанавливает

заглушки);

¦     Int 16h — клавиатурный ввод-вывод;

¦     Int 17h — обслуживание LPT-портов;



¦     Int 18h — процедура восстановления при неудаче начальной загрузки (прежде - ROM-Basic);

¦     Int 19h — начальная загрузка (вызов процедуры Bootstrap);

¦     Int lAh— системное время, дата, будильник и 16-битные вызовы сервисов PCI;

¦     Int IBh — обработчик нажатия клавиш Ctrl+Break;

12.8. Сервисы и прерывания BIOS____________________________________   483

¦     Int I C h — User Timer Interrupt, процедура, вызываемая обработчиком I n t 0 8 h каждые 55 мс; BIOS устанавливает простую заглушку (IRET), но программы могут перехватывать это прерывание; на время отработки этой процедуры все аппаратные прерывания запрещены (кроме NMI).

¦     Int ЗЗп — поддержка мыши;

¦     Int 4Ah — обработчик будильника пользователя, установленного функцией

BIOS Int lAh(6); прерывание вызывается асинхронно, так что при возврате

из процедуры все регистры и флаги должны быть в том же состоянии, что и при

входе; BIOS ставит заглушку (IRET);

¦     Int 67h - EMS-функции.

Указатели на таблицы:

¦     Int   IDh — видеопараметры;

¦     Int   lEh — параметры дискет;

¦     Int   IFh — знакогенератор СGA;

¦     Int   41h — параметры HDD 0;

¦     Int   46h — параметры HDD 1;

¦     Int   43h — знакогенератор EGA.


Сетевые адаптеры


Интерфейсы локальных сетей в ПК обеспечивают сетевые адаптеры, или сетевые интерфейсные карты (Network Interface Card, NIC). Адаптеры имеют переда­ющую и принимающую части, которые в случае поддержки полного дуплекса должны быть независимы друг от друга. Задача передающей части: по получении со стороны центрального процессора (ЦП) блока данных и адреса назначения для передачи получить доступ к среде передачи, сформировать и передать кадр (добавить преамбулу, CRC-код), делая повторные попытки в случае обнаружения коллизий. Адаптер должен сообщить процессору об успехе или невозможности передачи. Приемная часть, просматривая заголовки всех кадров, проходящих в линии, «вы­уживает» из этого потока кадры, адресованные данному узлу уникальным, широ­ковещательным или групповым способом. Адаптер можно программно настроить и на «неразборчивый» режим (promiscuous mode), в котором он будет принимать все кадры без разбора. Кадры принимаются в буфер и проверяются на отсутствие ошибок (длина кадра, корректность CRC). О приеме корректных кадров уведом­ляется центральный процессор и организуется передача кадра из локального буфе­ра адаптера в системную память компьютера. Ошибочные кадры, как правило,

10.2. Сетевые адаптеры____________________________ =_______________________________ 411

игнорируются, хотя адаптер может собирать статистику их появления. На практике попадаются и адаптеры, не обнаруживающие ошибок в поврежденных кадрах. Диагностика сети с таким адаптером непроста.

Сетевые адаптеры для PC выпускаются для шин ISA, EISA, MCA, VLB, PCI, PC Card. Существуют адаптеры, подключаемые к стандартному LPT-порту PC; их пре­имущество — отсутствие потребностей в системных ресурсах (порты, прерывания и т. п.) и легкость подключения (без вскрытия компьютеров), недостаток — при обмене они значительно загружают процессор и не обеспечивают высокой скорос­ти передачи («потолок» — 10 Мбит/с). Есть адаптеры и для шины USB. Сетевые адаптеры интегрируются и в некоторые модели системных плат.


Эффективная скорость обмена данными по сети очень сильно зависит от архитек­туры сетевых адаптеров и, при прочих равных условиях, от скорости .передачи данных между локальной памятью адаптера и системной памятью компьютера, а также от возможности параллельного выполнения нескольких операций. В каче­стве «средств доставки» используются каналы прямого доступа к памяти (DMA), программный ввод-вывод (РЮ), прямое управление шиной. Стандартные 8-бит­ные каналы прямого доступа шины ISA способны развивать скорость до 2 Мбайт/с, 16-битные — до 4 Мбайт/с. Кадр максимальной длины (1514 байт) они переда­ют примерно за 1,3 или 2,6 мс соответственно. По сравнению с 12 мс, требуемыми для передачи кадра в среде Ethernet, это время относительно невелико. Однако для Fast Ethernet, где тот же кадр в среде передается за 1,2 мс, такая транспорти­ровка оказывается слишком медленной. Более высокую скорость обмена с буфе­ром адаптера обеспечивает режим программного ввода-вывода (РЮ), но он пол­ностью загружает центральный процессор на время передачи. Более эффективны интеллектуальные адаптеры с прямым управлением шиной (bus mastering) ISA/ EISA, сочетающие относительно высокую скорость (до 8 Мбайт/с ISA 16 бит и до 33 Мбайт/с EISA). Однако для скорости 100 Мбит/с производительности шины ISA уже недостаточно. На сегодняшний день широко применяются адаптеры шины PCI, где для 32-разрядного интерфейса при частоте 33 МГц пропускная способность достигает 132 Мбайт/с. Но для технологии Gigabit Ethernet и этого только-только хватает, правда, у PCI есть резервы: переход на частоту 66 МГц и разрядность 64 бит, что позволяют далеко не все системные платы. Особенно эф­фективны активные адаптеры, имеющие собственный процессор, для шины PCI. Они выполняют передачи на полной скорости PCI, практически не загружая цен­тральный процессор. Это свойство особенно важно для серверов. Параллельное выполнение операций подразумевает поддержку полного дуплекса — полную независимость принимающей и передающей частей, а также возможность одно­временного выполнения приема кадра в буфер, передачи другого кадра и обмена данными между буферной памятью адаптера и системной памятью компьютера.


На производительность адаптера для ISA/EISA влияет и объем буферной памяти: при ограниченной (по сравнению со скоростью в линии) пропускной способности шины применяют буферную память объемом до 64 Кбайт, которую делят между передатчиком и приемником либо поровну, либо с преимуществом для передат­чика. Для шины PCI при эффективных средствах доставки (интеллектуальное прямое управление шиной) для скорости 100 Мбит/с большой буфер не нужен —

412______________________________ Глава 10. Интерфейсы компьютерных сетей

достаточно по 2 Кбайт на приемник и передатчик. Однако адаптеры Gigabit Ethernet опять снабжают буфером значительного размера (256 Кбайт).

Адаптеры можно разделить на две группы — адаптеры для рабочих станций и адап­теры для серверов. Деление условно — адаптеры для рабочих станций могут иметь черты, относящиеся к серверным. Использовать простые карты в серверах не сто­ит — они могут стать узким местом сети и «пожирателями» ресурсов ЦП.

Адаптеры для рабочих станций проще и дешевле — для них не требуется (пока?) скорости выше 100 Мбит/с, полный дуплекс встречается редко, к использованию процессорного времени особо жестких требований не предъявляют. Долгие годы широко применяются адаптеры, программно совместимые с картами NE2000 — 16-битными неинтеллектуальными картами для шины ISA разработки Novell-Eagle. Совместимость с этой моделью имеют и ряд карт для шины PCI. Наиболее удобны и популярны двухскоростные карты 10/100 Мбит/с — для их подключе­ния в современных сетях легко найти оптимальное место. Карты обычно имеют колодку для установки Boot ROM, современные модели часто обеспечивают воз­можность «пробуждения» по сети (remote wake up), поддерживают интерфейс DMI и ACPI. Для этого они имеют специальный дополнительный 3-проводный интерфейс — кабель с коннектором, подключаемый к системной плате. По этому кабелю системная плата с питанием в стандарте АТХ подает дежурное напря­жение (линия +5VSB), даже когда основное питание на системную плату и все устройства не подается.


От этой линии питается «дежурная» принимающая схе­ма, которая настроена на прием кадра специфического формата (Magic Packet) no сетевому интерфейсу. По приему этого кадра сетевой адаптер через кабель подает пробуждающий сигнал РМЕ на системную плату, которая дает сигнал на включе­ние блока питания; компьютер включается и загружается ОС с поддержкой DMI. Теперь администратор может выполнить все запланированные действия, а по окончании ОС на компьютере, завершая свою работу, выключает питание.

Адаптеры для серверов должны иметь высокопроизводительную шину — сейчас используют PCI32/64 бит 33/66 МГц, раньше в серверах часто применяли шину EISA или МСА. Для серверных карт критична загрузка ЦП при обмене данными, поэтому эти карты наделяют интеллектом для прямого управления шиной и па­раллельной работы узлов адаптера. Полнодуплексные адаптеры должны поддер­живать управление потоком по 802.3х. Ряд совершенных моделей поддерживают приоритизацию трафика по 802.1р, фильтрацию многоадресного трафика, поддерж­ку ВЛС с маркированными кадрами (tagged VLAN), Fast IP, аппаратный подсчет контрольных сумм IP-пакетов. Поддержка ВЛС позволяет серверу, подключен­ному одной линией к коммутатору, быть членом нескольких ВЛС, определенных на всей локальной сети. Для повышения надежности серверные карты могут под­держивать резервирование линий (Resilient Link) — резервный адаптер и линия связи заменяют основной канал в случае его отказа. При этом резервному адап­теру присваивается МАС-адрес основного, чтобы сеть «не заметила» подмены. Резервирование линий должно поддерживаться программными драйверами, что­бы замена происходила прозрачно и для серверных приложений. «Самоизлечи­вающиеся» драйверы (Self-Healing Drivers) в случае обнаружения проблем функ-

10.2. Сетевые адаптеры______________________________________________ 413

ционирования («зависании») могут автоматически выполнить сброс и повторную инициализацию адаптера. Удаленная загрузка и пробуждение по сети серверам, как правило, не требуется.


Адаптеры (совместно с драйверами) могут поддерживать SNMP и RMON. Для серверов выпускаются и многопортовые (как правило, на 4 порта) адаптеры, конфигурируемые как для раздельного независимого исполь­зования, так и для резервирования друг друга. Такие карты позволяют экономить слоты PCI (для шины EISA проблема экономии слотов не была острой). Типовая скорость для серверных карт на сегодняшний день — 100 Мбит/с, производитель­ность Gigabit Ethernet может быть востребована лишь очень мощными серверами.

Адаптер может иметь один или несколько интерфейсных разъемов:

¦     BNC — коаксиальный разъем для подключения к сегменту сети 10Base2;

¦     AUI — розетка DB-15 для подключения внешних адаптеров (трансиверов)

lOBaseS, 10Base2, lOBaseT, lOBaseF, FOIRL;

¦     RJ-45 — 8-контактное гнездо для подключения кабелем «витая пара» к концен­тратору (хабу или коммутатору) lOBaseT, 100BaseTX и/или 100BaseT4;

¦     SC (пара), иногда ST — оптические разъемы для подключения к концентрато­рам 100BaseFX, lOOOBaseSX, lOOOBaseLX.

Для 10-мегабитных адаптеров характерны сочетания BNC+AUI или RJ-45+AUI, наиболее универсальные «Combo» имеют полный 10-мегабитный набор BNC/AUI/ RJ 45. Первые модели карт на 10 и 100 Мбит/с имели пару разъемов RJ-45 — каж­дый для своей скорости. При наличии нескольких разных разъемов (например, BNC и RJ-45) одновременно они не используются — адаптер не может работать в качестве повторителя. Большинство современных адаптеров имеют один разъем RJ-45 и поддерживают два стандарта — lOBaseT и 100BaseTX. Многопортовые серверные карты имеют несколько независимых адаптеров, каждый со своим интерфейсом.

Интерфейсные карты потребляют системные ресурсы компьютера.

¦     Пространство ввода-вывода — как правило, 4-32 смежных адреса из области, адресуемой 10-битным (для шины ISA) или 16-битным (EISA, PCI) адресом.

Используется для обращения к регистрам адаптера при инициализации, теку­



щем управлении, опросе состояния и передаче данных.

¦     Запрос прерывания — одна линия (IRQ3,5,7,9,10,11,12 или 15), возбуждаемая по приему кадра, адресованного данному узлу, а также по окончании передачи кадра (успешной или безуспешной из-за коллизий). Без прерываний сетевые карты работать не могут, при некорректном назначении обращения к сети «зависают».

¦     Канал прямого доступа к памяти (DMA) используется в некоторых картах

ISA/EISA; для прямого управления (bus mastering) шины ISA пригодны толь­ко 16-битные каналы 5-7.

¦     Разделяемая память (adapter RAM) адаптера — буфер для передаваемых и при­нимаемых кадров — для карт ISA обычно приписывается к области верхней памяти (UMA), лежащей в диапазоне AOOOOh-FFFFFh. Карты PCI могут рас­полагаться в любом месте адресного пространства, не занятого оперативной памятью компьютера. Разделяемую память используют не все модели карт.

414______________________________ Глава 10. Интерфейсы компьютерных сетей

¦   Постоянная память (adapter ROM) — область адресов для модулей расшире­

ния ROM BIOS, 4/8/16/32 Кбайт в диапазоне COOOO-DFFFFh. Используется для установки ПЗУ удаленной загрузки (Boot ROM) и антивирусной защиты.

Под конфигурированием адаптера подразумевается настройка на использование системных ресурсов PC и выбор среды передачи. Конфигурирование, в зависимо­сти от модели карты, может осуществляться разными способами.

¦     С помощью переключателей (джамперов), установленных на карте. Использу­

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

¦     С помощью энергонезависимой памяти конфигурации (NVRAM, EEPROM),

установленной на карте с шиной ISA. Эти карты не имеют джамперов (jumperless),

но конфигурируются вручную. Для конфигурирования требуется специальная

утилита, специфическая для конкретной модели (семейства) карт.



¦     С помощью энергонезависимой памяти конфигурации, установленной на карте с

шиной EISA или МСА, и системной памяти конфигурирования устройств (ESCD для EISA). Конфигурирование ресурсов осуществляется пользователем с по­мощью системной утилиты ECU (EISA Configuration Utility) для шины EISA.

¦     Автоматическое — PnP для шин ISA и PCI. Распределение ресурсов осуществ­ляется на этапе загрузки ОС.

Выбор среды и скорости передачи может быть ручным (программным) или автома­тическим. В ряде случаев имеет смысл делать явные назначения, чтобы избегать сюPnPизов излишней автоматизации. Эти сюPnPизы, как правило, порождаются недостаточной согласованностью адаптеров и их драйверов. При этом драйвер не может правильно распознать установленный режим и воспользоваться его преиму­ществами. Автоматическая настройка вносит дополнительные задержки в процесс инициализации (при загрузке) и не со всяким сетевым оборудованием работает корректно. Для некоторых моделей карт с интерфейсом 10Base2 (BNC-разъем) предлагается расширенный режим, увеличивающий дальность связи до 305 м про­тив штатных 185. При необходимости длинных сегментов этим режимом можно воспользоваться, но при условии, что он имеется и включен во всех картах данно­го сегмента. В утилитах конфигурирования могут предлагаться и дополнительные настройки — оптимизация для клиента или сервера, поддержка модема и некото­рые другие. Их установка должна соответствовать конкретному применению.


Шина ACCESSBus


Последовательная шина ACCESS.Bus (Accessory Bus) разрабатывалась фирмой DEC как унифицированный недорогой интерфейс взаимодействия компьютера с внешними устройствами — клавиатурой, координатными устройствами, тексто­выми устройствами (принтеры, считыватели штрих-кодов), мониторами (в плане обмена управляющей и конфигурационной информацией по каналу VESA DDC). История ACCESS.Bus начинается с 1991 г.; несколько позже в шину вели допол­нительную спецификацию для взаимодействия с внутренними устройствами, на­пример, интеллектуальными источниками питания (Smart Battery) и т. п. К внут­ренним относятся устройства системного управления SM (System Management), и в спецификации имеются точки соприкосновения с шиной SMBus, основанной на том же интерфейсе PC. Формально шина позволяет обмениваться сообщениями устройствам числом до 125 (предел принятой системы адресации). Над аппарат­ным протоколом PC в шине ACCESS.Bus имеется базовый программный протокол, с которым взаимодействуют протоколы конкретных подключенных устройств. Протоколы обеспечивают подключение/отключение устройств без перезагрузки ОС и автоматическое динамическое назначение адресов. Последняя доступная версия ACCESS.bus Specifications Version 3.0 опубликована ACCESS.bus Industry Group в 1995 г., дальнейшее описание сделано на ее основе.

На аппаратном уровне шина логически полностью соответствует шине PC со стан­дартной скоростью (до 100 Кбит/с) и 7-битной адресацией ведомых устройств. Здесь работают те же механизмы синхронизации и арбитража. Однако из всех возможных способов передачи и приема данных в ACCESS.bus основным являет­ся передача данных ведущим устройством и их прием ведомым устройством — это

428__________ Глава 11. Вспомогательные последовательные интерфейсы и шины

самый простой способ, при котором в каждой транзакции отсутствует смена на­правления передачи. Из этого следует, что для двустороннего обмена информацией все устройства должны поддерживать функции ведущего устройства (передатчи­ка) и ведомого устройства (приемника).
Для совместимости с SMBus разрешена возможность чтения данных ведущим устройством и комбинированные переда­чи через условие 5г.

По электрическим сигналам имеются две спецификации, для внешних и внутрен­них устройств соответственно.

Спецификация для внешних устройств (Off-board ACCESS.bus), являющаяся основной для этой шины, определяет использование 4-контактного экраниро­ванного модульного разъема (MOLEX SEMCONN или AMP SDL), назначение контактов которого приведено в табл. 11.2. Хост-компьютер должен обеспечивать питание 5 В с током 50-1000 мА. Каждое устройство (и кабель), характеризуется потребляемым током I (мА) и вносимой емкостью сигнальных проводов С (пФ). Предельное число подключаемых устройств ограничивается суммарной вносимой емкостью (не более 1000 пФ) и током потребления. До ограничения по адресации (125 устройств) дело практически не доходит. Максимальная суммарная длина кабеля (без повторителей) не должна превышать 10 м. По сравнению с PC в шине ток нагрузки линий SDA и SCL увеличен до б мА (выходной ток низкого уров­ня). Для улучшения формы импульсов и защиты от статического электричества устройства рекомендуется подключаться к линиям SDA и SCL через последова­тельные резисторы 51 Ом. Входы микросхем рекомендуется защищать диодами, соединенными с шинами GND и +5 В.

Таблица 11.2. Назначение контактов внешнего разъема ACCESS.bus

Контакт   Назначение                               Цвет провода

1                         

GND                                        Черный

2                          SDA                                         Зеленый

3                          +5 В (питание устройств)   Красный



4                          SCL                                         Белый

Ассоциация VESA для вывода внешней шины ACCESS.Bus на корпус мониторов предлагает иной, 5-контактный разъем ACCESS.Bus; назначение его контактов приведено в табл. 11.3.

Таблица 11.3. Разъем ACCESS.Bus (VESA)

Контакт

Назначение

1

GND

2

Ключ

3

SDA

4

+5 В (питание устройств)

5

SCL



11.1. Последовательные шины на базе I2C_______________________________ 429

Спецификация для внутренних устройств (On-board ACCESS.bus) рассчитана на меньшие токи нагрузки (350 мкА); здесь допускаются последовательные резисто­ры большего сопротивления. Вместо ограничения на вносимую емкость задаются требования к фронтам и спадам сигналов. Эта спецификация была введена толь­ко в 1995 г., она нацелена на совместимость с устройствами SMBus, и в нее введе­ны дополнительные ограничения на максимальные длительности различных фаз, соответствующие SMBus.

Базовый протокол шины ACCESS.bus 3.0 состоит из двух наборов: протокол РА для устройств с программируемым адресом (Programmable Address) и протокол FA для устройств с фиксированным адресом. В устройстве (как внешнем, так и внутреннем) может быть реализован любой из них или оба. Предыдущая версия спецификации описывала только внешние устройства РА; внутренние устройства с FA называ­ются SM-устройствами (System Management). Протокол FA практически соответ­ствует шине SMBus, описанной ниже, без «архитектурных излишеств» в виде РЕС и динамического назначения адресов. Устройства SM могут общаться с хостом по протоколу Write Word (см. ниже). Базовый протокол РА основан на передаче од­нонаправленных сообщений (см. ниже). Шина ACCESS.bus является хост-цент­рической: сообщения передаются от устройства к хосту и от хоста к устройству; исключением является попытка сброса устройства-двойника (см.


ниже). После включения питания устройства должны отвечать только на «дежурный» адрес 0110 111; в процессе конфигурирования каждому устройству назначается личный адрес. В рабочем состоянии шина позволяет обнаруживать подключение новых устройств и их конфигурировать без перезагрузки («горячее подключение»).

Сообщения передаются в виде пакетов, формат пакета приведен на рис. 11.3. Адрес назначения DestAddr воспринимается получателем аппаратно (это адрес ведомого устройства PC). Адрес источника SrcAddr позволяет получателю идентифици­ровать источник данных (и определить, куда посылать ответ). Флаг протокола Р позволяет различать назначение тела пакета: Р=0 — «полезные» данные устройства (Device Data Stream); P=l — управление/состояние (control/status). Поле Length определяет длину тела пакета (в байтах); само тело (Body) размещается в после­дующих байтах. Контрольный байт Checksum является результатом выполнения функции XOR (Исключающее ИЛИ) над всеми предшествующими байтами паке­та начиная с адреса приемника. Признаком целостности пакета является нулевой результат функции XOR от всех байтов пакета включая контрольный. Подлежат отработке только пакеты с корректным контрольным байтом. Минимальная дли­на всего пакета — 4, максимальная — формально 131 (127 байт тело и 4 байта об­рамления). Однако максимальную длину пакета ограничивает и время, разрешен­ное устройству для передачи пакета.

Каждому устройству назначается свой адрес, на который оно должно отзываться битами подтверждения при приеме сообщения. Адрес выражают однобайтным числом, причем всегда четным, поскольку в PC 7-битный адрес дополняется младшим битом RW, нулевым в ACCESS.bus. Адрес 50h всегда назначается хост-компьютеру, адрес 10h зарезервирован для хоста SM-устройств. Адрес 6Eh является

430

Глава 11. Вспомогательные последовательные интерфейсы и шины

«дежурным» адресом, на который отзываются лишь устройства с неназначенным личным адресом. Для личных адресов устройств остаются диапазоны 02-4ЕН; 52-GCh; 70-FEh — 125 адресов с некоторыми исключениями, зарезервированными для фиксированных адресов SM-устройств и мониторов.





 

Рис. 11.3. Формат пакета сообщения ACCESS.Bus

Для ACCESS.bus определено 9 протокольных сообщений (у них флаг Р=1), обяза­ тельных для реализации интерфейсных функций шины (автоконфигурирования). «Полезными» прикладными сообщениями могут обмениваться только сконфигу­рированные устройства и только после явного разрешения этого обмена.

Ниже перечислены сообщения от хоста к устройствам.

¦     Reset — сброс устройства и перевод его в режим ответа на «дежурный» адрес. Тело состоит из однобайтного кода FOh. Это же сообщение может послать и устройство, обнаружившее на шине помеху в виде устройства-двойника с тем же адресом. Послав это сообщение по своему же собственному адресу, устройство заставит двойника перейти на «дежурный» адрес.

¦     Identification Request — запрос идентификационной строки. Тело состо­

ит из однобайтного кода Flh.

¦     Assign Address — назначение устройству, имеющему совпадающую иденти­фикационную строку, нового адреса. Тело (длина 30) начинается с кода F2h, за которым следует 28-байтный идентификатор устройства, а за ним — байт но­вого адреса.

¦     Capabilities Request — запрос фрагмента информации о возможностях

устройства. В теле за кодом F3h следует 16-битный параметр — смещение

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

упрощения логики устройств параметр ограничивается значениями, обес­

печивающими чтение первого фрагмента (с нулевым смещением), следующе­

го и переспрос последнего переданного.

¦     Enable Application Report — разрешение передачи прикладных данных.

За кодом F5h следует байт кода операции: ООН — запрет, 01

¦     Presence Check — проверка наличия устройства по данному адресу. За кодом F7h следует нулевой байт (зарезервирован на будущее).

11.1. Последовательные шины на базе !2С_______________________________ 431

Далее перечислены сообщения от устройств к хосту.



¦     Attenti on —запрос на конфигурирование (устройство включилось и заверши­ло автоинициализацию). Тело состоит из однобайтного кода EOh.

¦     Identification Reply — ответ на запрос идентификационной строки. Тело

(длина 29) содержит код Elh, за которым следует 28-байтная строка иденти­

фикации.

¦     Capabilities Reply — ответ на запрос фрагмента описания возможностей.

Тело (длина 3-35) начинается с кода E3h, за которым следует 16-битное сме­щение (см. запрос) и собственно данные (0-32 байт). Хост собирает фрагмен­ты, используя смещение.

Также в спецификации определены дополнительные протокольные сообщения, используемые для управления потреблением, распределением ресурсов и иных целей (у этих сообщений также флаг Р-1).

¦     Resource Requeset — запрос ресурса (от устройства к хосту). За кодом E5h

следует байт-описатель ресурса и необходимые данные. Команда позволяет

запросить адрес в личное пользование и освободить его; запросить сообщение

о текущем времени; запросить хост о сохранении блока данных, а также о воз­

вращении его ббратно; запросить хост о сохранении питания на шине (для

окончания внутренних операций); запросить дополнительную полосу шины.

¦     Resource Grant — выделение ресурса, ответ хоста на запрос. За кодом F4h

следует описатель ресурса и необходимые данные.

¦     Application Hardware Signal—запрос устройства на генерацию высокопри­

оритетного аппаратного сигнала хост-компьютеру. За кодом AOh следует байт со следующим кодом сигнала:

•       1 — Reset — попытка аппаратного сброса компьютера;

•       2 — Halt — вызов отладчика;

•       3 — Attention — генерация сигнала внимания (аппаратное прерывание).

¦     Application Test — команда от хоста на выполнение устройством приклад­



ного теста (код Blh).

¦     Application Test Reply — сообщение устройством о результатах выполне­

ния теста. За кодом Alh следует код результата (0 — успешное выполнение, иначе — ошибка) и 0-30 байт дополнительных данных.

¦     Application Status Message — сообщение устройством об изменении сво­

его состояния (в прикладном плане). За кодом A2h следует нулевой байт, за ним байт состояния и 2 байта специфических данных. Байт состояния:

•       00 — готово;

•       01 — не готово;

•       02 — изменились свойства;

•       03 — потеряно внутреннее состояние;

•       04 — потеряны прикладные данные (может, и от переполнения).

432__________ Глава 11. Вспомогательные последовательные интерфейсы и шины

¦ Device Power Management Command — команда управления потреблением устройства. За кодом F6 следует байт кода операции:

•       00 — режим Run;

•       01 — режим Standby;

•       02 — режим Suspend;

•       03 — режим Shutdown;

•       04 — совет отключить питание;

•       05 — рестарт;

•       06 — сообщить режим потребления.

Остальные коды протокольных сообщений задаются разработчиком в соответ­ствии со спецификой устройств. Напомним, что прикладные данные передаются с флагом Р=0.

Строка идентификации устройства ACCESS.bus длиной 28 байт состоит из ряда символьных полей — байта ревизии протокола (protocol revision), 7-байтного поля ревизии модуля (module revision), 8-байтных имен производителя (vendor name) и модуля (module name), за которым следует 32-битный уникальный номер устройства (device number). Этот номер может быть либо фиксированным (уни­кальность обеспечивает производитель, что недешево), либо случайным числом, генерируемым по включению (на весь сеанс работы).


Системное ПО, распознавая устройство для подключения драйверов, не должно руководствоваться этой стро­кой — возможности устройства (Capabilities) описываются (и сообщаются) в спе­циальной структуре данных. Эта структура зависит от типа устройства.

На уникальности идентификатора и основан механизм автоконфигурирования: на запрос идентификатора по «дежурному» адресу отвечают все устройства, еще не имеющие личных адресов. Однако в ходе арбитража до конца сообщения дохо­дит только одно из этих устройств, после чего хост ему назначает личный адрес. В следующем общем опросе идентификаторов «победит» уже другое устройство и так далее, пока всем устройствам не будут назначены личные адреса (об этом хост узнает по отсутствию ответа на общий опрос). Устройство-«новичок» на шине заявит о своем появлении сообщением Attenti on, в ответ на которое хост выпол­нит вышеописанную процедуру идентификации и назначения адреса.

Спецификация ACCESS.bus определяет структуру программного обеспечения на хост-компьютере. Центральным элементом ПО является менеджер шины — ACCESS.bus Manager — программный драйвер, управляющий всеми операциями с устройствами, подключенными к шине. Этот драйвер, с одной стороны, связыва­ется с аппаратными средствами хост-контроллера через драйвер минипорта MPD; с другой стороны, к нему обращаются драйверы устройств. Прикладное ПО обра­щается либо к драйверам нужных устройств, либо к менеджеру шины (но никак не напрямую к хост-контроллеру). Менеджер шины инициализирует шину и управляет ею, определяя вновь подключенные и отключенные устройства. Он свя­зывает драйверы устройств (или прикладное ПО) с самими устройствами, прове­ряет входящие сообщения и работает как двунаправленный коммутатор данных,

11.1. Последовательные шины на базе I2C_______________________________ 433

переформатирующий и буферирующий входящие и исходящие сообщения. Драй­вер мини-порта MPD (Mini Port Driver) служит для изоляции менеджера шины от аппаратных особенностей хост-контроллера. Драйверы устройств являются двусторонними интерфейсами между прикладными программами и специфиче­скими устройствами.В спецификации ACCESS.bus описываются программные интерфейсы драйверов (Device Driver, Mini Port Driver), а также протоколы для клавиатур, указателей (Locator), мониторов, батарей и текстовых устройств.


Шина I


Шина Inter 1C Bus (шина соединения микросхем), или, кратко, PC, — синхронная последовательная шина, обеспечивающая двустороннюю передачу данных между подключенными устройствами. Шина ориентирована на 8-битные передачи. Пере­дача данных может быть как одноадресной, к выбранному устройству, так и широко­вещательной. Уровни сигналов — стандартные, совместимые с широко распро­страненной логикой ТТЛ, КМОП, N-МОП, как с традиционным питанием +5 В, так и с низковольтным (3,3 В и ниже). Микросхемы с интерфейсом PC, как пра­вило, имеют аппаратную поддержку протокольных функций. Протокол позволя­ет взаимодействовать на одной шине устройствам с различным быстродействием интерфейса. Требования к временным параметрам сигналов весьма свободные, так что на компьютерах и микроконтроллерах, не имеющих аппаратной поддержки шины PC, ее протокол может быть реализован даже чисто программно.

Шина PC используется уже давно, ее официальная версия 1.0 вышла в 1992 г. По сравнению с предшествующими (черновыми) версиями, здесь отсутствует (как запутанная и неиспользуемая) возможность программного задания адреса ведо­мого устройства. Также отсутствует низкоскоростной режим (Low speed), явля­ющийся частным случаем стандартного режима — Standard Mode (5) — со скоро­стью 0-100 Кбит/с. В версии 1.0 появились определение быстрого режима — Fast Mode (F) — со скоростью 0-400 Кбит/с и связанные с ним изменения требований к форме сигнала и фильтрации помех. Также здесь веден режим 10-битной адре­сации устройств. Версия 2.0 вышла в 1998 г., когда интерфейс PC стал фактиче-

422                        Глава 11. Вспомогательные последовательные интерфейсы и шины

ски промышленным стандартом, использующимся в большом числе различных ИС. Здесь появился новый высокоскоростной режим — High speed (Hs), — в котором скорость передачи может достигать 3,4 Мбит/с. Прежние режимы FH Алогически работают одинаково, и для них используют обобщенное обозначение F/S. В этой версии пересмотрены требования к уровням и форме сигналов с учетом высоких скоростей и возможности подключения низковольтных устройств с питанием 2 В и ниже.
В версии 2.1 (2000 г.) уточнены некоторые моменты, касающиеся времен­ных диаграмм в режиме Hs. Приведенная здесь информация основана на специ­фикации шины PC версии 2.1, доступной на сайте www.philips.com. Параметры интерфейсных сигналов приводятся в п. 11.1.4, где они сопоставляются с требова­ниями SMBus и ACCESS.Bus.

Интерфейс PC использует две сигнальные линии: данных SDA (Serial Data) и син­хронизации SCL (Serial Clock). В обменах участвуют два устройства — ведущее (master) и ведомое (slave). Ведущее и ведомое устройства могут выступать в роли и передатчика, и приемника данных. Протокол допускает наличие на шине не­скольких ведущих устройств и имеет простой механизм арбитража (разрешения коллизий).

Протокол обмена для обычных устройств F/S иллюстрирует рис. 11.1. Обе сиг­нальные линии имеют нагрузочные резисторы, «подтягивающие» их уровень к напряжению питания. На устройстве к каждой линии подключен приемник и пе­редатчик типа «открытый коллектор» («открытый сток»), у ведомого устройства передатчик на линии SCL не обязателен. Все одноименные передатчики соединя­ются по схеме «Монтажное И»: уровень в линии будет высоким, если все передат­чики пассивны, и низким, если хоть у одного передатчика выходной транзистор открыт. В покое (Idle, исходное состояние шины) все передатчики пассивны. Син­хронизацию задает ведущее устройство, но ведомое, если оно не имеет достаточ­ного быстродействия, может замедлять обмен данными.



Рис. 11.1. Протокол передачи данных I2C

Начало любой передачи — условие Start — инициируется ведущим устройством, убедившимся в том, что шина свободна (высокий уровень сигналов SCL и SDA). Условие Start (на диаграммах обозначается как S)— перевод сигнала SDA из вы­сокого в низкий при высоком уровне SCL Завершается операция переводом сиг­нала SDA из низкого уровня в высокий при высоком уровне SCL — условие Stop (обозначается как Р), также вводящееся ведущим устройством. При передаче дан­ных состояние линии SDA может изменяться только при низком уровне SCL, биты данных считаются действительными во время высокого уровня SCL Ведущее устройство может начать очередную передачу вслед за текущей, не вводя условие



11.1. Последовательные шины на базе I2C_______________________________ 423

Stop, — это называется repeated Start (повторный старт, обозначающийся S г). В про­токоле условия S и Sr почти равнозначны. Каждая посылка данных состоит из 8 бит данных, формируемых передатчиком (старший бит — MSB — передается первым), после чего передатчик на один такт освобождает линию данных для получения подтверждения. Приемник во время девятого такта формирует бит подтвержде­ния Ac k, по которому передатчик убеждается, что его «услышали». После переда­чи бита подтверждения ведомое устройство может задержать следующую посыл­ку, удерживая линию SCL на низком уровне. Ведомое устройство в режимах F/S может замедлить передачу по шине и на уровне приема каждого бита, удерживая SCL на низком уровне после его спада, сформированного передатчиком. Поэтому ведущее устройство должно генерировать сигнал SCL не «вслепую», а анализируя состояние линии SCL: сняв этот сигнал, новый импульс (открытие ключа передат­чика) оно имеет право вводить, лишь убедившись, что сигнал SCL вернулся в пас­сивное состояние (высокий уровень). В противном случае синхронизация будет потеряна. Сигнал SCL может быть растянут и другим устройством, пытающимся захватить шину в это же время. Тактовый сигнал SCL не обязательно будет равномер­ным: время его нахождения на низком уровне будет определяться максимальным временем, в котором его захочет удержать самое медленное из устройств, участву­ющих в данном обмене (даже и конфликтующих); время нахождение на высоком уровне будет определяться самым быстрым из конфликтующих ведущих устройств.

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


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

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

424__________ Глава 11. Вспомогательные последовательные интерфейсы и шины

устройству на окончание передачи — оно теперь должно освободить линии SDA и SCL, чтобы ведущее устройство смогло сформировать условие Р или S r.

На вышеописанной физической основе строится протокол обмена данными по PC. Каждое ведомое устройство имеет свой адрес, уникальный на шине. В начале любой передачи ведущее устройство после условия S или S г посылает адрес ведо­мого устройства или специальный адрес (табл. 11.1). Ведомое устройство, опо­знавшее свой адрес после условия Start, становится выбранным; оно обязано отве­тить подтверждением на адрес и последующие сигналы со стороны ведущего устройства, до получения условия Р или 5г.


В первоначальном варианте интер­ фейса разрядность адреса устройства составляла 7 бит, впоследствии был введен и режим 10-битной адресации, совместимый с 7-битной. На одной шине могут присутствовать устройства и с 7-битной, и 10-битной адресацией.

При 7-битной адресации в первом байте после S (Sr) ведущее устройство переда­ет 7 бит адреса (А[6:0] в битах [7:1]) и признак операции RW (в бите О RW=1 — чте­ние, RW=0 — запись). Адреса ведомых устройств не должны попадать в области, указанные в таблице. Диапазоны адресов устройств различных типов централи­зованно выдаются изготовителям микросхем фирмой Philips. Для микросхем па­мяти, например, 7-битный адрес содержит две части: старшие 4 бита А[б:3] несут информацию о типе устройства (EEPROM — 1010), а младшие 3 бита А[0:2] определяют номер устройства данного типа на шине. Микросхемы с интерфей­сом PC имеют три адресных входа, коммутацией которых на логические уровни 1 и 0 задается номер устройства, на который оно «отзовется», а тип устройства «за­шит» в нем самом его изготовителем.

Когда ведущее устройство является передатчиком данных, оно в первом байте передает адрес ведомого устройства, при этом RW=0. Выбранное ведомое устрой­ство отзывается подтверждением (АСК=0), после чего ведущее устройство посы­лает один или несколько байт данных, на каждый из которых ведомое устройство должно отвечать подтверждением.

Когда ведущее устройство является приемником данных, оно в первом байте пе­редает адрес ведомого устройства с RW=1. Выбранное ведомое устройство также отзывается подтверждением (АСКНЗ), после чего происходит смена направления передачи и данные уже передает ведомое устройство. Ведущее устройство под­тверждает каждый принятый байт, кроме последнего.

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



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

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

425

Таблица 11.1. Специальные адреса I2C

Биты [7:1 ]   Бит 0 (RW)   Назначение

 

0000000

0

0000 000

1

0000 001

X

0000 010

X

0000 011

X

0000 1ХХ

X

1111 1ХХ

X

1111 ОХХ

X

General call address — адрес общего вызова

Start — начало активного обмена

Адрес устройства шины CBUS (для совместимости)

Адрес для устройств иных шин

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

Код ведущего устройства режима Hs

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

Признак 10-битной адресации

Специальные коды, приведенные в табл. 11.1, трактуются следующим образом.

¦     Общий вызов является широковещательным, на него должны отвечать лишь

устройства, поддерживающие соответствующие функции (см. ниже).

¦     Байт Start предназначен для облегчения программной реализации протокола

PC (для функций ведомых устройств, не имеющих полной аппаратной реали­

зации протокола). На байт S t a r t не должно отвечать ни одно устройство. Фор­мируемый сигнал SDA (рис. 11.2) может быть использован как запрос аппарат­ного прерывания, по которому процессор «вплотную» займется обработкой сигналов PC. До получения этого байта процессор (микроконтроллер) может не отвлекаться на слежение за сигналами интерфейса.

¦     На адреса шины CBUS (трехпроводный «родственник» шины PC) и иных шин

устройства PC отвечать не должны.

¦     При использовании 10-битной адресации биты [2:1] содержат старшую часть

адреса, форматы 10-адресных посылок рассмотрены ниже.



 

Рис. 11.2. Временная диаграмма байта Start



Посылка общего вызова используется для одной из двух целей, определяемых вто­рым байтом, младший бит которого называется В. При В=0 устройства, приняв­шие общий вызов, должны считать программируемую часть своего аппаратного адреса, выполнив (второй байт 00000110Ь) или не выполнив (ОООООЮОЬ) внут­реннюю процедуру сброса. Другие значения байта устройства должны игнориро­вать. Каким образом программируется адрес, зависит от устройства (указывается в его описании). При В=1 общий вызов используется для широковещательной пере­дачи данных. В этом случае ведущее устройство в старших 7 битах второго байта сообщает свой адрес (тот же, на который оно отзывается в роли ведомого), а далее

426__________ Глава 11. Вспомогательные последовательные интерфейсы и шины

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

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

Введение 10-битной адресации стало решением проблемы дефицита адресов: при 7-битной адресации с учетом зарезервированных комбинаций остается только 112 адресов, при 10-битной доступны еще 1024 адреса. Передача данных ведущим устройством с 10-битной адресацией выглядит просто: в первом байте после S (S г) биты 2:1 несут старшие биты адреса, бит 0 — признак RW=0; второй байт несет младшие 8 бит адреса, а последующие байты — передаваемые данные.


Приемник дает подтверждения обычным способом. Прием данных ведущим устройством несколько сложнее, поскольку признак RW является явным указателем на смену направления передачи и младшую часть адреса ведущее устройство передать уже не может. Прием по 10-битному адресу ведущее устройство начинает как фиктив­ную передачу: в первом байте посылает признак 10-битной записи и 2 бита адреса, во втором байте — остаток адреса. Далее ведущее устройство выполняет условие Sr и посылает признак 10-битного чтения (RW=1) с двумя старшими битами того же адреса. Ведомый передатчик, получив те же 2 старшие бита адреса, что и до 5г, отвечает подтверждением и начинает передавать данные ведущему устройству. Этот процесс продолжается и завершается так же, как и с 7-битной адресацией. Возможны и комбинированные обмены: реальная передача ведущего устройства 10-битному устройству, за которой после Sr следует чтение того же устройства. Также возможно комбинирование (через 5г) 7- и 10-битных обращений к раз­ным устройствам. Широковещание с 10-битной адресацией выглядит так же, как и с 7-битной, но адрес ведущего устройства передается уже двумя байтами (млад­шие 8 бит адреса передаются на месте первого байта данных). Высокоскоростной режим (Hs) позволяет обмениваться данными со скоростью до 3,4 Мбит/с, причем обеспечивается обратная совместимость устройств Hs с быс­трыми и стандартными (-F/5). Для обеспечения возможности обмена на столь высокой скорости выходные и входные буферы микросхем должны переключать­ся в специальный режим работы, отличающийся параметрами формируемых и принимаемых импульсов. Сигналы высокоскоростных устройств обозначаются как SDAH и SCLH; в смешанных системах для работы в Hs они должны отделять­ся от линий SDA и SCL обычных устройств специальными мостами (поведение устройств F/S на таких частотах непредсказуемо). В режиме Hs уже нет речи о разре­шении конфликтов — арбитраж выполняется на скоростях F/S; также здесь нет

11.1. Последовательные шины на базе I2C_______________________________ 427



возможности синхронизации по каждому биту (замедления передачи ведомым устройством), а ведущим устройством устанавливаются жесткие соотношения длительности.низкого и высокого уровней сигнала SCLH (2:1). Ведомое устрой­ство может притормаживать обмен только после выдачи бит подтверждений. Для перехода в режим Hs ведущее устройство в первом байте (после 5) использует за­резервированное значение 0000 1ххх, в котором ххх несет код ведущего устройства. Во время передачи этого байта (на скорости F/S) выполняется арбитраж — если обмен одновременно пытаются начать несколько устройств, продолжать его мо­жет только выигравшее ведущее устройство. Код ведущего устройства в режиме Hs назначается при конфигурировании, а все ведущие устройства на шине в ре­жиме Hs должны иметь различные коды (код 000 зарезервирован), чем и обес­печивается завершение арбитража за время передачи первого байта. Ведущее устройство может переключиться в режим Hs, только если оно выиграло арбитраж и получило единичный бит подтверждения. В этом случае он перестраивает свои выходные и входные буферы на параметры Hs и формирует повторный старт (S г). Далее обмен логически выполняется точно так же, как и в режиме F/S, но уже на высокой скорости. Режим Hs может распространяться на несколько последующих передач, разделенных условиями S r, и завершится работа в режиме Hs по усло­вию Р, по которому буферные схемы снова вернутся к параметрам F/S.


Шина IEEE - FireWire


Стандарт для высокопроизводительной последовательной шины (High Performance Serial Bus), получивший официальное название IEEE 1394, был принят в 1995 го­ду. Целью являлось создание шины, не уступающей параллельным шинам при существенном удешевлении и повышении удобства подключения (за счет перехо­да на последовательный интерфейс). Стандарт основан на шине FireWire, исполь­зуемой Apple Computer в качестве дешевой альтернативы SCSI в компьютерах Macintosh и PowerMac. Название FireWire («огненный провод») теперь применя­ется и к реализациям IEEE 1394, оно сосуществует с кратким обозначением 1394. Другое название того же интерфейса — iLink, а иногда и Digital Link — использует­ся фирмой Sony применительно к устройствам бытовой электроники. MultiMedia Connection — имя, используемое в логотипе 1394 High Performance Serial Bus Trade Association (1394TA).

Стандарт 1394 определяет три возможные частоты передачи сигналов по кабелям: 98,304, 196,608 и 393,216 Мбит/с, которые округляют до 100, 200 и 400 Мбит/с. Частоты в стандарте обозначаются как S100, S200 и S400 соответственно. В послед­ней утвержденной ревизии стандарта, Р1394-2000, новых скоростей (S800, S1600 и S3200) еще не появилось, и сейчас 1394 сосуществует с шиной USB, для которой в спецификации USB 2.0 уже определена скорость 480 Мбит/с.

Основные свойства шины FireWire перечислены ниже.

¦. Многофункциональность. Шина обеспечивает цифровую связь до 63 устройств без применения дополнительной аппаратуры (хабов). Устройства бытовой электроники — цифровые камкордеры (записывающие видеокамеры), камеры для видеоконференций, фотокамеры, приемники кабельного и спутникового телевидения, цифровые видеоплейеры (CD и DVD), акустические системы, цифровые музыкальные инструменты, а также периферийные устройства ком­пьютеров (принтеры, сканеры, устройства дисковой памяти) и сами компью­теры могут объединяться в единую сеть.

4.2. Шина IEEE 1394- FireWire__________________________________________ 107


¦ Высокая скорость обмена и изохронные передачи. Шина позволяет даже на на­

чальном уровне (S100) передавать одновременно два канала видео (30 кадров в секунду) широковещательного качества и стерео-аудиосигнал с качеством CD.

¦     Низкая цена компонентов и кабеля.

¦     Легкость установки и использования. FireWire расширяет технологию PnP. Си­стема допускает динамическое (горячее) подключение и отключение устройств.

Устройства автоматически распознаются и конфигурируются при включении/

отключении. Питание от шины (ток до 1,5 А) позволяет подключенным устрой­ствам общаться с системой даже при отключении их питания. Управлять шиной и другими устройствами могут не только PC, но и другие  «интеллектуальные» устройства бытовой электроники.

FireWire по инициативе VESA позиционируется как шина «домашней сети», объе­диняющей всю бытовую и компьютерную технику в единый комплекс. Эта сеть является одноранговой (peer-to-peer), чем существенно отличается от USB.


Шина PCI


PCI (Peripheral Component Interconnect) local bus — шина соединения периферийных компонентов является основной шиной расширения современных компьютеров. Она разрабатывалась в расчете на Pentium, но хорошо сочеталась и с процессора­ми 486. Сейчас PCI является четко стандартизованной высокопроизводительной и надежной шиной расширения. Первая версия PCI 1.0 появилась в 1992 г. В PCI 2.0 (1993 г.) введена спецификация коннекторов и карт расширения. В версии 2.1 (1995 г.) введена частота 66 МГц. В настоящее время действует спецификация PCI 2.2 (декабрь 1998 г.), которая уточняет и разъясняет некоторые положения предшествующей версии 2.1. Данное описание основано на тексте стандарта «PCI Local Bus Specification. Revision 2.2» от 18.12.1998, опубликованного организацией PCI SIG (Special Interest Group).

Поначалу шина PCI вводилась как пристройка (mezzanine bus) к системам с ос­новной шиной ISA, став позже центральной шиной: она соединяется с системной шиной процессора высокопроизводительным мостом («северным»), входящим в состав чипсета системной платы. Остальные шины расширения ввода-вывода (ISA/EISA или МСА), а также локальная ISA-подобная шина X-BUS и интерфейс LPC, к которым подключаются микросхемы системной платы (ROM BIOS, кон­троллеры прерываний, клавиатуры, DMA, портов СОМ и LPT, НГМД и прочие «мелочи»), подключаются к шине PCI через «южный» мост. В современных сис­темных платах с хабовой архитектурой шину PCI Отодвинули на периферию, не ущемляя ее в мощности канала связи с процессором и памятью, но и не нагружая транзитным трафиком устройств других шин.

Шина является синхронной — фиксация всех сигналов выполняется по положи­тельному перепаду (срронту) сигнала CLK. Номинальной частотой синхронизации считается 33 МГц, при необходимости частота может быть понижена (на маши­нах с процессором 486 использовали частоты 20-33 МГц). Во многих случаях ча­стоту успешно разгоняют и до 41,5 МГц (половина типовой частоты системной шины 83 МГц). Начиная с версии 2.1 допускается повышение частоты до 66 МГц при согласии всех устройств на шине.


Номинальная разрядность шины данных — 32 бита, спецификация определяет и расширение разрядности до 64 бит. При частоте шины 33 МГц теоретическая про­пускная способность достигает 132 Мбайт/с для 32-битной шины и 264 Мбайт/с для 64-битной; при частоте синхронизации 66 МГц — 264 и 528 соответственно. Однако эти пиковые значения достигаются лишь во время передачи пакета, а из-за протокольных накладных расходов реальная средняя суммарная .(для всех задат-чиков) пропускная способность шины оказывается ниже.

С устройствами PCI процессор может взаимодействовать командами обращения к памяти и портам ввода-вывода, адресованным к областям, выделенным каждо­му такому устройству при конфигурировании. Устройства могут вырабатывать запросы маскируемых и немаскируемых прерываний. Понятия каналов DMA для шины PCI нет, но агент шины может сам выступать в роли зада'тчика, поддержи­вая высокопроизводительный обмен с памятью (и не только), не занимая ресур­сов центрального процессора. Таким образом, к примеру, может быть реализован обмен в режиме DMA с устройствами AT А, подключенными к контролеру PCI

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

IDE (см. п. 9.2.1). Спецификация PCI требует от устройств способности переме­щать все занимаемые ресурсы в пределах доступного пространства адресации. Это позволяет обеспечивать бесконфликтное распределение ресурсов для многих устройств (функций). Для управления устройствами рекомендуется вместо пор­тов ввода-вывода по возможности использовать ячейки памяти. Одно и то же функ­циональное устройство может быть сконфигурировано по-разному, отображая свои регистры либо на пространство памяти, либо на пространство ввода-вывода. Драйвер может определить текущую настройку, прочитав содержимое регистра базового адреса устройства, — признаком пространства ввода-вывода будет еди­ничное значение бита 0 (см. п. 6.2.12). Драйвер также может определить и номер запроса прерывания, который используется устройством.


предназначенная для построения относительно несложных


Шина РС/104, предназначенная для построения относительно несложных встра­иваемых контроллеров, логически эквивалентна ISA. В ее названии 104 — число контактов коннектора, на который выводятся сигналы шины ISA. От ISA шина РС/104 отличается только типом коннектора и нагрузочными характеристиками линий: поскольку протяженность линий значительно сократилась, сигнальные цепи могут быть слаботочными. Формирователи сигналов MEMCS16#, IOCS16*, MASTER* и OWS# должны обеспечивать вытекающий ток до 20 мА, для остальных достаточно 4 мА.

Вид платы РС/104 приведен на рис. 6.4, назначение контактов дано в табл. 6.5 и 6.6. Плата компьютера с шиной РС/104 имеет разъемы-розетки. Плата рас­ширения имеет вилку РС/104, которая вставляется в плату контроллера. Кроме вилки на плате расширения может присутствовать и розетка РС/104 (коннектор двусторонний), так что можно собрать «бутерброд» из нескольких плат (рис. 6.4, а). Для предотвращения неправильного соединения у розеток в позициях В10 и С19 нет ни контактов, ни отверстий; у вилок в этих позициях штырек отсутствует. Если плат более трех, то сверху «бутерброда» устанавливают терминатор. Для фиксации плат стандартизовано расположение крепежных отверстий. Платы скрепляются четырьмя несущими стоечками высотой 0,6" (или длинными винтами с втулками). Отметим особенности коннекторов^ ! — коннектор шины ISA-8, J2 — его расшире­ние до ISA-16; эти коннекторы обычно имеют дюймовый шаг контактов (2,54 мм), но могут встречаться и метрические, с шагом 2,5 мм (они взаимно несовместимы!). Обратим внимание и на специфическую нумерацию рядов контактов В, А, С, D и номеров контактов (у J2 нумерация начинается с нуля, нулевые контакты не ис­пользуются).

162

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



Рис. 6.4. Компьютер с шиной РС/104: а — стопка плат, б — расположение системных

коннекторов

С широким использованием процессоров Pentium и следующих моделей в модуль ввели еще и шину PCI, так появился стандарт PC/104-Plus (именно такая карта показана на рис. 6.4).
Трехрядный коннектор PCI имеет метрический шаг контак­тов 2 мм. Платы микрокомпьютеров с шинами РС/104 могут иметь и краевые разъемы ISA, PCI или комбинированный; с их помощью контроллеры подключа­ются к пассивной кросс-плате, в которую устанавливаются карты расширения (ISA, PCI) обычного (PC) конструктива.

Таблица 6.5. Разъем J1/P1 шины PC-104

РЯДА

     №

Ряд В



IOCHK#

1

GND

SD7

2

RESET

SD6

3

+5 В

SD5

4

IRQ2/9

SD4

5

-5 В

SD3

6

DRQ2

SD2

7

-12В

SD1

8

OWS#

SDO

9

+12В

IOCHDRY

10

Ключ

AEN

11

SMEMW#

SA19

12

SMEMR#

SA18

13

IOWR#

SA17

14

IORD#

SA16

15

DACK3#



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

163

РЯДА



Ряд В

 

SA15

16

DRQ3

SAM

17

DACK1*

SA13

18

DRQ1

SA12

19

REFRESH*

SA11

20

BCLK

SA10

21

IRQ7

SA9

22

IRQ6

SA8

23

IRQ5

SA7

24

IRQ4

SA6

25

IRQ3

SA5

26

DACK2*

SA4

27

TC

SA3

28

BALE

SA2

29

+5 В

SA1

30

OSC

SAO

31

GND

GND

32

GND

Таблица 6.6. Разъем J2/P2 шины PC-104

РядС



РядО

GND

0

GND

SBHE

1

MEMCS16#

LA23

2

IOCS16*

LA22

3

IRQ10

LA21

4

IRQ11

LA20

5

IRQ12

LA19

6

IRQ15

LA18

7

IRQ14

LA17

8

DACKO*

MEMR#

9

DRQO

MEMW#

10

DACK5*

SD8

11

DRQ5

SD9

12

DACK6*

SD10

13

DRQ6

SD11

14

DACK7*

SD12

15

DRQ7

SD13

16

+5 В

SD14

17

MASTER#

SD15

18

GND

Ключ

19

GND

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


Шина SMBus


Шина SMBus (System Management Bus — шина системного управления) — двухпро­водной интерфейс для обмена данными между микросхемами различных систем­ных компонентов компьютера, а также связи их с самим компьютером. Основное назначение интерфейса — управление подсистемой питания и сопутствующими подсистемами. Первоначально шина разрабатывалась для интеллектуальных ба­тарей и зарядных устройств, и первые версии спецификации SMBus шли под за­головком «Smart Battery System Specifications» (спецификации системы «умных» батарей). Система с «умными», или «ловкими», батареями (Smart Battery System) состоит из собственно батарей (аккумуляторов) и зарядных устройств, способных обмениваться управляющей информацией между собой и с хост-системой, кото­рую она питает. Этот обмен позволяет батареям сообщать свои параметры (теку­щие значения, ожидаемые величины), подключаться в режим работы (питания хост-системы) или зарядки. Часть управляющих функций выполняется при участии хоста, а часть — автономно. Первая версия спецификации SMBus вышла в 1995 г., версия 1.1 — в 1998 г. Версия 2.0 вышла в 2000 г., она уже не имеет «бата­рейного» заголовка. Данное описание основано на документе «System Management Bus (SMBus) Specification Version 2.0», выпущенном форумом разработчиков си­стем с интеллектуальными батареями (SBS, www.sbs-forum.org), в который входит большое число производителей источников питания, а также фирма Intel. Специ­фикация покрывает три нижних уровня модели взаимодействия открытых сис­тем (OSI), от физического до сетевого.

Шина SMBus основана на интерфейсе 12С, и к ней применимо все сказанное в п. 11.1.1. В шину введена возможность динамического реконфигурирования (подключения и отключения абонентов шины в процессе работы) и автомати­ческого назначения адресов устройств. По сравнению с PC в шине несколько изменены граничные требования к уровням сигналов и временным диаграммам (см. п. 11.1.4), но в основном они совпадают. Шина позволяет реализовать все режимы обменов, разрешенные для PC, но имеет нюансы в правилах генерации подтверждений.
Для шины SMBus в BIOS имеется стандартизованная поддерж­ка. Особенностью шины SMBus, связанной с ее ролью в управлении системой питания, является способность автономной работы — соединяемые ею устройства могут обмениваться информацией, даже когда питание на центральном процессо­ре (и других подсистемах) отсутствует. Конечно, о взаимодействии с устройства­ми шины через BIOS в таком состоянии нет и речи, поскольку BIOS еще «спит».

434__________ Глава 11. Вспомогательные последовательные интерфейсы и шины

На физическом уровне (1-м уровне OSI) спецификация определяет электрические и временные параметры сигналов. По уровням сигналов (и нагрузочной способ­ности) имеются две различные спецификации. Маломощная (low power) специ­фикация соответствует «родному» применению SMBus в устройствах с батарей­ным питанием; здесь характерны малые токи. Мощная (high power) спецификация предназначена для работы абонентов SMBus в окружении источников значитель­ных помех (например, на плате PCI). Маломощные и мощные устройства на од­ной шине вместе работать в общем случае не смогут, но это и не требуется. При необходимости совместного использования устройств разных классов организу­ются разные сегменты шины, соединенные мостом.

В спецификациях временных параметров приняты меры по ограничению време­ни отклика и предотвращению «зависания» шины. Частота тактового сигнала ограничена и снизу (10 кГц), и сверху (100 кГц); введены ограничения на макси­мальную длительность нахождения синхросигнала в высоком и низком состоянии и максимальную суммарную «растяжку» битовых интервалов на каждый байт. Предусматривается механизм тайм-аутов, по которому устройства, обнаружив­шие «зависание» шины, должны немедленно прекратить обмен и повторно ини­циализироваться. В спецификации PC эти моменты не рассматривались.

На шине SMBus могут использоваться дополнительные аппаратные сигналы.

¦ Сигнал SMBSUS* указывает на приостанов шины и устройств. Этот сигнал



вырабатывается устройством управления питанием; во время его активности

(низкий уровень) сигналы SDA и SCL штатным образом (как в PC) не воспри­нимаются (они могут использоваться для уточнения режима приостанова).

¦     Сигнал SMBALERT# служит для оповещения ведущего устройства о необходимости обмена с ведомым устройством, не имеющем возможности высту­пить в роли ведущего устройства. Этот сигнал собирается по схеме «Монтаж­ное И» от всех устройств. Получив его, хост должен дать команду чтения байта по адресу 0001 100, на которое просигналившее устройство должно ответить байтом со своим адресом (возможен вариант и с дополнительным байтом РЕС).

На уровне связи (2-м уровне OSI) определяются те же правила передачи данных, что и в PC: условия S, P, Sr; биты подтверждения; 7-битная адресация и признак RW в первом байте, следующем за условием 5 (5г). Как и в PC, ведущее устройство может выполнять и запись, и чтение данных ведомого устройства; используются и комбинированные транзакции (через условие Sr). В генерации подтверждений на SMBus есть особенности. На собственный адрес устройство всегда должно от­вечать битом подтверждения АС К, даже если оно занято внутренними операци­ями. Это правило обеспечивает работу механизма определения присутствия дан­ного устройства на шине. Ведомое устройство может вводить бит NACK в ответ на любой неадресный байт, если оно занято или запрашиваемые командой данные недоступны. В этом случае у него есть и альтернатива поведения — задержать син­хросигнал на низком уровне (в разрешенных пределах). Ведомое устройство долж­но вводить бит NACK в ответ на недопустимые коды команд или данных. Ответ NACK вынуждает ведущее устройство прекратить транзакцию (ввести Р). Ведущее устройство, будучи приемником, ответом NACK информирует передатчик о при­еме последнего ожидаемого байта.

11.1. Последовательные шины на базе 1гС_______________________________ 435

Сетевой уровень (3-й уровне OSI) определяет «лицо» шины SMBus и заслужива­ет более детального рассмотрения.



Сетевой уровень SMBus

В шине SMBus введено понятия «хоста» (host) — абонента шины, выполняющего координирующие и конфигурирующие функции. Хост является ведущим устрой­ством шины, при этом должен выполнять ряд функций ведомого устройства и отрабатывать сообщения уведомления.

Каждое ведомое устройство имеет свой уникальный адрес; в диапазоне 7-бит­ных значений адреса выделяются специальные значения (табл. 11.4), которых несколько больше, чем в PC. 10-битная адресация в текущей версии не рассмат­ривается. Адреса устройств разделяются по типам. Для устройств однозначно по­нятного назначения SMBus WG выделяет специальные адреса (Purpose-assigned addresses). Например, батареи Smart Battery имеют адрес 0001 011, их зарядные устройства— 0001 001. Устройства с этими адресами обязаны соответствовать требованиям SMBus, предъявляемым к устройствам данного класса. Ряд систем с SMBus определяют и используют эти устройства, основываясь на их адресе. Другие системы могут и не доверять одному только адресу, а определять типы присутствующих устройств иным образом. Для устройств разнообразного назна­чения, а также устройств, не полностью отвечающих спецификациям SMBus для своего класса, производители назначают иные адреса, с которыми можно озна­комиться на сайте www.smbus.org. Адреса устройств-прототипов задействуются исключительно в экспериментально-отладочных целях и в коммерческих изде­лиях использоваться не должны. В спецификации SMBus 2.0 появилась возмож­ность автоматического динамического назначения адресов устройств, которая будет рассмотрена ниже.

Таблица 11.4. Специальные адреса SMBus Биты [7:1]     Бит 0 (RW)    Назначение

0000 000

0

0000 000

1

0000 001

X

0000 010

X

0000 011

X

0000 1ХХ

X

0101000

X

0110111

X

1111 ОХХ

X

1111 1ХХ

X

0001 000

X

0001 100

X

1100001

X

1001 ОХХ

X

General call address — адрес общего вызова

Start — начало активного обмена



Адрес устройства шины CBUS (для совместимости)

Адрес для устройств иных шин

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

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

Хост шины ACCESS.bus

«Дежурный» адрес ACCESS.bus

Признак 10-битной адресации

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

Хост шины SMBus

Адрес ответа на сигнальные сообщения SMBus

«Дежурный» адрес SMBus

Адрес устройств-прототипов

436__________ Глава 11. Вспомогательные последовательные интерфейсы и шины

Типичное устройство SMBus поддерживает определенный набор команд, с помо­щью которых выполняется обмен данными. Команда кодируется одним байтом, передаваемым в транзакции вслед за адресным байтом. Команды могут использо­вать один из 11 протоколов, определенных в SMBus.

В версии 1.1 спецификации SMBus введена возможность контроля ошибок паке­та PEC (Packet error checking). Механизм PEC основан на добавлении в конец каждого передаваемого пакета байта CRC-кода, вычисляемого по всем предыдущим байтам пакета, начиная с адресного. Почти все протоколы могут иметь два вари­анта — без РЕС и с РЕС; на одной шине могут присутствовать устройства и с поддерж­кой РЕС, и без. На байт РЕС приемник отвечает подтверждением, но трактовка ответа неоднозначна. Если передатчик в ответ на РЕС получил ответ NACK, это означает, что приемник не подтвердил корректный прием пакета. Однако ответ АС К не является подтверждением достоверности приема: приемник может «не пони­мать» РЕС и отвечать на него как на обычный байт данных; приемник может и не выполнять контроль в реальном времени приема потока данных. Более «достоверный контроль достоверности» могут обеспечить лишь протоколы высших уровней. Так, например, для контроля достоверности записи в устройство можно использовать последующее чтение тех же данных с РЕС, и по анализу всего принятого пакета ведущее устройство сделает вывод об успешности или ошибке операции записи.

Шинные протоколы SMBus основаны на транзакциях PC с 7-битной адресацией.

¦     Quick Command, короткая команда, — посылка адресного байта; действие коман­ды определяется битом RW адресного байта.



¦     Send Byte, посылка байта, — передача ведущим устройством вслед за адресным байтом (RW=0) одного байта данных. В варианте с РЕС передаются два байта, последний — РЕС.

¦     Receive Byte, прием байта, — прием ведущим устройством вслед за адресным байтом (RW=1) одного байта данных. В варианте с РЕС принимаются два бай­та, последний — РЕС.

¦     Write Byte, Write Word, запись байта/слова,— передача ведущим устройством вслед за адресным байтом (RW=0) одного байта команды, за которым следует 1 или 2 байта (младший, а затем старший) данных. В варианте с РЕС в конец добавляется контрольный байт.

¦     Read Byte, Read Word, чтение байта/слова, — комбинированные транзакции:

сначала посылается адресный байт (RW=0), за которым передается код коман­ды. Далее, через условие 5 посылается адресный байт с тем же адресом устрой­ства, но RW=1, после которого принимается 1 или 2 байта данных. В варианте с РЕС в конце ожидается прием дополнительного (контрольного) байта.

¦     Block Write, запись блока, — передача ведущим устройством вслед за адресным байтом (RW=0) одного байта команды, за которым следует байт-указатель дли­ны (количество последующих байт) и собственно байты данных. В варианте с РЕС в конец добавляется контрольный байт. Указатель длины не учитывает байт РЕС; он не может быть нулевым; одной блочной командой можно пере­сылать до 32 байт данных.

11.1. Последовательные шины на базе PC________________________________ 437

¦     Block Read, чтени блока, — комбинированная транзакция: сначала посылается адресный байт (RW=0), за которым передается код команды. Далее, через усло­вие S посылается адресный байт с тем же адресом устройства, но RW=1, после которого принимается байт-указатель длины, а за ним и собственно байты дан­ных. В варианте с РЕС в конце ожидается прием дополнительного (контрольно­го) байта. Указатель длины — аналогично блочной записи.



¦     Process Call, вызов процесса, — комбинация команды Write Word с приемом сло­ва (двух байт) от устройства с тем же адресом. Команда называется вызовом процесса, поскольку ожидает данных, зависящих от посланного кода команды и слова данных. В варианте с РЕС контрольный байт ожидается только в самом конце, вслед за последним байтом принятых данных.

¦     Block Write-Block Read Process Call — комбинация записи блока с последующим чтением блока по тому же адресу устройства. В варианте с РЕС контрольный байт ожидается только в самом конце, вслед за последним байтом принятых данных.

В случае, когда ведущим устройством шины собирается выступать рядовое устрой­ство (не хост), оно должно использовать протокол уведомления хоста (SMBus host notify protocol): устройство на адрес хоста с RW=0 (он известен) посылает байт с собственным адресом, за которым следует слово (два байта) собственно уведом­ления. Хост обязан понимать эти уведомления; дополнительно может использо­ваться и необязательный сигнал внимания SMBALERT* (см. ниже).

Автоматическое назначение адресов

Динамическое реконфигурирование шины SMBus — возможность «горячего»

подключения/отключения основано на базовых принципах протокола PC. Авто­матическое назначение адресов, появившееся в версии 2.0, использует еще и конт­рольные байты пакетов (РЕС). Задача динамического реконфигурирования включает распознавание фактов подключения/отключения устройств и обеспе­чение бесконфликтного распределения их адресов. Подключение новых устройств

может распознаваться двумя способами. Устройство, которое может работать ве­

дущим устройством, при подключении (после своей инициализации по включе­

нию питания) может послать хосту уведомление, содержащее его адрес. Другой

вариант обнаружения — периодический опрос устройств ведущим устройством,ведающим «переучетом» всех устройств на шине.

Для динамического бесконфликтного назначения личных адресов устройств ис­пользуется протокол ARP (Address Resolution Protocol).


Назначение адресов ос­ новано на стандартном механизме арбитража (разрешения конфликтов) шины SMBus (и PC). Назначенный адрес запоминается устройством на все время, пока подано питание. Возможны и устройства PSA (Persistent Slave Address), «вспоми­нающие» ранее назначенный адрес после повторного включения питания. После назначения адреса обмен с устройством выполняется точно так же, как и с устрой­ством с фиксированным адресом. Назначение адресов может выполнять любое ведущее устройство шины SMBus.

438__________ Глава 11. Вспомогательные последовательные интерфейсы и шины

Для динамического назначения адреса требуется изоляция устройств — возмож­ность диалога ведущего устройства-нумератора с каждым устройством без помех со стороны других устройств (типичная задача настройки системы PnP). Изоля­ция основана на уникальном идентификаторе устройства UDID (Unique Device Identifier) — 128-битной структуре, содержащей описание возможностей, версию, идентификаторы производителя, устройства, подсистемы и специфическую инфор­мацию. Идентификатор начинается с байта возможностей (Device Capabilities), в котором два старших бита характеризуют способности динамической адресации, а младший бит — поддержку РЕС. Чтение идентификатора выполняется ведущим устройством ARP по протоколу блочного чтения по «дежурному» адресу SMBus. На это чтение отзываются все устройства с еще не назначенными адресами, и на арбитраже этой операции работает изоляция устройств. Первый считанный байт (указатель длины) у всех устройств одинаков, по нему конфликтов Нет. Далее устройства передают идентификаторы, и в арбитраже будут иметь приоритет те устройства, у которых нулевое значение бит данных встретится раньше. С учетом этого принята следующая кодировка классов устройств в старших битах первого байта идентификатора:

¦     00 — устройства с фиксированными адресами, идентифицируются в первую очередь;

¦     01 — динамические устойчивые (persistent) адреса устройств PSA;



¦     10 — динамические изменчивые (volatile) адреса;

¦     11 — устройства со случайными номерами, идентифицируются в последнюю очередь.

Младший бит этого байта указывает на поддержку РЕС и всех возможностей, ос­нованных на идентификаторе. При нулевом значении этого бита о поддержке РЕС ничего определенного сказать нельзя.

Последний элемент UDID — 32-битный идентификатор устройства, играющий важную роль в распознавании похожих устройств. Это может быть либо число, назначаемое изготовителем (отвечающим за его неповторимость), либо случай­ное число, генерируемое (и запоминаемое) устройством каждый раз при включе­нии или выполнении команды сброса.

Устройство, поддерживающее ARP, должно иметь специальные флаги:

¦     AR (Address Resolved) — данному устройству процедурой ARP назначен адрес;

¦     AV (Addres Valid) — устройство имеет действительный личный адрес, на кото­рый оно отзывается в обычных транзакциях (при AV=0 устройство должно иг­норировать все адреса, кроме «дежурного»).

При AV=AR-0 устройство не имеет личного адреса и должно участвовать в процессе ARP (отвечать на общий опрос идентификатора). При AV=1 и AR=0 устройство имеет личный адрес, но должно участвовать в ARP. При AV=AR=1 устройство имеет личный адрес, но не должно отвечать на общий запрос идентификатора. При этом оно должно отрабатывать адресованную ему команду назначения адреса (и впоследствии пользоваться новым назначенным адресом). Комбинация AV=0 и AR=1 недопустима.

11.1. Последовательные шины на базе I2C_______________________________ 439

Для протокола ARP введены специальные команды.

¦     Get UDID (general) — общийзапрос идентификатора — команда чтения бло­ка данных с адресом 1100 001 и кодом команды 3. На нее устройства, поддер­живающие ARP, отвечают посылкой блока с длиной 17 байт, сопровождаемого РЕС. Первые 16 байт блока — UDID, 17-й байт — адрес устройства (с едини­цей в младшем бите).


Если у устройства флаг AV=0, оно вместо адреса передает код «1111 111». Команда не влияет на флаги AV и AR.

¦     Assign address — назначить адрес — команда записи блока данных с адресом 1100 001 и кодом команды 4 и длиной 17 байт, сопровождаемого РЕС. Первые 16 байт блока — UDID, 17-й байт — назначаемый адрес устройства (младший бит игнорируется). По этой команде устройство, обнаружившее полное совпа­дение UDID со своим собственным, устанавливает флаги AV=AR=1.

¦     Get UDID  (directed) — направленный запрос идентификатора—команда

чтения блока данных с адресом 1100 001, в поле кода команды находится адрес интересующего устройства с единицей в младшем бите. На нее отвечает толь­ко устройство, опознавшее свой адрес в поле команды, и отвечает посылкой блока с длиной 17 байт, сопровождаемого РЕС. Первые 16 байт блока — UDID, 17-й байт — адрес устройства (с единицей в младшем бите). Команда не влия­ет на флаги AV и AR.

¦     Reset device  (general) — общий сброс устройства — посылка по адресу

1100 001 байта команды с кодом 2, сопровождаемого байтом РЕС. По этой

команде все устройства инициализируются и обнуляют флаги AR и AV (PSA-устройства флага AV не изменяют).

¦     Reset device ARP (di r ее ted) — направленный сброс устройства —посылка

по адресу 1100 001 байта с адресом целевого устройства (с нулем в младшем бите), сопровождаемого байтом РЕС. По этой команде выбранное устройство инициализируется и обнуляет флаги AR и AV (PSA-устройства флага AV не из­меняют).

¦     Notify ARP master — уведомление ведущего устройства ARP — посылка на адрес 0001 000 байта с «дежурным» адресом 1100 0010, за которым следуют два байта нулей. Устройство может посылать это уведомление о необходимости выполнения ARP при включении питания, а также при обнаружении коллизии в процессе выполнении чтения данных по индивидуальному адресу устройства.

На каждый байт команд ARP-устройства, поддерживающие этот протокол, отве­чают подтверждением АСК.


Отсутствие подтверждений трактуется ведущим ARP-устройством как отсутствие ARP-устройств на шине.

«Переучет» и назначение адресов вкратце выглядит следующим образом: ведущее ARP-устройство выполняет команду общего запроса идентификатора и по ней получает UDID и, возможно, адрес первого «победителя» в арбитраже. Далее это­му победителю назначается личный адрес — тот же или по усмотрению ведущего ARP-устройства, после чего он уже не участвует в арбитраже по общему запро­су. Сведения об устройстве и его адрес ведущим ARP-устройством заносятся

440__________ Глава 11. Вспомогательные последовательные интерфейсы и шины

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

Поддержка SMBus в BIOS и ACPI

Шина SMBus, в отличие от ACCESS.bus, сразу получила спецификацию ее под­держки на уровне BIOS. Позже появились спецификации, позволяющие интегри­ровать устройства SMBus в систему ACPI.

В 1995 г. была опубликована спецификация интерфейса SMBus BIOS — System Management Bus BIOS Interface Specification, основные идеи которой вкратце из­ложены ниже. Интерфейс позволяет верхним уровням ПО абстрагироваться от аппаратной реализации хост-контроллера. Поддержка BIOS обеспечивается для трех типов режимов работы процессора: реального (и V86), защищенного 16-раз­рядного и защищенного 32-разрядного. Вызов функций может выполняться либо через BIOS Int 15h (в реальном режиме и в V86), либо через точку входа, полу­ченную при подключении в соответствующем режиме. Для подключения (и от­ключения) также используется сервис BIOS Int 15h; после подключения доступ через Int 15 h блокируется (до отключения). В защищенном режиме вызов ин­терфейсных функций возможен только через точку входа, полученную при под­ключении. Поддержка точки входа для реального режима необязательна.



Спецификация SMBus BIOS обеспечивает хост-центрическое обращение к або­ нентам шины: по инициативе вызывающей программы хост-контроллер посылает устройству команду, которая может предполагать и немедленный ответ устройства. Однако устройства могут посылать хосту сообщения по собственной инициативе, при этом они обязаны использовать протокол Wri te Word. Хост способен поме­щать принятые сообщения в небольшую очередь, из которой они могут программ­но извлекаться путем вызова функции 7 (программа должна периодически выпол­нять этот вызов для проверки наличия сообщений в очереди). В очереди каждое сообщение представлено байтом адреса источника и парой байт тела сообщения.

Шина SMBus тесно связана с оборудованием, управляющим питанием и участву­ющим в генерации запросов системного прерывания SMI (System Management Interrupt — особое аппаратное прерывание процессора) и их обработки. Из-за это­го в BIOS введен специальный механизм, позволяющий обнаружить обработку SMI во время выполнения транзакций и в иное время. Это необходимо, посколь­ку обработчик SMI, работающий в режиме SMM, совершенно невидим приклад­ной программе, а результаты его работы могут существенно влиять на работу про­граммы, вызывающей BIOS SMBus.

Функции общих обращений к SMBus:

¦      SMBus Installation Check (Olh) — проверка наличия функций;

¦      SMBus Real Mode Connect (02h) — подключение в реальном режиме;

¦      SMBus 16-Bit Connect (03h) —подключение в 16-битном защищенном режиме;

11.1. Последовательные шины на базе I2C_______________________________ 441

¦     SMBus 32-Bit Connect (04h) — подключение в 32-битном защищенном режиме;

¦     SMBus Disconnect (05h) — отключение от сервиса;

¦     SMBus Devi се Address (06h) — получение списка адресов устройств SMBus;

¦     SMBus Critical Messages (07h) — чтение сообщений устройств, переданных



хосту.

Для взаимодействия с конкретными устройствами SMBus предназначен набор функций, позволяющих генерировать запросы протокольных команд SMBus и по­лучать результаты их выполнения. Функции запросов и получения ответов раз­делены, что позволяет на время выполнения (и передачи) довольно длительных команд не занимать время центрального процессора. Большинство протокольных команд вводится за один вызов BIOS; исключение составляет команда записи блока, данные для которой передаются за один или более последующих запросов продолжения. Результаты большинства команд также принимаются за один вы­зов; результат чтения блока получается за несколько вызовов продолжения.

Вызовы протокольных команд устройств SMBus:

¦     SMBus Request (10h) — запрос команды устройству;

¦     SMBus Request Continuation (llh) — продолжение запроса для записи блока;

¦     SMBus Request Abort (12h)— отказ от выполнения ранее посланного запроса;

¦     SMBus Request Data and Status (13h) — запрос данных и состояния.

Шина SMBus является одним из главных коммуникационных средств в ACPI. Интерфейс SMBus для ACPI определен в спецификации SMBus CMI— докумен­те System Management Bus (SMBus) Control Method Interface Specification Version 1.0, опубликованном в конце 1999 г. Этот интерфейс позволяет легко использо­вать все возможности SMBus независимо от происхождения или особенностей реализации оборудования. Ниже перечислены основные цели спецификации.

¦     Обеспечить эффективный и надежный интерфейс ACPI для аппаратных средств хост-контроллера независимо от его реализации (со встроенным микроконт­роллером или без него).

¦     Обеспечить системную синхронизацию доступа ко всем ресурсам SMBus.

¦     Гарантировать соответствие интерфейса версиям 1.0 и 1.1 спецификации

SMBus и возможности его расширения для поддержки новых свойств в буду­щих версиях.

Для успешного функционирования системы требуется поддержка соответству­ющими драйверами операционной системы. Для управления питанием форум раз­работчиков «интеллектуальных» батарей — Smart Battery System Implementers Forum (SBS-IF) — разработал спецификацию драйверов для ОС Windows Эх/2000, с которой можно ознакомиться на сайте http://www.sbs-forum.org/smbus/.

Рассмотрение программного интерфейса CMI выходит за рамки данной книги. Отметим лишь, что коды протоколов SMBus, используемые в CMI, отличаются от кодов, используемых в SMBus BIOS. Те же протоколы, но с байтом РЕС, коди­руются с единицей в старшем бите (значение увеличено на 80h).

442__________ Глава 11. Вспомогательные последовательные интерфейсы и шины


Шина управления SMI интерфейса МП


В спецификации IEEE 802.3u сетевой технологии Ethernet от 1995 г. появился интерфейс МП (Media Independent Interface — интерфейс, независимый от среды передачи), позволяющий отделять специфические устройства физического уровня (PHY) от вышестоящих уровней. Кроме интерфейса передачи «полезных» данных сети в МП входит последовательный интерфейс SMI (Serial Management Interface), обеспечивающий доступ к внутренним регистрам PHY. Эти регистры позволяют отслеживать состояние PHY и управлять им; в частности, и управлять согласова­нием режимов сетевых портов. В спецификации описаны регистры, обязательные для устройств, а также отведено место для специфических регистров, использу­емых по воле разработчика. Интерфейс SMI представляет собой последовательную синхронную трехпроводную шину (сигналы MDC, МОЮ и шина GND), обеспечива­ющую доступ по записи и чтению к 16-разрядным регистрам устройств. Протокол шины обеспечивает 5-битную адресацию подключаемых устройств, что позволяет непосредственно объединять до 32 устройств на одной шине. Каждое устройство может иметь до 32 регистров. Шина является хост-центрической — ею управляет один контроллер, инициирующий транзакции, а все подключаемые устройства являются ведомыми. Контроллер генерирует импульсы синхронизации по одно­направленной линии MDC, а по двунаправленной линии МОЮ формирует биты команд и данных (при записи) и принимает данные чтения. Устройство, опознав­шее свой адрес, должно выполнить адресуемую ему команду. Уровни сигналов — обычные для логики ТТЛ и КМОП; для линии МОЮ обычно используются фор­мирователи с открытым коллектором (стоком) и резисторы, «подтягивающие» пассивную линию к уровню питания (+5 или +3,3 В). Частота импульсов MDC, не обязательно постоянная, не должна превышать 2,5 МГц, что позволяет реализо­вать функции контроллера чисто программно. Временные диаграммы сигналов для транзакций чтения и записи приведены на рис. 11.4. Отметим, что устройство должно фиксировать биты по положительному перепаду MDC, а контроллер фик­сирует биты по отрицательному перепаду.
Адреса и данные передаются начиная со старших бит.



Рис. 11.4. Транзакции на шине SMI: a — запись, б — чтение

444__________ Глава 11. Вспомогательные последовательные интерфейсы и шины

В общем случае каждой транзакции должна предшествовать преамбула Рге — не менее 32 тактов нахождения МОЮ на высоком уровне. Собственно транзакция начинается с условия Start — вывода контроллером битовой последовательности «01», за которым следует двухбитная команда Cmd: «10» — чтение или «01» — за­пись. Далее контроллер передает 5-битный адрес устройства (PhyAd), за которым следует 5-битный номер регистра (RegAd). После этого следует двухбитный «пируэт» (turnaround) ТА для перехода к передаче данных. При операции записи «пируэт» сводится к передаче контроллером последовательности «10», а затем он передает 16 бит данных (WData) для записи в регистр. При чтении с начала «пиру­эта» контроллер отпускает линию МОЮ, а на время второго бита отозвавшееся ад­ресованное устройство устанавливает на этой линии нуль, что используется для определения факта ответа. В следующие 16 тактов устройство передает считан­ные данные (RData) контроллеру.

Преамбула нужна только для приведения интерфейсной части устройств в исход­ное состояние (после подачи питания); если питание устройством не терялось, то последующие транзакции могут выполняться и без преамбулы. Имеется также нюанс в «пируэте»: для некоторых устройств второй его бит оказывается лиш­ним — он сбивает синхронизацию данных на 1 такт.


Шина USB


USB (Universal Serial Bus — универсальная последовательная шина) является промышленным стандартом расширения архитектуры PC, ориентированным на интеграцию с телефонией и устройствами бытовой электроники. Версия 1.0 была опубликована в начале 1996 года, большинство устройств поддерживает версию 1.1, которая вышла осенью 1998 года, — в ней были устранены обнаруженные проб­лемы первой редакции. Весной 2000 года опубликована спецификация USB 2.0, в которой предусмотрено 40-кратное повышение пропускной способности шины. Первоначально (в версиях 1.0 и 1.1) шина обеспечивала две скорости передачи информации: полная скорость FS (full speed) — 12 Мбит/с и низкая скорость LS (Low Speed) — 1,5 Мбит/с. В версии 2.0 определена еще и высокая скорость HS (High Speed) — 480 Мбит/с, которая позволяет существенно расширить круг устройств, подключаемых к шине. В одной и той же системе могут присутство­вать и одновременно работать устройства со всеми тремя скоростями. Шина с ис­пользованием промежуточных хабов позволяет соединять устройства, удаленные от компьютера на расстояние до 25 м. Подробную и оперативную информацию по USB (на английском языке) можно найти по адресу http://www.usb.org.



Шины и карты расширения блокнотных ПК


Портативные и блокнотные ПК поначалу строились безо всяких попыток унифи­кации и обеспечения взаимозаменяемости компонентов, но со временем ситуация изменилась. Сейчас существуют несколько основных интерфейсов и конструкти­вов для устройств расширения, наиболее популярные приведены в табл. 6.17.

Таблица 6.17. Конструктивы и интерфейсы периферии портативных ПК

PC Card

Small PC Card

Длина

85,6

45,0

Ширина

54,0

42,8

Высота

3,3/5,0/10,5

3,3/5,0/10,5

Коннектор

Штырьковый

Штырьковый

Число контактов

68

68

Интерфейсы

Память, ввод-вывод, CardBus

Память, ввод-вывод

Первый стандарт на карты расширения назывался PCMCIA. Впоследствии он был переименован в PC Card. Кроме слотов шин расширения блокнотные (и карманные) ПК могут иметь и слоты для подключения карт-носителей информации (см. п. 9.3).

Настольный ПК можно снабдить слотами PC Card с помощью специальной карты адаптера-моста, устанавливаемой в слот PCI или ISA. Сами слоты (1-2 штуки) оформляются в корпус 3" и выводятся на лицевую панель ПК; этот корпус соеди­няется с картой расширения ленточным кабелем-шлейфом.



В компьютере XT использовалась шина


ISA Bus (Industry Standard Architecture) — шина расширения, применявшаяся с первых моделей PC и ставшая промышленным стандартом, В компьютере XT использовалась шина с разрядностью данных 8 бит и адреса — 20 бит. В ком­пьютерах AT ее расширили до 16 бит данных и 24 бит адреса. Конструктивно, как показано на рис. 6.1, шина выполнена в виде двух щелевых разъемов с шагом вы­водов 2,54 мм (0,1 дюйма). В подмножестве ISA-8 используется только 62-контакт­ный слот (ряды А, В), в ISА-16 применяется дополнительный 36-контактный слот (ряды С, D). Шина РС/104, разработанная для встраиваемых контроллеров на базе PC, отличается от обычной ISA только конструктивно. В шине EISA — доро­гом 32-разрядном расширении ISA — используется «двухэтажный» слот, позво­ляющий устанавливать и обычные карты ISA.

Для шины ISA выпущено (и продолжает выпускаться) огромное количество разно­образных карт расширения. Ряд фирм выпускает карты-прототипы (Prototype Card), представляющие собой печатные платы полного или уменьшенного формата с кре­пежной скобой. На платах установлены обязательные интерфейсные цепи — буфер данных, дешифратор адреса и некоторые другие. Остальная часть платы свободна, и здесь разработчик может разместить макетный вариант своего устройства. Эти платы удобны для проверки нового изделия, а также для монтажа единичных экзем­пляров устройства, когда разработка и изготовление печатной платы нерентабельно.

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

 



 

Рис. 6.1. Слот ISA

В каждый момент времени шиной может управлять только одно устройство-задати-чик, обращающееся к ресурсам (портам или ячейкам памяти) устройств-исполните­лей. Шина ISA обеспечивает возможность обращения к 8- или 16-битным регист­рам устройств, отображенным на пространства ввода-вывода и памяти. Диапазон адресов памяти для устройств ограничен областью верхней памяти UM А (АОООО-FFFFFh). Для шины ISA-16 настройками CMOS Setup может быть разрешено пространство между 15-м и 16-м мегабайтом памяти (при этом компьютер не сможет использовать более 15 Мбайт ОЗУ).
Для шины ISA диапазон адресов ввода-вывода сверху ограничен количеством задействованных для дешифрации бит адреса, ниж­няя областью адресов О-FFh недоступна (зарезервирована под устройства системной платы). В PC была принята 10-битная адресация ввода-вывода, при которой линии адреса А[15:10] устройствами игнорировались. Таким образом, диапазон адресов устройств шины ISА ограничивается областью lOOh—3FFh. Впоследствии стали при­менять 12-битную адресацию (диапазон lOOh-FFFh). При этом приходится учи­тывать возможность присутствия на шине старых 10-битных адаптеров, которые «отзовутся» на адрес с подходящими ему битами А[9:0] во всей допустимой области 12-битного адреса четыре раза (у каждого 10-битного адреса будет еще по три 12-битных псевдонима). Полный 16-битный адрес используется только в шинах EISA и PCI.

Шина ISA-8 может предоставить до 6 линий запросов прерываний, ISА-16 — 11. Часть из них могут «отобрать» устройства системной платы или шина PCI.

Шина ISA-8 позволяет использовать до трех 8-битных каналов DMA. На 16-бит­ной шине доступны еще три 16-битных и один 8-битный канал.

Все перечисленные ресурсы шины должны быть бесконфликтно распределены. Бесконфликтность подразумевает выполнение перечисленных ниже условий.

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

¦ Назначенную линию IRQx или DRQx устройство должно держать на низком уров­не в пассивном состоянии и переводить в высокий уровень для активации запро­са. Неиспользуемыми линиями запросов устройство управлять не имеет права, они должны электрически отсоединяться или подключаться к буферу, находя­щемуся в третьем состоянии.


Одной линией запроса может пользоваться только одно устройство. Такая нелепость (с точки зрения схемотехники ТТЛ) была до­пущена в первых PC и из требований совместимости тиражируется до сих пор.

148

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

Задача распределения ресурсов для старых адаптеров решалась с помощью джам-перов, затем появились программно конфигурируемые устройства, которые вы­тесняются автоматически конфигурируемыми платами PnP.

Назначение контактов слотов шин ISA и EISA приведено в табл. 6.2 и 6.3. Таблица 6.2. Основной разъем шин ISA-8, ISA-16 и EISA

Ряд В

РЯДА

 

GND

1

IOCHK#

Reset

2

SD7

+5 В

3

SD6

IRQ2/9'

4

SD5

-5 В

5

SD4

DRQ2

6

SD3

-12В

7

SD2

OWS#2

8

SD1

+12В

g

SDO

GND

10

IOCHDRY

SMEMW#

и

AEN

SMEMR#

12

SA19

IOWR#

13

SA18

IORD#

14

SA17

DACK3#

15

SA16

DRQ3

16

SA15

DACK1#

17

SA14

DRQ1

18

SA13

REFRESH»

19

SA12

BCLK

20

SA11

IRO7

21

SA10

IRQ6

22

SA9

IRQ5

23

SA8

IRQ4

24

SA7

IRQ3

25

SA6

DACK2#

26

SA5

TC

27

SA4

BALE

28

SA3

+5 В

29

SA2

Osc

30

SA1

GND

31

SAO

1              В4: XT=IRQ2, AT=IRQ9.

2              В8: XT-Card Selected.

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

Таблица 6.3. Дополнительный разъем шин ISA-16 и EISA

РядО                       №                    Ряд С

MEMCS16#

1

SBHE#

IOCS16#

2

LA23

IRQ10

3

LA22

IRQ 11

4

LA21

IRQ12

5

LA20

IRQ 15

6

LA19

IRQ14

7

LA18

DACKO#

8

LA17

DRQO

9

MEMR#

DACK5#

10

MEMW#

DRQ5

11

SD8

DACK6#

12

SD9

DRQ6

13

SD10

DACK7#

14

SD11

DRQ7

15

SD12

+5B

16

SD13

MASTER*

17

SD14

GND

18

SD15

<


Сигналы шины ISA естественны для периферийных микросхем фирмы Intel (в стиле семейства 8080). Набор сигналов ISA-8 предельно прост. Программное обращение к ячейкам памяти и пространства ввода-вывода обеспечивают следующие сигналы.

¦     SD[7:0] — шина данных. Иное название сигналов — Data или D.

¦     SA[19:0] (Addr[19:0], A[19:0]) - шина адреса.

¦     AEN — разрешение адресации портов (запрещает ложную дешифрацию адреса в цикле DMA).

¦     IOW# (IOWC#, IOWR#) - запись в порт.

¦     IOR# (IORC#, IORD#) - чтение порта.

¦     SMEMW* (SMEMWR#, SMWTC#) — запись в системную память (в диапазоне ад­ресов 0-FFFFFh).

¦     SMEMR* (SMEMRD#, SMRDC#) — чтение системной памяти (в диапазоне адре­сов 0-FFFFFh).

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

¦  IRQ2/9, IRQ[3:7] — запросы прерываний. Положительный перепад сигнала

вызывает запрос аппаратного прерывания. Для идентификации источника

высокий уровень должен сохраняться до подтверждения прерывания про­

цессором, что затрудняет разделение (совместное использование) прерыва-

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

ний. Линия IRQ2/9 в шинах XT вызывает аппаратное прерывание с номером 2, а в AT — с номером 9.

¦     DRQ[1:3] — запросы 8-битных каналов DMA (положительным перепадом).

¦     DACK[1:3]# — подтверждение запросов 8-битных каналов DMA.

¦     ТС — признак завершения счетчика циклов DMA.

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

¦     IOCHRDY (CHRDY, I/OCHRDY) — готовность устройства, низкий уровень удли­няет текущий цикл (не более 15 икс).

¦     BALE (ALE) — разрешение защелки адреса.


После его спада в каждом цикле про­цессора линии SA[0:19] гарантированно содержат действительный адрес.

¦     REFRESH* (REF#) — цикл регенерации памяти (в XT называется DACKO#).

Сигнал появляется каждые 15 мкс, при этом шина адреса указывает на очеред­ную регенерируемую строку памяти.

¦     ЮСНК# — контроль канала, низкий уровень вызывает NMI CPU (разрешение и индикация в системных портах 061h, 062h).

¦     RESET (RESDRV, RESETDRV) — сигнал аппаратного сброса (активный уровень —высокий).

¦     BCLK (CLK) — синхронизация шины с частотой около 8 МГц. ПУ могут не использовать этот сигнал, работая только по управляющим сигналам записи и чтения.

¦     OSC — несинхронизированная с шиной частота 14,431818 МГц (использова­лась старыми дисплейными адаптерами).

Кроме логических сигналов шина имеет контакты для разводки питания +5, -5, +12 и-12 В.

Дополнительный разъем, расширяющий шину до 16-битной, содержит линии дан­ных, адреса, запросов прерываний и каналов прямого доступа.

¦     SD[15:8] — шина данных.

¦     SBHE# — признак наличия данных на линиях SD[15:8].

¦     LA[23:17] — нефиксированные сигналы адреса, требующие защелкивания по спаду сигнала BALE. Такой способ подачи адреса позволяет сократить задержку. Кроме того, схемы дешифратора адреса памяти плат расширения начинают декодирование несколько раньше спада BALE.

¦     IRQ[10:12], IRQ[14:15] — дополнительные запросы прерываний.

¦     DRQ[5:7] — запросы 16-битных каналов DMA (положительным перепадом).

¦     DACK[5:7]# — подтверждение запросов 16-битных каналов DMA.

¦     DRQO и DACKO* — запрос и подтверждение 8-битного канала DMA, освободившегося от регенерации памяти.

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



Перечисленные ниже сигналы связаны с переключением разрядности данных.

¦     МEMCS16#(М16#)— адресуемое устройство поддерживает 16-битные обраще­ния к памяти.

¦     IOCS16* (I/OCS16*, Ю16#) — адресуемое устройство поддерживает 16-битные обращения к портам.

К новым управляющим сигналам относятся следующие.

¦     MEMW# (MWTC#) — запись в память в любой области до 16 Мбайт.

¦     MEMR# (MRDC#) — чтение памяти в любой области до 16 Мбайт.

¦     OWS# (SRDY#, NOWS#, ENDXFR) — укорочение текущего цикла по инициативе адресованного устройства.

¦     MASTER* (MASTER 16#) — запрос от устройства, использующего 16-битный канал DMA на управление шиной. При получении подтверждения DACK [5:7] Bus-Master может захватить шину.

В шине EISA на дополнительных контактах слотов (недоступных картам ISA) располагается расширение шин данных и адреса до 32 бит, а также набор сигна­лов, обеспечивающих передачу данных в синхронном режиме с возможностью пакетных циклов.


Синхронизация при изохронной передаче


Изохронная передача данных связана с синхронизацией устройств, объединяемых в единую систему. Возьмем пример использования USB, когда к компьютеру подключен микрофон USB (источник данных) и колонки USB (приемник дан­ных), и эти аудиоустройства связаны между собой через программный микшер (клиентское ПО). Каждый из этих компонентов может иметь собственные «поня­тия» о времени и синхронизации: микрофон, к примеру, может иметь частоту выборки 8 кГц и разрядность данных 1 байт (поток 64 Кбит/с), стереоколонки — 44,1 кГц и разрядность 2x2 байта (176,4 Кбит/с), а микшер может работать на ча­стоте выборок 32 кГц. Микшер в этой системе является связующим звеном, и его

98____________________________ Глава 4. Последовательные шины USB и FireWire

источник синхронизации будем считать главным (master clock). Программный микшер обрабатывает данные пакетами, сеансы обработки выполняются регуляр­но с определенным периодом обслуживания (скажем, в 20 мс — частота 50 Гц). В микшере должны быть модули согласования частот выборки, которые объеди­няют несколько выборок в одну, если входная частота выше выходной, или «сочи­няют» (интерполируют) новые промежуточные выборки, если выходная частота выше. В системе с USB приходится иметь дело со следующими частотами:

¦ частота выборки (sample rate) для источников (source) и приемников (sink)

данных;

¦     частота шины USB — частота кадров (1 кГц) для полной скорости и микрокад­ров (8 кГц) для высокой (с этой частотой все устройства USB «видят» марке­ры начала (микро)кадров SOF);

¦     частота обслуживания — частота, с которой клиентское ПО обращается к драй­верам USB для передачи и приема изохронных данных.

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

¦     дрейф (drift) — отклонения формально одинаковых частот от номиналов (не бывает двух абсолютно одинаковых генераторов);

¦     дрожание (jitter) — колебание частот относительно номинала;


¦     фазовый сдвиг, если сигналы не связаны системой фазовой автоподстройки

ФАПЧ (PLL).

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

Асинхронные устройства не имеют возможности согласования своей частоты вы­борок с метками SOF или иными частотами системы USB. Частота передачи дан­ных у них фиксированная или программируемая. Число байт данных, принима­емых за каждый (микро)кадр USB, не является постоянным. Источник данных неявно сообщает свою скорость передачи данных числом выборок, генерируемых им за один (микро)кадр (клиентское ПО будет обрабатывать столько данных, сколько реально поступило). Приемник данных должен обеспечивать обратную связь для адаптивного драйвера клиентского ПО, чтобы согласовать темп выдачи потока (см. ниже). Примерами асинхронного устройства-источника может быть CD-плейер с синхронизацией от кварцевого генератора или приемник спутнико­вого телевещания. Пример приемника — дешевые колонки, работающие от внут­реннего источника синхронизации.

Синхронные устройства имеют внутренний генератор, синхронизируемый с мет­ками SOF (системная частота 1 кГц); на высокой частоте передачи более точную

4.1. Шина USB_______________________________________________________ 99

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

Адаптивные устройства имеют возможность подстройки своей внутренней частоты под требуемый поток данных (в определенных границах).


Адаптивный источник позволяет менять скорость под управлением приемника, обеспечи­вающего обратную связь. Для адаптивного приемника информацию о частоте задает входной поток данных. Он определяет мгновенное значение частоты по ко­личеству данных, принятых за некоторый интервал усреднения. Примером адап­тивного источника является CD-плейер со встроенным согласователем частоты SRC (sample rate converter) приемника — высококачественные колонки или на­ушники USB.

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

В принципе контроллер USB может подстраивать частоту кадров, но, естествен­но, под частоту внутренней синхронизации только одного устройства. Подстрой­ка осуществляется через механизм обратной связи, который позволяет изменять период кадра в пределах ±1 битового интервала.


Синхронная память — SDRAM и DDR SDRAM


Микросхемы синхронной динамической памяти SDRAM (Synchronous DRAM) представляет собой конвейеризированные устройства. По составу сигналов интер­фейс SDRAM близок к обычной динамической памяти: кроме входов синхрони­зации здесь есть мультиплексированная шина адреса, линии RAS#, CAS#, WE# (разрешение записи) и CS# (выбор микросхемы) и линии данных (табл. 7.3). Все сигналы стробируются по положительному перепаду синхроимпульсов, ком­бинация управляющих сигналов в каждом такте кодирует определенную коман­ду. С помощью этих команд организуется та же последовательность внутренних сигналов RAS и CAS, которая рассматривалась и для памяти FPM.

7.1. Динамическая память

241

Таблица 7.3. Назначение сигналов в микросхемах SDRAM

Сигнал

CLK СКЕ

CS#

RAS#, CAS#, WE#

BSD, BS1 или BAD, BA1

А[0:12]

DQx DQM

Vss,VOD VSSQI

VDDQ

I/O

I/O

Назначение

Clock Input—синхронизация, действует по положительному перепаду

Clock Enable — разрешение синхронизации (высоким уровнем). Низкий

уровень переводит микросхему в режим Power Down, Suspend или Self

Refresh

Chip Select — разрешение декодирования команд (низким уровнем).

При высоком уровне новые команды не декодируются, но выполнение

начатых продолжается

Row Address Strobe, Column Address Strobe, Write Enable — сигналы,

определяющие операцию (код команды)

Bank Selects или Bank Address — выбор банка, к которому адресуется

команда

Address — мультиплексированная шина адреса. В циклах Bank Activate

определяют адрес строки. В циклах Read/Write линии А[0:9] и А11 задают

адрес столбца. Линия А10 в циклах Read/Write включает режим

автопредзаряда (при А10=1), в цикле Precharge A10=1 задает предзаряд

всех банков (независимо от BSO, BS1)

Data Input/Output — двунаправленные линии данных

Data Mask — маскирование данных. В цикле чтения высокий уровень переводит шину данных в высокоимпедансное состояние (действует через 2 такта). В цикле записи высокий уровень запрещает запись текущих данных, низкий — разрешает (действует без задержки)


Общий провод и питание ядра

Общий провод и питание выходных буферов. Изолированы от питания ядра для снижения помех

Данные для первой передачи пакета записи устанавливаются вместе с командой WR. Данные для остальных передач пакета передаются в следующих тактах. Пер­вые данные пакета чтения появляются на шине через определенное количество тактов после команды. Это число, называемое CAS Latency (CL), определяется временем доступа ТСАС и тактовой частотой. Остальные данные пакета выдаются в последующих тактах. Временные диаграммы работы SDRAM приведены на рис. 7.6. Здесь показана команда записи WR, за которой следует команда чтения RD из той же страницы, предварительно открытой командой ACT. Далее страница за­крывается командой PRE. Длина пакета 2, CL - 3.

Регенерация (цикл CBR с внутренним счетчиком адреса регенерируемой строки) выполняется по команде REF, которую можно вводить только при состоянии по­коя (idle) всех банков.

Микросхемы SDRAM оптимизированы для пакетной передачи. У них при иници­ализации программируется длина пакета (burst length=l, 2, 4, 8 элементов), поря­док адресов в пакете (wrap mode: interleave/linear — чередующийся/линейный) и операционный режим. Пакетный режим может включаться как для всех опера­ций (normal), так и только для чтения (Multiple Burst with Single Write). Этот выбор позволяет оптимизировать память для работы либо с WB, либо с WT-кэшем.

242

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

Обратим внимание, что внутренний счетчик адреса работает по модулю, равному запрограммированной длине пакетного цикла (например, при burst length=4 он не позволяет перейти границу обычного четырехэлементного пакетного цикла).



Рис. 7.6. Временные диаграммы пакетных циклов SDRAM: А и В — данные для записи по адресу RO/CO и RO/CO+1, С и D — данные, считанные по адресу RO/C1 и RO/C1 +1

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



В команде Wri te имеется возможность блокирования записи данных любого эле­мента пакета — для этого достаточно в его такте установить высокий уровень сигна­ла DQM. Этот же сигнал используется и для перевода в высокоимпедансное состо­яния буферов данных при операции чтения.

Микросхемы SDRAM имеют средства энергосбережения, для управления ими используется вход разрешения синхронизации СКЕ.

В режиме саморегенерации (Self Refresh) микросхемы периодически выполняют циклы регенерации по внутреннему таймеру и не реагируют на внешние сигналы, поэтому внешняя синхронизация может быть остановлена.

Режимы пониженного потребления (Power Down Mode) устанавливаются при пе­реводе СКЕ в низкий уровень командой NOP или INHBT. В этих режимах микросхе­ма не воспринимает команд. Поскольку в данных режимах регенерация не выпол­няется, длительность пребывания в них ограничена периодом регенерации.

Если во время выполнения команды чтения или записи установить CKE=L, то микросхема перейдет в режим Clock Suspend Mode, в котором «замораживается» внутренняя синхронизация (нет продвижения данных) и не воспринимаются но­вые команды.

7.1. Динамическая память

243

Для памяти SDRAM ключевыми параметрами являются:

¦     допустимая тактовая частота;

¦     CL (Cas Latency) — число скрытых тактов (2 или 3);

¦     TRCD — задержка RAS-CAS, выраженная в тактах (2 или 3);

¦     TRP — время предварительного заряда RAS;

¦     TRC — минимальное время цикла обращений к строкам одного банка;

¦     ТАС — время задержки появления данных на выходе относительно фронта син­

хросигнала.

По тактовой частоте для SDRAM, применяемой в качестве ОЗУ PC-совместимых компьютеров, имеется три градации: РС66 (поначалу ее так не называли, посколь­ку другойинебыло),РС100иРС133 для максимальных частот 66,6, 100и 133 МГц соответственно. Их ключевые параметры приведены в табл. 7.4.


В обозначении быстродействия микросхем SDRAM обычно фигурирует ТАС; период частоты син­хронизации, естественно, не может быть меньше этой задержки. Микросхемы со спе­цификацией -10 могут устойчиво работать в модулях лишь на частоте 66 МГц. Мик­росхемы -8 могут работать на частоте 100 МГц, но, в зависимости от модификации, с разной латентностью. Так, например, для памяти Micron микросхемы с маркиров­кой -8А...-8С могут работать на частоте 100 МГц с CL = 3, a -8D или -8Е — с CL = 2. Естественно, память может работать и на частотах ниже максимальной. Для мик­росхем SDRAM, применяемых, например, в графических адаптерах, существуют и иные спецификации быстродействия.

Таблица 7.4. Ключевые параметры временной диаграммы SDRAM Спецификация CL    TRCD     Т„Р    Твс     Примечание

РС66                       3      2        3      8       Медленный вариант

2    2         2      7      Самый быстрый вариант

РС100                    3      3         3      8       Медленный вариант

3    2         2      7       Средний вариант

2    2         2      7       Самый быстрый вариант

PC 133                    3      3         3      9       Медленный вариант

3     2         2      8       Средний вариант

2      3         2      8       Средний вариант

2      2         2      8       Самый быстрый вариант

Синхронный интерфейс позволяет довольно эффективно использовать шину и обеспечить на частоте 100 МГц пиковую производительность 100 Мбит/с на 1 вывод шины данных. SDRAM используют в составе модулей DIMM с 8-байт-ной разрядностью, что дает производительность 800 Мбайт/с. При частоте шины 133 МГц пиковая производительность уже достигла 1064 Мбайт/с. Однако эта теоретическая производительность не учитывает накладные расходы на регенера­цию и подразумевает, что требуемые страницы уже открыты. Из-за указанных выше ограничений на реальном произвольном потоке запросов производитель­ность, конечно же, будет ниже. Потенциальные возможности почти одновременно-



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

го обслуживания множества запросов, предоставляемые микросхемами SDRAM, будут реализованы лишь при достаточно «умном» контроллере памяти. От его предусмотрительности эффективность памяти зависит, пожалуй, больше, чем у простых модулей FPM и EDO DRAM.

Память DDR SDRAM представляет собой дальнейшее развитие SDRAM. Как и следует из названия (Dual Data Rate — удвоенная скорость данных), у микро­схем DDR SDRAM данные внутри пакета передаются с удвоенной скоростью — они переключаются по обоим фронтам синхроимпульсов (рис. 7.7). На частоте 100 МГц DDR SDRAM имеет пиковую производительность 200 Мбит/с на вывод, что в составе 8-байтных модулей DIMM дает производительность 1600 Мбайт/с. На высоких тактовых частотах (100 МГц) двойная синхронизация предъявляет очень высокие требования к точности временных диаграмм. Для повышения точ­ности синхронизации предпринят ряд мер.

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

двум линиям CLK и CLK# (Differential clock inputs). Это позволяет снизить

влияние смещения уровней на точность определения момента синхрониза­

ции — дифференциальный приемник срабатывает в момент равенства уровней напряжения.

¦     Для синхронизации данных в интерфейс введен новый двунаправленный стро-

бирующий сигнал DQS. Стробы генерируются источником данных: при опера­циях чтения DQS генерируется микросхемой памяти, при записи — контрол­лером памяти (чипсетом). При чтении фронты и спады этого сигнала точно центруются в моменты смены данных, приемник должен стробировать дан­ные с небольшой задержкой относительно переключений DQS. При записи фронты и спады центруются точно посередине окна действительности данных и масок DQM.

¦     Для синхронизации DQS с системной тактовой частотой (CLK) микросхемы имеют встроенные схемы DLL (Delay Locked Loop) для автоподстройки задерж­ки сигнала DQS относительно CLK.


Эта схема работает наподобие фазовой ав­топодстройки и способна выполнять синхронизацию (обеспечивать совпаде­ние фронтов DOS и CLK) лишь в некотором ограниченном диапазоне частот синхронизации.

Есть микросхемы DDR SDRAM с возможностью отключения схем DLL; для это­го они имеют дополнительный расширенный регистр режима. Отключение DLL необходимо при снижении тактовой частоты (в целях энергосбережения). При отключенной схеме DLL стробы DQS не привязаны к синхросигналу CLK, и у раз­ных микросхем, работающих в одной системе, они будут иметь разные частоты.

В отличие от обычных микросхем SDRAM, у которых данные для записи переда­ются одновременно с командой, в DDR SDRAM данные для записи (и маски DQM) подаются с задержкой на один такт (write latency). Значение CAS Latency может быть и дробным (CL = 2, 2,5, 3).

В перспективе ожидается появление микросхемы DDR-II SDRAM, в которой обмен будет на четырехкратной частоте синхронизации.

7.1. Динамическая память

245



Рис. 7.7. Временные диаграммы пакетных циклов DDR SDRAM: a — чтение, CL = 2, длина пакета 4; б — запись, длина пакета 4, данные D1 не записываются

Перед «штатным» использованием микросхем SDRAM их требуется инициали­зировать. После подачи питания и установления синхросигнала должен быть вы­полнен предварительный заряд всех банков, после чего запрограммирован регистр режима. Параметр CL (CAS Latency) выбирают, исходя из спецификации микро­схем и тактовой частоты так, чтобы задержка, обусловленная CL, была бы мини­мальной, но не меньше ТСАС. В DDR SDRAM возможны и дробные значения CL, так что настройка может быть более тонкой. В DDR SDRAM из-за необходимо­сти настройки DLL программирование сложнее.

По причине существенного отличия интерфейса от традиционной асинхронной памяти микросхемы SDRAM не могут быть установлены в модули SIMM; они применяются в DIMM или устанавливаются прямо на системную (или графиче­скую) плату. Интерфейс DDR SDRAM сильно отличается и от обычных микросхем SDRAM.Возможность использования этих типов памяти определяется чипсетом системной платы. Память SDRAM в конце 90-х годов стала самой распространен­ной, поддержка DDR SDRAM появилась лишь сравнительно недавно.


Системная поддержка и программный интерфейс


Клавиатура имеет системную поддержку на уровне BIOS — обработку фактов нажатия и отпускания клавиш и обеспечение сервисов ввода символов с клавиату­ры, а также управления ее параметрами (задержка и частота автоповтора) и инди­каторами. Коды, принятые от клавиатуры ее контроллером, считываются и обра-

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

батываются обработчиком аппаратного прерывания IRQ1 (вектор 09h). Результат обработки помещается в клавиатурный буфер, из которого по программному пре­рыванию Int 16h этот результат для дальнейшей обработки может быть извле­чен значительно позже. Нажатие «системной» комбинации Ctrl+Alt+Del, клавиши PrintScreen (SysRq) и некоторых других к записи в клавиатурный буфер не приво­дит, а вызывает специальные процедуры. Прикладной программе, для которой требуется нестандартное использование клавиатуры (например, в качестве музы­кальной), придется самой заниматься обработкой аппаратного прерывания IRQ1, перехватывая вектор Int 09h. Перехват этого вектора требуется и для вызова каких-либо функций резидентных программ по «горячим» клавишам.

При начальном тестировании процедура POST инициализирует клавиатуру (и ее контроллер) и запускает диагностический тест. Во время этого теста клавиатура мигнет всеми индикаторами, после чего может остаться включенным только ин­дикатор NumLock (зависит от установки в BIOS Setup). В случае обнаружения ошибки клавиатуры на консоль выводится сообщение с возможным указанием скан-кода залипшей клавиши и обычно предлагается нажать клавишу F1 для продолжения. То же самое произойдет, если тест не обнаружит клавиатуру (на­пример, из-за вывалившегося разъема или перегоревшего предохранителя), но в этом случае нажатия клавиши F1 будет уже недостаточно. Ошибку диагностики даст и подключение к компьютеру AT клавиатуры от XT, обратное «скрещивание» тоже неработоспособно. Чтобы начальная загрузка не останавливалась по ошиб­ке (отсутствию) клавиатуры (POST будет дожидаться получения кода клавиши F1), тестирование клавиатуры может быть отменено настройкой CMOS Setup.

Для обслуживания клавиатуры используются ячейки ОЗУ из области данных BIOS (BIOS Data Area):

¦      0:0417,0:418 — флаги клавиатуры;

¦      0:0419 — аккумулятор кода Alt-набора;

¦      0:041 А— указатель головы буфера (Buffer Head),2байта (модифицируется

при помещении символа в буфер);

¦      0:041C — указатель хвоста буфера (Buffer Tail), 2 байта (модифицируется при

извлечении символа из буфера);

¦      0:041E-0:042D — область кольцевого буфера (16 слов).



Системная поддержка LPT-порта


Системная поддержка LPT-порта включает поиск установленных портов и сер­висы печати (Int 17h, см. п. 8.3.3). В процессе начального тестирования POST BIOS проверяет наличие параллельных портов по адресам 3BCh, 378h и 278h и поме­щает базовые адреса обнаруженных портов в ячейки BIOS Data Area 0:0408h, 040Ah, 040Ch, 040Eh. Эти ячейки хранят адреса портов LPT1-LPT4, нулевое значе­ние адреса является признаком отсутствия порта с данным номером. В ячейки 0:0478, 0479, 047А, 047В заносятся константы, задающие тайм-аут для этих портов.

Поиск портов обычно ведется достаточно примитивно — по базовому адресу (в ре­гистр данных предполагаемого порта) выводится тестовый байт (AAh или 55h), затем производится ввод по тому же адресу. Если считанный байт совпал с запи­санным, предполагается, что найден LPT-порт; его адрес помещается в ячейку BIOS Data Area. Базовые адреса портов могут быть впоследствии изменены программ­но. Адрес порта LPT4 система BIOS самостоятельно установить не может, посколь­ку в списке стандартных адресов поиска имеются только три вышеуказанных.

Обнаруженные порты инициализируются — записью в регистр управления фор­мируется и снимается сигнал lnit#, после чего записывается значение ОСЬ, соот­ветствующее исходному состоянию сигналов интерфейса. В некоторых случаях сигнал lnit# активен с момента аппаратного сброса до инициализации порта при загрузке ОС. Это можно заметить по поведению включенного принтера во время перезагрузки компьютера — у принтера надолго гаснет индикатор On-Line. След­ствие этого явления — невозможность распечатки экранов (например, параметров BIOS Setup) по нажатию клавиши Print Screen до загрузки ОС.



Системная поддержка принтера


Вывод на принтер через порт LPT в стандартном режиме (SPP) по интерфейсу Centronics имеет поддержку на уровне BIOS. Поддержка всех других режимов работы порта (Fast Centronics, ECP) осуществляется только дополнительными драйверами или средствами ОС. Сервисы BIOS Int 17h обеспечивают инициа­лизацию, вывод байта данных и опрос состояния принтера. Перехват прерывания Int 17h является удобным способом внедрения собственных драйверов принте­ра. Потребность в них может возникать при подключении к порту принтера с ин­терфейсом ИPNP или необходимости перекодировки символов.

Печать содержимого экрана (Print Screen) поддерживается прерыванием BIOS Int 0 5 h. Обработчик этого прерывания посимвольно выводит содержимое видеопа­мяти (в текстовом режиме) на порт LPT1. Обработчик пользуется ячейкой 0050:0000 для отражения своего текущего состояния: 00 — неактивен, 01 — выполняется пе­чать, FF — во время последнего вызова произошла ошибка ввода-вывода. Преры-

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

вание Int 05h вызывается обработчиком аппаратного прерывания от клавиату­ры (Int 09h), когда обнаруживается нажатие клавиши PrintScreen (PrtSc).



Системная поддержка СОМ-портов


СОМ-порты поддерживаются сервисом BIOS Int 14h, который обеспечивает сле­дующие функции:

¦     инициализация (установка скорости обмена и формата посылок; запрет источ­

ников прерываний) — на сигналы DTR и RTS влияния не оказывает (после ап­паратного сброса они пассивны);

¦     вывод символа — активируются сигналы DTR и RTS, и после освобождения ре­гистра THR в него помещается выводимый символ;

¦     ввод символа — активируется только сигнал DTR (RTS переходит в пассивное состояние), и ожидается готовность принятых данных;

¦     опрос состояния модема и линии (чтение регистров MSR и LSR).

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

В процессе начального тестирования POST BIOS проверяет наличие последо­вательных портов (регистров UART 8250 или совместимых) по стандартным адресам и помещает базовые адреса обнаруженных портов в ячейки BIOS Data Area 0:0400, 0402, 0404, 0406. Эти ячейки хранят адреса портов с логическими именами СОМ1-COM4. Нулевое значение адреса является признаком отсутствия порта с данным номером. В ячейки ОЮ47С, 047D, 047Е, 047F заносятся констан­ты, задающие тайм-ауты для портов.

Обнаруженные порты инициализируются на скорость обмена 2400 бит/с, 7 бит данных с контролем на четность (even), 1 стоп-бит. Управляющие сигналы интер­фейса DTR и RTS переводятся в исходное состояние («выключено» — положитель­ное напряжение).



Системная поддержка устройств хранения


Дисковая память имеет стандартную поддержку на уровне BIOS и операционной системы. Поддержка дисков со стороны BIOS заключается в предоставлении выше­стоящим уровням программного обеспечения возможности чтения и записи секто­ров диска, форматирования трека и выполнения вспомогательных функций. Эти возможности предоставляются программным вызовом прерывания BIOS Int 13h — дискового сервиса. Дисковый сервис BIOS предназначен для изоляции вышесто­ящего ПО (ОС и приложений) от подробностей реализации дисковой системы.

Дисковый сервис Int 13 h работает на уровне физическихустройств, называемых так­же физическими приводами (physical drive). Традиционный дисковый сервис имеет программный интерфейс, сохранившийся еще со времен IBM PC/XT. Он позволяет оперировать с дисками размером до 528 Мбайт (см. [1,4,9]). Когда появились диски большего размера, в традиционный дисковый сервис ввели расширение (алгоритмы преобразования), позволяющее преодолеть этот барьер и, теоретически, работать

9.4. Системная поддержка устройств хранения____________________________ 403

с дисками объемом до 8,4 Гбайт. Для работы с большими дисками введены новые функции BlOSlnt 13hc интерфейсом, совершенно не похожим на традиционный.

Операционная система предоставляет прикладным программам сервисы более сложные, чем функции BIOS, обеспечивая доступ к файловой системе диска. Са­мый низкий уровень обращения, допускаемый операционной системой, опериру­ет с секторами логических дисков, или приводов (logical drive), ассоциированными с именем устройства (А:, В:, С:,..., Z:). Один физический диск (жесткий) может содержать несколько логических дисков. На физическом диске могут присутство­вать системные области (MBR и резервированные секторы), доступ к которым операционная система не предоставляет.

Для работы утилит и приложений с дисковой памятью имеется несколько уров­ней сервиса.

¦ Возможно обращение к контроллеру дисков на уровне регистров путем зада­

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

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

зации разделов диска и файловой системы, так и контроллера диска (его сис­

темы команд). Доступ обеспечивается ко всем элементам, кроме блоков, за­

крытых командой Set Max Address (для дисков АТА). При этом обходится

фаза трансляции геометрии, выполняемая, в общем, по усмотрению BIOS.

¦     Сервисы BIOS Int 13h также позволяют получить неограниченный доступ к

диску, но если используются традиционные вызовы (функции с номерами

ниже 40h), то доступны лишь диски объемом до 8,4 Гбайт (при трансляции гео­метрии) или до 528 Мбайт (без трансляции). За абстрагирование от системы команд контроллера приходится расплачиваться некоторым снижением про­изводительности, связанным с накладными расходами программного интер­фейса.

¦     Используя интерфейс функций DOS, можно получить доступ к любому секто­ру логического диска, указав лишь его логическое имя, по функциям чтения/записи абсолютных секторов. Но при этом первым доступным сектором (логи­ческий адрес 0) является загрузочный сектор логического диска, а секторы с таб­лицами разделов и те, что не попадают в разделы логических дисков, оказы­ваются недоступными. Для осмысленного доступа к данным необходимо знать структуры FAT и каталогов, а риск «наломать дров», вплоть до полной потери данных, довольно велик.

¦     И наконец, интерфейс файловой системы ОС позволяет довольно легко созда­

вать, искать и удалять файлы и каталоги, выполнять чтение и запись файлов

целиком или частично, а также некоторые другие вспомогательные функции. При

этом от пользователя данного интерфейса скрываются все тонкости работы с FAT и элементами каталогов (и конечно же, все премудрости нижних уровней).

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


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

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

достичь совместимости с остальным ПО (предоставляется меньше возможностей для совершения ошибок). Чем ниже уровень сервиса, тем больше знаний нужно вложить в программу, чтобы она общалась с диском не наперекор общим правилам.

Поскольку CD-ROM по организации данных (файловой системе) существенно отличается от традиционных дисков (гибких и жестких), для обеспечения «про­зрачного» доступа приложений к файлам на CD-ROM требуются специальные программные средства. Несмотря на возможность загрузки ОС с CD-ROM, реа­лизованную в современных версиях BIOS, полной поддержки доступа к CD-ROM (такой, как к обычным дискам) BIOS не предоставляет. Приложениям доступ к CD-ROM обеспечивают только сервисы операционной системы, встроенные в ОС или загружаемые.

Для обеспечения загрузки ОС с CD-ROM фирмы Phoenix и IBM выпустили спе­цификацию «El Torito Bootable CD-ROM Format Specification», версия 1.0 была опубликована в январе 1995 г. Цель спецификации — обеспечить возможность загрузки ОС и приложений с CD-ROM средствами BIOS (на «голой» машине). При этом имеются следующие возможности:

¦     загрузка ОС по выбору из загрузочного каталога (Boot Catalog), находящегося на CD-ROM;

¦     предоставление выбора конфигурирования CD-ROM в виде жесткого диска

или дискеты;

¦     переименование существующих приводов (если необходимо);

¦     использование существующей технологии BIOS (доступ в режиме LBA) для обращения к кодам и данным;

¦     совместимость с приложениями DOS и Windows, использующими функции

Int 13h.

Спецификация расширяет традиционный набор функций BIOS, она ориентиро­вана на приводы с интерфейсом ATAPI и SCSI.


SmartMedia Card


Карты SmartMedia Card, поддерживаемые ассоциацией PCMCIA, предназначены примерно для того же круга приложений, что и CompactFlash. Они совсем тонкие, имеют менее «нежный» печатный разъем с малым числом контактов (всего 22) и не боятся не только повышенной влажности, но и воды. Карты основаны на микросхе­мах флэш-памяти с организацией запоминающих ячеек NAND. Средняя скорость передачи данных — 2 Мбайт/с, пиковая — до 10. Вид карт приведен на рис. 9.8, назначение контактов —в табл. 9.15. Карты на 5 В выпускаются объемом 16и32 Мбит (2 и 4 Мбайт). Карты на 3,3 В выпускаются объемом 16, 32 или 64 Мбит (2, 4, 8 Мбайт); у них контакт 17 соединен с Vcc. Для карт SmartMedia выпускают про­стые переходные адаптеры на слот PC Card Type II. Появились даже устройства FlashPath™ для считывания этих карт в обычном дисководе(!) 1,44 Мбайт.

а                                                             б

Рис. 9.8. Карты SmartMedia: а — питание 5 В, б — питание 3,3 В

9.3. Интерфейсы и конструктивы твердотельных носителей информации________________ 399

Таблица 9.15. Назначение контактов SmartMedia Card

№     Цепь                     №      Цепь

22

VCC(5 B)

1

Vss

21

СЕ#

2

CLE

20

RE#

3

ALE

19

R/B

4

WE#

18

GND

5

WP#

17

Power Detect

6

1/01

16

I/08

7

I/02

15

I/O?

8

I/O3

14

I/06

9

I/O4

13

I/O5

10

Vss

12

Vcc

11

vss



Согласование режимов IEEE


ПУ в стандарте IEEE 1284 обычно не требуют от контроллера реализации всех предусмотренных этим стандартом режимов. Для определения режимов и мето­дов управления конкретным устройством стандарт предусматривает последо­вательность согласования (negotiation sequence). Последовательность построена так, что старые устройства, не поддерживающие IEEE 1284, на нее не ответят, и контроллер останется в стандартном режиме. Периферия IEEE 1284 может со­общить о своих возможностях, и контроллер установит режим, удовлетворяющий и хост, и ПУ.

Во время фазы согласования контроллер выставляет на линии данных байт расширяемости (extensi bi 1 i ty byte), запрашивая подтверждение на перевод интерфейса в требуемый режим или прием идентификатора ПУ (табл. 1.9). Иден­тификатор передается контроллеру в запрошенном режиме (любой режим обрат­ного канала, кроме ЕРР). ПУ использует сигнал Xflag (Select в терминах SPP) для подтверждения запрошенного режима обратного канала, кроме полубайтного, который поддерживается всеми устройствами IEEE 1284. Бит Extensibility Link request послужит для определения дополнительных режимов в будущих расширениях стандарта.

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

37

Таблица 1.9. Биты в байте расширяемости

Бит   Описание

Допустимые комбинации бит [7:0]

7         Request Extensibility Link — зарезервирован           1000 0000

6         Запрос режима ЕРР                                                   0100 0000

5         Запрос режима ЕСР с RLE                                         00110000

4         Запрос режима ЕСР без RLE                                     00010000

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

2          Запрос идентификатора устройства с ответом в режиме:

полубайтный                                                                0000 0100

байтный                                                                        0000 0101

ЕСР 6e3 RLE                                                                00010100


ЕСРсRLE                                                                      00110100

1      Зарезервировано                                                             0000 0010 .

0      Запрос полубайтного режима                                        0000 0001

попе Запрос байтного режима                                               0000 0000

Последовательность согласования (рис. 1.6) состоит из следующих шагов.

1. Хост выводит байт расширяемости на линии данных.

2.   Хост устанавливает высокий уровень сигнала Selectln* и низкий — AutoFeed*, что означает начало последовательности согласования.

3.   ПУ отвечает установкой низкого уровня сигнала Ack# и высокого — Error*,

PaperEnd и Select. Устройство, «не понимающее» стандарта 1284, ответа не

даст, и дальнейшие шаги не выполнятся.



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

4.    Хост устанавливает низкий уровень сигнала Strobe* для записи байта расши­ряемости в ПУ.

5.    Хост устанавливает высокий уровень сигналов Strobe* и AutoLF*.

6.    ПУ отвечает установкой в низкий уровень сигналов PAperEnd и Error*, если ПУ имеет обратный канал передачи данных. Если запрошенный режим поддерживается устройством, на линии Select устанавливается высокий уровень, если не поддерживается — низкий.

7.    ПУ устанавливает высокий уровень на линии Ack# для указания на заверше­ние последовательности согласования, после чего контроллер задает требу­емый режим работы.


СОМ-порт и РnР


Современные ПУ, подключаемые к СОМ-порту, могут поддерживать специфика­цию PnP. Основная задача ОС заключается в идентификации подключенного устройства, для чего разработан несложный протокол, реализуемый на любых СОМ-портах чисто программным способом. Этот протокол иллюстрирует рис. 2.15.

1. Порт инициализируется с состоянием линий DTR=ON, RTS=OFF, TXD=Mark —состояние покоя (Idle).

2.    Некоторое время (0,2 с) ожидается появление сигнала DSR, которое указало бы на наличие устройства, подключенного к порту. В простейшем случае устройство имеет на разъеме перемычку DTR-DSR, обеспечивающую указанный ответ. Если устройство обнаружено, выполняются манипуляции управляющи­ми сигналами DTR и RTS для получения информации от устройства. Если от­вет не получен, ОС, поддерживающая динамическое реконфигурирование, пе­риодически опрашивает состояние порта для обнаружения новых устройств.

3.    Порт программируется на режим 1200 бит/с, 7 бит данных, без паритета, 1 стоп-бит, и на 0,2 с снимается сигнал DTR. После этого устанавливается DTR=1, а еще через 0,2 с устанавливается и RTS-1.

Рис.2.15. Запрос идентификатора устройства PnP

4.   В течение 0,2 с ожидается приход первого символа от устройства. По приходу символа начинается прием идентификатора (см. ниже). Если за это время сим­вол не пришел, выполняется вторая попытка опроса (см. п. 5), несколько отли­чающаяся от первой.

5.   На 0,2 с снимаются оба сигнала (DTR-0 и RTS=0), после чего они оба устанав­ливаются (DTR=1 и RTS=1).

6.   В течение 0,2 с ожидается приход первого символа от устройства, по приходу символа начинается прием идентификатора (см. ниже). Если за это время сим­вол не пришел, то в зависимости от состояния сигнала DSR переходят к про­верке отключения Verify Disconnect (при DSR=0) или в дежурное состояние Connect Idle (при DSR=1).

7.   В дежурном состоянии Connect Idle устанавливается DTR=1, RTS=0, порт про­граммируется на режим 300 бит/с, 7 бит данных, без паритета, 1 стоп-бит.
Если в этом состоянии обнаружится DSR=0, ОС следует уведомить об отключении устройства.

Посимвольный прием идентификатора устройства имеет ограничения по тайм-ауту в 0,2 с на символ, а также общее ограничение в 2,2 с, позволяющее принять

2.10. Неисправности и тестирование СОМ-портов__________________________ 73

строку длиной до 256 символов. Строка идентификатора PnP должна иметь мар­керы начала (28h или 08h) и конца (29h или 09h), между которыми располагается тело идентификатора в стандартизованном формате. Перед маркером начала мо­жет находиться до 16 символов, не относящихся к идентификатору PnP. Если за первые 0,2 с ожидания символа (шаг 4 или 6) маркер начала не пришел, или же сработал тайм-аут, а маркер конца не получен, или же какой-либо символ принят с ошибкой, происходит переход в состояние Connect Idle. Если получена коррект­ная строка идентификатора, она передается ОС.

Для проверки отключения ( Verify Disconnect) устанавливается DTR=1, RTS=0 и че­рез 5 с проверяется состояние сигнала DSR. При DSR=1 происходит переход в со­стояние Connect Idle (см. п. 7), при DSR=0 происходит переход в состояние Dis­connect Idle, в котором система может периодически опрашивать сигнал DSR для обнаружения подключения устройства.

Описанный механизм разрабатывался компанией Microsoft с учетом совмес­тимости с устройствами, не относящимися к устройствам PnP, — он обеспечивает невозможность их вывода из строя и устойчивость системы к сообщениям, не являющимся PnP-идентификаторами. Например, обычная мышь Microsoft Mouse (не PnP) по включении питания от интерфейса ответит ASCII-символом «М» (трехкнопочная — строкой «МЗ»).


Совместное использование прерываний


Линии запросов прерываний в компьютере, насыщенном дополнительными адап­терами, являются самым дефицитным ресурсом, поэтому возникает желание ис­пользовать эти линии совместно, то есть применять разделяемые прерывания меж­ду несколькими устройствами (shared interrupts). Обработчики прерываний (программы) от разных устройств, разделяющих одну линию запроса (и следова­тельно, общий вектор прерывания), должны быть выстроены в цепочку. В процес­се обработки прерывания очередной обработчик в цепочке чтением известного ему регистра своего устройства должен определить, не это ли устройство вызвало пре­рывание. Если это, то обработчик должен выполнить необходимые действия и сбросить сигнал запроса прерывания от своего устройства, после чего передать управление следующему обработчику в цепочке; в противном случае он просто передает управление следующему обработчику.

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

Чтобы прерывания, одновременно возникающие от нескольких устройств, не те­рялись, контроллер прерываний должен быть чувствительным к уровню, а не к перепаду на входе запроса.
В соответствие со схемотехникой логики ТТЛ и КМОП активным уровнем должен быть низкий; выходной формирователь сигнала запро­сов у адаптеров — с открытым коллектором (ТТЛ) илиоткрытым стоком (КМОП); вход запроса у контроллера должен быть «подтянут» к высокому уровню резисто­ром. Тогда непосредственное соединение этих выходов со входом контроллера («Монтажное И») даст требуемый результат в аппаратном плане, а в программном плане необходимо корректно выстроить обработчики в цепочку.

Поясним, почему надежное разделение прерываний при чувствительности к пе­репаду на линии запроса невозможно. Если устройство 1 выработает сигнал за­проса после того, как его выработает (но еще не снимет) устройство 2, то контрол­лер обработает только один запрос. Цепочка программных обработчиков окажется ненадежной: если обработчик устройства 1 в этой цепочке будет проверять свое

12.4. Прямой доступ к памяти — DMA '__________________________________ 463

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

Как уже говорилось, в шине ISA прерывание вырабатывается по положительному перепаду сигнала на линии запроса. Стандартный контроллер 8259А позволяет задавать чувствительность — уровень или перепад — только для всех входов од­новременно, поэтому разделяемые прерывания на шине ISA неработоспособны. Тем не менее некоторые чипсеты, реализующие контроллеры прерываний, допус­кают индивидуальное управление чувствительностью каждого входа. Тогда при соответствующих возможностях CMOS Setup, адаптеров и их ПО разделяемые прерывания технически реализуемы.

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


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

Если карта PCI использует одну линию запроса прерываний, то этой линией по умолчанию является INTR А. Если все четыре карты PCI используют по одной линии запроса, то, как это видно на рис. 12.1, каждая линия занимается монопольно. Однако если сложная карта нуждается в большем числе линий запроса, то ей придется разделять линии с соседними картами. На современных системных платах часто устанавливают более четырех слотов PCI, при этом, естественно, «угроза» совмест­ного использования линий запросов «нависает» и над картами с одной линией за­проса. Порт AGP в плане прерываний следует рассматривать наравне со слотами PCI.

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


Спецификация Plug and Play для шины ISA


Аппаратно-программную спецификацию «Plug and Play ISA Specification» выпус­тили компании Intel и Microsoft в 1994 г. Она обеспечивает решение задач изоля­ции карт ISA, программного распределения системных ресурсов, конфигурирования и передачи параметров операционной системе и прикладному ПО. Вышеперечис­ленные задачи решаются для карт PnP, которые могут работать и в окружении так называемых традиционных карт {Legacy Cards). Поскольку описание программ­ной части этой спецификации достаточно объемно и выходит за рамки данной книги, рассмотрим принципы реализации PnP в основном с точки зрения аппа­ратных средств. Конфигурирование в системе PnP состоит из следующих шагов.

1. Производится изоляция одной карты от всех остальных.

2.   Карте назначается номер CSN (Card Select Number — селективный номер кар­ты), фигурально выражаясь, «приделывается ручка» (Assign a handle), за кото­рую ее можно «ухватить» дальнейшим командам PnP.

3.    С карты считываются данные о сконфигурированных и поддерживаемых ре­

сурсах. Эти шаги повторяются для всех карт, после чего выполняются завершающие шаги.

4.   Производится распределение (арбитраж) системных ресурсов, выделяемых

каждой карте. Каждая карта конфигурируется согласно выбранному распределению ресур­сов и активируется (переводится в рабочий режим).

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

Для конфигурирования карт PnP необходимо всего три 8-битных системных порта (табл. 6.7), с которыми процессор может общаться, применяя инструкции ввода-вывода с однобайтной передачей данных. Карты PnP должны использовать 12-бит­ное декодирование адреса ввода-вывода, а не 10-битное, как это принято в тради­ционных картах ISA.

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

Таблица 6.7.

Системные порты ISA PnP

Имя порта

Адрес

Тип доступа

ADDRESS WRITE_DATA READ_DATA

0279П (Printer status port) OA79h (Printer status port + OSOOh) Перемещаемый в диапазоне 0203h-03FFh

Только запись Только запись Только чтение

Порт APDRES5 используется для адресации регистров PnP — в него записывают индекс требуемого регистра (см. ниже пункт «Конфигурирование карт») перед обращением к портам WRITE_DATA и READ_DATA. Этот же порт используется и для записи последовательности кодов ключа инициализации. Выбор адреса для него обусловлен тем, что ни одна разумно сделанная карта расширения не будет пытать­ся задействовать для записи адрес регистра состояния стандартного LPT-порта.

Порты WRITE_DATA и READ_DATA используются для обмена данными с регистрами PnP. Адрес порта WRITE_DATA традиционными картами с 10-битным декодирова­нием будет восприниматься как тот же адрес, что и у предыдущего порта, так что конфликт опять-таки исключен. Перемещаемому адресу порта READ_DATA про­граммное обеспечение PnP во время исполнения протокола изоляции может лег­ко найти бесконфликтное положение. Адрес этого порта сообщается всем картам записью в их управляющий регистр PnP.

Вышеперечисленные Три порта используются только для конфигурирования и управления картами PnP.


Для взаимодействия прикладных программ с функци­ ональными устройствами карты используются иные ресурсы, выделенные карте (порты, области памяти, прерывания и каналы DMA). По включению питания или аппаратному сбросу карты настраиваются на стандартную рабочую конфигура­цию, принятую для них по умолчанию (она может храниться в энергонезависи­мой Памяти или задаваться джамперами). Это обязательно, по крайней мере для устройств, участвующих в загрузке, — ввод, вывод (экран) и собственно загрузоч­ное устройство. Остальные устройства могут быть и логически отключенными от шины, до тех пор пока они не будут сконфигурированы программными средства­ми PnP. Карта PnP должна сообщать обо всех используемых ею ресурсах и, по возможности, предлагать альтернативные конфигурирования. Она обязана подчи­няться конфигурационным командам PnP, включая команду деактивации (логиче­ского отключения от шины); при невозможности принять указанную конфигурацию карта (или ее логическое устройство) должна отключаться. Строгое выполнение данных требований всеми картами делает возможным работу системы PnP на не­приспособленной для этого шине ISA. Непременным условием работоспособно­сти является и уникальность идентификаторов карт (см. ниже).-

В плане PnP каждая карта может находиться в одном из четырех состояний.

¦ Wait for key (ожидание ключа) — состояние нормального функционирования (или отключения) логических устройств. В это состояние устройство входит при включении питания, по аппаратному сбросу и по завершению его конфи­гурирования системой PnP. До подачи ключа в этом состоянии конфигурация карты программными обращениями изменена быть не может.

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

167

¦    
Sleep («спячка») — состояние, в котором карта ожидает пробуждающей коман­

ды Wake [CSN], переводящей ее либо в состояние изоляции, либо в состояние

конфигурирования. При нулевом параметре CSN в команде все карты с нена-

значенным номером CSN переводятся в состояние изоляции.


При ненулевом

параметре CSN в команде карта с совпадающим номером CSN переводится в со­

стояние конфигурирования.

¦     Isolation(изоляция) — картаотвечаеттольконачтениерегистраSerial Isolation

для реализации одноименного протокола (см. далее), с помощью которого ей

назначается уникальный номер CSN. Остальные команды PnP ей недоступны.

¦     Config (конфигурирование) — состояние, в котором карта отвечает на все об­

ращения к регистрам PnP, позволяя считывать и изменять ее конфигурацию.

В этом состоянии может находиться лишь одна карта. По окончании конфигури­

рования карту переводят в режим ожидания ключа, защищая ее конфигурацию.

Протокол изоляции

Для изоляции карт друг от друга имеется специальный режим работы, в который логика PnP переводится с помощью ключа инициализации (Initiation key). Ключ представляет собой предопределенную последовательность записей в порт ADDRE S 5 (279h). Аппаратная логика карты, проверяющая ключ, основана на сдвиговом ре­гистре с обратными связями LFSR (Linear Feedback Shift Register), схема которого приведена на рис. 6.5. Во время проверки ключа на вход С1 подается уровень логи­ческого нуля, а на вход С2 — стробы записи в порт ADDRESS. Логика, не показанная на рисунке, сравнивает код в сдвиговом регистре с текущей записью и при несовпа­дении сбрасывает регистр LFSR в исходное состояние (код 6Ah). В это же состо­яние регистр может быть переведен двумя последовательными записями нулей в порт ADDRESS. Сдвиг в регистре происходит при каждой записи в порт ADDRESS. Если ключ (последовательность из 32 записей требуемых байт) из исходного со­стояния LFSR будет приложен верно, то после последней записи логика карты перейдет в режим конфигурирования (это еще не состояние config) и подготовит­ся к отработке протокола изоляции. Точная последовательность байт ключа в hex-формате выглядит следующим образом:

6А, В5, DA, ED, F6.. FB', 7D, BE, DF, 6F, 37, IB, 0D, 86, СЗ, 61, В0, 58, 2С. 16. 8В. 45, А2, D1, Е8. 74, ЗА, 9D, СЕ, Е7, 73. 39





С1



Выход

контрольной

суммы



Начальное значение:

1         1       0        1        0        1

 Рис. 6.5. Сдвиговый регистр LFSR карты PnP

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

Протокол изоляции основан на уникальном последовательном идентификаторе (Serial Identifier), хранящемся в памяти каждой карты PnP. Этот идентификатор представляет собой ненулевое 72тбитное число, состоящее из двух 32-битных по­лей и 8-битного контрольного кода, вычисляемого с помощью того же регистра LFSR. Первое 32-битное поле представляет собой идентификатор производите­ля. Второе поле назначается производителем и уникально для каждого экземпляра всех выпускаемых им карт. Здесь может присутствовать серийный номер, а для адаптера Ethernet это может быть и частью МАС-адреса. Принцип построения последовательного идентификатора гарантирует, что в одной системе не могут встретиться две карты с совпадающими идентификаторами. Однако случалось, что незадачливые производители тиражировали (свои ли?) устройства, копируя всю «начинку», включая и серийные номера. Доступ к идентификатору осуществ­ляется последовательно, начиная с бита 0 нулевого байта идентификатора произ­водителя и заканчивая битом 7 контрольной суммы. Во время передачи иденти­фикатора на вход С1 схемы LFSR поступают текущие биты идентификатора, а на вход С2 подаются стробы чтения регистра Serial Isolation (см. ниже). В так­тах передачи контрольной суммы ее биты берутся с выхода сдвигового регистра.

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

Если текущий бит идентификатора карты имеет единичное значение, то ее буфер шины данных в первом чтении пары выводит на шину данных значение 55Ь.


Если текущий бит нулевой, то буфер работает на чтение шины данных и логика карты анализирует ответ других карт — проверяет наличие комбинации «01» в битах D[l:0] (младшие биты числа 55h). В следующем цикле чтения пары карта с еди­ничным битом выводит число AAh, а карта с нулевым текущим битом проверяет наличие комбинации «10».

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

Если карта в текущей паре управляла шиной или карта читала шину, но не обна­ружила корректных активных ответов других карт, она сдвигает идентификатор на один бит и готовится к приему следующей пары циклов чтения.

Эта последовательность выполняется для всех 72 бит идентификатора. В конце процесса останется лишь одна карта. Записью в управляющий регистр PnP (ин­декс 06) ей назначается селективный номер CSN, по которому она будет использо­ваться в дальнейших операциях. Карта с назначенным номером CSN в следующих итерациях протокола изоляции не участвует (на пары чтений не отвечает).

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

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

Программа конфигурирования проверяет данные, возвращаемые во время всех пар циклов чтения, и побитно собирает прочитанный идентификатор. Если в паре приняты байты 55h и AAh, то соответствующий бит считается единичным, в дру­гих случаях он считается нулевым. При приеме идентификатора программа подсчи­тывает контрольную сумму и сравнивает ее с принятой. Несовпадение контрольной суммы или отсутствие среди принятых байт 55h и AAh указывает на то, что вы­бранный адрес порта READ_DATA конфликтует с каким-либо устройством. Тогда программа пробует произвести итерацию, переместив адрес порта READ_DATA в допустимом диапазоне адресов.


Если при переборе нескольких возможных ад­ресов не удается считать корректный идентификатор, то принимается решение об отсутствии карт PnP в системе (вообще или с неназначенными номерами CSN). Программа должна обеспечивать задержку 1 мс после подачи ключа перед первой парой чтений и 250 мкс между парами чтений. Это дает карте время для доступа к информации, которая может храниться и в медленных устройствах энергонезави­симой памяти.

Итак, по завершении протокола изоляции программное обеспечение имеет спи­сок идентификаторов обнаруженных карт и присвоенных им селективных номе­ров, сообщенных и самим картам. Далее общение программы с каждой картой идет по ее селективному номеру CSN, фигурирующему в командах PnP. Нулевой CSN присваивается картам по программному или аппаратному сбросу и используется как широковещательный адрес.

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

Конфигурирование карт выполняется обращениями к регистрам PnP. Обращения к регистрам PnP представляют собой операции записи или чтения портов вво­да-вывода по адресам WRITE_DATA или READ_DATA соответственно. При этом для указания конкретного регистра PnP используется индекс — номер этого регистра, предварительно записанный в регистр ADDRESS.

Каждая карта имеет стандартный набор регистров PnP, причем часть из них от­носится к карте в целом, а часть — к каждому логическому устройству, входяще­му в карту. Архитектура PnP поддерживает концепцию многофункционально­сти, согласно которой каждая карта может включать в себя несколько логических устройств. В любой момент времени в индексном пространстве регистров PnP ото­бражаются стандартные регистры управления картой (см. ниже) и регистры толь­ко одного логического устройства (рис. 6.6). Выбор логического устройства, с ко­торым производится общение, осуществляется записью в регистр Logical Device Number, входящий в группу управляющих регистров карты.

Все логические устройства карт PnP должны обеспечивать, по крайней мере, мини­мальную функциональность:



¦    регистры ресурсов при чтении должны отражать фактические текущие на­

стройки;

¦    бит активации при чтении должен отражать реальное состояние активности

устройства на шине ISA;

170

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

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



Рис. 6.6. Конфигурационные регистры PnP (* — определяется разработчиком)

Для адресации к карте и ее логическим устройствам, а также для чтения конфигу­рационной информации используются стандартные регистры управления картой (табл. 6.8).

Таблица 6.8. Стандартные регистры управления картой PnP

Имя

Индекс и тип    Назначение

Set RD_DATA Port    OOh, WO

Serial Isolation       01 h, RO Config Control        02h,WO



03h,WO

Wake[CSN]



Установка адреса порта для чтения. Биты [7:0]задают значение бит [9:2] адреса порта READ_DATA. Только для записи

Чтение этого регистра в состоянии Isolation приводит к побитному анализу идентификатора

Бит [2] — сброс CSN в 0. Бит [ 1 ] — возвращение в состояние Wait for Key. Бит [0] — сброс всех логических устройств и перевод конфигурационных регистров в состояние включения питания, но с сохранением номера CSN. Биты не запоминаются, так что необходимости в их программном сбросе нет

Запись в этот регистр приведет карту, у которой номер CSN совпадает с записываемым байтом, к переходу из состояния Sleep в состояние Config (если данные не нулевые). Запись нулевого байта переводит все карты с неназначенным номером CSN в состояние Isolation. Указатель последовательно считываемых байт сбрасывается

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

171

Имя

Индекс и тип    Назначение

Resource Data

Status

Card Select Number

Logical Device Number

Card Level Резерв

Card Level, Vendor Defined

04h, RO                 Чтение этого регистра возвращает очередной байт



информации о ресурсах. Перед чтением должен , опрашиваться регистр Status

05h, RO                 Регистр состояния. Единичное значение бита [0]

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

06h, RW                Регистр хранения селективного номера CSN,

обеспечивающего выбор конкретной карты командой Wake[CSN]. Обнуляется по включению питания и аппаратному сбросу

07h, RW                Выбор текущего логического устройства, к которому

относятся все операции по обмену конфигурационной информацией, проверки диапазона адресов ввода-вывода и активации. Если карта им^еет только одно устройство, регистр допускает только чтение и всегда имеет нулевое значение

08h-1Fh                 Зарезервированы на будущее

20h-2Fh                 Используются по усмотрению производителя

Конфигурирование карты начинается с команды WAKE [CSN] — записи байта CSN в регистр с индексом 3. Эта операция переводит карту с указанным номером CSN в состояние Config (конфигурирование), а остальные карты «засыпают» — пере­ходят в состояние Sleep. Для конфигурируемой карты выполняются операции чтения ее конфигурационной информации (как карты в целом, так и логических устройств) и программирования используемых ресурсов. Программирование каждого логического устройства завершается установкой его бита активации, после чего логическое устройство активизируется на шине ISA (начнет реально использовать назначенные ресурсы). Программирование всей карты завершается переводом ее в состояние Wait for key (ожидание ключа). По окончании кон­фигурирования все карты PnP должны быть переведены в это состояние, и тогда их случайное реконфигурирование будет блокировано 32-байтным ключом. Доступ к регистрам PnP через ключ возможен в любое время функционирования, однако запись в них должна производиться в полной уверенности о знании послед­ствий. Возможно даже переназначение CSN «на ходу», но это требуется лишь в устройствах, допускающих «горячие» включения-выключения (что не привет­ствуется на шине ISA), док-станциях (Docking Stations) для подключения порта­тивных компьютеров и системах управления энергопотреблением.



Размер области адресов определяется в блоке данных, считанном из регистра Resource Data.

¦     Дескрипторы запросов прерываний (2). Неиспользуемый селектор запроса пре­рывания должен быть нулевым (поскольку нулевой номер запроса недопус­тим — занят системным таймером). Для линии IRQ2/9 шины ISA применяют номер 9.

¦     Дескрипторы каналов прямого доступа к памяти. Неиспользуемый дескриптор

канала прямого доступа должен иметь значение 4 (этот канал недоступен, по­ скольку задействован для каскадирования контроллеров).

Назначение регистров дескрипторов и их положение в индексном пространстве PnP раскрывает табл. 6.10.

Таблица 6.10. Регистры дескрипторов системных ресурсов логических устройств PnP

 

Индекс и тип    Назначение

40h-5Fh— обычные (24-битные) дескрипторы памяти

40h, RW           Дескриптор памяти 0: базовый адрес памяти, биты [23:16]

 41h, RW           Дескриптор памяти 0: базовый адрес памяти, биты [15:8]

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

Индекс и тип    Назначение

42h, RW                Дескриптор памяти 0: управление. Бит [1 ] — режим обращения: 0 — 8 бит,

1 — 16 бит. Бит [0] (RO) — способ задания диапазона: 0 — следующее поле воспринимается как маска адреса, 1 —как старший адрес

43h, RW                Дескриптор памяти 0: маска или максимальный адрес области, биты [23:16].

Единичное значение бита в маске указывает, что соответствующий бит адреса участвует в дешифрации адреса области памяти (старшие биты); нулевое — бит адреса используется для адресации в пределах выделенной области)

44h, RW                Дескриптор памяти 0: маска или максимальный адрес области, биты [15:8]

45h-47h                 Заполнитель (зарезервировано)

48h-4Ch                Дескриптор памяти Г (аналогично предыдущему)

4Dh-4Fh                Заполнитель (зарезервировано)

50h-54h                Дескриптор памяти 2 (аналогично предыдущему)

55h-57h                 Заполнитель (зарезервировано)



58h-5Ch                Дескриптор памяти 3 (аналогично предыдущему)

5Dh-5Fh                Заполнитель (зарезервировано)

60h-6Fh—дескрипторы пространства ввода-вывода

60h, RW                Дескриптор портов 0: базовый адрес, биты [15:8]. Если логическое

устройство использует только 10-битное декодирование адреса,

биты [15:10] могут игнорироваться

61 h, RW               Дескриптор портов 0: базовый адрес, биты [7:0]

62h-63h, RW     Дескриптор портов 1 (аналогично предыдущему)

64h-65h,RW     Дескриптор портов 2 (аналогично предыдущему)

66h-67h, RW     Дескриптор портов 3 (аналогично предыдущему)

68h-69h, RW     Дескриптор портов 4 (аналогично предыдущему)

6Ah-6Bh, RW     Дескриптор портов 5 (аналогично предыдущему)

6Ch-6Dh, RW     Дескриптор портов 6 (аналогично предыдущему)

6Eh-6Fh,RW     Дескриптор портов 7 (аналогично предыдущему)

70h-73h —дескрипторы запросов прерываний

70h, RW                Селектор запроса прерывания 0. Биты [3:0] задают номер IRQ для Interrupt О

71 h, RW               Тип сигнала запроса прерывания 0. Бит[1 ] — активный уровень: 1 — высокий,

0 — низкий. Бит[0] — тип: 1 — уровень, 0 — перепад. Если карта поддерживает

только один тип сигнала, регистр может быть типа RO

72h, 73h RW      Селектор и тип запроса прерывания 1 (аналогично предыдущему) 74И-75И —дескрипторы каналов прямого доступа

74h, RW                Селектор 0 канала DMA. Биты [2:0] задают номер используемого канала

(001 — DMA0....111 — DMA7)

75h, RW                Селектор 1 канала DMA (аналогично предыдущему)

76h-A8h — 32-битные дескрипторы памяти

76h, RW                32-битный дескриптор памяти 0: базовый адрес памяти, биты [31:24]

77h, RW                32-битный дескриптор памяти 0: базовый адрес памяти, биты [23:16]

78h, RW                32-битный дескриптор памяти 0: базовый адрес памяти, биты [15:8]

79h, RW                32-битный дескриптор памяти О: базовый адрес памяти, биты [7:0]

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

174____________________________                      Глава 6.


Шины и карты расширения


Таблица 6.10 (продолжение) Индекс и тип    Назначение

7Ah, RW               32- битный дескриптор памяти От правление. Биты [7:3] —зарезервированы,

при чтении должны возвращать нули. Биты [2:1]— управление доступом: 00 — 8-битная память, 01 — 16-битная память, 10 — зарезервировано, 11 — 32-битная память. Бит [0] (RO) — способ задания диапазона: 0 — следующее поле воспринимается как размер области, 1 — следующее поле воспринимается как старший адрес

7Bh, RW               32-битный дескриптор памяти 0: размер или старший адрес области,

биты [31:24]

7Ch, RW               32-битный дескриптор памяти 0: размер или старший адрес области,

биты [23:16]

7Dh, RW               32-битный дескриптор памяти 0: размер или старший адрес области,

биты [15:8]

7Eh, RW                32-битный дескриптор памяти 0: размер или старший адрес области,

биты [7:0]

7Fh                       Заполнитель (зарезервировано)

80h-88h                32-битный дескриптор памяти 1

89h-8Fh                Заполнитель (зарезервировано)

90h-98h                32-битный дескриптор памяти 2

99h-9Fh                Заполнитель(зарезервировано)

A0h-A8h              32-битный дескриптор памяти 3

Дескрипторы требуемых ресурсов (данные о возможных конфигурациях логиче­ских устройств) могут быть считаны последовательно байт за байтом из регистра Resource Data и использованы для конфигурирования устройств, которое вы­полняется через регистры, перечисленные в табл. 6.10. Считываться будут данные из карты, находящейся в состоянии config. Если регистр считывается сразу после «победы» карты в протоколе изоляции, считывание начинается с дескриптора версии PnP. Если считывание начинается для карты после ее «пробуждения» ко­мандой Wake [CSN], сначала будут считаны 8 байт уникального идентификатора, затем байт контрольного кода, который будет недействительным, поскольку гене­рируется аппаратно регистром LFSR во время побитного считывания идентифи­катора. Только после этого начнется считывание дескрипторов ресурсов.Поря­док считывания дескрипторов существенен — именно в этом порядке должны программироваться регистры дескрипторов ресурсов карты PnP. Последователь­ность считывания дескрипторов для каждого логического устройства завершает­ся признаком завершения области дескрипторов.

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

6.2. Шина PCI                                                                                                                   175


Способы запуска программ


Традиционным способом запуска программ является загрузка их с какого-либо устройства хранения (диска) в оперативную память и исполнение в ОЗУ. До того как пользователь получает возможность такого запуска, требуется множество предварительных действий. По включении питания (и аппаратному сбросу) про­цессор начинает исполнять процедуру POST (начальный запуск и самотестиро­вание) из ROM BIOS, причем большая часть кода исполняется прямо в ПЗУ. POST инициализирует стандартное оборудование ПК (о котором «знает» ROM BIOS системной платы), а также обнаруживает модули расширения ROM BIOS и запускает их процедуры инициализации. Далее POST определяет загрузочное устройство (обычно диск), ищет на нем загрузочную запись (сектор), загружает этот сектор в фиксированную область ОЗУ и передает управление на его началь­ный адрес. С этого момента, как правило, начинается процесс загрузки операци­онной системы с того же носителя: сначала базовой системы, а затем и всех не­обходимых дополнительных компонентов в виде драйверов и автоматически загружаемых программ. Только после этого пользователь может запускать требу­емые программы с любого доступного устройства хранения (в том числе и через сеть). Программы могут загружаться и автоматически, без участия пользователя, по предварительно составленному и сохраненному сценарию (файлы config.sys, autoexec.bat и т. п. средства).

Для ряда специальных применений ПК приходится нарушать эти традиции. Для срав­нительно простых систем можно отказаться от использования операционных систем. Программу функционирования компьютера можно «зашить» в ПЗУ, оформив в виде модуля расширения BIOS, и эта программа получит управление от POST. Можно и не связываться с ПЗУ, а загружать программу с устройства хранения простым загрузчиком, первая ступень которого должна совпадать со стандартным начальным загрузчиком. Однако не стоит отказываться от операционной системы без веских причин, поскольку она обеспечивает не только удобное операционное окружение, но и средства разработки и отладки программ.
Операционную систему и необхо­ димые программы можно загружать не только с привычных дисков (гибких, же­стких, оптических), но и с компактных твердотельных носителей (см. п. 9.3). Эти носители могут подключаться к обычным интерфейсам устройств хранения.

Интересный вариант «твердотельного диска» — DiskOnChip — для микрокомпью­теров и микроконтроллеров, не имеющих стандартных интерфейсов устройств хранения, предлагает фирма M-Systems. Это микросхема, имеющая интерфейс 8/16-битной статической памяти, легко подключаемый к шине ISA (или локальной шине). Модель Millenium Plus объемом 32 Мбайт содержит массив флэш-памяти архитектуры NAND, модуль статической памяти SRAM (1 Кбайт), интерфейсные схемы, логику защиты записи и чтения и схемы обнаружения и исправления оши­бок. Микросхема отображается на 8-Кбайтную страницу пространства памяти компьютера в области CSOOO-EFFFFh. По сигналу аппаратного сброса начальный блок из флэш-памяти выгружается в SRAM; если обнаруживается ошибка, то

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

берется следующий (резервный) блок. Этот блок содержит процедуру инициалы* зации «диска», которая обнаруживается тестом POST как модуль расширения BIOS. Процедура загружает из флэш-массива в системное ОЗУ драйвер своего «электронного диска» (блочного устройства), которое становится первым или по­следним логическим жестким диском (по выбору при конфигурировании). Далее к этому «диску» можно обращаться обычным способом (через Int 13h),c него же может и загружаться ОС. Интерфейс допускает каскадирование — объединение в единый диск до 4 микросхем, увеличивая его объем до 128 Мбайт, при этом все микросхемы отображаются через общее окно памяти (используют общий сигнал выборки). Встроенное ПО обеспечивает полную эмуляцию диска с прозрачным исправлением ошибок и переназначением дефектных секторов. Микросхема под­держивает длительную скорость записи 750 Кбайт/с, считывания — 2,4 Мбайт/с. Пиковая скорость считывания/записи достигает 20 Мбайт/с.В устройстве имеет­ся уникальный идентификационный номер, область для однократного програм­мирования (ОТР), возможность защиты от записи отдельных зон и возможность ограничения доступа по паролю (нечитаемому).


Сравнение шин I, ACCESSbus и SMBus


Как видно из вышеприведенных описаний, все эти три шины являются «близки­ми родственниками»; однако они имеют ряд электрических, конструктивных и протокольных отличий.

Электрический интерфейс шин (табл. 11.5) достаточно близок, и при обычном (5 В) питании схем проблем совместимости не возникает (Vdd — напряжение питания).

Таблица 11.5. Электрические параметры шин I2C, ACCESS.bus и SMBus

Параметр

12С

ACCESS.bus

ACCESS.bus

SMBus

SMBus

внешняя

внутренняя

мощная

маломощная

Входной уровень

1,5ВилиО,ЗУ,м

0,3Vdd

0,3VM

0,8 В

0,8 В

лог. 0, не более

Входной уровень

3,0 В или 0,7Vdd

0,7Vdd

0,7VM

2,1В

2,1В

лог. 1, не менее

Выходной уровень

0,4 В или 0,2Vdd

0,6 В

0,6 В

0,4 В

0,4 В

лог. 0, не более

при Vdd<2 В

Выходной ток

3

6

0,35

4

0,35

лог. 0, мА

Максимальная

400

1000

1

400

400

емкость линии

шины,пФ

Частота, КГц

0-100,0-400,

0-100

0-100

10-100

10-100

0-3400

' Вместо емкости задаются допустимые длительности фронтов и спадов.

Конструктивно выделяется шина ACCESS.Bus (внешняя), в которой определены разъемы и кабели, а также питание (5 В) устройств от шины; в других — нет.

Протокольные различия более существенны, из них отметим лишь следующие.

¦     В шине ACCES.Bus определены лишь передачи данных ведущим устройством, в остальных шинах ведущее устройство может и принимать данные.

¦     В шинах ACCES.Bus и SMBus ведущее устройство не имеет права повторного захвата шины ранее, чем через 50 мкс после начала передачи. Сигнал SCL в этой шине может удерживаться на низком уровне не дольше 2 мс. В PC таких огра­ничений нет.

¦     В шине SMBus ведущее устройство ожидает от ведомого устройства немед­

ленного ответа, в шине ACCESS.Bus ответ приходит независимо, но ожидает­ся не позже чем через 40 мс. В шине SMBus и ведущее устройство, и ведомое устройство могут притормаживать обмен на уровне приема битов, что позво­ляет им вписываться в свои временные диаграммы (успевать «просыпаться», обрабатывать прерывания).

11.2. Шина управления SMI интерфейса МИ                                                               443



Стандарт IEEE


Стандарт на параллельный интерфейс IEEE 1284, принятый в 1994 году, опи­сывает порты SPP, ЕРР и ЕСР. Стандарт определяет 5 режимов обмена данными, метод согласования режима, физический и электрический интерфейсы. Соглас­но IEEE 1284, возможны следующие режимы обмена данными через параллель­ный порт:

¦ Режим совместимости (Compatibility Mode) — однонаправленный (вывод) по протоколу Centronics. Этот режим соответствует SPP-порту.

¦     Полубайтный режим (Nibble Mode) — ввод байта в два цикла (по 4 бита), исполь­зуя для приема линии состояния. Этот режим обмена подходит для любых адаптеров, поскольку задействует только возможности стандартного порта.

¦     Байтный режим (Byte Mode) — ввод байта целиком, используя для приема ли­нии данных. Этот режим работает только на портах, допускающих чтение вы­ходных данных (Bi-Directional или PS/2 Туре 1, см. выше).

¦     Режим ЕРР (ЕРР Mode) — двунаправленный обмен данными (ЕРР означает

Enhanced Parallel Port). Управляющие сигналы интерфейса генерируются ап­

паратно во время цикла обращения к порту. Эффективен при работе с устрой­

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

¦     Режим ЕСР (ЕСР Mode) — двунаправленный обмен данными с возможностью аппаратного сжатия данных по методу RLE (Run Length Encoding) и использо­вания FIFO-буферов и DMA (ЕСР означает Extended Capability Port). Управ­ляющие сигналы интерфейса генерируются аппаратно. Эффективен для прин­теров и сканеров (здесь может использоваться сжатие) и различных устройств блочного обмена.

Стандарт определяет способ, по которому ПО может определить режим, доступ­ный и хосту (PC), и периферийному устройству (или присоединенному второму компьютеру). Режимы нестандартных портов, реализующих протокол обмена Centronics аппаратно (Fast Centronics, Parallel Port FIFO Mode), могут и не являться режимами IEEE 1284, несмотря на наличие в них черт ЕРР и ЕСР.

В компьютерах с LPT-портом на системной плате режим — SPP, ЕРР, ЕСР или их комбинация — задается в BIOS Setup. Режим совместимости полностью соот­ветствует SPP-порту. Остальные режимы подробно рассмотрены ниже.

При описании режимов обмена фигурируют следующие понятия:

¦     хост — компьютер, обладающий параллельным портом;

¦     ПУ— периферийное устройство, подключаемое к этому порту;

¦     Ptr — в названиях сигналов обозначает передающее ПУ;

¦     прямой канал — канал вывода данных от хоста в ПУ;

¦     обратный канал — канал ввода данных в хост из ПУ.

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

23



Стандарты и интерфейсы Ethernet


Технология Ethernet позволяет использовать различные среды передачи, для каждой из которой имеется стандартное название вида XBaseY, где X— скорость передачи, Мбит/с (10, 100, 1000...); Base — ключевое слово (обозначает немодулированную передачу); Y— условное обозначение среды передачи и дальности связи. Все совре­менные версии Ethernet используют кабель «витая пара» или оптоволоконный и звез­дообразную топологию. Центральным устройством звезды может быть повторитель (он же хаб, hub) или коммутатор (switch). Возможно и двухточечное соединение двух узлов. Для старых версий на коаксиальном кабеле была характерна шинная топология, главным недостатком которой является низкая надежность всей сети. Есть и экзотический вариант пассивной оптической шины lOBaseFP. Иногда в се­тях применяются конверторы среды передачи (media converter), преобразующие типы интерфейсов. Чаще всего используются конверторы «витой пары» в оптику, также применяют и конверторы одномодового оптоволокна в многомодовое.

Для Ethernet со скоростью 10 Мбит/с существуют следующие стандарты.

¦ 10Base5 — сеть на толстом коаксиальном кабеле RG-8 (50 Ом) с шинной топо­логией, максимальная длина кабельного сегмента — 500 м. Для подключения сетевой адаптер должен иметь интерфейс AUI, подключаемый кабелем-спус­ком (4 экранированные витые пары) к трансиверу, установленному на кабеле. В настоящее время для новых сетей не применяется (дорого, громоздко, неэф­фективно и бесперспективно).

406______________________________ Глава 10. Интерфейсы компьютерных сетей

¦ 10Base2 — сеть на тонком коаксиальном кабеле RG-58 (50 Ом) с шинной топо­логией, максимальная длина кабельного сегмента — 185 м. Для подключения сетевой адаптер должен иметь интерфейсный разъем BNC (или AUI с трансивером). Это самый дешевый (по оборудованию) вариант сети; перспектив на развитие нет.

¦     WBaseT— сеть на витой паре категории 3 и выше (2 пары проводов), длина луча — до 100 м (на кабеле категории 5 можно достигать дальности и 200 м, но это не рекомендуется).
Для подключения сетевой адаптер должен иметь интер­фейсный разъем RJ-45 (или АШ с трансивером). Это эффективный вариант сети начального уровня, позволяет расширять полосу пропускания заменой концентраторов-повторителей на коммутаторы. При кабельной проводке ка­тегории 5 и выше позволяет переходить на скорости 100 и даже 1000 Мбит/с (с заменой карт и концентраторов).

¦     WBaseF и FOIRL — сеть на оптоволоконном кабеле (пара волокон). Для под­ключения адаптер должен иметь интерфейс AUI, на который устанавливается оптический трансивер. Используются дешевые многомодовые трансиверы (дли­на волны — 850 нм) с дальностью до 1 км. Для дальних дистанций (десятки км на одномодовом волокне) используются одномодовые трансиверы (1310 нм), которые могут работать и с многомодовым волокном (до 2 км).

Для сетей Fast Ethernet со скоростью 100 Мбит/с существуют следующие стандарты.

¦     100BaseTX — сеть на витой паре категории 5 и выше (2 пары проводов), длина луча — до 100 м. Сетевой адаптер подключается через разъем RJ-45. Это попу­лярный и оптимальный (цена/производительность) вариант подключения уз­лов к сети. При качественной кабельной проводке позволяет переходить на скорость 1000 Мбит/с (с заменой карт и концентраторов).

¦     100BaseT4 — сеть на витой паре категории 3 и выше (4 пары проводов), длина луча — до 100 м. Разъем RJ-45, вариант малораспространенный.

¦     100BaseFX — сеть на оптоволоконном кабеле (пара волокон). Используются одномодовые трансиверы (1310 нм), которые могут работать и с многомодо­вым волокном (до 2 км). Дальность в полнодуплексном режиме — десятки км.

¦     lOOBaseSX — сеть на оптоволоконном кабеле с дешевыми многомодовыми трансиверами (850 нм), дальность — до 300 м. Совместима с lOBaseF, поддер­живается автосогласование режима и скорости (10/100).

Для сетей Gigabit Ethernet со скоростью 1000 Мбит/с существуют следующие стан­дарты.



¦     lOOOBaseCX — соединение активного оборудования коротким (до 25 м) кабе­лем STP или двухосевым кабелем.

¦     lOOOBaseT — соединение витой парой категории 5 и выше (4 пары) на рассто­ яние до 100 м. Разъемы RJ-45.

¦     lOOOBaseSX — соединение по паре многомодовых волокон, дальность — 200-500 м (в зависимости от параметров волокна).

¦     lOOOBaseLX — соединение по паре одномодовых волокон, дальность — до 50 км (в зависимости от параметров трансиверов).

10.1. Стандарты и интерфейсы Ethernet__________________________________ 407

Выше были приведены ограничения на длину каждого физического соединения в сети, однако для работоспособности (надежной работы протокола разрешения коллизий) должны выполняться и дополнительные условия, подробно описанные в литературе [3]. Задача уменьшения диаметра домена коллизий решается приме­нением коммутаторов, а преодоление коллизионных ограничений на длину каж­дого соединения обеспечивается переходом на полнодуплексный режим связи (в котором коллизий нет как таковых). Для 10-Мбитных сетей Ethernet должны соблюдаться перечисленные ниже условия.

¦     Для коаксиала — правило «5-4-3»: не более 5 сегментов могут соединять не более 4 повторителей, станции (адаптеры) можно подключать не более чем в 3 сегментах.

¦     Для витой пары (и оптики) — между любой парой узлов может быть не более 4 повторителей (хабов).

¦     Для любых сетей: диаметр домена коллизий — самое большое расстояние ( «элек­трическая» длина кабелей между парой узлов) — не должен превышать 5 км.

¦     Число узлов в домене коллизий — не более 1024 (реально их не должно быть более 30-50).

Для сетей Fast Ethernet ограничения жестче.

¦     Диаметр домена коллизий — не более 205 м.

¦     Число повторителей в домене коллизий — не более двух класса II, не более



одного класса I.

В Gigabit Ethernet применяются только коммутаторы, так что действуют только ограничения на длину соединений.

Для оптических соединений применяемые разъемы разнообразны: ST, SC, MT-RJ и другие. Коаксиальные разъемы для «толстого» и «тонкого» кабелей различны (серии «N» и BNC соответственно). Отметим, что каждый сегмент коаксиала дол­жен оканчиваться терминаторами 50 Ом и быть заземлен в одной точке. «Схем­ная земля» компьютера не имеет гальванической связи с экраном коаксиального разъема, так что следует избегать случайного касания BNC-разъемов с металли­ческими частями, связанными с шасси компьютера. Сети на коаксиале требуют правильного заземления, нарушение правил чревато выгоранием адаптеров.

Для витой пары применяются разъемы RJ-45 (рис. 10.1), назначение контактов разъема сетевого адаптера (порт MDI) приведено в табл. 10.1. Порты концентра­торов lOBaseT, 100BaseTX и 100BaseT4 имеют тип MDIX, у них сигналы ТХ и RX поменяны местами. Для подключения конечных узлов к портам активного обору­дования (соединение портов MDI-MDIX, рис. 10.2, а) используется «прямой» кабель (рис. 10.3, а), для непосредственного соединения адаптеров (MDI-MDI, рис. 10.2, 6) или соединения двух коммуникационных устройств (MDIX-MDIX) применяют «перекрестный» кабель (рис. 10.3, б). В коммуникационных устрой­ствах, как правило, один из портов снабжают переключателем MDI-MDIX или дополнительным разъемом.

408

Глава 10. Интерфейсы компьютерных сетей

Таблица 10.1. Разъем RJ-45 адаптера Ethernet

Контакт    10BaseT/100BaseTX      100BaseT4     1000BaseTX

1

Тх+

Tx_D1 +

BlD1 +

2

Тх-

Tx_D1-

BlD1-

3

RX+

Rx_D2+

BlD2+

4

Не подключен

BI_D3+

B!_D3+

5

Не подключен

BI_D3-

BI_D3-

6

Rx-

Rx_D2-

BI_D2-

7

Не подключен

BI_D4+

BI_D4+

8

Не подключен

BI_ D4-

BI_ D4-

 



Рис. 10.1. Разъем RJ-45: a — вилка, б — розетка

 





Рис. 10.2. Сеть 10BaseT/100BaseTX: а —звезда, б—двухточечное соединение



а                                                 б

Рис. 10.3. Интерфейсные кабели Ethernet: а — «прямой», б — «перекрестный»

10.1. Стандарты и интерфейсы Ethernet__________________________________ 409

В локальных сетях обычно используется кабельная проводка, состоящая из стацио­нарных кабелей, оканчивающихся розетками, и коммутационных шнуров. Стацио­нарную проводку выполняют так, что она обеспечивает «прямое» соединение кон-' тактов своих интерфейсных разъемов. Коммутационные шнуры могут быть как «прямыми», так и «перекрестными». Заметим, что связи контактов 4, 5, 7 и 8 тре­буются только в 100BaseT4 и lOOOBaseTX, но для lOBaseT и 100BaseTX они не мешают, так что кабельное хозяйство едино.

В Gigabit Ethernet lOOOBaseTX применяются только «прямые» кабели. Универ­сальные порты совместимы с Fast Ethernet (поддерживают автосогласование). Если два порта Gigabit Ethernet соединить «перекрестным» кабелем, они свяжут­ся в режиме 100BaseTX.

Для приведенных выше реализаций Ethernet на витой паре предусмотрен прото­кол согласования режимов (autonegotiation), который исполняется каждый раз при установлении соединения после физического подключения и (или) инициализа­ции портов. Протокол основан на обмене служебными импульсами (они отличны от кадров передаваемой информации). Этот протокол позволяет соединяемым портам выбрать самый эффективный из режимов, доступных обоим портам. При­оритеты режимов в порядке убывания: ЮООВазеТ, 100BaseTX полнодуплексный, 100BaseT4,100BaseTX полудуплексный, lOBaseT полнодуплексный, lOBaseT полу­дуплексный. Протокол автоматического согласования может быть отключен (или не реализован), в этом случае режим работы задается принудительно при конфи­гурировании порта. Возможность переключения режимов отражается в названи­ях портов (например, Fast Ethernet 10/100), поддержка режима 100BaseT4 встре­чается нечасто.

Для оптических вариантов тоже появился протокол согласования, но его воз­можности ограничиваются из-за вероятного несовпадения длин волн, использу­емых в разных вариантах.


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

В стандарте Ethernet (10 Мбит/с) определен интерфейс AUI (Attachment Unit Interface — интерфейс устройства подключения), с помощью которого к адаптеру можно подключать трансивер (приемопередатчик) для любой среды передачи. В трансивере располагаются оконечные цепи передатчика, приемника и детектор коллизий. Назначение контактов интерфейса AUI приведено в табл. 10.2, здесь используется оазъем DB-15 (розетка на адаптере, вилка на трансивере).

Таблица 10.2. Разъем AUI -интерфейса Ethernet Контакт    Сигнал

1

Collision (экран)

2

Collision +

3

Transmit +

4

Receive (экран)

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

410

Глава

10.

Интерфейсы

компьютерных сетей

Таблица 10

.2 (продолжение)

Контакт

Сигнал

5

Receive +

6

DC Power GND

7

He подключен

8

He подключен

9

Collision -

10

Transmit -

11

Transmit (экран)

12

Receive -

13

DC Power (+12B)

14

DC Power (экран)

15

He подключен

В стандарте на Fast Ethernet фигурирует интерфейс МП (Media Independent Inter­face — интерфейс, независимый от среды передачи). В МП данные для приемника и передатчика передаются в некодированном виде по 4-битным параллельным шинам (с частотой синхронизации 2,5 и 25 МГц для скоростей 10 и 100 Мбит со­ответственно) или в последовательном коде (для 10 Мбит/с). В интерфейсе име­ются сигналы синхронизации и управления приемником и передатчиком, состо­яния линии (наличие несущей, коллизия), а также последовательный интерфейс управления SMI (см. п. 11.2), по которому можно общаться с управляющими ре­гистрами трансивера. Определен и физический разъем для подключения сменных модулей (40-контактный двухрядный), но в ПК он практически не встречается.


Статическая память


Статическая память — SRAM (Static Random Access Memory), как и следует из ее названия, способна хранить информацию в статическом режиме — то есть сколь угодно долго при отсутствии обращений (но при наличии питающего напряже­ния). Ячейки статической памяти реализуются на триггерах — элементах с двумя устойчивыми состояниями. По сравнению с динамической памятью эти ячейки более сложные и занимают больше места на кристалле, однако они проще в управ­лении и не требуют регенерации. Быстродействие и энергопотребление статиче­ской памяти определяется технологией изготовления и схемотехникой запомина­ющих ячеек.

Асинхронная статическая память (Asynchronous SRAM, Async SRAM), она же обычная, или стандартная, подразумевается под термином SRAM по умолчанию, когда тип памяти не указан.

Микросхемы этого типа имеют простейший асинхронный интерфейс, включа­ющий шину адреса, шину данных и сигналы управления CS#, ОЕ# и WE#. Микро­схема выбирается низким уровнем сигнала CS# (Chip select), низкий уровень сиг­нала ОЕ# (Output Enable) открывает выходные буферы для считывания данных, WE# (Write Enable) низким уровнем разрешает запись. Временные диаграммы циклов обращения приведены на рис. 7.17. При операции записи управление вы­ходными буферами может производиться как сигналом ОЕ# (цикл 1), так и сиг­налом WE# (цикл 2). Для удобства объединения микросхем внутренний сигнал CS# может собираться по схеме «И» из нескольких внешних, например CSO#, CSt

7.2. Статическая память

275

и CS2# — в таком случае микросхема будет выбрана при сочетании логических сигналов 0,1,0 на соответствующих входах.

Время доступа — задержка появления действительных данных на выходе относи­тельно момента установления адреса — у стандартных микросхем SRAM состав­ляет 12,15 или 20 наносекунд, что позволяет процессору выполнять пакетный цикл чтения 2-1-1-1 (то есть без тактов ожидания) на частоте системной шины до 33 МГц. На более высоких частотах цикл будет не лучше 3-2-2-2.




Рис. 7.17. Временные диаграммы чтения и записи асинхронной статической памяти

Синхронная пакетная статическая память, Sync Burst SRAM, оптимизирована под выполнение пакетных (burst) операций обмена, свойственных кэш-памяти. В ее структуру введен внутренний двухбитный счетчик адреса (не позволяющий пе­рейти границу четырехэлементного пакетного цикла). В дополнение к сигналам, характерным для асинхронной памяти (адрес, данные, CS#, OE# и WE#), синхрон­ная память использует сигнал CLC (Clock) для синхронизации с системной ши­ной и сигналы управления пакетным циклом ADSP#, CADS* и ADV#. Сигналы CADS* (Cache ADdress Strobe) и ADSP# (ADdress Status of Processor), которыми процессор или кэш-контроллер отмечает фазу адреса очередного цикла, являются стробами записи начального адреса цикла во внутренний регистр адреса. Любой из этих сигналов инициирует цикл обращения, одиночный (single) или пакетный (burst), а сигнал ADV# (ADVance) используется для перехода к следующему адресу пакетного цикла. Все сигналы, кроме сигнала управления выходными буферами ОЕ#, синхронизируются по положительному перепаду сигнала CLK. Это означает, что значение входных сигналов должно установиться до перепада и удерживаться после него еще некоторое время. Выходные данные при считывании будут также действительны во время этого перепада. Микросхемы синхронной статической памяти, как и SDRAM, обычно имеют сигнал, выбирающий режим счета адреса: чередование {для процессоров Intel) или последовательный счет (для Power PC).

Конвейерно-пакетная статическая память, РВ SRAM (Pipelined Burst SRAM), — усовершенствование синхронной памяти (слово «синхронная» из ее названия для краткости изъяли, но оно обязательно подразумевается). Конвейером является дополнительный внутренний регистр данных, который, требуя дополнительного такта в первой пересылке цикла, позволяет остальные данные получать без тактов

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

ожидания даже на частотах выше 75 МГц.Задержка данных относительно син­хронизирующего перепада у современных микросхем РВ SRAM составляет 4,5-8 не! Но, как и в случае Sync Burst SRAM, этот параметр не является временем доступа в чистом виде (не следует забывать о двух-трех тактах в первой переда­че), а отражает появление действительных данных относительно очередного пе­репада сигнала синхронизации. Интерфейс РВ SRAM аналогичен интерфейсу Sync Burst SRAM.


Таймеры, задержки и буферы


В каждой команде шины указывается адрес данных, передаваемых в первой фазе данных пакета. Адрес для каждой последующей фазы данных пакета увеличива-

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

ется на 4 (следующее двойное слово), но в командах обращения к памяти порядок может быть иным (см. ниже). Байты шины AD, несущие действительную информа­цию, выбираются сигналами С/ВЕ[3:0]# в фазах данных. Внутри пакета эти сигна­лы могут менять состояние от фазы к фазе произвольным образом. Разрешенные байты могут быть разрозненными; возможны фазы данных, в которых не разре­шено ни одного байта. В отличие от шины ISA, на PCI нет динамического измене­ния разрядности — все устройства должны подключаться к шине 32-разрядным способом. Если в устройстве PCI применяются функциональные схемы иной раз­рядности (к примеру, нужно подключить микросхему 8255, имеющую 8-битную шину данных и четыре регистра), то приходится принимать схемотехнические методы преобразования, отображающие все регистры на 32-разрядную шину AD.

Адресация памяти, портов и конфигурационных регистров различна.

¦   В циклах обращения к памяти адрес, выровненный по границе двойного слова,

передается по линиям AD[31:2]; линии AD[1:0] задают порядок адресов в пакете:

• 00 — линейное инкрементирование; адрес последующей фазы отличается от предыдущего на число байтов шины (4 для 32-битной и 8 для 64-битной шины).

•       10 — Cacheline Wrap mode, сворачивание адресов с учетом длины строки кэш-памяти. В транзакции адрес для очередной фазы увеличивается до дос­тижения границы строки кэша, после чего переходит на начало этой строки и увеличивается до адреса, предшествующего начальному. Если транзакция длиннее строки кэша, то она продолжится в следующей строке с того же смещения, что и началась. Так, при длине строки 16 байт и 32-битной шине транзакция, начавшаяся с адреса xxxxxxOSh, будет иметь последующие фазы данных, относящиеся к адресам xxxxxxOCh, xxxxxxOOh, xxxxxx04h; и далее к xxxxxxlSh, xxxxxxlCh, xxxxxxlOh, xxxxxx!4h.
Длина строки кэша пропи­сывается в конфигурационном пространстве устройства (см. п. 6.2.12). Если

устройства не имеет регистра Cache Line Size, то оно должно прекратитьтранзакцию после первой фазы данных;

•       01 и 11 — зарезервировано, может использоваться как указание на отключе­ние (Disconnect) после первой фазы данных.

¦     В циклах обращения к портам ввода-вывода для адресации любого байта исполь­

зуются все линии AD[31:0]. При этом биты адреса AD[31:2] указывают на адрес двойного слова, к которому принадлежат передаваемые данные, а младшие биты адреса AD[1:0] должны соответствовать байтам, которые могут быть разрешены сигналами С/ВЕ[3:0]#. При AD[1:0]=00 допустимо С/ВЕ[3:0]# - хххО или 1111, приАО[1:0]«01-С/ВЕ[3:0]# = хх01или1111,приАО[1:0]=10-С/ВЕ[3:0]# = х011 или 1111, при AD[1:0]=11 — С/ВЕ[3:0]# = 0111 (передается лишь байт 3) или 1111 (ни один байт не разрешен). Эти циклы тоже могут быть пакетными, хотя на практике эта возможность используется редко.

¦     В циклах конфигурационной записи/считывания устройство (карта расши­

рения) выбирается индивидуальным сигналом IDSEL; функция адресуется би­тами AD[10:8], а конфигурационные регистры (только двойные слова) адресу­ются битами AD[7:2], при этом AD[1:0]=00.

6.2. Шина PCI_______________________________________________________ 185

Команды шины PCI определяются значениями бит С/ВЕ# в фазе адреса (табл. 6.12).

¦     Команда подтверждения прерывания предназначена для чтения вектора пре­

рываний. По протоколу она выглядит как команда чтения, неявно адресован­

ная к системному контроллеру прерываний. Здесь в фазе адреса по шине AD полезная информация не передается, но ее инициатор (главный мост) должен обеспечить стабильность сигналов и корректность паритета. В PC 8-битный вектор передается в байте 0 по готовности контроллера прерываний (по сиг­налу TRDY#). Подтверждение прерываний выполняется за один цикл (первый холостой цикл, который процессоры х86 делают в дань совместимости со стариной, мостом подавляется).



¦     Специальный цикл отличается от всех других тем, что является широковеща­

тельным. Однако ни один агент на него не отвечает, а главный мост или иное

устройство, вводящее этот цикл, всегда завершает его способом Master Abort (на него требуется 6 тактов шины). Специальный цикл предназначен для генера­ции широковещательных сообщений — их могут читать любые «заинтере­сованные» агенты шины. Тип сообщения декодируется содержимым линий AD[15:0], на линиях AD[31:16] могут помещаться данные, передаваемые в со­общении. Фаза адреса в этом цикле для обычных устройств отсутствует, но мосты используют ее информацию для управления распространением сообще­ния. Сообщения с кодами OOOOh, 000lh и 0002h требуются для указания на отключение (Shutdown), остановку (Halt) процессора или специфические фун­кции процессора х8б, связанные с кэшем и трассировкой. Коды 0003-FFFFh зарезервированы. Специальный цикл может генерироваться тем же аппарат­но-программным механизмом, что и конфигурационные циклы (см. п. 6.2.11),но со специфическим значением адреса.

¦     Команды чтения и записи ввода-вывода служат для обращения к пространству

портов. Линии AD содержат адрес байта, причем декодированию подлежат и биты ADO и AD1 (несмотря на то, что имеются сигналы ВЕх#). Порты PCI могут быть 16- или 32-битными. Для адресации портов на шине PCI доступны все 32 бита адреса, но процессоры х86 могут использовать только младшие 16 бит.

¦     Команды обращения к памяти, кроме обычного чтения и записи, включают чте­

ние строк кэш-памяти, множественное чтение (нескольких строк), запись с ин-

валидацией.

¦     Команды конфигурационного чтения и записи адресуются к конфигурационному

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


Для генерации данных команд требуется специаль­ный аппаратно-программный механизм (см. п. 6.2.11).

¦     Чтение строк памяти применяется, когда в транзакции планируется более двух

32-битных передач (обычно это чтение до конца строки кэша).

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

границы строк кэш-памяти.

¦     Запись с инвалидацией применяется к целым строкам кэша и позволяет опти­

мизировать циклы обратной записи «грязных» строк кэша.

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

¦ Двухадресный цикл позволяет по 32-битной шине обращаться к устройствам с 64-битной адресацией. В этом случае младшие 32 бита адреса передаются в цикле данного типа, а за ним следует обычный цикл, определяющий тип об­мена и несущий старшие 32 бита адреса. Шина PCI допускает 64-битную ад­ресацию портов ввода-вывода (для х86 это бесполезно, но PCI существует и на других платформах).

Таблица 6.12. Декодирование команд шины PCI С/ВЕ[3:0]      Тип команды

0000                Interrupt Acknowledge — подтверждение прерывания

0001                Special Cycle — специальный цикл

0010                I/O Read — чтение порта ввода-вывода

0011                I/O Write —запись в порт ввода-вывода

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

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

0110                Memory Read — чтение памяти

0111                Memory Write — запись в память

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

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

1010                Configuration Read — конфигурационное считывание

1011                Configuration Write — конфигурационная запись

1100                Multiple Memory Read — множественное чтение памяти

1101                Dual Address Cycle (DAC) — двухадресный цикл

1110                Memory-Read Line — чтение строки памяти

1111                Memory Write and Invalidate — запись с инвалидацией


Терминаторы


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

¦     избавить линии шины от отражений сигналов с ее концов;

¦     обеспечить требуемый уровень сигнала пассивных линий.

Первая задача вытекает из того, что шлейф SCSI может иметь довольно большую протяженность, и в терминах теоретических основ электротехники каждая сиг-

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

нальная линия является «длинной линией». Чтобы сигналы не отражались от концов этой линии, оба конца должны быть нагружены согласованной нагрузкой. Согласованность означает совпадение волнового сопротивления линии с динами­ческим сопротивлением (импедансом) нагрузки. Волновое сопротивление линий кабельных шлейфов, применяемых в SCSI, обычно лежит в диапазоне 85-110 Ом. Если терминаторов не будет (или импеданс терминатора не совпадает с линией), «звон» отраженных сигналов будет приводить к помехам на шине. Вторая задача обусловлена спецификой интерфейса SCSI, где каждой сигнальной линией может управлять любое из нескольких устройств, подключенных к шине. Причем устройство, посылающее сигнал, формирует только активный уровень (низкий в недифференциальных версиях SCSI), а возвратить линию в пассивное состояние должны терминаторы. Если нет ни одного терминатора, то уровень на линиях, «отпущенных» устройством, за счет входных токов приемников сигнала тоже будет возвращаться в пассивное состояние, но гораздо медленнее. Если шина достаточно длинная и устройств много, то это возвращение будет слишком запоз­далым и может вызвать сбои в протоколе.
У высокоскоростных устройств приме­няется активное возвращение сигналов в пассивное состояние (active negation), от чего возникает иллюзия возможности работы шины без терминаторов. Однако устойчивая работа при большом количестве устройств (более двух на шине, вклю­чая контроллер) проблематична.

Из сказанного выше становится понятно, когда пренебрежение правилами уста­новки терминаторов может «сойти с рук»: когда шина не очень длинная, устройств мало (скажем, контроллер и один винчестер), а скорость обмена невелика. Одна­ко на одну шину SCSI чаще устанавливают много устройств, при этом шина полу­чается довольно длинной; устройства стараются использовать на высоких скоро­стях обмена, да еще и с высокими требованиями к надежности. В иных случаях было бы выгоднее применять устройства с иным интерфейсом — для устройств хранения данных это широко распространенный и дешевый интерфейс АТА. Рассмотрим, какие бывают терминаторы для наиболее популярных устройств SE и LVD. Многие устройства с интерфейсом LVD способны работать и с интерфей­сом SE (но на малых скоростях); их интерфейс обозначается символами «LVD/SE». Режим работы эти устройства способны определять автоматически: если все устройства на шине (включая и терминаторы) «умеют» работать в режиме LVD, то этот режим и будет выбран (если ни на одном из устройств принудительно не установлен режим SE). Если же на шине хоть одно устройство способно только на режим SE, то в этот режим перейдут и все остальные (соответственно, снижая возможную скорость передачи данных). Заметим, что устройства HVD (Diff) в компанию к LVD/SE включать нельзя.

Для режимов SE и LVD различается способ передачи по сигнальным линиям и ре­жим терминации. Каждая сигнальная линия шины SCSI состоит из пары проводов: прямого и обратного. В режиме SE все обратные провода соединяются с «землей» (на каждом устройстве); терминирующие цепи подключаются только к прямым проводам. В режиме LVD по каждой паре проводов сигнал передается в диффе­ренциальной парафазией форме; терминирующие цепи подключаются к обоим



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

проводам каждой пары. Варианты схем терминаторов для SE и LVD приведены на рис. 5.4, где изображены нагрузочные цепи для одной: сигнальной линии. Все терминаторы (не только «активные»!) нуждаются в питании; которое на них поступает по специальным линиям TERMPWR (+5.В).

¦    Пассивные терминаторы SE (рис. 5.4, а) имеют импеданс 132 Ом, что плохо

согласуется с ленточным кабелем шины. Эти терминаторы пригодны лишь для

«обычного» интерфейса SCSI (скорость передачи до 5/10 Мбайт/с в «узком»/«широком» вариантах). Для Fast SCSI, Ultra SCSI и далее они непригодны.

¦    Активные терминаторы SE (рис. 5.4, б) имеют импеданс 110 Ом, что позволяет их использовать на более высоких скоростях в Fast SCSI, ;Их «активность» заключается лишь в наличии внутреннего источника опорного напряжения,(ИОН) +2,85 В, питающегося от тех же линий TermPWR. Микросхемы активных терминаторов имеют и электронные ключи, включенные последовательно в каждую линию. Ключи управляются общим сигналом, позволяющим включать-отключать терминатор.

¦    Терминаторы FPTSE (Forced Perfect Terminator) — улучшенный вариант активных терминаторов с диодными ограничителями выбросов, применяемые в высокоскоростных версиях SE-интерфейса.

¦    Терминаторы для LVD (рис. 5.4, в) имеют дифференциальной импеданс 105 Ом (линейный — 150 Ом). Здесь два источника опорных напряжений обеспечивают между прямым и обратным проводами смещение 112 мВ (в их пассивном состоянии).

¦    Универсальные терминаторы L VD/SE сочетают в себе активные SE-терминаторы, дифференциальные терминаторы LVD, схему определения режима и цепи коммутации каждого провода (прямого и обратного) шины SCSI на соответ­ствующие терминирующие цепи.



Рис. 5.4. Терминаторы SCSI: а — SE пассивные, б — SE активные, в — LVD'

Универсальные терминаторы LVD/SE, как и оетальны'е; устройст/ва, о режим работы шины по линии DIFSENSE; В старых устройствах SE контактр"азт!ема,' соответствующий этой линии, бьш^^ заземлен.


Устройства LVD иытйютсй вЫвеСтй' этот контакт потенциал 1,3 В. Устройства HVD на этот контакт выводили потейци-; '' ал выше 2,1 В. В терминаторе имеются компараторы, сравнивающие сигнал ^т0й;) линии с эталонами, и логика, переключающая режим терминатора <если Ьбнаружи-''! вается HVD, терминатор отключает все свои цепи). Специально для универйайй-''!

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

ных терминаторов выпускаются микросхемы (например, DS2117М, DS2118М фир­мы Dallas Semiconductor), выполняющие все функции автоматической терминации для 9 пар проводов. Для терминации 16-разрядной шины данных (Wide SCSI) и сигналов управления требуется 3 таких микросхемы. В микросхемах использу­ются прецизионные резисторы с лазерной подгонкой, что обходится недешево. По исполнению терминаторы могут быть как внутренними (размещенными на печатной плате устройства), так и внешними (устанавливаемыми на разъемы ка­беля или устройства). Внутренние терминаторы на каждом устройстве могут быть включены или выключены. В старых устройствах (SCSI-1) для включения тер­минаторов нужно было установить набор перемычек или вставить в специальную кроватку сборку резисторов. Активные терминаторы включаются-выключаются перестановкой одного джампера или даже бесконтактно — программно при кон­фигурировании устройства. Возможно даже автоматическое включение термина­тора (если таковая возможность поддерживается устройством и разрешена при конфигурировании). Внешние терминаторы выглядят как разъемы с небольшой крышкой, под которой смонтирована их «начинка». Несмотря на внешнюю просто­ту, они имеют ощутимую цену — терминатор для Ultra-Wide SCSI стоит $10-15. Внешние терминаторы устанавливаются и снимаются только вручную.

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

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

Отсутствие терминаторов на устройствах с LVD не означает отказа от правил терминации!


Типы передач данных


Архитектура USB допускает четыре базовых типа передачи данных.

¦     Управляющие посылки (control transfers) используются для конфигурирования устройств во время их подключения и для управления устройствами в процес­се работы. Протокол обеспечивает гарантированную доставку данных.

¦     Передачи массивов данных (bulk data transfers) — это передачи без каких-либо обязательств по задержке доставки и скорости передачи. Передачи массивов могут занимать всю полосу пропускания шины, свободную от передач других

4.1. Шина USB____________________________________________________ 97

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

¦     Прерывания (interrupt) — короткие передачи, которые имеют спонтанный ха­рактер и должны обслуживаться не медленнее, чем того требует устройство.

Предел времени обслуживания устанавливается в диапазоне 10-255 мс для

низкой, 1-255 мс для полной скорости, на высокой скорости можно заказать и 125 мкс. При случайных ошибках обмена выполняется повтор. Прерывания используются, например, при вводе символов с клавиатуры или для передачи сообщения о перемещении мыши.

¦     Изохронные передачи (isochronous transfers) — непрерывные передачи в реаль­ном времени, занимающие предварительно согласованную часть пропускной способности шины с гарантированным временем задержки доставки. Позволя­ют на полной скорости организовать канал с полосой 1,023 Мбайт/с (или два по 0,5 Мбайт/с), заняв 70 % доступной полосы (остаток можно заполнить и менее емкими каналами). На высокой скорости конечная точка может полу­чить канал до 24 Мбайт/с (192 Мбит/с). В случае обнаружения ошибки изо­хронные данные не повторяются — недействительные пакеты игнорируются. Изохронные передачи нужны для потоковых устройств: видеокамер, цифро­вых аудиоустройств (колонки USB, микрофон), устройств воспроизведения и записи аудио- и видеоданных (CD и DVD). Видеопоток (без компрессии) шина

USB способна передавать только на высокой скорости.

Полоса пропускания шины делится между всеми установленными каналами.

Выделенная полоса закрепляется за каналом, и, если установление нового канала

требует такой полосы, которая не вписывается в уже существующее распределе­

ние, запрос на выделение канала отвергается.                   1

Архитектура USB предусматривает внутреннюю буферизацию всех устройств, причем чем большей полосы пропускания требует устройство, тем больше должен быть его буфер. Шина USB должна обеспечивать обмен с такой скоростью, чтобы задержка данных в устройстве, вызванная буферизацией, не превышала несколь­ких миллисекунд.



Традиционный LPT-порт


Традиционный, он же стандартный, LPT-порт называется стандартным парал­лельным портом (Standard Parallel Port, SPP), или SPP-портом, и является одно­направленным портом, через который программно реализуется протокол обмена Centronics (см. п. 8.3.1). Название и назначение сигналов разъема порта (табл. 1.1) соответствуют интерфейсу Centronics.

Таблица 1

.1. Разъем стандартного LPT-порта

Контакт

№ провода

Назначение

DB-25S

в кабеле

I/O1

Бит2

Сигнал

1

1

0/I

CR.OX

Strobe»

2

3

0(1)

DR.O

DataO

3

5

0(1)

DR.1

Datal

4

7

0(1)

DR.2

Data 2

5

9

0(1)

DR.3

Data 3

6

11

0(1)

DR.4

Data 4

7

13

0(0

DR.5

Data 5

8

15

0(0

DR.6

Data 6

9

17

0(0

DR.7

Data 7

10

19

I3

SR.6

Ack#

11

21

I

SR.A

Busy

12

23

I

SR.5

PaperEnd(PE)

13

25

I

SR.4

Select

14

2

0/I

CR.1\

Auto LF# (AutoFeedW)

15

4

I

SR.3

Error»

16

6

0/I

CR.2

lnit#

17

8

0/I

CR.3\

Select ln#

18-25

10,12,14,16,18,

_

_

_

20, 22, 24, 26

1   I/O задает направление передачи (вход-выход) сигнала порта. O/I обозначает выходные линии, состо­яние которых считывается при чтении из портов вывода; 6(1) — выходные линии, состояние которых может быть считано только при особых условиях (см. ниже).

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

3   Вход Ack# соединен резистором (10 кОм) с питанием +5 В.

1.1. Традиционный LPT-порт____________________________________________ 19

Адаптер SPP-порта содержит три 8-битных регистра, расположенных по соседним адресам в пространстве ввода-вывода, начиная с базового адреса порта BASE (3BCh, 378h или 278h).

Data Register (DR) — регистр данных, адрес=ВА5Е. Данные, записанные в этот ре­гистр, выводятся на выходные линии Data[7:0].
Данные, считанные из этого реги­стра, в зависимости от схемотехники адаптера соответствуют либо ранее записан­ным данным, либо сигналам на тех же линиях, что не всегда одно и то же. Status Register (SR) — регистр состояния (только чтение), адрес=ВА5Е+1.' Регистр отображает 5-битный порт ввода сигналов состояния принтера (биты SR.4-SR.7) и флаг прерывания. Бит SR. 7 инвертируется — низкому уровню сигнала соответ­ствует единичное значению бита в регистре, и наоборот.

Ниже описано назначение бит регистра состояния (в скобках даны номера кон­тактов разъема порта).

¦     SR.7 — Busy — инверсное отображение состояния линии Busy (11): при низ­ком уровне на линии устанавливается единичное значения бита — разрешение на вывод очередного байта.

¦     SR. 6 — Ack (Acknowledge) — отображение состояния линии Ack# (10).

¦     SR. 5 — РЕ (Paper End) — отображение состояния линии Paper End (12). Еди­ничное значение соответствует высокому уровню линии — сигналу о конце бу­маги в принтере.

¦     SR. 4 — Select — отображение состояния линии Select (13). Единичное значение соответствует высокому уровню линии — сигналу о включении принтера.

¦     SR. 3 — Error — отображение состояния линии Error* (15). Нулевое значение соответствует низкому уровню линии — сигналу о любой ошибке принтера.

¦     SR.2 — PIRQ — флаг прерывания по сигналу Ack# (только для порта PS/2). Бит обнуляется, если сигнал Ack# вызвал аппаратное прерывание. Единичное значе­ние устанавливается по аппаратному сбросу и после чтения регистра состояния.

¦     SR[1:0] — зарезервированы.

Control Register (СR) — регистр управления, адрес=ВА5Е+2, допускает запись и чтение. Регистр связан с 4-битным портом вывода управляющих сигналов (биты 0-3) для которых возможно и чтение; выходной буфер обычно имеет тип «открытый кол­лектор». Это позволяет корректно использовать линии данного регистра как вход­ные при программировании их в высокий уровень.


Биты 0,1,3 инвертируются.

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

¦     CR [7:6] — зарезервированы.

¦     CR.5 — Direction — бит управления направлением передачи (только для пор­тов PS/2, см. ниже). Запись единицы переводит порт данных в режим ввода. При чтении состояние бита не определено.

¦     CR. 4 — AcklNTEN (Ack Interrupt Enable) — единичное значение разрешает пре­рывание по спаду сигнала на линии Ack# — сигнал запроса следующего байта.

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

¦     CR.3 — Select In — единичное значение бита соответствует низкому уровню на выходе Select ln# (17) — сигналу, разрешающему работу принтера по интер­фейсу Centronics.

¦     CR.2 — In it— нулевое значение бита соответствует низкому уровню на выхо­де Init# (16) — сигнал аппаратного сброса принтера.

¦     CR. 1 — Auto LF — единичное значение бита соответствует низкому уровню на выходе Auto LF# (14) — сигналу на автоматический перевод строки (LF — Line Feed) по приему байта возврата каретки (CR). Иногда сигнал и бит называют AutoFD или AutoFDXT.

¦     CR.0 — Strobe — единичное значение бита соответствует низкому уровню на выходе Strobe* (1) — сигналу стробирования выходных данных.

Запрос аппаратного прерывания (обычно IRQ7 или IRQ5) вырабатывается по отри­цательному перепаду сигнала на выводе 10 разъема интерфейса (Ack#) при уста­новке CR. 4=1. Во избежание ложных прерываний контакт 10 соединен резистором с шиной +5 В. Прерывание вырабатывается, когда принтер подтверждает прием предыдущего байта. Как уже было сказано, BIOS это прерывание не использует и не обслуживает.

Перечислим шаги процедуры вывода байта по интерфейсу Centronics с указани­ем требуемого количества шинных операций процессора.

1.    Вывод байта в регистр данных (1 цикл IOWR#).

2.    Ввод из регистра состояния и проверка готовности устройства (бит SR. 7 —



сигнал Busy). Этот шаг зацикливается до получения готовности или до сраба­тывания программного тайм-аута (минимум 1 цикл IORD#).

3.    По получению готовности выводом в регистр управления устанавливается

строб данных, а следующим выводом строб снимается. Обычно, чтобы пере­

ключить только один бит (строб), регистр управления предварительно считы-

вается, что к двум циклам IOWR# добавляет еще один цикл IORD#.

Видно, что для вывода одного байта требуется 4-5 операций ввода-вывода с реги­страми порта (в лучшем случае, когда готовность обнаружена по первому чтению регистра состояния). Отсюда вытекает главный недостаток вывода через стандарт­ный порт — невысокая скорость обмена при значительной загрузке процессора. Порт удается разогнать до скоростей 100-150 Кбайт/с при полной загрузке про­цессора, что недостаточно для печати на лазерном принтере. Другой недостаток функциональный — сложность использования в качестве порта ввода.

Стандартный порт асимметричен — при наличии 12 линий (и бит), нормально работающих на вывод, на ввод работает только 5 линий состояния. Если необ­ходима симметричная двунаправленная связь, на всех стандартных портах ра­ботоспособен режим полубайтного обмена — Nibble Mode. В этом режиме, называ­емом также Hewlett Packard Bi-tronics, одновременно принимаются 4 бита данных, пятая линия используется для квитирования. Таким образом, каждый байт пе­редается за два цикла, а каждый цикл требует по крайней мере 5 операций ввода-вывода.

1.2, Расширения параллельного порта         __________________________         21

Схемотехника выходных буферов данных LPT-портов отличается большим разно­образием. На многих старых моделях адаптеров SPP-порт данных можно исполь­зовать и для организации ввода. Если в порт данных записать байт с единицами во всех разрядах, а на выходные линии интерфейса через микросхемы с выходом типа «открытый коллектор» подать какой-либо код (или соединить ключами какие-то линии со схемной землей), то этот код может быть считан из того же регистра данных.Однако выходным цепям передатчика информации придется «бороться» с выходным током логической единицы выходных буферов адаптера. Схемотехника ТТЛ такие решения не запрещает, но если внешнее устройство выполнено на микросхемах КМОП, их мощности может не хватить для «победы» в этом шинном конфликте. Однако современные адаптеры часто имеют в выход­ной цепи согласующий резистор с сопротивлением до 50 Ом. Выходной ток ко­роткого замыкания выхода на землю обычно не превышает 30 мА. Простой рас­чет показывает, что даже в случае короткого замыкания контакта разъема на землю при выводе «единицы» на этом резисторе падает напряжение 1,5 В, что входной схемой приемника будет воспринято как «единица». Поэтому нельзя полагать, что такой способ ввода будет работать на всех компьютерах. На некоторых старых адаптерах портов выходной буфер отключается перемычкой на плате. Тогда порт превращается в обыкновенный порт ввода.


Управление интерфейсом и выполнение команд


Для управления интерфейсом служит система сообщений — Message System, кото­рыми обмениваются ИУ и ЦУ. Обмен происходит в фазах Message IN/OUT (см. вы­ше), в одной фазе может передаваться несколько сообщений.

С помощью сообщений согласуются параметры синхронного режима и разряд­ность данных. Процесс согласования синхронного обмена называется Synchronous Negotiation. Устройство, запрашивающее синхронный обмен, посылает сообщение Synchronous Data Transfer Request с указанием допустимого периода цикла и отста­вания REQ/ACK. Если другой участник обмена поддерживает синхронный режим, он предложит свои параметры. Согласованными параметрами будут максималь­ный период и минимальное отставание (нулевое отставание эквивалентно асин-

5.4. Управление интерфейсом и выполнение команд

143

кронному режиму). Выбранный режим будет относиться только к фазам переда­чи между данной парой устройств. Отвергнутое сообщение является требовани­ем асинхронного режима. Поскольку старые хост-адаптеры не поддерживали со­гласование синхронного режима, на ЦУ запрос синхронного режима может быть заблокирован. О возможности работы в синхронном режиме хост может узнать, послав команды Request Sense и Inquiry.

Разрядность передач согласуется аналогично посредством сообщений Wide Data Transfer Request. Согласованные режимы будут действовать до сброса устройств по сообщению Bus Device Reset или «жесткого» сброса, что приведет к установке предопределенных режимов по включению. Согласование режимов не должно инициироваться в каждом процессе, поскольку затраты времени на эту процедуру сводят на нет выигрыш в производительности.

Система команд SCSI включает общие команды, применимые для устройств всех классов, и специфические для каждого класса. Любое SCSI-устройство должно поддерживать обязательные команды общего набора и своего класса, чем обеспе­чивается высокий уровень совместимости. Команда передается ИУ в ЦУ через блок дескриптора команды (command descriptor block), посылаемый в фазе Command. Некоторые команды сопровождаются блоком параметров, следующим за блоком дескриптора в фазе Data. Форматы блоков стандартизованы; длина блока, определя­емая кодом операции (первым байтом блока), может составлять б, 10 или 12 байт.


Рассмотрим процесс на шине SCSI на примере одиночной команды чтения Read. ИУ имеет активный набор указателей и несколько сохраненных наборов, по одно­му на каждый из допустимого числа одновременных конкурирующих процессов. ИУ восстанавливает указатели процесса в активный набор и, выиграв арбитраж, выбирает ЦУ. Как только ЦУ выбрано, оно берет на себя управление процессом. В фазе Selection ИУ вводит сигнал ATN#, сообщая о намерении послать сообщение Identify с указанием адресуемого ЛУ. ЦУ переходит в фазу Command и принимает блок дескриптора команды Read. ИнтеPnPетировав команду, ЦУ переходит в фазу Data IN, передает запрошенные данные, затем переводится в фазу Status и посылает состояние Good, Затем в фазе Message IN устройство посылает сообщение Command Complete, после чего освобождает шину (фаза Bus Free). Процесс завершен.

Рассмотрим тот же пример, но при условии отключения от шины (Disconnect) в процессе выполнения команды. Если устройство, получив команду Read, опре­делит, что для получения затребованных данных необходимо много времени, оно освободит шину, послав сообщение Disconnect. Как только требуемые данные го­товы в ЦУ, оно, выиграв арбитраж, выберет ИУ (в фазе Reselect) и в фазе Message IN пошлет ему сообщение Identify. ИУ вернет соответствующий набор указателей в активное состояние и продолжит выполнение процесса, как описано выше. Если ЦУ хочет отсоединиться, когда часть данных уже передана (например, головка диска дошла до конца цилиндра и требуется время на позиционирование), оно посылает сообщение Save Data Pointer, а затем — Disconnect. После повторного соединения передача данных возобновится с точки, определенной последним со­храненным значением указателя. Если произошла ошибка или исключение, ЦУ может повторить обмен данными, послав сообщение Restore Pointers или отсоеди­нившись без сообщения Save Data Pointers.

144                                                                                                          Глава 5.


Шина
SCSI

Теперь рассмотрим процесс с цепочкой связанных команд. По успешному заверше­нию каждой команды цепочки ЦУ автоматически переходит к исполнению сле­дующей. Все команды цепочки являются частью одного процесса. Команды не являются полностью независимыми — при относительной адресации последний блок, адресованный предыдущей командой, доступен для следующей. Так, напри­мер, можно исполнить команду Search Data, по которой на диске будет найден блок, содержащий информацию, совпадающую с эталоном поиска. Связав с ней команду чтения Read, можно прочитать этот блок или блок с указанным смеще­нием относительно найденного. По выполнении связанных команд ЦУ посылает сообщения Linked Command Complete (возможно, с флагом), а ИУ обновляет набор сохраненных указателей, так что они указывают на очередную команду цепочки. Команды в цепочке выполняются как одиночные, но с возможностью относитель­ной адресации.

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

Маркированные очереди (tagged queue) определены в SCSI-2 для ЛУ. Для каждой связи I_T_L (ИУ-ЦУ-ЛУ) существует своя очередь размером до 256 процессов. Каждый процесс, использующий маркированные очереди, идентифицируется свя­зью I_T_L_Q, где Q — однобайтный тег очереди (queue tag). Теги процессам назна­чаются ИУ, их значения на порядок выполнения операций не влияют.

Постановка в очередь выполняется через механизм сообщений, при этом очеред­ной процесс можно поставить в очередь «по-честному», а можно «пропихнуть» вне очереди: процесс, поставленный в очередь с сообщением Head Of Queue Tag, будет выполняться сразу после завершения текущего активного процесса. Процессы, поставленные в очередь с сообщением Simple Queue Tag, исполняются ЦУ 'ъ по­рядке, который оно сочтет оптимальным.Процесс, поставленный в очередь с со­общением Ordered Queue Tag, будет исполняться последним. ИУ может удалить процесс из очереди, сославшись на него по тегу. Изменение порядка выполнения команд ЦУ не касается порядка в цепочке команд, поскольку цепочка принадле­жит одному процессу, а в очередь ставятся именно процессы. Здесь мы не рассматриваем различные ситуации, приводящие к отклонениям от нормальной последовательности событий интерфейса. К ним относятся некоррект­ные соединения со стороны ИУ, выбор несуществующего ЛУ, неожиданные вы­борки ИУ, округление параметров, реакция на асинхронные события и т. п.


Управление потоком данных


Для управления потоком данных (Flow Control) могут использоваться два вари­анта протокола — аппаратный и программный. Иногда управление потоком пута­ют с квитированием. Квитирование (handshaking) подразумевает посылку уведом-

2.4. Управление потоком данных____________ :_________________________________________________ 61

ления о получении элемента, в то время как управление потоком предполагает посылку уведомления о возможности или невозможности последующего приема данных. Зачастую управление потоком основано на механизме квитирования.

Аппаратный протокол управления потоком RTS/CTS (hardware flow control) ис­пользует сигнал CIS, который позволяет остановить передачу данных, если при­емник не готов к их приему (рис. 2.13). Передатчик «выпускает» очередной байт только при включенной линии CTS. Байт, который уже начал передаваться, задер­жать сигналом CTS невозможно (это гарантирует целостность посылки). Аппарат­ный протокол обеспечивает самую быструю реакцию передатчика на состояние приемника. Микросхемы асинхронных приемопередатчиков имеют не менее двух регистров в приемной части — сдвигающий, для приема очередной посылки, и хра­нящий, из которого считывается принятый байт. Это позволяет реализовать обмен по аппаратному протоколу без потери данных.

Рис. 2.13. Аппаратное управление потоком

Аппаратный протокол удобно использовать при подключении принтеров и плот­теров, если они его поддерживают. При непосредственном (без модемов) соеди­нении двух компьютеров аппаратный протокол требует перекрестного соедине­ния линий RTS — CTS.

При непосредственном соединении у передающего терминала должно быть обес­печено состояние «включено» на линии CTS (соединением собственных линий RTS — CTS), в противном случае передатчик будет «молчать».

Применяемые в IBM PC приемопередатчики 8250/16450/16550 сигнал CTS аппарат-но не отрабатывают, а только показывают его состояние в регистре MSR (см. п. 2.5). Реализация протокола RTS/CTS возлагается на драйвер BIOS Int 14h, и назы­вать его «аппаратным» не совсем корректно.
Если же программа, пользующаяся СОМ-портом, взаимодействует с UART на уровне регистров (а не через BIOS), то обработкой сигнала CTS для поддержки данного протокола она занимается сама. Ряд коммуникационных программ позволяет игнорировать сигнал CTS (если не используется модем), и для них не требуется соединение входа CTS с выходом даже своего сигнала RTS. Однако существуют и иные приемопередатчики (например, 8251), в которых сигнал CTS отрабатывается аппаратно. Для них, а также для «чест­ных» программ, использование сигнала CTS на разъемах (а то и на кабелях) обя­зательно. Преимущество протокола RTS/CTS во времени реакции (по сравне­нию с программным методом XON/XOFF) остается лишь для буферированной (в режиме FIFO) передачи.

62

Глава 2. Последовательный интерфейс — СОМ-порт

Программный протокол управления потоком XON/XOFF предполагает наличие двунаправленного канала передачи данных. Работает протокол следующим обра­зом: если устройство, принимающее данные, обнаруживает причины, по которым оно не может их дальше принимать, оно по обратному последовательному каналу посылает байт-символ XOFF (13h). Противоположное устройство, приняв этот символ, приостанавливает передачу. Когда принимающее устройство снова стано­вится готовым к приему данных, оно посылает символ XON (llh), приняв который противоположное устройство возобновляет передачу. Время реакции передатчи­ка на изменение состояния приемника по сравнению с аппаратным протоколом увеличивается, по крайней мере, на время передачи символа (XON или XOFF) плюс время реакции программы передатчика на прием символа (рис. 2.14). Из этого следует, что данные без потерь могут приниматься только приемником, имеющим дополнительный буфер принимаемых данных и сигнализирующим о неготовно­сти заблаговременно (имея в буфере свободное место).



 

Рис. 2.14. Программное управление потоком XON/XOFF

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

Кроме этих двух распространенных стандартных протоколов, поддерживаемых и ПУ, и ОС, существуют и другие.


Устройства и адаптеры


В PC-совместимом компьютере (в отличие от Macintosh) интерфейс 1394 пока не так распространен, как ставшая уже обязательной шина USB. Адаптеры FireWire чаще всего встречаются в виде карт расширения, но они уже встраиваются в неко­торые модели системных плат. Адаптер 1394 для PC является мостом PCI — 1394, поскольку только шина PCI способна пропустить максимальный поток шины FireWire. Микросхемы для FireWire выпускает ряд фирм. Поначалу в основном использовались пары микросхем: LINK chip (микросхема уровня связи) и PHY chip (кристалл физического уровня). Это было связано со сложностью производ­ства высокоскоростных микросхем физического уровня (на уровне связи S400 достигли быстро, а физический уровень на некоторое время «застрял» на S100 и S200). Модернизация такого адаптера сводилась лишь к последующей замене одного компонента. Сейчас применяют и однокристальные решения. Например, микросхема VIA Fire II (VT6306) представляет собой трехпортовый адаптер S400 для шины PCI, поддерживающий и шину Card Bus (для мобильных компьютеров).

Интерфейс 1394 становится общепринятым для современной цифровой бытовой аудио-, видео- и фототехники, которые используют эту шину и без участия ком­пьютера. Кроме цифровых устройств, имеющих встроенные адаптеры 1394, к шине FireWire возможно подключение и традиционных аналоговых и цифровых устройств (плейеры, камеры, мониторы) через адаптеры-преобразователи интерфейсов и сигналов.

С интерфейсом 1394 выпускаются и устройства хранения данных — приводы CD и DVD, AV-диски (винчестеры, оптимизированные для записи и чтения муль­тимедийных данных). Выпускаются и преобразователи интерфейсов 1394-IDE, оформленные в виде корпусов для стандартных IDE-устройств форматов 5" или 3,5". В эти корпуса можно установить обычные винчестеры, приводы CD и DVD (включая и рекордеры), получая переносные устройства хранения данных. Для ОС и приложений устройства хранения выглядят как SCSI-устройства соответ­ствующих классов. Это обеспечивается протоколом SBP-2 (Serial Bus Protocol), инкапсулирующим пакеты SCSI-3 в пакеты 1394.

4.2. Шина IEEE 1394— FireWire] 1 1

3



Видеоинтерфейсы


В традиционной технике цветного телевизионного вещания видеосигнал непо­средственно несет информацию о мгновенном значении яркости (в нем присут­ствуют и синхроимпульсы отрицательной полярности), а цветовая информация передается в модулированном виде на дополнительных частотах. Таким обра­зом обеспечивается совместимость черно-белого приемника, игнорирующего цве­товую информацию, с цветным передающим каналом. Однако способ кодирова­ния цветовой информации и частоты разверток в системах PAL, SECAM и NTSC различны. В видеотехнике используют различные низкочастотные интерфейсы (радиочастотный тракт здесь не рассматривается).

В интерфейсе Composite Video полный стандартный видеосигнал с размахом око­ло 1,5 В передается по коаксиальному кабелю (75 Ом). Для соединения использу­ются коаксиальные разъемы RCA («колокольчики»). Данный интерфейс харак­терен для бытовых видеомагнитофонов, аналоговых телекамер, телевизоров. В ПК этот интерфейс используется как дополнительный выходной интерфейс графи­ческой карты и как входной интерфейс в устройствах захвата видеосигнала.

Интерфейс S-Video (Separate Video) использует раздельные сигнальные линии: Y для канала яркости и синхронизации (luminance+sync, обычный черно-белый

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

видеосигнал) и С для сигнала цветности. По линии С передается поднесущая ча­стота, модулированная цветоразностными сигналами (burst signal). Сигнал Y име­ет размах 1 В, сигнал С в стандарте NTSC имеет размах 0,286 В, в PAL/SECAM — 0,3 В. Обе линии должны нагружаться терминатором 75 Ом. Стандартный 4-кон­тактный разъем S-Video типа mini-DIN (рис. 8.14, а) используется как интерфейс высококачественных видеосистем, его синонимами являются названия S- VHS и Y/C. Этот интерфейс в ПК тоже может использоваться в качестве входного и дополнительного выходного; он обеспечивает более высокое качество передачи видеоизображений. Иногда задействуют и 7-контактные разъемы mini-DIN, у них внешние 4 контакта имеют то же назначение, а 3 внутренних контакта использу­ются для разных целей (там может быть и композитный сигнал). Выход S-Video легко преобразовать в сигнал для композитного входа (рис. 8.14, б); эта схема не обеспечивает должного согласования импедансов, но обеспечивает приемлемое качество изображения. Обратное преобразование этой схемой выполняется гораз­до хуже, поскольку на яркостный сигнал будет воздействовать помеха в виде сиг­нала цветности.

Рис. 8.14. Интерфейс S-Video: a — разъем, б — преобразование в композитный сигнал

Наивысшее качество передачи обеспечивает профессиональный (студийный) ин­терфейс YUV (professional video), использующий три сигнальные линии: здесь цветоразностные сигналы U и V передаются в немодулированном виде.



Внутренние цифровые интерфейсы


Для расширения возможностей дисплейного адаптера, главным образом, в сторону обработки видеоизображений, многие графические адаптеры имеют внутренний интерфейс для передачи пиксельной информации синхронно с регенерацией экра­на. Этот интерфейс используется для связи графического адаптера с видеооверлей­ными платами (видеобластерами), декодерами MPEG. Разъем графического адап­тера связывается с таким же разъемом видеоплаты плоским кабелем-шлейфом.

На адаптерах VGA присутствовал краевой 26-контактный разъем VGA Auxiliary Video Connector с шагом ламелей ОД". Впоследствии был стандартизован VESA Feature Connector (VFC) (табл. 8.17), у которого назначение сигналов практически сохранилось, но используется двухрядный штырьковый разъем. Этот разъем гра­фического адаптера VGA и SVGA позволяет получать поток байт данных скани­руемых пикселов при работе адаптера в режиме до 640x480 пикселовх256 цветов. Нормально интерфейс работает на вывод и синхронизируется от генератора гра­фического адаптера. Однако, установив низкий уровень сигнала Data Enable, ви­деоплата может заставить графическую карту принимать пикселы; сигнал Sync Enable переключает графический адаптер на прием сигналов строчной и кадровой синхронизации; сигнал PCLK Enable переключает графический адаптер на работу от внешнего сигнала синхронизации пикселов.

Для режимов до 1024x768 с глубиной цвета High Color и True Color предназна­чен разъем VAFC — VESA Advanced Feature Connector(табл. 8.18) —двухрядный, с шагом 0,05" и расстоянием между рядами ОД". Он имеет разрядность 16/32 бит и при максимальной частоте точек 37,5 МГц обеспечивает скорость потока дан­ных 150 Мбайт/с. 16-битная версия VAFC использует первые 56 контактов, а 32-битная — все 80-контактов разъема. Допустимая длина шлейфа — 7". В этом интерфейсе сигналы GRDY и VRDY означают готовность (способность генерировать данные пикселов) графического адаптера и видеосистемы соответственно, а на­правлением передачи данных управляет сигнал EVID#.


340

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

Таблица 8.17. Разъем VFC

Сигнал

Контакт   Контакт   Сигнал

 

GND

2

1

DataO

GND

4

3

Datal

GND

6

5

Data 2

Data enable

8

7

DataS

Sync, enable

10

9

Data 4

PCLK enable

12

11

Data S

(Vcc)

14

13

Data 6

GND

16

15

i Data 7

GND

18

17

PCLK

GND

20

19

BLANK

GND

22

21

HSYNC

(Vcc)

24

23

VSYNC

(GND)

26

25

GND

Кроме этих стандартов существует и специальная внутренняя 32-битная шина для обмена данными между мультимедийными устройствами — VESA Media Channel (VM Channel). Эта шина (канал), в отличие от вышерассмотренных двухточеч­ных интерфейсов, ориентирована на широковещательную передачу данных меж­ду несколькими абонентами.

Таблица 8.18. Разъем VAFC

Контакт

Сигнал

Назначение

Контакт

Сигнал

Назначение

1

RSRVO

Резерв

41

GND

Ground

2

RSRV1

Резерв

42

GND

Ground

3

GENCLK

Genclock input

43

GND

Ground

4

OFFSETO

Pixel offset 2

44

GND

Ground

5

OFFSET1

Pixel offset 1

45

GND

Ground

6

FSTAT

FIFO buffer status

46

GND

Ground

7

VRDY

Video ready

47

GND

Ground

8

GRDY

Graphics ready

48

GND

Ground

9

BLANK*

Blanking

49

GND

Ground

10

VSYNC

Vertical sync

50

GND

Ground

11

HSYNC

Horizontal sync

51

GND

Ground

12

EGEN#

Enable genclock

52

GND

Ground

13

VCLK

Graphics data clock

53

GND

Ground

14

RSRV2

Резерв

54

GND

Ground

15

DCLK(PCLK)

Video data (Pixel) clock

55

GND

Ground

16

EVIDEO*

Video data direction control

56

GND

Ground

17

PO

Video data 0

57

P1

Video data 1

18

GND

Ground

58

P2

Video data 2

<


8.4. Интерфейсы графических адаптеров

341

Контакт   Сигнал

Назначение

Контакт    Сигнал    Назначение

 

19

РЗ

Video data 3

59

GND

Ground

20

Р4

Video data 4

60

P5

Video data 5

21

GND

Ground

61

P6

Video data 6

22

Р7

Video data 7

62

GND

Ground

23

Р8

Video data 8

63

P9

Video data 9

24

GND

Ground

64

P10

Video data 10

25

Р11

Video data 11

65

GND

Ground

26

Р12

Video data 12

66

P13

Video data 13

27

GND

Ground

67

P14

Video data 14

28

Р15

Video data 15

68

GND

Ground

29

Р16

Video data 16

69

P17

Video data 17

30

GND

Ground

70

P18

Video data 18

31

Р19

Video data 19

71

GND

Ground

32

Р20

Video data 20

72

P21

Video data 21

33

GND

Ground

73

P22

Video data 22

34

Р23

Video data 23

74

GND

Ground

35

Р24

Video data 24

75

P25

Video data 25

36

GND

Ground

76

P26

Video data 26

37

Р27

Video data 27

77

GND

Ground

38

Р28

Video data 28

78

P29

Video data 29

39

GND

Ground

79

P30

Video data 30

40

Р31

Video data 31

80

GND

Ground


Возможности адресации памяти процессорами различных поколений


Сложность обращения к памяти в PC обусловлена свойствами процессоров х86 разных поколений и требованием обратной совместимости новых процессоров и компьютеров со старым ПО.

Процессорам 8086/88 было доступно адресное пространство 1 Мбайт с диапазо­ном адресов О-FFFFFh, причем физический 20-битный адрес вычислялся с по­мощью двух 16-битных компонентов по формуле Addr = Segxl6 + Offset, где Seg — содержимое сегментного регистра (CS, DS, SS или ES), a Offset — исполни­тельный адрес, формируемый из одного или нескольких слагаемых в соответствии с выбранным режимом адресации. Эта сегментная модель адресации позволяет про­граммам оперировать с непрерывными блоками памяти (сегментами) размером не более 64 Кбайт. Для манипуляций с памятью большего размера требовалось переклю­чение сегментов с помощью специальных инструкций процессора, что усложняло программирование. Заметим, что при Seg = FFFFh n Offset =• FFFFh данная фор­мула дает адрес lOFFEFh, но ввиду 20-битного ограничения на шину адреса эта комбинация в физической памяти указывает на OFFEFh. Таким образом, адрес­ное пространство как бы сворачивается в кольцо с небольшим «нахлестом».

В процессоре 80286 шина физического адреса была расширена до 24 бит, и введен новый режим работы — защищенный (Protected Mode), в котором программа мо­жет обращаться к 16-мегабайтному пространству физической памяти через логи­ческое пространство виртуальной памяти. Здесь виртуальная память строилась на основе той же сегментной модели памяти с 16-разрядными регистрами. Физи­ческий адрес формировался суммированием 16-разрядного исполнительного адреса (смещения внутри сегмента) с 24-разрядным базовым адресом сегмента.

Кроме защищенного режима, в процессоре 80286 имеется и реальный режим, в кото­ром процессор ведет себя почти так же, как и 8086 (но более быстрый). Здесь физи­ческий адрес вычисляется так же, как и в 8086/88, но из-за ошибки разработчиков та самая единица в бите А20, которая отбрасывалась в процессорах 8086/88, теперь попадает на шину адреса, и в результате максимально доступный физический ад­рес в реальном режиме достиг 1 OFFEFh.
Для обеспечения полной совместимости с процессором 8086/88 в схему PC ввели вентиль линии А20 шины адреса — GateA20, который либо пропускает сигнал от процессора, либо принудительно обнуляет линию А20 системной шины адреса. Этот вентиль должен быть открыт при работе в защищенном режиме, а также когда в реальном режиме нужны дополнитель­ные (64 К-16) байт памяти. Вентиль управляется через контроллер клавиатуры (см. п. 8.1.2) или иным специфическим способом.

J5 32-разрядных процессорах, начиная с 80386, сохранена та же идея обращения к памяти с участием сегментных регистров (16-разрядных), но регистры процессо­ра, участвующие в формировании адреса, позволяют адресовать уже 232= 4 Гбайт памяти в каждом сегменте. Базовый адрес сегмента берется из специальных струк­тур данных — дескрипторов сегментов. Кроме базового адреса в дескрипторе опи­сывается его лимит (длина), назначение (код или данные), возможность записи

470______ Глава 12. Архитектурные компоненты IBM PC-совместимого компьютера

и чтения, а также уровень привилегий программы, позволяющий обращаться к дан­ному сегменту. Дескрипторы предварительно программно формируются в памяти, где их наборы хранятся в виде таблиц дескрипторов. Процессор имеет средства защиты памяти, контролирующие использование сегментов. Программа может обращаться лишь к тем сегментам памяти, описание которых имеется в доступ­ных дескрипторах. Виртуальное адресное пространство, доступное программе, имеет объем до (16 К-2) сегментов (число возможных дескрипторов), каждый из которых может иметь размер до 4 Гбайт. Дескриптор выбирается с помощью селек­тора, загружаемого в сегментный регистр (CS, DS, SS, E5, F5 или GS). Однако это виртуальное адресное пространство отображается блоком сегментации в логиче­ское адресное пространство с опять-таки 32-разрядным линейным адресом, то есть объемом 4 Гбайт. По замыслу разработчиков процессора, это отображение с под­качкой требуемых сегментов с диска и выгрузкой неиспользуемых должно выпол­няться диспетчером виртуальной памяти операционной системы.


Практически такая виртуализация применялась на процессорах 80286 (с 16-разрядными реги­страми), поскольку иных механизмов не существовало.

Для виртуализации памяти (и защиты) в 32-разрядных процессорах применяет­ся иной механизм, основанный на блоке страничной переадресации — принципи­альной новинке 32-разрядных процессоров х86. В его задачу входит отображение 32-разрядного линейного адреса (продукта блока сегментации) на 32- или 36-раз­рядный физический адрес, формируемый на системной шине процессора при его обращениях к памяти. В отличие от блока сегментации, оперирующего блоками разного размера (сегментами), блок страничной переадресации оперирует стра­ницами одинакового размера. Переадресация выполняется на основе таблиц стра­ниц, где для каждой страницы логической памяти имеется свой описатель. В этом описателе имеется признак присутствия страницы в физической памяти, и для присутствующих страниц указывается базовый адрес физического отображения. Кроме того, имеются биты, управляющие доступом к странице по чтению и запи­си с различных уровней привилегий, возможностью ее кэширования, и некоторые служебные биты. При обращении программы к отсутствующей странице процес­сор вырабатывает исключение, обработчик которого занимается подкачкой нуж­ной страницы из внешней памяти (с диска) в ОЗУ. Этот обработчик и реализует виртуальную память с подкачкой страниц по запросу (Demand-Paged Virtual Memory), которая в настоящее время обычно и подразумевается под виртуальной памятью. При недостатке свободного места в физической памяти обработчик выпол­няет и замещение страниц, по его мнению, наименее нужных, выгружая их на диск. Создав несколько наборов описателей страниц, можно получить несколько вирту­альных адресных пространств, каждое из которых имеет размер до 4 Гбайт, причем страницы разных пространств могут быть полностью изолированы друг от друга, а могут и частично пересекаться. В многозадачной ОС каждая задача (виртуаль­ная машина) имеет собственное (как ей представляется) адресное пространство.



Первоначально блок страничной переадресации работал со страницами размером 4 Кбайт. В дополнение к этому базовому механизму в процессор Pentium ввели возможность работы и со страницами размером 4 Мбайт (режим PSE). В ряде

12.5. Процессоры х86________________________________________________ 471

процессоров Р6 разрядность физического адреса увеличена до 36 бит, и все про­цессоры Р6 имеют возможность включение режима переадресации РАЕ, позволя­ющего отображать страницы размером 4 Кбайт и 2 Мбайт с расширением физи­ческого адреса. С процессорами Pentium III появился режим преобразования PSE-36, в котором блок оперирует 4-Мбайтными страницами в 36-битном физическом пространстве и сохраняется возможность работы со стандартными 4-Кбайтными страницами базового режима. Это позволяет довольно эффективно управляться с современными объемами физической памяти компьютера.

В стандартном реальном режиме 32-разрядные процессоры работают с памятью так же, как и 80286, с возможностью адресации в диапазоне О-lOFFEFh, при­чем вентиль Gate A20 ввели уже в сам процессор. Физический адрес вычисляется с участием сегментных регистров, размер непрерывного сегмента — 64 Кбайт. По умолчанию в реальном режиме адреса формируются с использованием только младших 16 бит 32-разрядных регистров, правда, для каждой инструкции можно с помощью префиксов изменить разрядность адресных компонентов на 32 бита. Однако и при этом невозможно пересечь границу 64-Кбайтного сегмента — срабо-' тает исключение защиты.

В стандартном реальном режиме блок страничной переадресации не работает, и физический адрес совпадает с линейным. С помощью временного переключе­ния в защищенный режим можно настроить таблицы страниц, разрешить преоб­разование и далее в реальном режиме задействовать страничное преобразование. Этот трюк используется менеджерами памяти типа EMM386 для работы со сво­бодными блоками UMA.

Есть и еще один режим, неофициальный, но тоже работающий на всех 32-разряд­ных процессорах х86, — «нереальный» (unreal), он же «большой реальный» (big real) .


Он позволяет процессору в реальном режиме обращаться к данным, распо­ложенным в любом месте 4-Гбайтного пространства линейных ( и физических) адресов. Этот режим базируется на логике блока сегментации, которая при вычи­слении линейного адреса во время обращений к памяти пользуется скрытыми про­граммно-недоступными регистрами дескрипторов сегментов. Из этих регистров берется базовый адрес, из них же берется и лимит, который используется схемой защиты. В этих регистрах кэшируются дескрипторы сегментов, загружаемые из памяти во время исполнения инструкций, переопределяющих значения сегмент­ных регистров (CS, DS, SS, ES, FS и GS) в защищенном режиме. По аппаратному сбросу в эти скрытые регистры заносятся «неинтересные» параметры стандарт­ного реального режима, с лимитом 64 Кбайт. В реальном режиме при переопре­делении сегментных регистров значение базового адреса берется как 16-кратное значение, загружаемое в соответствующий сегментный регистр, а лимит устанав­ливается в 64 Кбайт. Тем не менее, если в защищенном режиме в сегментный ре­гистр загрузить селектор дескриптора, в котором описан сегмент размером 4 Гбайт с нулевым базовым адресом и возможностью полного доступа на любом уровне привилегий, переключиться в реальный режим и не трогать этот сегментный регистр, то далее процессор будет иметь доступ ко всему этому сегменту в данной модификации реального режима. Однако такая «благодать» распространяется

472______ Глава 12. Архитектурные компоненты IBM PC-совместимого компьютера

только лишь на доступ к данным через сегментные регистры F.S и GS, которые ис­пользуются в инструкциях обращений к памяти, снабженных префиксами заме­ны сегмента. Эти сегментные регистры появились только с 32-разрядными про­цессорами, и никакие традиционные сервисы BIOS (и DOS) их не затрагивают. Остальные сегментные регистры настолько часто используются, что «время жизни» описания большого сегмента в их кэширующих регистрах будет слишком корот­ким.


Программный код, увы, исполняется только из сегмента, которым командует CS, поэтому для него остается лишь первый мегабайт с 64-Кбайтными сегмента­ми. Так что большие программные модули приходится подгружать в эту область по мере надобности, но это можно выполнять довольно быстро пересылками дан­ных из любого места «большого сегмента». Большой реальный режим широко ис­пользуется менеджерами памяти, а также игровыми DOS-программами, всецело захватывающими ресурсы компьютера.

Итак, самые широкие возможности адресации имеются в защищенном 32-разряд­ном режиме, наиболее естественном для современных процессоров. В этом режи­ме может использоваться как плоская, так и сегментная модели памяти. Под плос­кой (flat) понимается модель, в которой все сегментные регистры указывают на один и тот же сегмент памяти (как правило, начинающийся с нулевого адреса), и его лимит может достигать 4 Гбайт, что позволяет адресовать этот немалый (даже по нынешним меркам) объем памяти без манипуляций сегментными регистрами. Однако при этом теряются все возможности виртуализации памяти на основе сегмен­тов, а также отсутствует сегментная защита. В сегментной модели памяти сегментные регистры кода, стека и данных настраиваются на разные, возможно и не пересека­ющиеся сегменты. Здесь имеются все возможности сегментной защиты и сегмент­ной виртуализации памяти. Поскольку современным приложениям пока достаточ­но 4 Гбайт памяти (надолго ли?), сегментную модель ради упрощения диспетчера памяти стараются не использовать. Защита памяти имеется и на уровне страниц, правда, не такая развитая и надежная, как сегментная.


Толковый словарь по вычислительным системам


Толковый словарь по вычислительным системам определяет понятие интерфейс (interface) как границу раздела двух систем, устройств или программ; элементы соединения и вспомогательные схемы управления, используемые для соединения устройств. Эта книга посвящена интерфейсам, позволяющим подключать к пер­сональным (и не только) компьютерам разнообразные периферийные устройства (ПУ) и их контроллеры, а также соединять отдельные подсистемы компьютера. Рассмотрим вкратце основные свойства интерфейсов.
По способу передачи информации интерфейсы подразделяются на параллельные и последовательные. В параллельном интерфейсе все биты передаваемого слова (обычно байта) выставляются и передаются по соответствующим параллельно идущим проводам одновременно. В PC традиционно используется параллельный интерфейс Centronics, реализуемый LPT-портами, шины ATA, SCSI и все шины расширения. В последовательном интерфейсе биты передаются друг за другом, обычно по одной (возможно, и двухпроводной) линии. Эта линия может быть как однонаправленной (например, в RS-232C, реализуемой СОМ-портом, шине Fire Wire, SPI, JTAG), так и двунаправленной (USB, 12С).
При рассмотрении интерфейсов важным параметром является пропускная способ­ность. Технический прогресс приводит к неуклонному росту объемов передаваемой информации. Если раньше матричные принтеры, печатающие в символьном режи­ме, могли обходиться и СОМ-портом с невысокой пропускной способностью, то современным лазерным принтерам при высоком разрешении не хватает произво­дительности даже самых б,ыстрых LPT-портов. То же касается и сканеров. А пере^ дача «живого» видео, даже с применением компрессии, требует ранее немысли­мой пропускной способности.
Вполне очевидно, что при одинаковом быстродействии приемопередающих цепей и пропускной способности соединительных линий по скорости передачи параллель­ный интерфейс должен превосходить последовательный. Однако повышение про­изводительности за счет увеличения тактовой частоты передачи данных упирается в волновые свойства соединительных кабелей.
В случае параллельного интерфей­ са начинают сказываться задержки сигналов при их прохождении по линиям ка­беля и, что самое неприятное, задержки в разных линиях интерфейса могут быть различными вследствие неидентичности проводов и контактов разъемов. Для на­дежной передачи данных временные диаграммы обмена строятся с учетом возмож­ного разброса времени прохождения сигналов, что является одним из факторов, сдерживающих рост пропускной способности параллельных интерфейсов. В по­следовательных интерфейсах, конечно же, есть свои проблемы повышения произ­водительности, но поскольку в них используется меньшее число линий (в преде­ле — одна), повышение пропускной способности линий связи обходится дешевле.
14____________________________________________________________ Введение
Для повышения пропускной способности параллельных интерфейсов с середины 90-х годов стали применять двойную синхронизацию DDR (Dual Data Rate). Ее идея заключается в выравнивании частот переключения информационных сиг­нальных линий и линий стробирования (синхронизации). В «классическом» ва­рианте данные информационных линий воспринимались только по одному пере­паду (фронту или спаду) синхросигнала, что удваивает частоту переключения линии синхросигнала относительно линий данных. При двойной синхронизации данные воспринимаются и по фронту, и по спаду, так что частота смены состо­яний всех линий выравнивается, что при одних и тех же физических параметрах кабеля и интерфейсных схем позволяет удвоить пропускную способность. Волна этих модернизаций началась с интерфейса АТА (режимы UltraDMA) и прошла уже и по SCSI (UltralSO и выше), и по памяти (DDR SDRAM), и по системной шине процессоров (Pentium 4).
Немаловажен для интерфейса контроль достоверности передачи данных, который, увы, имеется далеко не везде. «Ветераном» контроля является шина SCSI с ее битом паритета (который незадачливые пользователи иногда норовят отключить, «чтоб не сбоило»); контроль паритета применяется и в последовательных интерфейсах, и в шине PCI.


Шина ISA в этом плане беззащитна, как и ее «потомок» — интер­фейс АТА, в котором до UltraDMA контроля достоверности не было. В новых интерфейсах контролю достоверности уделяется серьезное внимание, поскольку они, как правило, рассчитываются на экстремальные условия работы (высокие частоты, большие расстояния и помехи). Контроль достоверности может произ­водиться и на более высоких протокольных уровнях (контроль целостности паке­тов и их полей), но на аппаратном уровне он работает, естественно, быстрее.
Для интерфейса, соединяющего (физически или логически) два устройства, раз­личают три возможных режима обмена — дуплексный, полудуплексный и симп­лексный. Дуплексный режим позволяет по одному каналу связи одновременно передавать информацию в обоих направлениях. Он может быть асимметричным, если значения пропускной способности в направлениях «туда» и «обратно» суще­ственно различаются, или симметричным. Полудуплексный режим позволяет пере­давать информацию «туда» и «обратно» поочередно, при этом интерфейс имеет средства переключения направления канала. Симплексный (односторонний) ре­жим предусматривает только одно направление передачи информации (во встреч­ном направлении передаются только вспомогательные сигналы интерфейса).
Другим немаловажным параметром интерфейса является допустимое удаление

соединяемых устройств. Оно ограничивается как частртными свойствами кабелей,

так и помехозащищенностью интерфейсов. Часть помех возникает от соседних ли­

ний интерфейса — это перекрестные помехи, защитой от которых может быть

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

ется искажением уровней сигналов.                   ,
С появлением шин USB и Fire Wire в качестве характеристики интерфейса стала фигурировать и топология соединения. Для интерфейсов RS-232C и Centronics практически всегда применялась двухточечная топология PC — устройство (или PC — PC). Исключениями из этого правила являются различные устройства без-


Введение_____________________________________________________________ 15
опасности и защиты данных (Security devices), которые подключаются к СОМ- или LPT-портам, но имеют разъем для подключения внешнего устройства. Однако эти устройства для традиционной периферии прозрачны, поэтому можно считать, что они не нарушают общего правила. Аналогично обстоит дело и с адаптерами ло­кальных сетей (например, Paraport) и внешних дисковых накопителей (Iomega Zip), подключаемых к LPT-портам. Хотя разрабатываемые стандарты для парал­лельного порта (IEEE 1284.3) и предусматривают соединение устройств в цепоч­ку (Daisy Chain) или через мультиплексоры, широкого распространения такие способы подключения пока не получили. К другому классу исключений относится построение моноканала на СОМ-портах, которое несколько лет назад применялись в «любительских» локальных сетях, но было вытеснено существенно более эффек­тивной и подешевевшей технологией Ethernet. Интерфейсные шины USB и Fire Wire реализуют древовидную топологию, в которой внешние устройства могут быть как оконечными, так и промежуточными (разветвителями). Эта топология позволяет подключать множество устройств к одному порту USB или Fire Wire.
Важным свойством интерфейса, на которое часто не обращают внимание, являет­ся гальваническая развязка, а точнее — ее отсутствие. «Схемные земли» устройств, соединяемых интерфейсом с СОМ- или LPT-портом PC, оказываются связанны­ми со схемной землей компьютера (а через интерфейсный кабель и между собой). Если между ними до подключения интерфейса была разность потенциалов, то по общему проводу интерфейса потечет уравнивающий ток, что плохо по целому ряду причин. Падение напряжения на общем проводе, вызванное протеканием этого тока, приводит к смещению уровней сигналов, а протекание переменного тока приводит к сложению полезного сигнала с переменной составляющей поме­хи. К этим помехам особенно чувствительны ТТЛ-интерфейсы; в то же время в RS-232C смещение и помеху в пределах 2 В поглотит зона нечувствительности.


В случае обрыва общего провода или плохого контакта, а гораздо чаще — при под­ключении и отключении интерфейсов без выключения питания устройств, раз­ность потенциалов прикладывается к сигнальным цепям, а протекание уравни­вающих токов через них часто приводит к пиротехническим эффектам. Откуда берется эта разность потенциалов, объяснить нетрудно (см. главу 13). Из рассмат­риваемых в книге интерфейсов гальваническую развязку устройств обеспечива­ют MIDI, «токовая петля», S/PDIF, шина Fire Wire, сетевые интерфейсы Ethernet.
Существенным свойством является возможность «горячего» подключения/отклю­чения или замены устройств (Hot Swap), причем в двух аспектах. Во-первых, это безопасность переключений «на ходу» как для самих устройств и их интерфейс­ных схем, так и для целостности хранящихся и передаваемых данных и, наконец, для человека. Во-вторых, это возможность использования вновь подключенных устройств без перезагрузки системы, а также продолжения устойчивой работы системы при отключении устройств. Далеко не все внешние интерфейсы поддер­живают «горячее подключение» в полном объеме, так, например, зачастую сканер с интерфейсом SCSI должен быть подключен к компьютеру и включен до загруз­ки ОС, иначе он не будет доступен системе. С новыми шинами USB и Fire Wire проблем «горячего подключения» не возникает. Для внутренних интерфейсов «горячее подключение» несвойственно. Это касается и шин расширения, и моду-
16_______________________________________________________________________ Введение
лей памяти, и даже большинства дисков АТА и SCSI. «Горячее подключение» под­держивается для шин расширения промышленных компьютеров, а также в специ­альных конструкциях массивов устройств хранения.
ВНИМАНИЕ----------------------------------------------------------------------------------
Карты расширения, модули памяти и процессоры можно устанавливать и извлекать только при выключенном питании компьютера. При этом выключения блока питания АТХ основной кнопкой недостаточно, поскольку при этом на системной плате остается напряжение 3,3 В.


Эти блоки должны обесточиваться по входу (посредством извлечения питающего кабеля).
В ряде интерфейсов заложены возможности PnP (Plug and Play — включай и играй), которые предназначены для снятия с пользователей забот по конфигурированию подключаемых устройств. В современных интерфейсах эти возможности заклады­вались изначально (PCI, USB, Fire Wire, Bluetooth), и эти функции в большинстве случаев работают нормально. Однако для интерфейсов-ветеранов (например, ISA, SCSI) технология PnP является поздней искусственной надстройкой, работающей с переменным успехом (Plug and Pray — включай и молись). Часто побочные эффек­ты вызваны наследием «тяжелого прошлого» — соседством устройств PnP с тради­ционными (legacy) устройствами. На закате шины ISA ее система PnP в общем работала, но в SCSI от идей автоконфигурирования со временем отказались. При разработке собственных устройств встает вопрос выбора подходящего интер­фейса подключения. Этот вопрос следует решать, исходя из принципа разумной достаточности, по возможности отдавая предпочтение внешним интерфейсам. Следует помнить, что разработка аппаратной части устройства (hardware) тесно связана и с программной поддержкой устройств — как модулями ПО, исполня­емыми процессором компьютера (software), так и программами встроенного мик­роконтроллера (firmware), на базе которого, как правило, строятся современные устройства. Промышленностью выпускается множество моделей микроконтрол­леров, имеющих популярные интерфейсы (USB, RS-232, PC и другие). Однако в ряде случаев приходится использовать и стандартизованные шины расширения ввода-вывода. Эти шины предоставляют более широкие возможности для взаи­модействия процессора с аппаратурой, нескованные жесткими ограничениями внешних интерфейсов. Однако за универсальность и производительность внут­ренних шин расширения приходится расплачиваться более замысловатой реали­зацией интерфейсных схем и сложностями при обеспечении совместимости с дру­гим установленным в компьютер оборудованием.Здесь ошибки могут приводить к потере работоспособности компьютера (хорошо если временной). Недаром серь­езные производители компьютеров гарантируют работоспособность своих изделий только при установке сертифицированных (ими или независимыми лаборатори­ями) карт расширения. При использовании внешних интерфейсов неприятности в случае ошибок чаще всего имеют отношение только к подключаемому устройству.
На этом мы закончим краткий обзор интерфейсов и перейдем к их детальным описаниям.