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# (при нулевом значении бита по отрицательному перепаду на этой линии вырабатывается запрос прерывания);
♦ ECR.3 — DMAEN — (DMA Enable) разрешает обмен по каналу DMA;
♦ ECR.2 — SERVICEINTR — (Service Interrupt) запрещает сервисные прерывания, которые вырабатываются по окончании цикла DMA (если он разрешен), по порогу заполнения/опустошения FIFO-буфера (если не используется DMA) и по ошибке переполнения буфера сверху или снизу;
♦ ECR.1 — FIFOFS — (FIFO Full Status) сигнализирует о заполнении буфера; при FIFOFS=1 в буфере нет ни одного свободного байта;
♦ ECR.0 — FIFOES — (FIFO Empty Status) указывает на полное опустошение буфера; комбинация FIFOFS=FIFOES=1 означает ошибку работы с FIFO (переполнение сверху или снизу).
Когда порт находится в стандартном или двунаправленном режимах (000 или 001), первые три регистра полностью совпадают с регистрами стандартного порта. Так обеспечивается совместимость драйвера со старыми адаптерами и старых драйверов с новыми адаптерами.
По интерфейсу с программой ECP-порт напоминает EPP: после установки режима (записи кода в регистр ECR) обмен данными с устройством сводится к чтению или записи в соответствующие регистры. За состоянием FIFO-буфера наблюдают либо по регистру ECR, либо по обслуживанию сервисных прерываний от порта. Весь протокол квитирования генерируется адаптером аппаратно. Обмен данными с ЕСР-портом (кроме явного программного) возможен и по прямому доступу к памяти (каналу DMA), что эффективно при передаче больших блоков данных.
1.3.6. Согласование режимов IEEE 1284
ПУ в стандарте IEEE 1284 обычно не требуют от контроллера реализации всех предусмотренных этим стандартом режимов. Для определения режимов и методов управления конкретным устройством стандарт предусматривает
Во время фазы согласования контроллер выставляет на линии данных Xflag (Select в терминах SPP) для подтверждения запрошенного режима обратного канала, кроме полубайтного, который поддерживается всеми устройствами IEEE 1284. Бит Extensibility Link request послужит для определения дополнительных режимов в будущих расширениях стандарта.
Таблица 1.9. Биты в байте расширяемости
| Бит | Описание | Допустимые комбинации бит [7:0] |
|---|---|---|
| 7 | Request Extensibility Link — зарезервирован | 1000 0000 |
| 6 | Запрос режима ЕРР | 0100 0000 |
| 5 | Запрос режима ЕСР с RLE | 0011 0000 |
| 4 | Запрос режима ЕСР без RLE | 0001 0000 |
| 3 | Зарезервировано | 0000 1000 |
| 2 | Запрос идентификатора устройства с ответом в режиме: | |
| полубайтный | 0000 0100 | |
| байтный | 0000 0101 | |
| ЕСР без RLE | 0001 0100 | |
| ЕСР с RLE | 0011 0100 | |
| 1 | Зарезервировано | 0000 0010 |
| 0 | Запрос полубайтного режима | 0000 0001 |
| none | Запрос байтного режима | 0000 0000 |
1. Хост выводит байт расширяемости на линии данных.