Стандарт IEEE 1284

Избранные переводы текстов из Internet

http://www.fapo.com/1284int.htm

Переведено Д.С.Иоффе (dsioffe@softhome.net, ICQ 14450981) с другом Stylusом исключительно для расширения собственного понятия. Никакие претензии не принимаются. Советы принимаются с удовольствием.

Введение в Стандарт IEEE 1284 - 1994

(Из файла 1284INT. HTM)

Недавно выпущенный стандарт, "IEEE Std. 1284 - 1994 Стандартный Метод Передачи сигналов для Двунаправленного Параллельного Периферийного Интерфейса для Персональных компьютеров ", является для параллельного порта тем же, что Pentium процессор для 286. Стандарт обеспечивает высокую скорость двунаправленной связи между PC и внешней периферией, которая может быть в 50 - 100 раз больше, чем у оригинального параллельного порта. При этом сохраняется полная обратная совместимость со всеми существующими периферийными устройствами параллельного порта и принтерами.

1284 стандарт определяет 5 режимов передачи данных. Каждый режим обеспечивает метод передачи данных в прямом направлении (от PC к периферии), обратном направлении (от периферии к PC) или двунаправленную передачу данных (полудуплекс). Определены следующие режимы:

• Направление только вперёд

Режим Совместимости

"Centronics" или стандартный режим

• Только обратное направление

Режим Тетрады

4 бита, одновременно использующие линии состояния для чтения данных.

Hewlett Packard Bi-tronics

Режим Байта

8 битов, одновременно использующие линии данных, иногда рассматриваемый как "двунаправленный" порт.

• Двунаправленные

EPP

Расширенный Параллельный Порт - используется прежде всего не принтерами: CD-ROM, ленточными накопителями, жёсткими дисками, сетевыми адаптерами, и т.д.

ECP

Порт с Расширенными Способностями - используется прежде всего новым поколением принтеров и сканеров.

Все параллельные порты могут осуществлять двунаправленную связь, используя режимы Совместимый и Тетрады для передачи данных. Режим Байта может использоваться примерно для 25% установленных параллельных портов. Все три этих режима используют только программное управление передачей данных. Драйвер должен устанавливать данные, проверять линии рукопожатия (BUSY), устанавливать соответствующие сигналы управления (STROBE) и затем переходить к следующему байту. Это выполняется только программно и ограничивает эффективную скорость передачи данных на уровне от 50 до 100 килобайтов в секунду.

В дополнение к предыдущим трём режимам, EPP и ECP реализуются в самых последних контроллерах ввода - вывода большинством изготовителей чипов ввода - вывода высшего качества. В этих режимах для передачи данных используются аппаратные средства. Например, в режиме EPP байт данных может быть передан периферии простой инструкцией OUT. Контроллер ввода - вывода самостоятельно выполняет операции подтверждения связи и передачи данных на периферию

В целом, 1284 стандарт обеспечивает следующее:

1.Пять режимов передачи данных

2.Метод определения поддерживаемых режимов для ведущего и периферийного устройств и проведение подготовки к передаче в требуемом режиме.

3.Определяет физический интерфейс

• Кабели

• Соединители

4.Определяет электрический интерфейс

• Драйверы / приемники

• Окончание линии

• Импеданс

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

Режим совместимости

(Из файла CENMODE.HTM)

Этот режим определяет протокол, используемый большинством PC, для передачи данных на принтер. Он обычно называется "Centronics" режимом и является методом, используемым со стандартным параллельным портом. В этом режиме данные помещаются на линии данных порта, состояние принтера не проверяется ни на какие ошибки и на занятость (сигнал Busy), и затем программно формируется строб данных (Strobe) для тактирования принтера. Рисунок 1 описывает эту передачу.

Рисунок 1. Цикл передачи данных в режиме совместимости

Фазовые Переходы Режима Совместимости:

1.Запись данных в регистр данных

2.Программа читает регистр состояния, чтобы проверить принтер на занятость (BUSY)

3.Если принтер не занят, то производится запись в Регистр Управления, чтобы установить линию STROBE

4.Производится запись в Регистр Управления, чтобы сбросить линию STROBE

Как может быть замечено, для вывода одного байта данных требуется четыре I /O инструкции и много дополнительных инструкций. В результате полоса пропускания порта ограничена величиной примерно 150КБ в секунду.

Эта полоса пропускания достаточна для связи с матричными и наиболее старыми лазерными принтерами, но ее недостаточно для связи с LAN адаптерами, сменными приводами дисков и лазерными принтерами нового поколения. Конечно, этот режим допускает передачу только в прямом направлении и должен быть объединен с обратным режимом, чтобы иметь полный двунаправленный канал

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

Многие объединенные 1284 I/O контроллеры осуществляют режим, который использует FIFO буфер, чтобы передать данные по протоколу режима Совместимости. Этот режим называют "Быстрый Centronics" или "Режим FIFO Параллельного Порта". Когда установлен этот режим, данные, записываемые в FIFO порт, будут переданы принтеру с использованием аппаратных средств формирования стробов для подтверждения связи. Так как имеются очень небольшие времена ожидания между передачами и программное обеспечение не должно делать никакого стробирования или проверки рукопожатия, скорости передачи в некоторых системах достигают 500КБ в секунду. Этот режим, однако, не входит в стандарт IEEE 1284.

Режим Тетрады

(Из файла nibble.htm)

Режим Тетрады - наиболее общий способ получить данные из принтера или периферийного устройства. Этот режим обычно объединяется с режимом Совместимости или собственно прямым режимом канала, чтобы получить полный двунаправленный канал.

Все стандартные параллельные порты поддерживают 5 линий от периферийного устройства к PC, предназначенных для индикации состояния. При использовании этих линий периферийное устройство может посылать байт данных (8-bits), отправляя 2 тетрады (4-bits) информации на PC в двух циклах передачи данных. К сожалению, так как линия nACK обычно используется для периферийного прерывания, биты, используемые для передачи тетрады, удобно не упакованы в байт, определенный регистром Состояния. Поэтому программное обеспечение должно читать байт состояния и затем манипулировать битами, чтобы получить правильный байт.

В Таблице 1 приведены имена сигналов для режима Тетрады. Рисунок 1 показывает базисное квитирование данных для передачи в режиме тетрады от периферийного устройства к главному компьютеру.

Таблица 1. Сигналы в режиме тетрады

Сигнал SPP | Имя в режиме тетрады | In/Out | Описание - использование сигнала при передаче данных в режиме тетрады
nSTROBE | nSTROBE | Out | Не используется для обратной передачи данных
nAUTOFEED | HostBusy | Out | Ведущий сигнал квитирования в режиме тетрады. Низкий уровень указывает, что главный компьютер готов к передаче в режиме тетрады. Высокий уровень указывает, что тетрада была получена.
nSELECTIN | 1284Active | Out | Устанавливается высокий уровень, когда компьютер находится в режиме передачи 1284.
nINIT | nINIT | Out | Не используется для обратной передачи данных
nACK | PtrClk | In | Низкий уровень указывает на готовность данных тетрады, высокий устанавливается в ответ на положительный перепад HostBusy.
BUSY | PtrBusy | In | Используется для бита данных 3, затем 7
PE | AckDataReq | In | Используется для бита данных 2, затем 6
SELECT | Xflag | In | Используется для бита данных 1, затем 5
nERROR | nDataAvail | In | Используется для бита данных 0, затем 4
DATA[8:1] | Не используются |  |

Рисунок 1. Цикл передачи в режиме тетрады.

Фазы передачи в режиме тетрады по стандарту 1284:

1. Компьютер сообщает о готовности к приёму данных, устанавливая на HostBusy низкий уровень

2. Периферийное устройство отвечает, помещая первую тетраду на линиях состояния

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

4. Компьютер устанавливает на HostBusy высокий уровень, указывая, что он получил тетраду и еще не готов для приема другой тетрады.

5. Периферия устанавливает на PtrClk высокий уровень для подтверждения компьютеру

Состояния от 1 до 5 повторяются для второй тетрады

Режим Тетрады, подобно Совместимому режиму, требует, чтобы программное обеспечение управляло протоколом, устанавливая и читая сигналы на линиях параллельного порта. Режим Тетрады требует наиболее интенсивной работы программного обеспечения для обратной передачи. По этой причине, имеется серьезное ограничение приблизительно 50КБ в секунду для этого типа передачи данных. Главное преимущество этого режима - способность функционировать на всех PC, которые имеют параллельный порт. Ограничения производительности, имеющие место в режиме Тетрады, не имеют большого значение для периферийных устройств с небольшими требованиями к пропускной способности канала в обратном направлении, типа принтеров, но могут быть почти невыносимы для адаптеров локальной вычислительной сети, дисководов или CD-ROM.

Режим EPP

(Из файла eppmode.htm)

Протокол Расширенного параллельного порта был первоначально разработан Intel, Xircom и Zenith Data Systems как средство для обеспечения высокопроизводительной связи через параллельный порт, которая будет все еще совместима со стандартным параллельным портом. Реализация этого протокола была осуществлена Intel в наборе 386SL (82360 I/O чип). Это было до учреждения комитета IEEE 1284 и совместных работ по стандарту.

В протоколе EPP было предложено много преимуществ для производителей периферийных устройств параллельного порта, и он был быстро принят многими как необязательный метод передачи данных. Была сформирована свободная ассоциация вокруг 80 заинтересованных изготовителей, чтобы развивать и продвигать протокол EPP. Эта ассоциация стала EPP Комитетом и разработала этот протокол, принятый как один из продвинутых режимов IEEE 1284.

С тех пор EPP совместимые параллельные порты были доступны. Это было до выпуска 1284 стандарта, и имеется маленькое отклонение между до-1284 EPP портами и 1284 EPP протоколом. Это будет подробнее описано позже.

EPP протокол обеспечивает четыре типа циклов передачи данных:

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

2.Цикл чтения данных

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

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

Циклы Данных предназначены для передачи данных между ведущим и периферией. Циклы Адреса могут использоваться для передачи адреса, канала, или команды и управляющей информации. Эти циклы могут рассматриваться просто как два различных цикла данных. Разработчик может использовать и интерпретировать информацию адреса / данных любым способом, который имеет смысл для конкретного проекта. Таблица 1 описывает EPP сигналы и связанные с ними SPP сигналы.

Таблица 1 - Определения Сигналов EPP

Сигнал SPP | Название Сигнала EPP | Вход / Выход | Описание Сигнала EPP
nSTROBE | nWRITE | Выход | Активный низкий. Указывает на действие записи. Высокий в цикле чтения.
nAUTOFEED | nDATASTB | Выход | Активный низкий. Указывает на то, что операция Data_Read или Data_Write находится в процессе выполнения.
nSELECTIN | nADDRSTB | Выход | Активный низкий. Указывает, что операция Address_Read или Address_Write находится в процессе выполнения.
nINIT | nRESET | Выход | Активный низкий. Сброс Периферии.
nACK | nINTR | Вход | Периферийное прерывание. Используется для выдачи прерывания ведущему.
BUSY | nWAIT | Вход | Сигнал Рукопожатия. Низкий уровень указывает, что надо начать цикл (установить строб), высокий указывает, что надо закончить цикл (сбросить строб).
D[8:1] | AD[8:1] | Двунаправленный | Двунаправленные линии адреса / данных.
PE | Определяется пользователем | Вход | Может Использоваться по-разному каждой периферией
SELECT | Определяется пользователем | Вход | Может Использоваться по-разному каждой периферией
nERROR | Определяется пользователем | Вход | Может Использоваться по-разному каждой периферией

Рисунок 1 - пример Data_Write цикла. CPU сигнал nIOW показан только для того, чтобы подчеркнуть, что это полное рукопожатие происходит в пределах единственного I/O цикла.

Рисунок 1 - EPP Data_Write Цикл

Фазовые переходы цикла Записи Данных:

1. Программа выполняет I/O цикл записи в порт 4 (EPP Порт Данных)

2. Линия nWrite установлена, и данные находятся на выходе параллельного порта

3. Строб данных установлен, с этого момента на nDataStrobe (в оригинале nWAIT) низкий уровень

4. Порт ждет подтверждения от периферии (nWAIT сброшен)

5. Строб данных сброшен и цикл EPP окончен

6. ISA I/O цикл окончен

7. На nWAIT установлен низкий уровень, чтобы указать, что может начинаться следующий цикл

Одной из наиболее важных особенностей является то, что полная передача данных происходит в пределах одного ISA I/O цикла. Следовательно, используя EPP протокол для передачи данных, система может достигать скоростей передачи от 500КБ до 2Mбайт в секунду. Таким образом, периферийные устройства, подключенные к порту, могут работать с той же производительностью, что и вставная плата ISA. Способность получить этот уровень производительности от устройства, подключенного к параллельному порту - одна из главных особенностей EPP протокола. С рукопожатиями передача данных идет на скорости самого медленного из двух интерфейсов: адаптера ведущего или периферийного устройства. Это свойство "адаптивной скорости" прозрачно и для ведущего, и для периферии. Все режимы передачи стандарта 1284 осуществлены с рукопожатиями.

Рукопожатие основано на том, что каждый переход сигнала управления подтвержден противоположной стороной интерфейса. В вышеупомянутой диаграмме nDataStrobe может быть установлен, потому что nWAIT низок, nWAIT сбрасывается в ответ на установление nDataStrobe, nDataStrobe сбрасывается в ответ на сбрасываемый nWAIT, и наконец nWAIT устанавливается в ответ на сбрасываемый nDataStrobe. Таким образом, периферия может управлять установкой времени, требуемого для действия. Это выполнено следующим способом: время установки является временем от установления nDataStrobe до сброса nWAIT, периферия управляет этим временем. Преимущество рукопожатия также состоит в возможности формирования цикла передачи, независимого от длины кабеля. Режимы Тетрады, Байта, EPP и ECP используют рукопожатие.

Как уже отмечалось, до -1284 EPP устройства отклоняются от 1284 протокола. В начале цикла nDataStrobe или nAddrStrobe устанавливаются независимо от состояния сигнала nWAIT. Это означает, что периферия не могла бы удерживать начало цикла при сброшенном nWAIT. Это иногда упоминается как EPP 1.7, в отношении предложения Xircom версии 1.7. Эта версия осуществлена Intel в оригинальном контроллере I/O 82360. 1284 EPP совместимая периферия будет работать должным образом с ведущим адаптером версии EPP 1.7, но периферия EPP 1.7 не может работать должным образом с 1284 совместимым ведущим.

Рисунок 2 - пример Address_Read цикла.

Рисунок 2 - EPP Address_Read Цикл

Регистры Интерфейса EPP

Самое простое представление EPP с точки зрения программного обеспечения - расширение определения регистров для стандартного параллельного порта. Как показано ранее, SPP состоит из трех регистров, смещенных от базового адреса порта: порт Данных, порт Статуса и порт Управления. Обычно реализации EPP расширяют это определение, чтобы использовать порты, не определенные SPP. См. таблицу 2.

Таблица 2. Определения регистров EPP

Имя порта | Смещение | Режим | Чтение / запись | Описание
Порт данных SPP | +0 | SPP/EPP | Запись | Стандартный порт данных SPP. Без автостробирования.
Порт статуса SPP | +1 | SPP/EPP | Чтение | Чтение входов линий статуса интерфейса
Порт управления SPP | +2 | SPP/EPP | Запись | Устанавливает состояние выходных линий управления.
Порт адреса EPP | +3 | EPP | Чтение / запись | Генерация цикла чтения или записи адреса с рукопожатием
Порт данных EPP | +4 | EPP | Чтение / запись | Генерация цикла чтения или записи данных с рукопожатием
Не определено | От +5 до +7 | EPP | N/A | Используется по-разному в разных реализациях. Может использоваться для 16- и 32-разрядного ввода-вывода.

При выполнении одиночной инструкции записи по адресу "базовый_адрес + 4", контроллер EPP произведет необходимые сигналы рукопожатия и стробы, чтобы передать данные, использующие EPP Data_Write цикл. Инструкции ввода-вывода по базовым адресам, порты от 0 до 2, будут выполняться точно так же, как принято для стандартного параллельного порта. Это гарантирует совместимость со стандартными периферийными устройствами параллельного порта и принтерами. Циклы Адреса генерируются тогда, когда чтение или запись производятся по адресу "базовый_адрес + 3".

Порты от 5 до 7 используются по-разному различными реализациями аппаратных средств. Они могут использоваться для реализации 16- или 32-разрядного программного интерфейса, или как регистры конфигурации, или не использоваться вообще. Например, карта FarPoint Communications F/PortPlus имеет только интерфейс данных с 8 битами, но к ней можно обращаться, используя 32-разрядный ввод-вывод для EPP операций с данными. ISA контроллер перехватит 32-разрядный ввод-вывод и фактически произведет 4 быстрых 8-разрядных цикла ввода-вывода. Первый цикл будет адресован порту ввода-вывода, используя байт 0 (биты 0-7), второй цикл пойдет по адресу "порт + 1" для байта 1, тогда "порт + 2" для байта 2 и, наконец, "порт + 3" для байта 3. Эти дополнительные циклы производятся аппаратными средствами и прозрачны для программного обеспечения. Полное время для этих четырех циклов будет меньше, чем циклы для 4 независимых байтов. Например, в плате F/PortPlus (от FarPoint Communications) располагаются 4 порта ввода-вывода (со смещениями от 4 до 7) от внутреннего EPP регистра Данных. Это позволяет программному обеспечению использовать 32-разрядные операции ввода-вывода для EPP передачи данных. Циклы Адреса все еще ограничиваются 8-разрядным вводом-выводом.

Способность передавать данные к или от PC при помощи единственной инструкции позволяет параллельным портам в EPP режиме передавать данные на скоростях ISA шины. Быстрее, чем в программном цикле, блок данных может быть передан единственной REP_IO инструкцией. В зависимости от реализации порта ведущего адаптера и способности периферийного устройства, EPP порт может передавать данные со скоростями от 500КБ до почти 2M байт в секунду. Эта скорость передачи данных более чем достаточна для того, чтобы сетевые адаптеры, CD-ROM, стриммеры и другие периферийные устройства, работали при почти ISA уровне производительности.

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

Режим ECP

(Из файла ECPMODE.HTM)

Протокол Порта с Расширенными Возможностями, или 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. Таблица 1 описывает эти сигналы.

Таблица 1. Сигналы режима ECP

Сигнал SPP | Имя в режиме ECP | In/Out | Описание – Использование сигнала в режиме передачи данных ECP
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 | Используются для обмена данными между периферийным устройством и компьютером.

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

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

Рисунок 1. Цикл прямой передачи команды или данных 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, чтобы точно определить номер переданного байта, и затем запрашивать обратную передачу. Это добавляет много издержек при работе с периферией, которая требует много смешанных операций чтения и записи регистров или маленьких буферов.

Рисунок 2. Цикл обратной передачи команды или данных 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. Эта спецификация также определяет множество режимов, в которых адаптер может работать. В таблице 2 перечислены эти режимы.

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

Режим | Описание
000 | Режим SPP
001 | Двунаправленный режим (байтовый режим)
010 | Быстрый Centronics
011 | Режим параллельного порта ECP
100 | Режим параллельного порта EPP (замечание 1)
101 | Зарезервирован
110 | Тестовый режим
111 | Режим конфигурации

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

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

Таблица 3. Описание регистров 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 | все | Расширенный управляющий регистр

Эта бумага не будет пытаться описывать все функции регистров ECP. Для получения информации относительно использования регистров и определений битов, пожалуйста обратитесь к документу Microsoft или описанию контроллера ввода - вывода.

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

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

Переговоры

(Из файла negoti8.htm)

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

Для удовлетворения этой потребности была разработана концепция переговоров. Переговоры - это последовательность событий на параллельном интерфейсе, которая не влияет на старые устройства, но обеспечит идентификацию 1284 периферии. Они основаны на том, что старое устройство не будет отвечать на переговоры и поэтому ведущий останется в совместимом режиме, в то время как 1284 периферия ответит на последовательность, и тогда может быть установлен любой требуемый режим, поддерживаемый ведущим и периферией.

Во время переговоров ведущий помещает запрос на линиях данных и затем начинает последовательность переговоров. Запрос может быть предназначен для того, чтобы установить интерфейс в специфический режим или запросить идентификатор периферийного устройства. Идентификация устройства будет обсуждена позже. На рисунке 8 показана основная последовательность переговоров.

Байт Расширяемости используется в течение переговоров, чтобы попросить периферию войти в определенный режим передачи, или запросить у периферии идентификатор устройства. Идентификатор устройства может быть возвращен в любом обратном режиме канала, кроме EPP. В таблице 1 описан байт расширяемости и допустимые величины. XFlag используется периферией для подтверждения, что требуемый режим доступен. На XFlag будет всегда устанавливаться высокий уровень (№ 6 на рисунке 8) как положительное подтверждение для всех запросов, кроме обратной передачи в режиме Тетрады. Всем 1284-совместимым устройствам надо поддерживать режим Тетрады для обратной передачи. Бит запроса расширяемости связи используется, чтобы обеспечить механизм для будущего расширения и дополнения новых эксплуатационных режимов и особенностей.

Переговоры и идентификатор устройства - ключевые особенности будущей способности платформ PC определять конфигурацию системы и устанавливать подключенную к параллельному порту периферию согласно этому определение.

Таблица 1. Значения битов байта расширяемости.

Бит | Описание | Допустимые величины бита (8765 4321)
8 | Запрос расширяемости связи | 1000 0000
7 | Запрос режима EPP | 0100 0000
6 | Запрос режима ECP с RLE | 0011 0000
5 | Запрос режима ECP без RLE | 0001 0000
4 | Зарезервирован | 0000 1000
3 | Запрос идентификатора устройства | Возвращает данные используемого режима: Режим тетрады 0000 0100 Режим байта 0000 0101 Режим ECP без RLE 0001 0100 Режим ECP с RLE 0011 0100
2 | Зарезервирован | 0000 0010
1 | Режим байта | 0000 0001
Нет | Режим тетрады | 0000 0000

Рисунок 1. Основная последовательность переговоров

Фазовые переходы переговоров 1284

1. Ведущий помещает требуемый байт расширяемости на линии данных

2. Затем ведущий устанавливает на nSelectIn высокий уровень и на nAutoFeed низкий, сообщая о последовательности переговоров.

3. 1284 периферия ответит, установив на nAck низкий уровень, а на nError, PE и Select - высокий. Несовместимая с 1284 периферия не будет отвечать.

4. Ведущий устанавливает на nStrobe низкий уровень. Это используется для стробирования байта Расширяемости в периферии.

5. Тогда ведущий устанавливает на nStrobe и nAutoFeed высокий уровень, сообщая периферии, что она распознана как 1284 устройство.

6. Периферия отвечает, устанавливая на PE и nError низкий уровень, если периферия может передавать данные в обратном направлении, и на Select высокий уровень, если требуемый режим доступен, или на Select низкий уровень, если требуемый режим не доступен.

7. Теперь периферия устанавливает на nAck высокий уровень, сообщая, что последовательность переговоров закончена, и сигнальные линии находятся в состоянии, совместимом с запрошенным режимом.

Монтаж Кабелей по стандарту IEEE 1284

(Из файла 1284CABL.HTM)

Чтобы гарантировать высокую производительность при длине кабеля 10 м и способность к взаимодействию между различными платформами и периферийными устройствами, 1284 стандарт определяет характеристики для монтажа кабеля.

Вопреки популярной вере, не имеется никакой такой вещи, как "стандартный" параллельный кабель принтера. Это обычно относится к кабелю с вилкой DB25 на одном конце и 36-выводным защёлкивающимся соединителем на другом. Внутри кабели могут иметь от 18 до 25 проводников, от 1 до 8 проводов земли, они могут иметь экран из фольги и-или оплётки и, возможно, провод утечки. С таким разнообразием типов монтажа нет никакой возможности управлять импедансом кабеля, взаимными влияниями, емкостью и производительностью. Это прекрасно для 10КБ в секунду на 6 футах, но не будет работать надежно для 2M байт в секунду при 30 футах длины кабеля.

Некоторые параметры монтажа для кабелей по стандарту 1284:

1. Все сигналы передаются витыми парами и возвращаются по земле.

2.Каждый сигнал и возвращающая земля имеют неуравновешенный характеристический импеданс 62± 6 ома в полосе частот от 4 до 16 MHz

3. Взаимное влияние между проводами должо быть не более 10 %

4. Кабель должен иметь минимум 85 % оптический охват оплёткой.

5.Экран кабеля должен быть связан с соединителем при помощи 360-градусного концентрического метода. Связь косичкой неприемлема.

6.Собранные по стандарту кабели должны быть маркированы: "IEEE Std 1284-1994 Compliant"

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

Ниже приводится список возможных типов монтажа:

AMAM

Type A Male to Type A Male

AMAF

Type A Male to Type A Female

AB

Type A Male to Type B Plug

AC

Type A Male to Type C Plug

BC

Type B Plug to Type C Plug

CC

Type C Plug to Type C Plug

Длина кабеля может быть 10, 20 или 30 футов у некоторых изготовителей. Так как этот кабель имеет хорошую производительность, не требуется ограничиваться 6 футами.

Соединители по IEEE1284

(Из файла 1284conn.htm)

1284 стандарт идет вне описания новых режимов передачи данных и фактически определяет механический интерфейс и электрические свойства совместимого параллельного порта. Многие из проблем, связанных с подключаемыми к параллельному порту устройствами, являются результатом того, что не имелось никакого стандарта электрического интерфейса для параллельного порта. Розетка DB25 стала стандартом для PC или соединителя ведущего устройства, но имелись много различных реализаций драйверов, резисторов, конденсаторов, и т.д. для электрического интерфейса.

1284 комитет чувствовал, что в первую очередь нужно определить следующие цели:

1. Гарантировать электрическую и механическую совместимость среди всех 1284 совместимых устройств.

2. Гарантировать, что 1284 интерфейс работал бы с существующими перифериями параллельного порта и адаптерами.

3. Гарантировать передачу и целостность данных на самых высоким скоростях

4. Увеличить расстояние до 10M (30 футов)

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

Соединители 1284

Стандарт различает три типа соединителей для 1284 интерфейса.

1284 Тип A: 25-контактный DB25

1284 Тип B: 36 контактный .085 centerline Champ connector with bale locks

1284 Тип C: 36-контактный .050 centerline mini connector with clip latches

На рисунке 1 показано, на что похожи эти соединители.

Рисунок 1. Соединители 1284 интерфейса ввода-вывода.

Для новых проектов рекомендуется соединитель типа C. Он меньше, чем предыдущие соединители, имеет простой в использовании замок с зажимами для удержания кабеля и обеспечивает самый легкий монтаж кабеля с оптимальными электрическими свойствами. Кроме того, кабель, собранный с этим соединителем, предусматривает еще два сигнала. Эти сигналы - Peripheral Logic High и Host Logic High. Они могут использоваться, чтобы определить, включено ли устройство на другом конце кабеля. Это даёт некоторую степень интеллектуального управления для 1284 интерфейсов.

Электрический интерфейс IEEE1284

(Из файла 1284elec.htm)

Сначала параллельный порт не имел определенной электрической спецификации, которая идентифицировала бы драйвер, приемник, окончания линий и требования к емкости, чтобы гарантировать совместимость между любыми устройствами. Адаптеры ведущих устройств и периферии выпускались с любыми величинами притягивающих резисторов на линиях управления, открытым коллектором или обычными выходами для линий данных и управления, и, что хуже всего, конденсаторами до 10 000 pF на линиях стробирования и данных. Это делало невозможным создание нового протокола интерфейса без явного определения требуемых электрических параметров, чтобы гарантировать работоспособность.

1284 стандарт определяет два уровня совместимости интерфейса, Уровень 1 и Уровень 2. Интерфейс 1 Уровня определен для изделий, которые не должны работать на высокой скорости, в продвинутых режимах, но где есть потребность воспользоваться способностью канала этого стандарта к обратной передаче. Интерфейс уровня 2 предназначен для устройств которые будут работать в продвинутых режимах, с длинными кабелями и на более высоких скоростях передачи данных. Это обсуждение будет иметь дело прежде всего с интерфейсами уровня 2. Пожалуйста, обратитесь к стандарту для получения полных требований для 1 или 2 Уровня

Требования для драйверов и приемников уровня 2 определены в интерфейсе соединителя. Требования к драйверу:

1.Выходное напряжение высокого уровня не должно превышать +5.5V.

2.Выходное напряжение низкого уровня должно быть не меньше, чем -0.5V.

3.Выходное напряжение высокого уровня в установившемся состоянии должно быть по крайней мере +2.4V при вытекающем токе 14mA.

4.Выходное напряжение низкого уровня не должно превышать +0.4V при втекающем токе 14mA.

5.Импеданс выхода драйвера (Ro), измеренный в соединителе, должен быть 50± 5 Ом при напряжении 1/2(Voh минус Vol).

Скорость нарастания выходного напряжения драйвера должна быть 0.05-0.40 V/nS

Подобно требованиям к драйверу, в интерфейсе соединителя определены требования к приемнику. Требования к приемнику:

1. Приемник должен противостоять пиковым переходным процессам напряжения на входе между -2.0V и +7.0V без повреждения или ошибок.

2.Входной порог высокого уровня для приёмника не должен превышать 2.0V

3.Входной порог низкого уровня для приёмника должен быть по крайней мере 0. 8V.

4. Приемник должен обеспечивать входной гистерезис по крайней мере 0. 2V, но не больше, чем 1. 2V.

5.Входной ток высокого уровня для приемника не должен превышать 20мкA при +2. 0V.

6.Входной ток низкого уровня для приемника не должен превышать 20мкA при +0. 8V.

7.Паразитная емкость не должна превышать 50pF.

На рис.1 показано рекомендующееся завершение линии для пары драйвер/приемник. Ro представляет импеданс выхода в соединителе. Предполагается, что этот импеданс соответствует импедансу кабеля, чтобы минимизировать шум, вызванный несогласованными импедансами. В зависимости от типа используемого драйвера, может требоваться ряд резисторов Rs, чтобы получить правильный импеданс.

На рис.2 показано рекомендуемое завершение линии для приёмно-передающих пар Уровня 2, типа линий данных.

Имеются изделия, представляемые компаниями типа Texas Instruments и National, которые обеспечивают, объединенные решения для 1284 интерфейса Уровня 2. Они включают активные драйверы, и приемники, также как пересестра потягивают сети.

ОБРАТИТЕ ВНИМАНИЕ: Когда Microsoft впервые представил ECP, было рекомендовано требование завершения, которое не согласовывалось с 1284 спецификацией. Оно включало AC терминатор для каждой из линий. От этого предложения с тех пор отказались, и текущая рекомендация предлагает использовать интерфейс, определенный в IEEE 1284 спецификации.