- •Режимы работы
- •Режим совместимости (Compatibility Mode)
- •Полубайтный режим ввода (Nibble mode)
- •Режим усовершенствованного параллельного порта (epp)
- •Режим порта с расширенными возможностями (ecp)
- •Контактный разхем для подключения параллельного интерфейса пк и пк-совместимого интерфейса принтера
- •Согласование режимов
- •Последовательность согласования
- •Электрические параметры согласования
Режим усовершенствованного параллельного порта (epp)
EPP протокол обеспечивает четыре типа циклов передачи данных:
1. Цикл записи данных.
2. Цикл чтения данных.
3. Цикл записи адреса.
4. Цикл чтения адреса.
Циклы Данных предназначены для передачи данных между ведущим и периферией. Циклы Адреса могут использоваться для передачи адреса, канала, или команды и управляющей информации. Эти циклы могут рассматриваться просто как два различных цикла данных. Разработчик может использовать и интерпретировать информацию адреса / данных любым способом, который имеет смысл для конкретного проекта. Таблица 2 описывает EPP сигналы и связанные с ними SPP сигналы.
Таблица 2 — Сигналы EPP
Сигнал SPP |
Название сигнала EPP |
In / Out |
Описание сигнала EPP |
nSTROBE |
nWRITE |
Out |
Активный низкий. Указывает на действие записи. Высокий в цикле чтения. |
nAUTOFEED |
nDATASTB |
Out |
Активный низкий. Указывает на то, что операция Data_Read или Data_Write находится в процессе выполнения. |
nSELECTIN |
nADDRSTB |
Out |
Активный низкий. Указывает, что операция Address_Read или Address_Write находится в процессе выполнения. |
nINIT |
nRESET |
Out |
Активный низкий. Сброс Периферии. |
nACK |
nINTR |
In |
Периферийное прерывание. Используется для выдачи прерывания ведущему. |
BUSY |
nWAIT |
In |
Сигнал квитирования. Низкий уровень указывает, что надо начать цикл (установить строб), высокий указывает, что надо закончить цикл (сбросить строб). |
D[8:1] |
AD[8:1] |
Двунаправ-ленный |
Двунаправленные линии адреса / данных. |
PE |
Определяется пользователем |
In |
Может Использоваться по-разному каждой периферией |
SELECT |
Определяется пользователем |
In |
Может Использоваться по-разному каждой периферией |
nERROR |
Определяется пользователем |
In |
Может Использоваться по-разному каждой периферией |
Рисунок 3 — пример Data_Write цикла. CPU сигнал nIOW показан только для того, чтобы подчеркнуть, что это полное квитирование происходит в пределах единственного I/O цикла.
Рисунок 3 — 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 используют квитирование.
Рисунок 3 — пример Address_Read цикла.
Рисунок 3 — EPP Address_Read Цикл
Регистры Интерфейса EPP
Самое простое представление EPP с точки зрения программного обеспечения — расширение определения регистров для стандартного параллельного порта. Как показано ранее, SPP состоит из трех регистров, смещенных от базового адреса порта: порт Данных, порт Статуса и порт Управления. Обычно реализации EPP расширяют это определение, чтобы использовать порты, не определенные SPP. См. таблицу 3.
Таблица 3. Определения регистров 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 протокол и его текущие реализации обеспечивают тесную связь между периферийным драйвером и периферией. Это означает, что программа — драйвер всегда способна определять состояние связи с периферией и управлять им в любое время. Всегда можно смешивать операции чтения и записи и блочную передачу. Этот тип связи идеален для многих ориентируемых регистром или управляемых в реальном масштабе времени периферийных устройств типа сетевых адаптеров, систем сбора данных, портативных жёстких дисков и других устройств.