double arrow

Применение параллельного интерфейса IEEE1284



Простейшими устройствами передачи данных между компьютерами считаются стандартные последовательные и параллельные порты. В случае параллельных информация передается по 8-разрядной шине данных, поток информации по которой контролируется при помощи управляющих сигналов по отдельным линиям.

Стандарт на параллельный интерфейс, описанный стандартом IEEE1284, принятый в 1994 году, определяет типы SPP, EPP, ECP. В стандарте существует пять режимов обмена данными, метод согласования режима, физический и электрический интерфейсы. Согласно IEEE 1284 возможны следующие режимы обмена данными через параллельный порт:

– Compatibility Mode – однонаправленный вывод по протоколу Centronics. Этот режим соответствует стандартному порту SPP;

– Nibble Mode – ввод байта в два цикла (по 4 бита), используя для приема линии состояния. Этот режим обмена может использоваться на любых адаптерах;

– Byte Mode – ввод байта целиком, используя для приема линии данных. Этот режим работает только на портах, допускающих чтение выходных данных (Bi-Directional или PS/2 Type 1);

– EPP (Enhanced Parallel Port) Mode – двунаправленный обмен данными, при котором управляющие сигналы интерфейса генерируются аппаратно во время цикла обращения к порту (чтения или записи в порт). Режим эффективен при работе с устройствами внешней памяти, адаптерами локальных сетей;




– ECP (Extended Capability Port) Mode – двунаправленный обмен данными с возможностью аппаратного сжатия данных по методу RLE (Run Length Encoding) и использования FIFO-буферов и DMA. Управляющие сигналы интерфейса генерируются аппаратно. Режим эффективен для принтеров и сканеров.

В современных персональных ЭВМ с LPT-портом на системной плате режим порта SPP, EPP, ECP или их комбинация задается в BIOS Setup. Режим Compatibility Mode полностью соответствует стандартному порту SPP.

Описание сигналов и назначения контактов разъема LPT-порта в различных режимах представлено в табл. 9.2.

Таблица 9.2

Вывод Имя в SPP I/O Описание
AUTOFEED# O Сигнал квитирования ПК HostBusy: "0" – готовность к приему тетрады; "1" – подтверждение приема тетрады
SELECTIN# O "1" – обмен во всех режимах стандарта IEEE 1284, кроме SPP (в режиме SPP SELECTIN# = 0)
ACK# I Сигнал квитирования ПУ PtrClk: "0" – данные действительны; PtrClk = 1 устанавливается в ответ на сигнал HostBusy
BUSY I Бит данных 3 младшей тетрады, 7 старшей тетрады
PE I Бит данных 2 младшей тетрады, 6 старшей тетрады
SELECT I Бит данных 1 младшей тетрады, 5 старшей тетрады
ERROR# I Бит данных 0 младшей тетрады, 4 старшей тетрады

Примечание. Контакты 18-25 подключены к GND. Сигналы LPT-порта в полубайтовом режиме ввода. ПК – контроллер LPT-порта персонального компьютера; ПУ – периферийное устройство.



Прием байта данных в полубайтном режиме состоит из следующих фаз.

1. Хост сигнализирует о готовности приема данных установкой низкого уровня по линии HostBusy.

2. face = «Times New Roman» > ПУ в ответ помещает тетраду во входные линии состояния.

3. ПУ сигнализирует о действительности тетрады установкой низкого уровня на линии PtrClk.

4. Хост устанавливает высокий уровень на линии HostBusy, указывая на занятость приемом и обработкой тетрады.

5. ПУ отвечает установкой высокого уровня на линии PtrClk.

Полубайтный режим является способом приема данных с самой большой нагрузкой процессора, и поднять скорость обмена выше 50 Кбайт/с практически не удается.

Существует двунаправленный байтный режим Byte Mode. Он обеспечивает прием данных с использованием двунаправленного порта, у которого выходной буфер данных может отключаться установкой бита CR.5=1. Как и стандартный полубайтный режим, данный режим является программно-управляемым – все сигналы квитирования анализируются и устанавливаются программным драйвером. Назначение сигналов порта приведено в табл. 9.3.

Прием байта данных в байтном режиме состоит из следующих фаз.

1. Хост сигнализирует о готовности приема данных установкой низкого уровня по линии HostBusy.

2. ПУ в ответ помещает байт данных на линии DATA [7:0].

3. ПУ сигнализирует о действительности тетрады установкой низкого уровня на линии PtrClk.

4. Хост устанавливает высокий уровень на линии HostBusy, указывая на занятость приемом и обработкой тетрады.

5. ПУ отвечает установкой высокого уровня на линии PtrClk.

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


Таблица 9.3

Вывод Имя в Byte Mode I/O Описание
HostClk O Импульс "0" подтверждает прием байта в конце каждого цикла
HostBusy O Сигнал квитирования ПК: "0" – готовность к приему байта; "1" – подтверждение приема байта
1284Actwe O "1" – обмен во всех режимах стандарта IEEE 1284, кроме SPP (в режиме SPP SELECTIN# = 0)
INIT# O Не используется, установлен в "1"
PtrClk I Устанавливается в "0" ПУ в ответ на HostBusy для индикации действительности данных на шине DATA[7:0]
PtrBusy I Устанавливается в "1" ПУ для указания занятости прямого канала
AckDataReq I Устанавливает ПУ для подтверждения обратного канала передачи (AckDataReq = 1), если в ответ на DataAvaW = 1 получен HostBusy = 0
Xflag I Флаг расширяемости
DataAvaW I ПУ устанавливает DataAvaW = 1 для запроса на наличие обратного канала
2-9 DATA[7:0] I/O Двунаправленная шина данных

 

Побайтный режим позволяет поднять скорость обратного канала до скорости прямого канала в стандартном режиме. Однако работать он может только на двунаправленных портах, которые применяются, в основном, лишь на малораспространенных машинах PS/2.

Протокол EPP был разработан задолго до принятия IEEE 1284 компаниями Intel, Xircom и Zenith Data Systems. Он предназначен для повышения производительности обмена по параллельному порту. EPP был реализован в чипсете Intel 386SL (микросхема 82360) и впоследствии принят множеством компаний как дополнительный протокол параллельного порта. Версии протокола, реализованные до принятия IEEE 1284, немного отличались от нынешнего стандарта. Протокол EPP обеспечивает четыре типа циклов обмена:

– цикл записи данных,

– цикл чтения данных,

– цикл записи адреса,

– цикл чтения записи.

Назначение циклов записи и чтения данных ясно из их названия. Адресные циклы могут быть использованы для передачи адресной, канальной и управляющей информации. Циклы обмена данными явно отличаются от адресных циклов применяемыми стробирующими сигналами. Назначение сигналов порта EPP и их связь с сигналами SPP приведены в табл. 9.4

Таблица 9.4

Вывод Имя в ЕРР I/O Описание
WRITE# O "0" – цикл записи; "1" – цикл чтения
DATASTB# O Строб данных (DATASTB# = 0 устанавливается в циклах данных)
ADDRSTB# O Строб адреса (ADDRSTB# = 0 устанавливается в циклах адреса)
RESET# O Сброс ПУ уровнем "0"
INTR# I Прерывание от ПУ (INTR# = 0)
WAIT I Сигнал квитирования: "0/1" – разрешено на­­­ча­­ло / завершение цикла
AckDataReq I Используется по усмотрению разработчика периферии
Xflag I Используется по усмотрению разработчика периферии
DataAvaW I Используется по усмотрению разработчика периферии
2-9 DATA[7:0] I/O Двунаправленная шина данных

 

Цикл записи данных состоит из следующих фаз.

1. Программа выполняет цикл записи (IOWR#) в порт 4 (EPP Data Port).

2. Адаптер устанавливает сигнал Write# (низкий уровень), и данные помещаются на выходную шину порта LPT-порта.

3. При низком уровне WAIT# устанавливается строб данных.

4. Порт ждет подтверждения от ПУ (перевода WAIT# в высокий уровень).

5. Снимается строб данных – внешний ЕРР-цикл завершается.

6. Завершается процессорный цикл ввода/вывода.

7. ПУ устанавливает низкий уровень WAIT#, указывая на возможность начала следующего цикла.

Главной отличительной чертой ЕРР является выполнение внешней передачи во время одного процессорного цикла ввода/вывода. Это позволяет достигать высоких скоростей данных (0.5-2 Мбайт/с).

Протокол ЕСР был предложен фирмами Hewlett Packard и Microsoft как прогрессивный режим связи с периферией типа принтеров и сканеров. Как и ЕРР, данный протокол обеспечивает высокопроизводительный двунаправленный обмен данными хоста с периферийными устройствами.

Протокол ЕСР в обоих направлениях обеспечивает два типа циклов:

– циклы записи и чтения данных,

– командные циклы записи и чтения.

Командные циклы подразделяются на два типа: передача канальных адресов и счетчика RLC (Run-Length Count).

Сигналы LPT-порта в режиме ЕСР приведены в табл. 9.5.

Таблица 9.5

Вывод Имя в ЕСР I/O Описание
HostClk O При прямой передаче: HostClk = 0 подтверждает действительность выводимых данных; в ответ на PeriphAck = 1 устанавливается HostClk = 1
HostAck O При прямой передаче: указатель "команда/данные" (HostAck = 0/1). При обратной передаче: HostAck = 1 (байт принят) в ответ на PeriphClk = 0; HostAck = 0 (готовность ПК к приему) в ответ на PeriphClk = 1
1284Activ O "1" – обмен во всех режимах стандарта IEEE 1284, кроме SPP
ReverseRequest# O "0" – запрос ПК на режим обратной передачи от ПУ
PeriphClk I При обратной передаче PeriphClk = 0 – подтверждение действительности данных; в ответ на HostAck = 1 устанавливается PeriphClk = 1
PeriphAck I При обратной передаче: указатель "команда/данные" (PeriphAck = 0/1). При прямой передаче: PeriphAck = 1 (байт принят) в ответ на HostClk = 0; PeriphAck = 0 (готовность ПУ к приему) в ответ на HostClk = 1

 


Окончание табл. 9.5

AckReverse I "0" – подтверждение ПУ режима обратной передачи на ПК
Xflag I Флаг расширяемости
PeriphRequest# I PeriphRequest# = 0 при наличии у ПУ возможности обратной передачи
2-9 DATA[7:0] I/O Двунаправленная шина данных

Примечание. Любая линия, кроме "земли", связывающая ЦИУ и персональный компьютер, должна подключаться к LPT-порту через резистор с сопротивлением 200-300 Ом. Это необходимо для того, чтобы избежать влияния LPT-порта ЭВМ на работу цифровой части схемы ЦИУ.

Адаптер ЕСР тоже генерирует внешние протокольные сигналы квитирования аппаратно, но его работа существенно отличается от режима ЕРР.

Тип цикла задается уровнем на линии HostAck: в цикле данных – высокий, в командном цикле – низкий. В командном цикле байт может содержать канальный адрес или счетчик RLE. Отличительным признаком является бит 8 (старший): если он нулевой, то биты 1-7 содержат счетчик RLE (0-127), если единичный – то канальный адрес.

Ниже приводится алгоритм подпрограммы для прямой передачи.

Прямая передача данных на интерфейсе состоит из следующих шагов.

1. Хост помещает данные на шину канала и устанавливает признак цикла данных (высокий уровень) или команды (низкий уровень) на линии HostAct.

2. Хост устанавливает низкий уровень на линии HostClk, указывая на действительность данных.

3. ПУ отвечает установкой высокого уровня на линии PeriphAck.

4. Хост устанавливает высокий уровень HostClk, и этот перепад может использоваться для фиксации данных в ПУ.

5. ПУ устанавливает низкий уровень на линии PeriphAck для указания на готовность к приему следующего байта.

Ниже приводится алгоритм подпрограммы для обратной передачи.


Обратная передача данных состоит из следующих шагов.

1. Хост запрашивает изменение направления канала, устанавливая низкий уровень на линии ReverseRequest#.

2. ПУ разрешает смену направления установкой низкого уровня на линии Ack-Reverse#.

3. ПУ помещает данные на шину канала и устанавливает признак цикла данных (высокий уровень) или команды (низкий уровень) на линии PeriphAck.

4. ПУ устанавливает низкий уровень на линии PeriphClk, указывая на действительность данных.

5. Хост отвечает установкой высокого уровня на линии HostAck.

6. ПУ устанавливает высокий уровень на линии PeriphClk, и этот перепад может использоваться для фиксации данных хостом.

7. Хост устанавливает низкий уровень на линии HostAck для указания на готовность к приему следующего байта.

Переключение режимов адаптера LPT-порта (поле "ECR[7:5]" регистра ECR):

000 – режим SPP;

001 – режим Byte Mode;

010 – режим Fast Centronics. Предназначен для высокопроизводительного вывода через FIFO-буфер с использованием DMA канала. Сигналы квитирования вырабатываются аппаратно;

011 – режим ЕСР. Поток данных и команд, передаваемых в ПУ, помещается в FIFO-буфер через регистры ECPDFIFO и ECPAFIFO соответственно. Из FIFO они выводятся с признаком цикла (состояние линии HostAck). Принимаемый поток данных от ПУ извлекается из FIFO-буфера через регистр ECPDFIFO. Получение адреса в командном цикле от ПУ не предусмотрено. Обмен с регистром ECPDFIFO может производиться по каналу DMA;

100 – режим ЕРР. Необязательный способ включения режима ЕРР;

101 – резерв;

110 – режим Test Mode. Режим тестирования максимальной пропускной способности канала LPT-порта. Данные могут передаваться в/из регистра TFIFO с помощью DMA или программным способом. На внешний интерфейс этот обмен не воздействует. Адаптер LPT-порта отрабатывает операции на максимальной скорости;

111 – режим Configuration Mode. Режим доступа к конфигурационным регистрам.

Регистры ЕСР:

DR – регистр данных. Используется для передачи данных только в программно управляемых режимах 000, 001;

SR – регистр состояния. Доступен во всех режимах для передачи значений сигналов на соответствующих линиях (как в SPP);

CR – регистр управления. Доступен во всех режимах. Имеет назначение битов, совпадающее с SPP. В режимах 010 и 011 запись в биты CR.0 и CR.1 игнорируется;

ECPAFIFO – FIFO-буфер адреса в ЕСР. Доступен только в режиме ЕСР. Служит для помещения информации командных циклов (адрес канала или счетчик RLE при сжатии информации) в FIFO-буфер. Из FIFO-буфера информация будет выдана в командном цикле вывода;

SDFIFO – FIFO-буфер регистра параллельного порта. Доступен в режиме 010. Служит для передачи данных. Данные, записанные в этот регистр (или посланные по каналу DMA), передаются через FIFO-буфер по аппаратно реализованному протоколу Centronics. При этом должно быть задано прямое направление (CR.5 = 0);

DFIFO – FIFO-буфер данных в ЕСР. Доступен только в режиме ЕСР. Используется для обмена данными. Данные, записанные в этот регистр или считанные из него (или переданные по каналу DMA), передаются через FIFO-буфер по протоколу ЕСР;

TFIFO – регистр, обеспечивающий тестирование FIFO-буфера в режиме 110;

ECPCFGA – регистр, позволяющий считывать информацию об адаптере
LPT-порта. Доступен в любом режиме;

ECPCFGB – регистр, предназначенный для хранения информации, необходимой драйверу LPT-порта. Доступен в любом режиме;

ECR – регистр управления/статуса адаптера LPT-порта. Доступен в любом режиме.

Назначение битов данного регистра:

ECR.[7:5] – биты переключения режимов адаптера LPT-порта;

ECR.4 – ERRINTREN# – бит, запрещающий прерывания (при ECR.4 = 1) по ошибке;

ECR.3 – DMAEN – бит, разрешающий (при ECR.3 = 1) обмен с адаптером LPT-порта по каналу DMA;

ECR.2 – SERVICEINTR – бит, запрещающий сервисные прерывания (при ECR.2 = 1), которые вырабатываются по окончании цикла DMA (если он разрешен), по порогу заполнения/опустошения FIFO-буфера (если не используется DMA) и по ошибке переполнения или переопустошения FIFO-буфера;

ECR.1 – FIFOFS – бит, сигнализирующий о заполнении FIFO-буфера (если FIFOFS = 1, значит, в FIFO-буфере нет ни одного свободного байта);

ECR.0 – FIFOES – бит, указывающий на полное опустошение FIFO-буфера (при FIFOES = 1). Комбинация (FIFOFS = 1)&(FIFOES = 1) означает ошибку работы с FIFO-буфером – переполнение или переопустошение.

 



Сейчас читают про: