в начало
Протокол ЕРР (Enhanced Parallel Port – улучшенный параллельный порт) был разработан задолго до принятия IEEE 1284 компаниями Intel, Xircom и Zenith Data Systems. Он предназначен для повышения производительности обмена по параллельному порту. ЕРР был реализован в чипсете Intel 386SL (микросхема 82360) и впоследствии принят множеством компаний как дополнительный протокол параллельного порта.
Протокол ЕРР обеспечивает четыре типа циклов обмена:
- Цикл записи данных.
- Цикл чтения данных.
- Цикл записи адреса.
- Цикл чтения адреса.
Назначение циклов записи и чтения данных ясно из их названия. Адресные циклы могут быть использованы для передачи адресной, канальной и управляющей информации. Циклы обмена данными явно отличаются от адресных циклов применяемыми стробирующими сигналами. Назначение сигналов порта EPP и их связь с сигналами SPP приведены в таблице 3.3.
Таблица 3.3. Сигналы порта в режиме ввода/вывода EPP
Контакт | Сигнал SPP | Имя в EPP | I/O | Описание |
STROBE# | WRITE# | O | Низкий уровень – признак цикл записи, высокий – чтения | |
AUTOFEEM# | DATASTB# | O | Строб данных. Низкий уровень устанавливается в циклах передачи данных | |
SELECTING# | ADDRSTB# | O | Строб адреса. Низкий уровень устанавливается в адресных циклах | |
INIT# | RESET# | O | Сброс ПУ (низким уровнем) | |
ACK# | INTR$ | I | Прерывание от ПУ | |
BUSY# | WAIT# | I | Сигнал квитирования. Низкий уровень разрешает начало цикла (установку строба в низкий уровень), переход в высокий – разрешает завершение цикла (снятие) | |
2-9 | D[8:0] | AD[8:0] | I/O | Двунаправленная шина адреса/данных |
PE | AckDataReq | I | Используется по усмотрению разработчика периферии | |
SELECT | Xflag | I | Используется по усмотрению разработчика периферии | |
ERROR# | DataAvail# | I | Используется по усмотрению разработчика периферии |
Цикл записи данных состоит из следующих фаз:
1) Программа выполняет цикл записи (IOWR#) в порт 4 (EPP Data Port).
2) Адаптер устанавливает сигнал Write# (низкий уровень), и данные помещаются на выходную шину LPT-порта.
3) При низком уровне WAIT# устанавливается строб данных.
4) Порт ждет подтверждения от ПУ (перевода WAIT# в высокий уровень).
5) Снимается строб данных – внешний цикл завершается.
6) Завершается процессорный цикл ввода/вывода.
7) ПУ устанавливает низкий уровень WAIT#, указывая на возможность начала следующего цикла (рисунок 3.2).
Рис.3.2. Временная диаграмма
Главной отличительной чертой ЕРР является выполнение внешней передачи во время одного процессорного цикла ввода/вывода. Это позволяет достигать высоких скоростей обмена (0,5-2 Мбайт/с). Периферийное устройство, подключенное к параллельному порту ЕРР, может работать на уровне производительности устройства, подключаемого через слот ISA. Прозрачный протокол блокированного квитирования (interlocked handshakes) позволяет автоматически настраиваться на скорость обмена, доступную и хосту, и периферийному устройству. Периферийное устройство может регулировать длительность всех фаз обмена с помощью всего лишь одного сигнала WAIT#. Протокол автоматически подстраивается и под длину кабеля – вносимые задержки только приведут к удлинению цикла.
Естественно, что периферийное устройство не должно иметь возможности вызвать “зависание” процессора на шинном цикле обмена. Этому препятствует механизм тайм-аутов РС, который принудительно завершает любой цикл обмена, длящийся более 15 мкс. В ряде реализации ЕРР за тайм-аутом интерфейса следит и сам адаптер – если ПУ не отвечает в течение определенного времени (5 мкс), цикл прекращается и в дополнительном регистре состояния адаптера фиксируется ошибка (состав и назначение дополнительных регистров не стандартизованы).
С программной точки зрения контроллер ЕРР-порта выглядит достаточно просто, К трем регистрам стандартного порта, имеющим смещение 0, 1 и 2 относительно базового адреса порта, добавлены два регистра (ЕРР Address Port и EPP Data Port), чтение и запись в которые вызывает генерацию связанных внешних циклов.
Назначение регистров стандартного порта сохранено, что обеспечивает совместимость ЕРР-порта с периферийными устройствами и программным обеспечением, рассчитанными на применение программно-управляемого обмена.
ЕРР-порт имеет расширенный набор регистров (таблица 3.4), который занимает в пространстве ввода/вывода 5-8 смежных байт.
Таблица 3.4. Регистры ЕРР-порта
Имя регистра | Смещение | Режим | R/W | Описание |
SPP Data Port | +0 | SPP/EPP | W | Регистр данных стандартного порта |
SPP Status Port | +1 | SPP/EPP | R | Регистр состояния стандартного порта |
SPP Control Port | +2 | SPP/EPP | W | Регистр управления стандартного порта |
EPP Address Port | +3 | ЕРР | R/W | Регистр адреса ЕРР. Чтение или запись в него генерирует связанный цикл чтения или записи адреса ЕРР |
EPP Data Port | +4 | ЕРР | R/W | Регистр данных ЕРР. Чтение (запись) генерирует связанный цикл чтения (записи) данных ЕРР |
Not defined | +5…+7 | ЕРР | N/A | В некоторых контроллерах могут использоваться для 16-32-битных операций ввода/вывода |
Таким образом, при обмене данными и обеспечивается производительность, достигающая 2 Мбайт/с, вполне достаточная и для адаптеров локальных сетей, внешних дисков, стримеров и CD-ROM. Адресные циклы ЕРР всегда выполняются только в однобайтном режиме обращения.
Важной чертой ЕРР является то, что обращение процессора к периферийному устройству осуществляется в реальном времени – здесь нет никакой буферизации. Программный драйвер всегда способен наблюдать состояние и подавать команды в точно известные моменты времени.