Смекни!
smekni.com

Параллельный интерфейс: LPT-порт (стр. 4 из 6)

Режим ЕСР

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

Протокол ЕСР в обоих направлениях обеспечивает два типа циклов:

••• Циклы записи и чтения данных. Командные циклы записи и чтения.

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

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

••• буферизация FIFO для прямого и обратного каналов: применение DMA и программного ввода/вывода.

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

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

Как и в других режимах 1284, протокол ЕСР переопределяет сигналы SPP (табл. 8).

Таблица 8.

Сигналы LPT-порта в режиме ввода/вывода ЕСР

Контакт

Сигнал SPP

Имя в ЕСР

I/O

Описание

1

STROBE»

HortClk

0

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

14

AUTOFEED#

HostAck

0

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

17

SELECTING

1284Active

О

Высокий уровень указывает на обмен в режиме IEEE 1284. (В режиме SPP уровень низкий)

16

INIT#

ReverseRequest#

О

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

10

ACK#

PeriphClk

I

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

11

BUSY

PeriphAck

1

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

12

PE

AckReverse#

I

Переводится в низкий уровень как подтверждение сигналу ReverseRequestff

13

SELECT

Xflag*

I

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

15

ERROR»

PeriphRequest#*

I

Устанавливается ПУ для указания на доступность (наличие) обратного канала передачи*

2-9

Data[0:7]

Data[0:7]

I/O

Двунаправленный канал данных

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

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

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

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

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

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

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

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

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

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

1. Хост запрашивает изменение направления канала, устанавливая низкий уровень на линии ReverseRequestff. 2 ПУ разрешает смену направления установкой низкого уровня на линии Ack-Reverse#.

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

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

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

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

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

Согласование режимов IEEE 1284

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

Во время фазы согласования контроллер выставляет на линии данных байт расширяемости (Extensibility byte), запрашивая подтверждение на перевод интер­фейса в требуемый режим или прием идентификатора периферийного устрой­ства (табл. 11). Идентификатор передается контроллеру в запрошенном режиме (любой режим обратного канала, кроме ЕРР). ПУ использует сигнал Xflag (Select в терминах SPP) для подтверждения запрошенного режима обрат­ного канала, кроме полубайтного. Полубайтный режим поддерживается всеми устройствами IEEE 1284. Бит Extensibility Link request заложен для механизма определения дополнительных режимов в будущих расширениях стандарта.

Таблица. 11.

Значение бит байта расширяемости

Бит

Описание

Допустимые комбинации бит [7:0]

7

Request Extensibility Link — запрос для будущих расширений

1000 0000

6

Запрос режима ЕРР

0100 0000

5

Запрос режима ЕСР с RLE

ООН 0000

4

Запрос режима ЕСР Mode без RLE

0001 0000

3

Резерв

0000 1000

2

Запрос идентификатора устройства с ответом в режиме:

Nibble Mode (полубайтный)

0000 0100

Byte Mode (байтный)

0000 0101

ЕСР без RLE

0001 0100

ЕСР с RLE

0011 0100

1

Резерв

0000 0010

0

Запрос Byte Mode

0000 0001

None

Запрос Nibble Mode

0000 0000

Последовательность согласования состоит из следующих шагов:

1. Хост выводит байт расширяемости на линии данных.

2. Хост устанавливает высокий уровень сигнала Selecting и низкий — Auto-Feedft, что означает начало последовательности согласования.

3. ПУ 1284 ответит установкой низкого уровня сигнала Ackff и высокого — Errorft, РЕ и Select.

4. Хост устанавливает низкий уровень сигнала Strobeff для записи байта рас­ширяемости в ПУ.

5. Хост устанавливает высокий уровень сигналов Strobeff и AutoFeedff.

6. ПУ отвечает установкой в низкий уровень сигналов РЕ и Errorff, если оно имеет обратный канал передачи данных. Если запрошенный режим поддер­живается устройством, на линии Select устанавливается высокий уровень, если не поддерживается — низкий.

7. ПУ устанавливает высокий уровень на линии Ack# для указания на завер­шение последовательности согласования, после чего контроллер устанавли­вает требуемый (и разрешенный) режим работы.

Развитие стандарта IEEE 1284

Кроме основного стандарта IEEE 1284, который уже принят, в настоящее время в стадии проработки находятся новые стандарты, не отменяющие его, а опре­деляющие дополнительные возможности. К ним относятся: