Опубликован: 18.05.2006 | Уровень: для всех | Доступ: платный | ВУЗ: Ульяновский государственный университет
Лекция 15:

Интерфейсы периферийных устройств

Интерфейс IEEE 1284

Стандартный интерфейс параллельного порта получил свое первоначальное название по имени американской фирмы Centronics - производителя принтеров. Первые версии этого стандарта были ориентированы исключительно на принтеры, подразумевали передачу данных лишь в одну сторону (от компьютера к принтеру) и имели невысокую скорость передачи (150-300 Кбайт/с). Такие скорости неприемлемы для современных печатающих устройств. Кроме того, для работы с некоторыми устройствами необходима двусторонняя передача данных. Поэтому некоторые фирмы (Xircom, Intel, Hewlett Packard, Microsoft) предложили несколько модификаций скоростных параллельных интерфейсов: EPP (Enhanced Parallel Port) - до 2 Мбайт/с, ECP (Extended Capabilities Port) - до 4 Мбайт/с и др. На основе этих разработок в 1994 году Институтом инженеров по электронике и электротехнике был принят стандарт IEEE 1284-1994, ныне повсеместно используемый в персональных компьютерах в качестве стандартного параллельного интерфейса.

Таблица 15.3. Сигналы интерфейса IEEE 1284
Разъем DB25 Напряжение SPP Nibble Mode EPP ECP
1 O STROBE# WRITE# HostClk
2 O (I) DATA0 AD0 D0
3 O (I) DATA1 AD1 D1
4 O (I) DATA2 AD2 D2
5 O (I) DATA3 AD3 D3
6 O (I) DATA4 AD4 D4
7 O (I) DATA5 AD5 D5
8 O (I) DATA6 AD6 D6
9 O (I) DATA7 AD7 D7
10 I ACK# PtrClk Intr# PeriphClk
11 I BUSY D3/D7 Wait# PeriphAck
12 I PE D2/D6 AckDataReq AckReverse#
13 I SELECT D1/D5 XFlag XFlag
14 O AUTOFD# HostBusy DataStb# HostAck
15 I ERROR# D0/D4 DataAvail# PeriphReq#
16 O INIT# Reset# ReverseReq#
17 O SLCTIN# NibbleMode AddrStb# 1284Active
18-25 - GND GND GND GND

Стандарт IEEE 1284 определяет работу параллельного интерфейса в трех режимах: Standard Parallel Port ( SPP ), Enhanced Parallel Port ( EPP ) и Extended Capabilities Port ( ECP ). Каждый из этих режимов предусматривает двустороннюю передачу данных между компьютером и периферийным устройством.

Режим SPP (Стандартный параллельный порт) используется для совместимости со старыми принтерами, не поддерживающими IEEE 1284. Режиму SPP соответствуют три программно доступных регистра:

  • порт BASE+0 - SPP Data - регистр данных,
  • порт BASE+1 - SPP Status - регистр состояния,
  • порт BASE+2 - SPP Control - регистр управления.

Для устройства LPT1 базовым адресом (BASE) в пространстве портов ввода-вывода обычно является 378h.

В этом режиме линии DATA[0:7] используются для прямой передачи данных (от компьютера к периферийному устройству). Сигналы STROBE#, ACK# и BUSY используются для квитирования. Сигналом STROBE# компьютер информирует о готовности данных на линиях DATA[0:7]. Если устройство приняло выставленные компьютером данные, то оно выставляет сигнал ACK#. Во время приема данных, во время инициализации, а также при наличии ошибки устройство выставляет сигнал BUSY. О возникновении ошибочной ситуации сигнализирует линия ERROR#, а также PE (кончилась бумага). О том, что принтер включен и готов к работе, сообщается при помощи сигнала SELECT. Для подтверждения выбора принтера компьютер выставляет сигнал SLCTIN#. При необходимости очистить буфер принтера и перевести его в исходное состояние выставляется INIT#. Сигнал AUTOFD# используется при работе с матричными принтерами в текстовом режиме для продвижения бумаги на одну строку.

Для организации обратного канала (передача данных от принтера в компьютер) в режиме SPP возможны два механизма: механизм двунаправленного порта (впервые представленный в IBM PS/2 в 1987 г.) и механизм передачи полубайтами (Nibble Mode). При использовании механизма двунаправленного порта способ квитирования не декларируется.

Особенностью обратного канала в Nibble Mode является то, что за один цикл передается только 4 бита данных. Таким образом, скорость в обратном канале в два раза меньше, чем в прямом канале. Преимуществом использования Nibble Mode является возможность программной реализации этого механизма на любом старом параллельном порту, не поддерживающем IEEE 1284. Сигналом активности этого механизма является высокий уровень на линии NibbleMode (при прямой передаче на этой линии выставляется низкий уровень). Для квитирования используются линии HostBusy (сигнал устанавливается компьютером в низкий уровень, когда он готов к приему) и PtrClk (низкий уровень сигнала подтверждает действительность данных D[0:4]/D[5:7]).

В режиме EPP (Улучшенный параллельный порт) используется аппаратная реализация сигналов квитирования, благодаря чему возможно увеличение скорости передачи до 2 Мбайт/с. Этот режим поддерживает адресацию устройств, благодаря чему возможно подключение нескольких (до 64) устройств к одному порту. Генерация цикла чтения или записи на шине IEEE 1284 со всеми необходимыми сигналами квитирования происходит при обращении к регистру EPP Address (BASE+3) или EPP Data (BASE+4). При этом адаптер IEEE 1284 устанавливает сигнал Write# в зависимости от направления передачи (низкий уровень - прямая передача, высокий уровень - обратная передача). Для периферийного устройства информацией о том, являются ли биты на линиях AD[0:7] данными или адресом, является сигналы DataStb# (строб данных) или AddrStb# (строб адреса). Периферийное устройство информирует компьютер о своей готовности принять очередной байт при помощи сигнала Wait#. Сигнал Reset#, так же как и в режиме SPP используется для инициализации устройства. Установка периферийным устройством сигнала Intr# вызывает генерацию прерывания. Сигналы AckDataReq и DataAvail# используются по усмотрению разработчика, например, для квитирования в обратном канале.

Режим ECP (Порт расширенных возможностей) также использует аппаратное квитирование и адресацию устройств (до 128). Дополнительно ECP поддерживает распознавание ошибок, согласование скорости и режима передачи, буферизацию данных в очереди FIFO (с использованием DMA) и их компрессию по алгоритму RLE (Run Length Encoding), что позволяет достигать скорость до 4 Мбайт/с.

Признаком активности режима ECP является высокий уровень сигнала 1284Active. При прямой передаче для квитирования используются сигналы HostClk и PeriphAck, а сигнал HostAck указывает на тип передаваемых данных: высокий уровень - обычные данные, низкий уровень - команда или адрес. Для запроса обратного канала компьютер выставляет сигнал ReverseReq#, который устройство подтверждает сигналом AckReverse#. В обратном канале для квитирования применяются сигналы PeriphClk и HostAck, а сигнал PeriphAck используется устройством для указания типа передаваемых данных. Устройство может запросить обслуживание при помощи сигнала PeriphReq#.

В режиме ECP параллельный порт может эмулировать работу любого другого режима IEEE 1284, что определяется в соответствующих битах расширенного регистра управления (ECR) по адресу BASE+400h:

Таблица 15.4. Режимы работы порта ECP
Номер Обозначение Описание
0002 SPP Режим стандартного параллельного порта с программным квитированием
0012 Bi-directional mode Поддержка обратного канала для режима SPP, как в IBM PS/2
0102 Fast Centronics Режим стандартного параллельного порта с аппаратным квитированием
0112 ECP Режим ECP с поддержкой FIFO и RLE
1002 EPP Режим EPP
1012 Reserved
1102 Test mode Режим самотестирования FIFO и прерываний
1112 Configuration mode Режим конфигурирования
Виктория Монахова
Виктория Монахова
Евгений Коваленко
Евгений Коваленко
Артём Сумской
Артём Сумской
Россия, Новая Адгея
Лев Хапуненко
Лев Хапуненко
Россия, Краснодар