Режим ЕСР

в начало

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

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

- Циклы записи и чтения данных.

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

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

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

 

Таблица 3.5. Сигналы LPT-порта в режиме ввода/вывода ECP

Конт Сигнал Имя в ЕСР I/O Описание
STROBE# HostClk O Используется в паре с PeriphAck для передачи в прямом направлении (вывод)
AUTOFEEDS HostAck O Индицирует тип команда/данные при передаче в прямом направлении. Используется в паре с PeriphClk для передачи в обратном направлении
SELECTING 1284Active O Высокий уровень указывает на обмен в режиме ШЕЕ 1284. (В режиме SPP уровень низкий)
INIT# ReverseRequest# О Низкий уровень переключает канал на передачу в обратном направлении
АСК# PeriphClk I Используется в паре с HostAck для передачи в обратном направлении
BUSY PeriphAck I Используется в паре с HostClk для передачи в обратном направлении. Индицирует тип команда/данные при передаче в обратном направлении
PE AckReverse# I Переводится в низкий уровень как подтверждение сигналу ReverseRequest#
SELECT Xflag* I Флаг расширяемости Extensibility flag
ERRORS PeriphRequest#* I Устанавливается ПУ для указания на доступность (наличие) обратного канала передачи*
2-9 Data[0:7] Data[0:7] I/O Двунаправленный канал данных

 

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

а)

б)

Рис.3.3. Диаграммы циклов передачи

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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