
- •Режимы работы
- •Режим совместимости (Compatibility Mode)
- •Полубайтный режим ввода (Nibble mode)
- •Режим усовершенствованного параллельного порта (epp)
- •Режим порта с расширенными возможностями (ecp)
- •Контактный разхем для подключения параллельного интерфейса пк и пк-совместимого интерфейса принтера
- •Согласование режимов
- •Последовательность согласования
- •Электрические параметры согласования
Режим порта с расширенными возможностями (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, чем явными операциями ввода-вывода. Опять же, это — свободно соединенный интерфейс, который предназначен, прежде всего, для периферийных устройств, которые обмениваются большими блоками данных.