IEEE1284 (SPP, ECP, EPP)

Материал из Wiki.

Содержание

Принтерный порт вчера и позавчера

Параллельный порт - неотъемлемая черта персонального компьютера, присущая как самым первым реализациям IBM/PC, так и современным решениям. Отсутствие параллельного порта снижает функциональную привлекательность системы и однозначно воспринимается как ущербность, даже если подключение соответствующих устройств на повестке дня не стоит.

Чем притягательны параллельные интерфейсы? Очевидно, не только тем, что передача каждого бита выполняется одновременно по отдельным сигнальным линиям. Сильная сторона параллельного интерфейса - в способе управления, когда передаваемый поток информации контролируется при помощи управляющих сигналов. Такая архитектура позволила создать широкий спектр устройств разнообразного назначения с унифицированным аппаратным интерфейсом и уникальным программным обеспечением. Основоположниками параллельной обработки данных были устройства построчной печати, а попросту - принтеры. По этой причине название Line Printer (LPT) надолго определило назначение интерфейса, а принтерный порт стал синонимом существующего названия.

Другое название для параллельного порта, как это часто случается, дал один из разработчиков разъема - корпорация Centronics Data Computer. Собственно, сам разъем разработан компанией Amphenol Interconnect Products, а Centronics Data Computer, изменив назначение сигналов, предложила его широкому кругу пользователей. Сейчас, когда существуют самые разнообразные устройства для подключения к порту и применяется широкий спектр разнообразных разъемов, названия Centronics и LPT прочно укоренились в терминологии специалистов.

С момента появления первых персональных компьютеров в пространстве портов ввода-вывода были выделены адреса для обслуживания параллельных портов, а каждому из них присваивались мнемонические имена. Как правило, все ограничения связанные с использованием портов, - следствие особенностей системных BIOS. Но в чем разработчики BIOS были единодушны, так это в том, что система должна поддерживать не менее трех портов. Их поиск и инициализация заключается в сканировании пространства от старших адресов к младшим. Неудивительно поэтому, что при наличии порта с адресом 03BCh именно ему будет присвоено мнемоническое имя LPT1.

Вместе с тем неправильно считать, что только тремя портами ограничены возможности ПК. Хорошей иллюстрацией может послужить плата расширения KW-508E от Kouwell Electronic, где доступны порты с LPT1 по LPT6. Один из аспектов, связанных с работой параллельных портов, - использование прерываний. Не секрет, что обслуживание подавляющего большинства печатающих устройств выполняется через стандартные регистры принтерного порта - регистры данных, статуса и команд. Это позволяет выполнить прием и передачу данных без использования прерываний работы центрального процессора. Но уж слишком прочно укоренился стереотип, связывающий воедино порт и IRQ. Обратившись к руководству по эксплуатации персонального компьютера, пользователь наверняка встретит таблицу, в которой с LPT1 будет связан IRQ7, а для порта LPT2 назначается IRQ5. Подчеркнем, что использование IRQ диктуется особенностями подключенных периферийных устройств. Если по каким-либо причинам нежелательно постоянно анализировать готовность принтера, работающего в фоновом режиме, может потребоваться обслуживание параллельного порта с помощью прерываний. Но, как было сказано выше, в большинстве случаев внешнее устройство не требует запрос на прерывание.


Режимы передачи данных. История

Чтобы проследить эволюцию параллельного интерфейса, полезно обратиться к его истории. В средине 60-х годов главным идеологом передачи данных к принтеру была корпорация Centronics Data Computer. Как и предложенный корпорацией разъем, так и способ подсоединения периферийных устройств надолго стал фактическим стандартом в этой области. Совместимость со "стандартом" Centronics подразумевала передачу данных параллельным потоком по восьмибитной схеме и только в одном направлении.

Следует отметить, что слово "стандарт" не случайно взято в кавычки. Дело в том, что интерфейс тех лет состоял также из некоторых других управляющих сигналов, число которых могло изменяться в зависимости от той или иной модели принтера. По этой же причине все производители оборудования параллельной передачи данных могли себе позволить модифицировать сигналы управления по своему усмотрению. Вот почему, несмотря на то, что слово Centronics получило широкое распространение, не существует и не могло существовать одноименного стандарта. Но нельзя не отметить позитивный эффект в виде появление понятия совместимости.

Большинство вопросов, связанных с пониманием работы параллельного порта, освещено в документе IEEE1284 "Стандартный метод передачи данных для периферийных устройств, подключенных к персональному компьютеру, с использованием двунаправленного параллельного интерфейса". Совместимость с Centronics означает, что совпадают все основные линии интерфейса, а именно:

  • восемь линий для передачи данных от системы к принтеру;
  • пять статусных линий для передачи информации от принтера системе;
  • четыре линии управления для передачи управляющей информации от системы принтеру.

С появлением в 1981 году первых персональных компьютеров IBM/PC смысл совместимости с интерфейсом Centronics значительно расширился, и появилось понятие PC-совместимого параллельного интерфейса. Подключение принтеров к PC хотя и выполнялось с соблюдением "стандарта" Centronics, но претерпело значительные изменения, в основном по инициативе производителей печатающей техники.

Во-первых, подключение печатающих устройств к хост-системе начало выполняться с помощью стандартного 25-контактного разъема. Такое решение не случайно - на плате принтерного порта был установлен монохромный видео адаптер, и использование стандартного 36-контактного разъема Centronics было бы затруднено.

Во-вторых, количество линий управления, поступающих от системы к принтеру, было дополнено двумя очень важными - Select In и Autofeed. Назначение трех статусных линий, по которым поступала информация от принтера в систему, было переопределено.

И в третьих, изменились временные характеристики сигнала Acknowledge. Его активная фаза была сдвинута в активную фазу сигнала Busy, и переход обеих сигналов в пассивное состояние выполнялся одновременно. Но в виду того, что PC интерфейс оставался совместимым с Centronics, соотношение сигналов Acknowledge и Busy игнорировалось, а передача данных выполнялась только в соответствии с состоянием сигнала Acknowledge.


Режимы передачи данных. Стандарт

Рассмотрим, как выполняется взаимодействие хост-сиcтемы и устройства, подключенного к ней по параллельному интерфейсу. Начальное состояние интерфейса таково, что обмен возможен только в одном направлении. Совместимость устройств определяется именно поддержкой данного режима, который получил название Compatibility.

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

  • Режим SPP (Standard Printer Port);
  • Режим ECP (Extended Capabilities Port);
  • Режим EPP (Enhanced Parallel Port).

Пытливый взгляд читателя может заметить, в списке нет уже упомянутого режима Compatibility. Из это-го не следует, что его нет в самом стандарте. Просто реализация стандарта настолько аппаратно зависима, что выбор перечисленных выше коммуникационных режимов определяется элементной базой и BIOS материнской платы. По этой причине пользователь в CMOS Setup системного BIOS обнаружит только три режима либо их комбинацию. Выбор одной установки будет регламентировать работу параллельного порта до того момента, пока не будет назначен другой режим.

Как ни странно, но в упомянутом выше документе нет ни одного упоминания о режиме SPP. На самом деле производители BIOS для материнских плат под аббревиатурой SPP понимают группу режимов, регламентированных стандартом. В это число, кроме однонаправленного режима Compatibility, входит также двунаправленный режим Nibble, обеспечивающий реверсивную передачу данных по 4-битной схеме. Остановимся подробнее на каждом из перечисленных режимов.


Режим Compatibility

Как сказано выше, этот режим предназначен для передачи данных в одном направлении от системного контроллера параллельного порта к периферийному устройству. Для управления принтером контроллер задействует также четыре дополнительных линии Strobe, Autofeed, Initialize, Select In, по которым передаются управляющие команды.

В соответствии со стандартом, режим Compatibility обеспечивает совместимость всех устройств, работающих с параллельным интерфейсом. Под этим понимается то, что именно с этого режима начинаются все фазы инициализации старших режимов. Кроме того, возврат к режиму Compatibility происходит как в случае невозможности проинициализировать "старший" режим, так и при возникновении ошибок двунаправленной передачи данных.

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

Значение обратного канала трудно переоценить. Именно его наличие позволяет перевести работу параллельного порта из режима Compatibility в двунаправленный режим передачи данных - Nibble.


Режим Nibble

Этот режим позволяет на программно-аппаратном уровне реализовать обратный (реверсивный) канал передачи данных от периферийного устройства к хост-контроллеру через статусные линии параллельного порта. Обратная передача данных выполняется четырехбитными посылками, а упаковку данных из двух посылок в байт выполняет драйвер параллельного порта, который инициировал такой режим передачи. Как говорится медленно, но уверенно.

Как и Compatibility, режим двунаправленной передачи данных Nibble использует сигнальные линии без переназначения направления передачи и считается каноническим среди разработчиков периферийных устройств. Несмотря на то, что существует коммуникационный протокол Byte, обеспечивающий более эффективную передачу данных по реверсивному каналу, режим Nibble остается актуальным по сей день и поддерживается программно всеми современными операционными системами.


Режим Byte

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

К сожалению, в данном режиме на аппаратном уровне не предусмотрена защита от неправильного выбора направления передачи. Забота о слаженной работе канала связи ложится на программное обеспечение. По этой причине Byte не получил должного распространения и ограниченно поддерживается операционными системами. Например, в Windows 9x нет встроенных драйверов параллельного порта, ориентированных на поддержку режима Byte. Возможно, определенную роль сыграло происхождение этого коммуникационного протокола, впервые появившегося в системах IBM PS/2. Во всяком случае, в операционной системе OS/2, в разработке которой компания Microsoft принимала участие на начальном этапе, такая поддержка есть.

Исторические корни определили и второе название - PS/2 Bidirectional Parallel Port (BPP), которое хотя и не упоминается в стандарте, однако не утратило актуальность до сих пор. Во всяком случае, драйверы сторонних производителей поддерживают режим Byte и оперируют этими понятиями.


Режим EPP

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

Другой особенностью режима стала возможность свести к минимуму функции управления, необходимые при передаче данных. В отличие от протоколов Compatibility, Nibble и Byte, когда драйверу необходимо было определить статус периферийного устройства, его готовность, обеспечить передачу данных и получить подтверждение о доставке, в режиме EPP все значительно упростилось.

Благодаря аппаратному управлению потоком данных (Flow Control) работа драйвера сводится к определению готовности устройства и обмену данными. Всю работу, связанную с задержками, стробами и проверками, которую в низших протоколах выполняет программное обеспечение, берет на себя аппаратная часть хост-контроллера.


Режим ECP

Этот способ передачи данных был разработан компаниями Hewlett-Packard и Microsoft. Ввиду того, что в разработке принимали участие ведущие специалисты в области аппаратного обеспечения и реализации операционных сред, протокол получился мощный и эффективный. Именно поэтому он получил столь широкое распространение и сразу был включен в IEEE1284, став тем самым стандартом de facto для высокоскоростной передачи данных через периферийный параллельный интерфейс компьютера.

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

К сожалению, такое обилие возможностей и сложность аппаратной реализации зачастую приводит к тому, что многие разработчики периферийных устройств отказываются от поддержки ECP в пользу менее скоростных, но более простых протоколов из семейства SPP. Нужно отметить также, что даже в современных реализациях микросхем Super I/O не всегда поддерживается вся совокупность возможностей ECP-протокола.

Рассматривая высокоскоростные протоколы, нужно не забыть о такой составляющей части передачи данных как способ обмена данными чипсета с микросхемами ввода-вывода. Если протокол простой и относительно низкоскоростной (как Compatibility, Nibble или Byte), то обмен осуществляется по старинке, командами IN и OUT. В этом случае требуется минимальная драйверная поддержка со стороны операционной системы, а скорость обмена с параллельным интерфейсом зависит только от времени доступа к шине, с которой "связана" микросхема ввода-вывода.

При подключении Super I/O к шине ISA максимальное время доступа к портам варьируется от 2 до 2.5 микросекунд, использование LPC увеличивает это значение до 3.5 микросекунд, для шины PCI - от 0.5 до 0.7 микросекунд. Учитывая то, что передача данных происходит не за одну команду ввода-вывода, скорость передачи составляет 200-500 KBps для ISA и LPC и от 600 KBps до 2 MBps для PCI. Для большинства периферийных устройств - будь то принтеры, сканеры, программаторы, устройства защиты данных - а также для необычайного множества диковинных устройств с параллельным интерфейсом этих скоростей хватает даже с избытком.

Что же касается высокопроизводительных периферийных устройств (принтеров для малой полиграфии, полноформатных сканеров, устройств слежения и других машины для "перемалывания" данных), то здесь без ECP не обойтись.

При передаче потоков данных со скоростью 1 MBps и выше становится актуальным процент загрузки центрального процессора. Для его уменьшения используют обычно три взаимно не исключающих механизма: дополнительные буферы FIFO, способ обмена данными с использованием DMA канала, использование более производительной системной шины. Это усложняет драйверную поддержку, но значительно увеличивает скорость обмена. В наиболее быстродействующих реализациях параллельных интерфейсов пиковая скорость может достигать 25-30 MBps, что ставит этот способ передачи данных на одну планку с его современными собратьями.

Впервые опубликованo 25 июня 2001 в журнале "Компьютерное Обозрение"

Если данная информация оказалась полезной/интересной - плюсаните, пожалуйста:

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Разрешённые HTML-теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img>
  • You can use BBCode tags in the text. URLs will automatically be converted to links.

Подробнее о форматировании текста

Антибот - введите цифру.
Ленты новостей