1.2. Расширения параллельного порта
Недостатки стандартного порта частично устраняли новые типы портов, появившиеся в компьютерах PS/2.
Двунаправленный порт 1 ( Туре 1 parallel port ) — интерфейс, введенный в PS/2. Такой порт кроме стандартного режима может работать в режиме ввода или двунаправленном режиме. Протокол обмена формируется программно, а для указания направления передачи в регистр управления порта введен специальный бит CR.5
: 0 — буфер данных работает на вывод, 1 — на ввод. Не путайте этот порт, называемый также enhanced bi-directional , с EPP. Данный тип порта «прижился» и в обычных компьютерах, в CMOS Setup он может называться PS/2 или Bi-Di.
Порт с прямым доступом к памяти ( Туре 3 DMA parallel port ) применялся в PS/2 моделей 57, 90, 95. Был введен для повышения пропускной способности и разгрузки процессора при выводе на принтер. Программе, работающей с портом, требовалось только задать в памяти блок данных, подлежащих выводу, а затем вывод по протоколу Centronics производился без участия процессора.
Позже появились другие адаптеры LPT-портов, реализующие протокол обмена Centronics аппаратно, — Fast Centronics . Некоторые из них использовали FIFO-буфер данных — Parallel Port FIFO Mode . He будучи стандартизованными, такие порты разных производителей требовали наличия собственных специальных драйверов. Программы, использующие прямое управление регистрами стандартных портов, не могли задействовать их дополнительные возможности. Такие порты часто входили в состав мультикарт VLB. Существуют их варианты с шиной ISA, а также встроенные в системную плату.
Стандарт на параллельный интерфейс IEEE 1284 , принятый в 1994 году, описывает порты SPP, EPP и ECP . Стандарт определяет 5 режимов обмена данными, метод согласования режима, физический и электрический интерфейсы. Согласно IEEE 1284, возможны следующие режимы обмена данными через параллельный порт:
♦ Режим совместимости ( Compatibility Mode ) — однонаправленный (вывод) по протоколу Centronics. Этот режим соответствует SPP-порту.
♦ Полубайтный режим ( Nibble Mode ) — ввод байта в два цикла (по 4 бита), используя для приема линии состояния. Этот режим обмена подходит для любых адаптеров, поскольку задействует только возможности стандартного порта.
♦ Байтный режим ( Byte Mode ) — ввод байта целиком, используя для приема линии данных. Этот режим работает только на портах, допускающих чтение выходных данных ( Bi-Directional или PS/2 Туре 1 , см. выше).
♦ Режим EPP ( EPP Mode ) — двунаправленный обмен данными (EPP означает Enhanced Parallel Port). Управляющие сигналы интерфейса генерируются аппаратно во время цикла обращения к порту. Эффективен при работе с устройствами внешней памяти и адаптерами локальных сетей.
♦ Режим ECP ( ECP Mode ) — двунаправленный обмен данными с возможностью аппаратного сжатия данных по методу RLE (Run Length Encoding) и использования FIFO-буферов и DMA (ECP означает Extended Capability Port). Управляющие сигналы интерфейса генерируются аппаратно. Эффективен для принтеров и сканеров (здесь может использоваться сжатие) и различных устройств блочного обмена.
Стандарт определяет способ, по которому ПО может определить режим, доступный и хосту (PC), и периферийному устройству (или присоединенному второму компьютеру). Режимы нестандартных портов, реализующих протокол обмена Centronics аппаратно ( Fast Centronics, Parallel Port FIFO Mode ), могут и не являться режимами IEEE 1284, несмотря на наличие в них черт EPP и ECP.
В компьютерах с LPT-портом на системной плате режим — SPP, EPP, ECP или их комбинация — задается в BIOS Setup. Режим совместимости полностью соответствует SPP-порту. Остальные режимы подробно рассмотрены ниже.
При описании режимов обмена фигурируют следующие понятия:
♦ хост — компьютер, обладающий параллельным портом;
♦ ПУ — периферийное устройство, подключаемое к этому порту;
♦ Ptr — в названиях сигналов обозначает передающее ПУ;
♦ прямой канал — канал вывода данных от хоста в ПУ;
♦ обратный канал — канал ввода данных в хост из ПУ.
1.3.1. Полубайтный режим ввода — Nibble Mode
Полубайтный режим предназначен для двунаправленного обмена и может работать на всех стандартных портах. Порты имеют 5 линий ввода состояния, используя которые ПУ может посылать в хост байт тетрадами (nibble — полубайт, 4 бита) за два приема. Сигнал Ack#
, вызывающий прерывание, которое может использоваться в данном режиме, соответствует биту 6 регистра состояния, что усложняет программные манипуляции с битами при сборке байта. Сигналы порта приведены в табл. 1.2, временные диаграммы — на рис. 1.1.
Читать дальше