Лекции.ИНФО


Двунаправленный байтный режим Byte Mode



Данный режим обеспечивает прием данных с использованием двунаправленного порта, у которого выходной буфер данных может отключаться установкой бита CR.5=1. Как и в стандартном и в полубайтном режиме, данный режим является программно-управляемым — все сигналы квитирования анализируются и устанавливаются программным драйвером. Назначение сигналов порта приведено в табл. 2.13, временные диаграммы — на рис. 2.37.

 

Таблица 2.13.Сигналы LPT-порта в байтном режиме ввода/вывода

Контакт Сигнал SPP Имя в Byte Mode I/O Описание
STROBE» HostClk O Импульс (низкого уровня) подтверждает прием байта в конце каждого цикла
AUTOFEED# HostBusy O Сигнал квитирования. Низкий уровень означает готовность хоста принять байт, высокий уровень устанавливается по приему байта
SELECTING 1284Active O Высокий уровень указывает на обмен в режиме IEEE 1284. (В режиме SPP уровень низкий)
INIT# INIT# O Не используется, установлен высокий уровень
ACK# PtrClk I Устанавливается в низкий уровень для инди­кации действительности данных на линиях DATA[7:0]. В низкий уровень устанавливается в ответ на сигнал HostBusy
BUSY PtrBusy I Состояние занятости прямого канала
PE AckDataReq* I Устанавливается ПУ для указания на наличие обратного канала передачи*
SELECT Xflag* I Флаг расширяемости*
ERRORS DataAvai'Uf* I Устанавливается ПУ для указания на наличие обратного канала передачи*
2-9 DATA[7:0] DATA[7:0] I/O Двунаправленный (прямой и обратный) канал данных

*Сигналы действуют в последовательности согласования (см. ниже).

 

Рис. 2.37.Прием данных в Byte Mode

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

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

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

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

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

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

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

7. Шаги 1-6 повторяются для каждого следующего байта.

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

Режим ЕРР

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

Протокол ЕРР обеспечивает четыре типа циклов обмена:

· Цикл записи данных.

· Цикл чтения данных. 4-

· Цикл записи адреса. 4

· Цикл чтения адреса.

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

 

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

Контакт Сигнал SPP Имя в ЕРР I/O Описание
STROBE# WRITE# O Низкий уровень — признак цикла записи, высокий — чтения
AUTOFEED# DATASTB# O Строб данных. Низкий уровень устанавливается в циклах передачи данных
SELECTIN# ADDRSTB# O Строб адреса. Низкий уровень устанавливается в адресных циклах
INIT# RESET# O Сброс ПУ (низким уровнем)
АСК# INTR# I Прерывание от ПУ
BUSY WAIT# I Сигнал квитирования. Низкий уровень разрешает начало цикла (установку строба в низкий уровень), переход в высокий — разрешает завершение цикла (снятие строба)
2-9 D[8:0] AD[8:0] I/O Двунаправленная шина адреса/данных
РЕ AckDataReq* I Используется по усмотрению разработчика перифе­рии
SELECT Xflag* I Используется по усмотрению разработчика перифе­рии
ERROR# DataAvail* I Используется по усмотрению разработчика перифе­рии

* Сигналы действуют в последовательности согласования (см. ниже).

 

ЕРР-порт имеет расширенный набор регистров (табл. 2.15), который занимает в пространстве ввода/вывода 5-8 смежных байт.

 

Таблица 2.15. Регистры ЕРР- порта

Имя регистра Смещение Режим 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 EPP R/W Регистр адреса ЕРР. Чтение или запись в него генерирует связанный цикл чтения или записи адреса ЕРР
EPP Data Port +4 EPP R/W Регистр данных ЕРР. Чтение (запись) генерирует свя­занный цикл чтения (записи) данных ЕРР
Not Defined +5...+7 EPP N/A В некоторых контроллерах могут использоваться для 16-32-битных операций ввода/вывода

 

В отличие от программно-управляемых режимов, описанных выше, внешние сигналы ЕРР-порта (как информационные, так и сигналы квитирования) для каждого цикла обмена формируются аппаратно по одной операции записи или чтения в регистр порта. На рис. 2.38 приведена диаграмма цикла записи данных, иллюстрирующая внешний цикл обмена, вложенный в цикл записи системной шины процессора (иногда эти циклы называют связанными). Адресный цикл записи отличается от цикла данных только используемым стробом внешнего интерфейса.

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

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

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

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

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

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

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

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

 

Рис. 2.38.Никл записи данных ЕРР

 

Пример адресного цикла чтения приведен на рис. 2.39, цикл чтения данных отличается только применением другого стробирующего сигнала. После объяснения цикла записи эти типы циклов особых пояснений не требуют.

 

Рис. 2.39.Адресный цикл чтения ЕРР

 

Главной отличительной чертой ЕРР является выполнение внешней передачи во время одного процессорного цикла ввода/вывода. Это позволяет достигать высоких скоростей обмена (0,5-2 Мбайт/с).. Периферийное устройство может регулировать длительность всех фаз обмена с помощью всего лишь одного сигнала WAIT#.

 

Режим ЕСР

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

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

· Циклы записи и чтения данных.

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

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

В отличие от ЕРР вместе с протоколом ЕСР сразу появился и стандарт на программную (регистровую) модель реализации его адаптера, изложенный в документе «The IEEE 1284 Extended Capabilities Port Protocol and ISA Interface Standard» компании Microsoft. Этот документ определяет специфические свойства реализации протокола, не заданные стандартом IEEE 1284:

· компрессия данных хост-адаптером по методу RLE;

· буферизация FIFO для прямого и обратного каналов;

· применение DMA и программного ввода/вывода.

Компрессия в реальном времени по методу RLE (Run-Length Encoding) позволяет достичь коэффициента сжатия до 64:1 при передаче растровых изображений, которые обычно имеют длинные строки повторяющихся байт. Естественно, компрессию можно использовать, только если ее поддерживает и хост, и периферийное устройство.

Канальная адресация ЕСР применяется для адресации множества логических устройств, входящих в одно физическое. Например, в комбинированном устрой­стве факс/принтер/модем, подключаемом только к одному параллельному порту, возможен одновременный прием факса и печать на принтере. В режиме SPP, если принтер установит сигнал занятости, канал будет занят ожидающими данными, пока принтер их не примет. В режиме ЕСР программный драйвер про­сто адресуется к другому логическому каналу того же порта.

Как и в других режимах 1284, протокол ЕСР переопределяет сигналы SPP (табл. 2.16).

 

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

Контакт Сигнал SPP Имя в ЕСР I/O Описание
STROBE# HostClk O Используется в паре с PeriphAck для передачи в прямом направлении (вывод)
AUTOFEED# HostAck O Индицирует тип команда/данные при передаче в прямом направлении. Используется в паре с PeriphClk для передачи в обратном направлении
SELECTIN# 1284Active O Высокий уровень указывает на обмен в режиме IEEE 1284. (В режиме SPP уровень низкий)
INIT# ReverseRequest# O Низкий уровень переключает канал на передачу в обратном направлении
ACK# PeriphClk I Используется в паре с HostAck для передачи в обратном направлении
BUSY PeriphAck I Используется в паре с HostClk для передачи в обратном направлении. Индицирует тип команда/ данные при передаче в обратном направлении
PE AckReverse# I Переводится в низкий уровень как подтверждение сигналу ReverseRequest#
SELECT Xflag* I Флаг расширяемости Extensibility ftag
ERROR# PeriphRequest#* I Устанавливается ПУ для указания на доступность (наличие) обратного канала передачи*
2-9 Data[0:7] Data[0:7] I/O Двунаправленный канал данных

* Сигналы действуют в последовательности согласования (см. ниже).

 

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

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

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

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

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

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

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

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

 

Рис. 2.40.Передача в режиме ЕСР: а — прямая, б — обратная

 

Поскольку передачи в ЕСР разделены FIFO-буферами, которые могут присутствовать на обеих сторонах интерфейса, важно понимать, на каком этапе данные можно будет считать переданными. Данные считается переданными на шаге 4, когда линия HostClk переходит в высокий уровень. В этот момент модифицируются счетчики переданных и принятых байт. В протоколе ЕСР есть условия, вызывающие прекращение обмена между шагами 3 и 4, и тогда эти данные не должны рассматриваться как переданные.

Из рис. 2.40 видно и другое отличие ЕСР от ЕРР. Протокол ЕРР позволяет драйверу чередовать циклы прямой и обратной передачи, не запрашивая подтверждения на смену направления. В ЕСР смена направления должна быть согласована: хост запрашивает реверс установкой ReverseRequest#, после чего он должен дождаться его подтверждения сигналом AckReverse#. Только после этого возможна передача данных в другом направлении. Поскольку предыдущий цикл мог выполняться по прямому доступу, драйвер должен дождаться завершения прямого доступа или прервать его, выгрузить обратно буфер FIFO, определив точное значение счетчика переданных байт, и только после этого запрашивать реверс.

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

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

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

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

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

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

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

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

Режимы и регистры ЕСР-порта

Программный интерфейс и регистры ЕСР для адаптеров IEEE 1284 определяет спецификация Microsoft. Согласно этой спецификации определены режимы (табл. 2.17), в которых может функционировать адаптер. Эти режимы задаются полем Mode регистра ECR (биты [7:5]).

Регистровая модель адаптера ЕСР (табл. 2.18) использует свойства архитектуры стандартной шины и адаптеров ISA, согласно которой для дешифрации адреса портов ввода/вывода использовались только 10 младших линий шины адреса. Старшие линии игнорируются, поэтому обращения по адресам, например, Port, Port+400h, Port+800h... будут восприниматься как обращения к адресу Port, лежащему в диапазоне 0-3FFh. Современные PC и адаптеры декодируют большее количество адресных бит, поэтому обращения по адресам, например, 0x378h и 0x778h будет адресованы двум различным регистрам. Помещение дополнительных регистров ЕСР «за спину» регистров стандартного порта (смещение 400-402h) преследует две цели: во-первых, эти адреса никогда не использовались традиционными адаптерами и их драйверами, и их использование для ЕСР не приведет к стеснению доступного адресного пространства ввода/вывода. Во-вторых, этим обеспечивается совместимость со старыми адаптерами на уровне режимов 000-001 и возможность определения присутствия ЕСР-адаптера попыткой обращения к его расширенным регистрам.

 

Таблица 2.17. Режимы ЕСР-порта

Режим Название Описание
SPPmode Стандартный (традиционный) режим
Bi-directional mode (Byte mode) Двунаправленный порт (типа 1 для PS/2)
Fast Centronics Однонаправленный с использованием FIFO и DMA
ECP Parallel Port mode ЕСР
EPP Parallel Port mode* Перевод в режим EPP
(reserved) -
Test mode Тестирование работы FIFO и прерываний
Configuration mode Доступ к конфигурационным регистрам

* Этот режим не входит в спецификацию Microsoft, но трактуется как EPP контроллером SMC FDC37C665/666 и многими другими контроллерами 1284.

 

Каждому режиму ЕСР соответствуют (и доступны) свои функциональные регистры. Переключение режимов осуществляется записью в регистр ECR. «Дежурными» режимами, включаемыми по умолчанию, являются режимы 000 или 001. В любом из них работает полубайтный режим ввода (Nibble Mode). Из этих режимов всегда можно переключиться в любой другой, но из старших режимов (010-111) переключение возможно только в 000 или 001. Для корректной ра­боты интерфейса перед выходом из старших режимов необходимо дождаться завершения обмена по прямому доступу и опустошения FIFO-буфера.

 

Таблица 2.18.Регистры ЕСР

Смещение Имя R/W Режимы ЕСР* Назначение
DR R/W 000-001 Data Register
ECPAFIFO R/W ЕСР Address FIFO
SR R/W Все Status Register
CR R/W Все Control Register
SDFIFO R/W Parallel Port Data FIFO
ECPDFIFO R/W ECP Data FIFO
TFIFO R/W Test FIFO
CNFGA R Configuration Register A
CNFGB R/W Configuration Register В
ECR R/W Все Extended Control Register

* Регистры доступны только в указанных режимах (режим задается битами 7-5 регистра ECR).

 

Когда порт находится в стандартном или двунаправленном режимах (режимы 000 и 001), первые три регистра полностью совпадают с регистрами стандартного порта. Таким образом обеспечивается совместимость драйвера со старыми адаптерами и старых драйверов с новыми адаптерами.

По интерфейсу с программой ЕСР-порт напоминает ЕРР: после установки режима (записью кода в регистр ECR) обмен данными с устройством сводится к операциям чтения или записи в соответствующие регистры. За состоянием (заполнением) FIFO-буфера наблюдают либо по опросу (чтением регистра ECR), либо по обслуживанию сервисных прерываний от порта. Весь протокол квити­рования генерируется адаптером аппаратно. Обмен данными с ЕСР-портом кроме явного программного возможен и по прямому доступу к памяти (каналу DMA), что эффективно при передаче больших блоков данных.

 

 









Читайте также:

Последнее изменение этой страницы: 2016-03-22; Просмотров: 91;


lektsia.info 2017 год. Все права принадлежат их авторам! Главная