Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
IEEE-1284.doc
Скачиваний:
47
Добавлен:
30.01.2015
Размер:
401.92 Кб
Скачать

Режим порта с расширенными возможностями (ecp)

Протокол Порта с Расширенными Возможностями, или ECP, был предложен Hewlett Packard и Microsoft как продвинутый режим для связи с принтером и периферийными устройствами типа сканера. Подобно протоколу EPP, ECP обеспечивает высокоэффективную двунаправленную связь между контроллером и периферийным устройством.

Протокол ECP обеспечивает следующие типы цикла в прямом и обратном направлениях:

1. Циклы данных

2. Циклы команды

Циклы команды делятся на 2 типа: подсчёт длины серии и адрес канала (Run-Length Count and Channel address).

В отличие от EPP, когда протокол ECP был предложен, была также предложена стандартная реализация регистров. Она может быть найдено в документе Microsoft "The IEEE 1284 Extended Capabilities Port Protocol and ISA Interface Standard", предлагаемом Корпорацией Microsoft. Этот документ определяет специфические свойства, которых нет в стандарте IEEE1284. Эти свойства включают Run_Length_Encoding (RLE) сжатие данных для контроллеров, FIFO для прямой и обратной передачи, и DMA также как программируемый Ввод - вывод для ведущего регистра интерфейса.

Свойство RLE допускает сжатие данных в реальном времени, при котором коэффициент сжатия может достигать 64:1. Это особенно полезно для принтеров и сканеров, которые передают большие растровые изображения с длинными строками идентичных данных. Для RLE режима необходимо, чтобы его поддерживали и главный компьютер, и периферийное устройство.

Адресация Канала концептуально немного отличается от адресации EPP. Адресация Канала предназначена для адресации нескольких логических устройств внутри одного физического устройства. Думайте об этом в терминах нового многофункционального устройства типа FAX/Printer/Modem. Внутри одного физического корпуса, присоединенного через один параллельный порт, имеется принтер, факс и модем. Каждая из этих отдельных функций может рассматриваться как отдельное логическое устройство внутри этого корпуса. При использовании адресации канала ECP при обращении к каждому из этих устройств Вы могли бы получать данные из модема, в то время как канал данных принтера занят обработкой изображения для печати. В режиме совместимости, если принтер занимает канал, он не освобождает его до окончания связи. В режиме ECP программный драйвер просто адресует другой канал, и связь может продолжаться.

Как и в других режимах 1284, протокол ECP переопределяет сигналы SPP, чтобы не противоречить подтверждению связи ECP. Таблица 4 описывает эти сигналы.

Таблица 4 — Сигналы режима ECP

Сигнал SPP

Имя в режиме ECP

In / Out

Описание

nStrobe

HostClk

Out

Используется с PeriphAck, чтобы передать данные или адрес в прямом направлении

nAutofeed

HostAck

Out

Представляет состояние Команда/Данные в прямом направлении. Используется с PeriphClk для передачи данных в обратном направлении.

nSelectin

1284Active

Out

Высокий уровень, когда компьютер находится в 1284 режиме передачи.

nInit

NReverseRequest

Out

Выставляется низкий уровень для установления обратного направления передачи.

nAck

PeriphClk

In

Используется с HostAck для передачи данных в обратном направлении.

busy

PeriphAck

In

Используется с HostClk, для передачи данных или адреса в прямом направлении. Представляет состояние Команда/Данные в обратном направлении.

PE

NAckReverse

In

Устанавливается низкий уровень, чтобы подтвердить nReverseRequest.

Select

Xflag

In

Флаг Расширяемости.

nError

NPeriphRequest

In

Низкий уровень устанавливается периферийным устройством, чтобы указать, что обратные данные доступны.

Data[8:1]

Data[8:1]

Bi-Dir

Используются для обмена данными между периферийным устройством и компьютером.

На рисунке 4 показано два прямых цикла передачи данных. Когда на HostAck высокий уровень, это указывает, что выполняется цикл данных. Когда на HostAck низкий уровень, выполняется цикл команды, и данные представляют собой или отсчет RLE, или адрес канала. Бит 8 байта данных используется для индикации RLE или адреса канала. Если бит 8 = 0, то биты 1-7 представляют отсчёт длины серии (0-127). Если бит 8 = 1, то биты 1-7 представляют адрес канала (0-127). Рисунок 6 показывает цикл данных, сопровождаемый циклом команды.

Рисунок 5 показывает обратный цикл команды канала, сопровождаемый обратным циклом данных канала. Стробы ввода-вывода (чтения или записи) на этих рисунках не показаны. Это потому, что ECP FIFOs используются для разделения передачи данных ISA, DMA или программируемого Ввода - вывода, из фактически ведущего устройства передачи данных (компьютера или периферийного устройства). Это разделение состояний передачи делает ECP протокол "свободно соединяемым" протоколом. Программный драйвер не знает о точном состоянии передачи данных. Если большой блок передается через DMA, драйвер не знает, передается ли 123-ий байт или 342,201-ый байт. Как в случае принтеров, программное обеспечение может об этом не заботиться. Важно только, была передача завершена или нет.

Рисунок 4 — Цикл прямой передачи команды или данных ECP.

Фазовые переходы прямой передачи

1. Ведущее устройство помещает данные на линии данных и указывает на цикл данных, устанавливая высокий уровень на HostAck.

2. Ведущее устройство устанавливает на HostClk низкий уровень, чтобы сообщить о достоверности данных.

3. Периферийное устройство отвечает ведущему, устанавливая на PeriphAck высокий уровень

4. Ведущий устанавливает на HostClk высокий уровень. Этот фронт должен использоваться для синхронизации данных в периферийном устройстве.

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

6. Повторение цикла, но теперь это цикл команды, потому что на HostAck низкий уровень.

С момента свободного соединения передачи ECP, с FIFO возможно с обеих сторон интерфейса, важно обратить внимание, на каком шаге данные считаются "переданными". Это происходит на шаге 4, когда на HostClk устанавливается высокий уровень. В этот момент данные должны тактироваться в периферии и должны обновляться любые счетчики данных. В протоколе ECP есть состояние, которое может заставить передачу прерваться между шагами 3 и 4. В этом случае данные не должны считаться переданными.

На рисунке 2 показано другое различие между ECP и EPP протоколами. В EPP драйвер программного обеспечения может смешивать операции чтения и записи без каких-либо издержек или взаимного подтверждения. В протоколе ECP изменения направления передачи данных должны быть взаимно подтверждены. Ведущий должен запросить обратную передачу канала, устанавливая nReverseRequest и затем ждать ответа периферии, чтобы подтвердить запрос, устанавливая nAckReverse. Только тогда обратная передача данных канала может иметь место. Кроме того, так как предыдущая передача, возможно, была DMA, программное обеспечение ведущего должно или ждать окончания DMA, или прервать DMA, очистить FIFO, чтобы точно определить номер переданного байта, и затем запрашивать обратную передачу. Это добавляет много издержек при работе с периферией, которая требует много смешанных операций чтения и записи регистров или маленьких буферов.

Рисунок 5 — Цикл обратной передачи команды или данных ECP

Фазовые переходы обратной передачи

1. Ведущий запрашивает обратную передачу канала, устанавливая на nReverseRequest низкий уровень.

2. Периферия отвечает OK, устанавливая на nAckReverse низкий уровень

3. Периферия помещает данные на линии данных и сообщает о цикле данных, устанавливая на PeriphAck высокий уровень.

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

5. Ведущий отвечает, устанавливая на HostAck высокий уровень

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

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

8. Повторение цикла, но теперь это цикл команды, потому что на PeriphAck низкий уровень.

Программный и регистровый интерфейс ECP

Спецификация Microsoft " IEEE 1284 Протокол Порта с Расширенными Возможностями и Стандарт Интерфейса ISA" ("The IEEE 1284 Extended Capabilities Port Protocol and ISA Interface Standard") определяет общий регистровый интерфейс для основанных на ISA 1284 адаптеров с ECP. Эта спецификация также определяет множество режимов, в которых адаптер может работать. В таблице 5 перечислены эти режимы.

Таблица 5 — Режимы регистров ECP

Режим

Описание

000

Режим SPP

001

Двунаправленный режим (байтовый режим)

010

Быстрый Centronics

011

Режим параллельного порта ECP

100

Режим параллельного порта EPP. Реализован в контроллере SMC FDC37C665/666 и не определен в спецификации ECP. Большинство 1284 контроллеров ввода - вывода осуществляет режим EPP подобным способом.

101

Зарезервирован

110

Тестовый режим

111

Режим конфигурации

Регистровая модель для ECP порта подобна модели для стандартного параллельного порта, но в ней используется преимущество одной особенности архитектуры шины ISA. В IBM совместимой архитектуре PC используются только первые 1024 адреса портов ввода - вывода. Это - базовое пространство ввода - вывода от 0x000h до 0x3ffh. Чтобы адресовать этот диапазон, необходимо только 10 битов адреса (AD0-9). Для уменьшения стоимости в старых PC использовались и декодировались только эти биты адреса на ISA шине и поэтому доступное пространство ввода - вывода ограничивалось этими 1024 регистрами. В более новых PC фактически используется и декодируется большее количество битов адреса, позволяя увеличить доступное пространство ввода - вывода. Это создает многократные "страницы" первого 1КБ портов ввода - вывода. Программный драйвер может получать доступ к этим страницам, добавляя 1024 (0x400h hex) к базовому адресу, по которому обращаются. Поэтому обращение к адресам 0x378h и 0x778h дает доступ к двум регистрам на двух отдельных страницах, но гарантирует отсутствие конфликтов с любым другим установленным ISA устройством. Преимущество состоит в том, что, используя этот эффект "совмещения имен", новые платы могут "скрывать" регистры, расширяя таким образом доступное число регистров и поддерживая совместимость со старыми ISA платами, которые декодируют только 10 битов адреса.

Регистровая модель ECP использует это преимущество и определяет 6 регистров, которые фактически требуют только 3 порта ввода - вывода. В таблице 6 описаны эти регистры. Обратите внимание, что определение регистра может зависеть от текущего режима работы. Регистр ECR - наиболее важный аспект этой регистровой конфигурации. Это - регистр, который используется для задания текущего режима. Кроме того, этот регистр может использоваться программным обеспечением, чтобы определить, установлен ли ECP-совместимый порт в PC. Программное обеспечение для обнаружения может пытаться получить доступ к любым регистрам ECR, добавляя 0x402h к базовым адресам LPT портов, идентифицированных в таблицах портов LPT BIOS.

Таблица 6 — Описание регистров ECP

Смещение

Имя

Чтение /

запись

Режим ECP

Функция

000

Data

R/W

000-001

Регистр данных

000

ecpAfifo

R/W

011

ECP адрес FIFO

001

dsr

R/W

все

Регистр состояния

002

dcr

R/W

все

Регистр управления

400

cFifo

R/W

010

FIFO данных параллельного порта

400

ecpDfifo

R/W

011

FIFO данных ECP

400

tfifo

R/W

110

Тест FIFO

400

cnfgA

R

111

Регистр конфигурации A

401

cnfgB

R/W

111

Регистр конфигурации B

402

ecr

R/W

все

Расширенный управляющий регистр

Заметим, что если порт находится в стандартном режиме параллельного порта или двунаправленном режиме, то первые 3 регистра ведут себя так же, как стандартный параллельный порт. Этим достигается совместимость со старыми устройствами и драйверами устройств.

Использование этого порта аналогично использованию EPP порта. В регистр ecr записывается код режима, и затем данные передаются путем чтения или записи соответствующего порта ввода - вывода. Все подтверждения связи автоматически производятся контроллером интерфейса. Главное отличие состоит в том, что ECP порт, как предполагается, более управляется DMA, чем явными операциями ввода-вывода. Опять же, это — свободно соединенный интерфейс, который предназначен, прежде всего, для периферийных устройств, которые обмениваются большими блоками данных.

Соседние файлы в предмете Интерфейсы Периферийных Устройств