6. Хост подтверждает прием байта импульсом HostClk
.
Шаги 1–6 повторяются для каждого следующего байта. Квитирование осуществляется парой сигналов HostBusy
и PtrClk
; ПУ может и не использовать сигнал HostClk
(это приглашение к выдаче следующего байта, напоминающее сигнал Ack
# в интерфейсе Centronics). Побайтный режим позволяет поднять скорость обратного канала до скорости прямого канала в стандартном режиме. Однако он способен работать только на двунаправленных портах , которые раньше применялись в основном на малораспространенных машинах PS/2, но практически все современные порты можно сконфигурировать на двунаправленный режим (в настройках BIOS Setup — Bi-Di
или PS/2
).
Протокол EPP (Enhanced Parallel Port — улучшенный параллельный порт) был разработан компаниями Intel, Xircom и Zenith Data Systems задолго до принятия стандарта IEEE 1284. Этот протокол предназначен для повышения производительности обмена по параллельному порту, впервые был реализован в чипсете Intel 386SL (микросхема 82360) и впоследствии принят множеством компаний как дополнительный протокол параллельного порта. Версии протокола, реализованные до принятия IEEE 1284, отличаются от нынешнего стандарта (см. ниже).
Протокол EPP обеспечивает четыре типа циклов обмена:
♦ запись данных;
♦ чтение данных;
♦ запись адреса;
♦ чтение адреса.
Назначение циклов записи и чтения данных очевидно. Адресные циклы используются для передачи адресной, канальной и управляющей информации. Циклы обмена данными отличаются от адресных циклов применяемыми стробирующими сигналами. Назначение сигналов порта EPP и их связь с сигналами SPP объясняются в табл. 1.4.
Таблица 1.4. Сигналы LPT-порта в режиме ввода-вывода EPP
Контакт |
Сигнал SPP |
Имя в EPP |
I/O |
Описание |
1 |
Strobe# |
Write# |
O |
Низкий уровень — цикл записи, высокий — цикл чтения |
14 |
AutoLF# |
DataStb# |
O |
Строб данных. Низкий уровень устанавливается в циклах передачи данных |
17 |
SelectIn# |
AddrStb# |
O |
Строб адреса. Низкий уровень устанавливается в адресных циклах |
16 |
Init# |
Reset# |
O |
Сброс ПУ (низким уровнем) |
10 |
Ack# |
INTR# |
I |
Прерывание от ПУ |
11 |
Busy |
Wait# |
I |
Сигнал квитирования. Низкий уровень разрешает начало цикла (установку строба в низкий уровень), переход в высокий — разрешает завершение цикла (снятие строба) |
2-9 |
Data[0:7] |
AD[0:7] |
I/O |
Двунаправленная шина адреса/данных |
12 |
PaperEnd |
AckDataReq¹ |
I |
Используется по усмотрению разработчика периферии |
13 |
Select |
Xflag¹ |
I |
Используется по усмотрению разработчика периферии |
15 |
Error# |
DataAvail#¹ |
I |
Используется по усмотрению разработчика периферии |
¹ Сигналы действуют в последовательности согласования (см. ниже).
EPP-порт имеет расширенный набор регистров (табл. 1.5), который занимает в пространстве ввода-вывода 5–8 смежных байт.
Таблица 1.5. Регистры EPP-порта
Имя регистра |
Смещение |
Режим |
R/W |
Описание |
SPP Data Port |
+0 |
SPP/EPP |
W |
Регистр данных SPP |
SPP Status Port |
+1 |
SPP/EPP |
R |
Регистр состояния SPP |
SPP Control Port |
+2 |
SPP/EPP |
W |
Регистр управления SPP |
EPP Address Port |
+3 |
EPP |
R/W |
Регистр адреса EPP . Чтение или запись в него генерирует связанный цикл чтения или записи адреса EPP |
EPP Data Port |
+4 |
EPP |
R/W |
Регистр данных EPP . Чтение (запись) генерирует связанный цикл чтения (записи) данных EPP |
Not Defined |
+5…+7 |
EPP |
N/A |
В некоторых контроллерах могут использоваться для 16-32-битных операций ввода-вывода |
В отличие от программно-управляемых режимов, описанных выше, внешние сигналы EPP-порта для каждого цикла обмена формируются аппаратно по одной операции записи или чтения в регистр порта. На рис. 1.3 приведена диаграмма цикла записи данных, иллюстрирующая внешний цикл обмена, вложенный в цикл записи системной шины процессора (иногда эти циклы называют связанными). Адресный цикл записи отличается от цикла данных только стробом внешнего интерфейса.
Рис. 1.3. Цикл записи данных EPP
Цикл записи данных состоит из следующих фаз.
1. Программа выполняет цикл вывода ( IOWR#
) в порт 4 ( EPP Data Port
).
Читать дальше