Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






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




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

Прием данных в байтном режиме

 

Сигналы LPT порта в полубайтном режиме ввода
Контакт Сигнал SPP Имя в байтном режиме I/O Описание
  Strobe HostClk O Импульс (низкого уровня) подтверждает прием байта в конце каждого цикла
  AutoFeed HostClk O Сигнал квитирования. Низкий уровень означает готовность хоста принять байт; высокий уровень устанавливается по приему байта
  Selectln 1284Active I Высокий уровень указывает на обмен в режиме ШЕЕ 1284 (в режиме SPP уровень низкий)
  init init O Не используется; установлен высокий уровень
  Ack PtrClk I Устанавливается в низкий уровень для индикации действительности данных на линиях Data [0:7]. Низкий уровень устанавливается в ответ на сигнал HostBusy
  Busy PtrBusy I Состояние занятости прямого канала
  PE AckDataReq I Устанавливается ПУ для указания на наличие обратного канала передачи
  Select Xflag I Флаг расширяемости
  Error DataAvail I Устанавливается ПУ для указания на наличие обратного канала передачи
2-9 Data [0:7] Data [0:7] I/O Двунаправленный (прямой и обратный) канал данных

Фазы приема байта данных:

  1. Хост сигнализирует о готовности приема данных установкой низкого уровня на линии HostBusy.
  2. ПУ в ответ помещает байт данных на линии Data [0:7].
  3. ПУ сигнализирует о действительности байта установкой низкого уровня на линии PtrClk.
  4. Хост устанавливает высокий уровень на линии HostBusy, указывая на занятость приемом и обработкой байта.
  5. ПУ отвечает установкой высокого уровня на линии PtrClk.
  6. Хост подтверждает прием байта импульсом HostClk.
  7. Шаги 1-6 повторяются для каждого следующего байта.

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

Режим ЕРР

Протокол ЕРР (Enhanced Parallel Port — улучшенный параллельный порт) предназначен для повышения производительности обмена по параллельному порту.

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

  • запись данных;
  • чтение данных;
  • запись адреса;
  • чтение адреса.

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

Сигналы LPT порта в режиме ввода/вывода EPP
Контакт Сигнал SPP Имя в EPP I/O Описание
  Strobe Write O Низкий уровень — цикл записи, высокий — цикл чтения
  AutoLF DataStb O Строб данных. Низкий уровень устанавливается в циклах передачи данных
  Selectln AddrStb O Строб адреса Низкий уровень устанавливается в адресных циклах
  init Reset O Сброс ПУ (низким уровнем)
  Ack INTR I Прерывание от ПУ
  Busy Wait I Сигнал квитирования Низкий уровень разрешает начало цикла (установку строба в низкий уровень), переход в высокий — разрешает завершение цикла (снятие строба)
  PaperEnd AckDataReq I Используется по усмотрению разработчика периферии
  Select Xflag I Используется по усмотрению разработчика периферии
  Error DataAvail I Используется по усмотрению разработчика периферии
2-9 Data [0:7] Data [0:7] I/O Двунаправленная шина адреса/данных

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

Регистры EPP порта
Имя регистра Смещение Режим R/W Описание
SPP Data Port +0 SPP/EPP W Регистр данных SPP
SPP Status Port +1 SPP/EPP R Регистр состояния SPP
SPP Control Port +2 SPP/EPP W Регистр управления SPP
EPP Address Port +4 EPP R/W Регистр данных ЕРР. Чтение (запись) генерирует связанный цикл чтения (записи) данных ЕРР
Not Defined Ack INTR I Прерывание от ПУ

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

Цикл записи данных ЕРР

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

  1. Программа выполняет цикл вывода (IOWR) в порт 4 (ЕРР Data Port).
  2. Адаптер устанавливает сигнал Write (низкий уровень), и данные помещаются на выходную шину LPT-порта.
  3. При низком уровне Wait устанавливается строб данных.
  4. Порт ждет подтверждения от ПУ (перевода Wait в высокий уровень).
  5. Снимается строб данных — внешний ЕРР-цикл завершается.
  6. Завершается процессорный цикл вывода.
  7. ПУ устанавливает низкий уровень Wait, указывая на возможность начала следующего цикла.

Цикл чтения данных отличается только применением другого стробирующего сигнала.

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

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

Протокол блокированного квитирования (interlocked handshakes) позволяет автоматически настраиваться на скорость обмена, доступную и хосту, и ПУ. ПУ может регулировать длительность всех фаз обмена с помощью всего лишь одного сигнала Wait. Протокол автоматически подстраивается под длину кабеля — вносимые задержки приведут только к удлинению цикла. Поскольку кабели, соответствующие IEEE 1284, имеют одинаковые волновые свойства для разных линий, нарушения передачи, связанного с «состязаниями» сигналов, происходить не должно. При подключении сетевых адаптеров или внешних дисков к ЕРР-порту можно наблюдать непривычное явление: снижение производительности по мере удлинения интерфейсного кабеля.

Естественно, ПУ не должно «подвешивать» процессор на шинном цикле обмена Это гарантирует механизм тайм-аутов PC, который принудительно завершает любой цикл обмена, длящийся более 15 мкс. В ряде реализаций ЕРР за тайм-аутом интерфейса следит сам адаптер — если ПУ не отвечает в течение определенного времени (5 мкс), цикл прекращается и в дополнительном (не стандартизованном) регистре состояния адаптера фиксируется ошибка.

Устройства с интерфейсом ЕРР, разработанные до принятия IEEE 1284, отличаются началом цикла: строб DataStb или AddrStb устанавливается независимо от состояния WAIT. Это означает, что ПУ не может задержать начало следующего цикла (хотя может растянуть его на требуемое время).

Адресные циклы ЕРР всегда выполняются только в однобайтном режиме.

Важной чертой ЕРР является то, что обращение процессора к ПУ осуществляется в реальном времени — нет буферизации. Драйвер способен отслеживать состояние и подавать команды в точно известные моменты времени. Циклы чтения и записи могут чередоваться в произвольном порядке или идти блоками.

Режим ЕСР

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

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

  • циклы записи и чтения данных;
  • командные циклы записи и чтения.

Командные циклы подразделяются на два типа: передачу канальных адресов и передачу счетчика 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, если принтер установит сигнал занятости, канал будет занят данными, пока принтер их не примет. В режиме ЕСР программный драйвер просто адресуется к другому логическому каналу того же порта.

Сигналы LPT порта в режиме ввода/вывода ECP
Контакт Сигнал SPP Имя в ЕСР I/O Описание
  Strobe HostClk О Используется в паре с PeriphAck для передачи в прямом направлении (вывод)
  AutoLF HostAck O Указывает тип цикла (команда/данные) при передаче в прямом направлении. Используется в паре с PeriphClk для передачи в обратном направлении
  Selectln 1284Active O Высокий уровень указывает на обмен в режиме IEEE 1284 (в режиме SPP уровень низкий)
  Init ReverseRequest O Низкий уровень переключает канал на передачу в обратном направлении
  Ack PeriphClk I Используется в паре с HostAck для передачи в обратном направлении
  Busy PeriphAck I Используется в паре с HostClk для передачи в обратном направлении. Иницирует тип команда/данные при передаче в обратном направлении
  PaperEnd AckReverse I Переводится в низкий уровень как подтверждение сигналу ReverseRequest
  Select Xflag I Флаг расширяемости
  Error PeriphRequest I Устанавливается ПУ для указания на доступность (наличие) обратного канала передачи
2-9 Data [0:7] Data [0:7] I/O Двунаправленный канал данных

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

 

Прямая передача в режиме ЕСР
  1. Хост помещает данные на шину канала и устанавливает признак цикла данных (высокий уровень) или команды (низкий уровень) на линии HostAck.
  2. Хост устанавливает низкий уровень на линии HostClk, указывая на действительность данных.
  3. ПУ отвечает установкой высокого уровня на линии PeriphAck.
  4. Хост устанавливает высокий уровень линии HostClk, и этот перепад может использоваться для фиксации данных в ПУ.
  5. ПУ устанавливает низкий уровень на линии PeriphAck для указания на готовность к приему следующего байта.

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

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

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

Обратная передача в режиме ЕСР
  1. Хост запрашивает изменение направления канала, ycтанавливая низкий уровень на линии ReverseRequest.
  2. ПУ разрешает смену направления установкой низкого уровня на линии AckReverse.
  3. ПУ помещает данные на шину канала и устанавливает признак цикла данных (высокий уровень) или команды (низкий уровень) на линии PeriphAck.
  4. ПУ устанавливает низкий уровень на линии PeriphClk, указывая на действительность данных.
  5. Хост отвечает установкой высокого уровня на линии HostAck.
  6. ПУ устанавливает высокий уровень линии PeriphClk; этот перепад может использоваться для фиксации данных хостом.
  7. Хост устанавливает низкий уровень на линии HostAck для указания на готовность к приему следующего байта.

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

Спецификакция IEEE 1284 определяет несколько режимов функционирования порта. Они задаются полем Mode регистра ECR (биты [7:5]).

В режиме 000 (SPP mode) порт работает как стандартный одно-направленный программно-управляемый SPP.

В режиме 001 (Bi-directional mode) порт работает как двунаправленный порт PS/2 типа 1. От режима 000 отличается возможностью реверса канала данных по биту CR.5.

Режим 010 (Fast Centronics) предназначен только для высокопроизводительного вывода через FIFO-буфер с использованием DMA. Сигналы квитирования по протоколу Centronics вырабатываются аппаратно. Сигнал запроса прерывания вырабатывается по состоянию FIFO-буфера, но не по сигналу Аск (запрос одиночного байта «не интересует» драйвер быстрого блочного вывода).

Режим 011 (ECP Parallel Port mode) является собственно режимом ЕСР, описанным ранее. Поток данных и команд, передаваемых в ПУ, помещается в FIFO-буфер через регистры ECPDFIFO и ECPAFIFO соответственно. Из FIFO они выводятся с соответствующим признаком цикла (состояние линии HostAck). Принимаемый поток данных от ПУ извлекается из FIFO-буфера через регистр ECPDFIFO. Получение адреса в командном цикле от ПУ не предусматривается. Обмен с регистром ECPDFIFO может производиться и по каналу DMA.

Компрессия по методу RLE при передаче выполняется программно. Для передачи подряд более двух одинаковых байт данных в регистр ECPAFIFO записывается байт, у которого младшие 7 бит содержат счетчик RLC (значение RLC=127 соответствует 128 повторам), а старший бит нулевой. После этого в ECPDFIFO записывается сам байт. Отсюда очевидно, что вывод данных с одновременным использованием компрессии и DMA невозможен. Принимая эту пару байт (командный байт и байт данных), ПУ осуществляет декомпрессию. При приеме потока от ПУ адаптер ЕСР декомпрессию осуществляет аппаратно и в FIFO-буфер помещает уже декомпрессированные данные.

Режим 100 (ЕРР) — один из способов включения режима ЕРР.

Режим 110 (Test Mode) предназначен для тестирования взаимодействия FIFO и прерываний. Данные могут передаваться в/из регистра TFIFO с помощью DMA или программным способом. На внешний интерфейс обмен не воздействует. Адаптер отрабатывает операции вхолостую на максимальной скорости интерфейса (как будто сигналы квитирования приходят без задержек). Адаптер следит за состоянием буфера и по мере необходимости вырабатывает сигналы запроса прерывания. Таким образом программа может определить максимальную пропускную способность канала.

Режим 111 (Configuration mode) предназначен для доступа к конфигурационным регистрам. Выделение режима защищает адаптер и протокол от некорректных изменений конфигурации в процессе обмена.






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных