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

         

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


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


Содержание раздела