Выбрать главу

6. Хост подтверждает прием байта импульсом HostClk.

Шаги 1–6 повторяются для каждого следующего байта. Квитирование осуществляется парой сигналов HostBusy и PtrClk; ПУ может и не использовать сигнал HostClk (это приглашение к выдаче следующего байта, напоминающее сигнал Ack# в интерфейсе Centronics). Побайтный режим позволяет поднять скорость обратного канала до скорости прямого канала в стандартном режиме. Однако он способен работать только на двунаправленных портах, которые раньше применялись в основном на малораспространенных машинах PS/2, но практически все современные порты можно сконфигурировать на двунаправленный режим (в настройках BIOS Setup — Bi-Di или PS/2).

1.3.3. Режим EPP

Протокол 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-битных операций ввода-вывода