
Режим еср
Протокол ЕСР ( порт с расширенными возможностями) был предложен фирмами НР и MS как прогрессивный режим связи с переферией типа принтеров и сканеров . Как и ЕРР, данный протокол обеспечивает высокопроизводительный двунаправленный обмен данными Хоста с ПУ .
Протокол ЕСР в обоих направлениях обеспечивает два типа циклов :
цикл записи и чтения данных ;
командные циклы записи и чтения .
Командные циклы подразделяются на два типа: передача канальных адресов и счетчика RLC
(Run-Length Count).
В отличии от ЕРР вместе с протоколом ECP сразу появился и стандарт на программную (регистровую) модель реализации его адаптера . Этот документ определяет свойства реализации протокола , не заданные в ІЕЕЕ 1284:
компрессия данных хост-адаптером по методу RLE;
буферизация FIFO для прямого и обратного канала ;
применения DMA и программного ввода/вывода.
Компрессия в реальном времени по методу RLE позволяет достичь коэффициента сжатия до 64:1. Компрессию можно использовать, если ее поддерживает и хост и ПУ.
Канальная адресация ЕСР применяется для адресации множества логических устройств, входящих в одно физическое . Например , в комбинированном устройстве факс/прин-тер/модем, подключаемом только к одному LPT –порту возмлжен одновременный прием факса и печати на принтере. Как и в других режимах ,протокол ЕСР переопределяет сигнал SPP
(табл 6).
Таблица 6. Сигналы LPT-порта в режиме ввода/вывода ECP
Контакт |
Сигнал SPP |
Имя вEСP |
I/0 |
Описание |
1 |
STROBE# |
HostClk |
0 |
Используется впаре с Periph Ack для передачи в прямом направлении (вывод) |
14 |
AUTOFEED # |
HostAck |
0 |
Индицирует тип команда/ (дан-ные при передаче в прямом направлении . Используется в паре с PeripClk для передачи в обратном направлении |
17 |
SELECTIN # |
1284 Active |
0 |
Высокий уровень указывает на обмен в режиме IEEE 1284 |
16 |
INIT# |
Reverse Reguest# |
0 |
Низкий уровень переключает канал на передачу в обратном направлении |
10 |
Ack# |
PeriphClk
|
I |
Используется в паре с HostAck для передачи в обратном напра-влении |
11 |
BUSY |
PeriphClk |
I |
Используется в паре с HostClk для передачи в обратном направлении .Инициирует тип команда/данные при передачи в обратном направлении |
12 |
PE |
AckReverSe# |
I |
Переводится в низкий уровень как подтверждение сигналу ReverseReguest# |
13 |
SELECT |
Xflag* |
I |
Флаг расширяемости |
15 |
ERROR# |
PeriphReguest# |
I |
Устанавливается ПУ для указания на доступность (наличие) обратного канала передачи |
2-9 |
DATA[0:7] |
DATA[0:7} |
I/0 |
Двунаправленный канал данных |
Адаптер ЕСР тоже генерирует внешние протокольные сигналы квитирования аппаратно. но его работа существенно отличается от режима ЕРР . За циклом данных следует командный цикл . В командном цикле байт может содержать командный адрес или счетчик RLE. Отличительным признаком является бит 8 (старший): если он нулевой , то биты 1-7 содержат счетчик RLE (0-127), если он единичный –то канальный адрес . Временные диаграммы не содержат циклов системной шины процессора. В режиме ЕСР обмен С ПУ разбивается на два относительно независимых процесса, которые связаны через FIFO –буфер.
Обмен программного драйвера с FIFO-буфером может осуществляться как с использованием DMA, так и программным вводом-выводом. Обмен ПУ с буфером аппаратно выполняет адаптер ЕСР.
Поскольку передачи в ЕСР разделены FIFO –буферами ,которые могут присутствовать на обеих сторонах интерфейса, данные считаются переданными, когда линия HostClk переходит в высокий уровень . В этот момент модифицируют счетчики переданных и принятых байт.
В отличии от ЕРР , в ЕСР смена направлений должна быть согласована: хост запрашивает реверс установкой Revers Reguest#,после чего он должен дождаться его подтверждения сигналом AckRevers#. Только после этого возможна передача данных в другом направлении.Поскольку предыдущий цикл мог выполняться пот прямому доступу , драйвер должен дождаться завершения прямого доступа или прервать его, выгрузить обратно буфер FIFO,определяя точное значение счетчика переданных байт,и только после этого запрашивать реверс.