Процедура вывода байта по интерфейсу Centronics включает следующие шаги (в скобках приведено требуемое количество шинных операций процессора):
- Вывод байта в регистр данных (1 цикл IOWR#).
- Ввод из регистра состояния и проверка готовности устройства (бит SR. 7 - сигнал Busy). Этот шаг зацикливается до получения готовности или до срабатывания программного тайм-аута (минимум 1 цикл IORD#).
По получении готовности выводом в регистр управления устанавливается строб данных, а следующим выводом строб снимается (2 цикла IOWR#). Обычно, чтобы переключить только один бит (строб), регистр управления предварительно считывается, что добавляет еще один цикл IORD#. Видно, что для вывода одного байта требуется 4-5 операций ввода/вывода с регистрами порта (в лучшем случае, когда готовность обнаружена по первому чтению регистра состояния). Отсюда вытекает главный недостаток вывода через стандартный порт - невысокая скорость обмена при значительной загрузке процессора. Порт удается разогнать до скоростей 100-150 Кбайт/с при полной загрузке процессора, что недостаточно для печати на лазерном принтере. Другой недостаток - функциональный - сложность использования в качестве порта ввода.
Стандартный порт асимметричен - при наличии 12 линий (и бит), нормально работающих на вывод, на ввод работают только 5 линий состояния. Если необходима симметричная двунаправленная связь, на всех стандартных портах работоспособен режим полубайтного обмена - Nibble Mode. В этом режиме, называемом также Hewlett Packard Bitronics, одновременно передаются 4 бита данных, пятая линия используется для квитирования. Таким образом, каждый байт передается за два цикла, а каждый цикл требует по крайней мере 5 операций ввода/вывода.
Расширения параллельного порта
Недостатки стандартного порта частично устраняли новые типы портов, появившиеся в компьютерах PS/2. Двунаправленный порт 1 (Type 1 parallel port} -интерфейс, введенный в PS/2. Такой порт кроме стандартного режима может работать в режиме ввода или двунаправленном режиме. Протокол обмена формируется программно, а для указания направления передачи в регистр управления порта введен специальный бит CR.5:0 - буфер данных работает на вывод, 1 - на ввод. Не путайте этот порт, называемый также enhanced bi-directional, с ЕРР. Данный тип порта прижился и в обычных компьютерах.
Порт с прямым доступом к памяти (Type 3 DMA parallelport) применялся в PS/2 моделей 57, 90, 95. Был введен для повышения пропускной способности и разгрузки процессора при выводе на принтер. Программе, работающей с портом, требовалось только задать в памяти блок данных, подлежащих выводу, а затем вывод по протоколу Centronics производился без участия процессора.
Позже появились другие адаптеры LPT-портов, реализующие протокол обмена Centronics аппаратно - Fast Centronics.
Некоторые из них использовали FIFO-буфер данных - Parallel Port FIFO Mode. Не будучи стандартизованными, такие порты разных производителей требовали использования собственных специальных драйверов. Программы, использующие прямое управление регистрами стандартных портов, не умели более эффективно их использовать. Такие порты часто входили в состав мультикарт VLB. Существуют их варианты с шиной ISA, в том числе встроенные.
Стандарт IEEE 1284
Стандарт на параллельный интерфейс IEEE 1284, принятый в 1994 году, определяет порты SPP, ЕРР и ЕСР. Стандарт определяет 5 режимов обмена данными, метод согласования режима, физический и электрический интерфейсы. Согласно IEEE 1284, возможны следующие режимы обмена данными через параллельный порт:
- режим совместимости (Compatibility Mode) - однонаправленный (вывод) по протоколу Centronics. Этот режим соответствует стандартному порту SPP.
- Полубайтный режим (Nibble Mode) - ввод байта в два цикла (по 4 бита), используя для приема линии состояния. Этот режим обмена может использоваться на любых адаптерах.
- Байтный режим (Byte Mode) - ввод байта целиком, используя для приема линии данных. Этот режим работает только на портах, допускающих чтение выходных данных (Bi-Directional или PS/2 Type 1).
- Режим ЕРР (Enhanced Parallel Port) (EPP Mode) - двунаправленный обмен данными. Управляющие сигналы интерфейса генерируются аппаратно во время цикла обращения к порту. Эффективен при работе с устройствами внешней памяти и адаптерами локальных сетей.
- Режим ЕСР (Extended Capability Port) (ECP Mode) - двунаправленный обмен данными с возможностью аппаратного сжатия данных по методу RLE (Run Length Encoding) и использования FIFO-буферов и DMA. Управляющие сигналы интерфейса генерируются аппаратно. Эффективен для принтеров и сканеров.
В компьютерах с LPT-портом на системной плате режим - SPP, ЕРР, ЕСР или их комбинация - задается в BIOS Setup.
Режим совместимости полностью соответствует стандартному порту SPP. Остальные режимы подробно рассмотрены ниже.
Физический и электрический интерфейсы
Стандарт IEEE 1284 определяет физические характеристики приемников и передатчиков сигналов. Спецификации стандартного порта не задавали типов выходных схем, предельных значений величин нагрузочных резисторов и емкости, вносимой цепями и проводниками. На относительно невысоких скоростях обмена разброс этих параметров не вызывал проблем совместимости. Однако расширенные (функционально и по скорости передачи) режимы требуют четких спецификаций. IEEE 1284 определяет два уровня интерфейсной совместимости. Первый уровень (Level I) определен для устройств медленных, но использующих смену направления передачи данных. Второй уровень (Level II) определен для устройств, работающих в расширенных режимах, с высокими скоростями и длинными кабелями
К передатчикам предъявляются следующие требования:
Уровни сигналов без нагрузки не должны выходить за пределы -0,5... +5,5 В.
Уровни сигналов при токе нагрузки 14 мА должны быть не ниже +2,4 В для высокого уровня (Уон) и не выше +0,4 В для низкого уровня (VoiJ на постоянном токе.
Выходной импеданс Ro, измеренный на разъеме, должен составлять 50╠5 Ом на уровне VoH~VoL. Для обеспечения заданного импеданса используют последовательные резисторы в выходных цепях передатчика. Согласование импеданса передатчика и кабеля снижает уровень импульсных помех.
Скорость нарастания (спада) импульса должна находиться в пределах 0,05-0,4 В/нс.
Требования к приемникам:
Допустимые пиковые значения сигналов -2,0...+7,0 В.
Пороги срабатывания должны быть не выше 2,0 В (V^) для высокого уровня и не ниже 0,8 В (Vi^) для низкого.
Приемник должен иметь гистерезис в пределах 0,2...1,2 В (гистерезисом обладают специальные микросхемы - триггеры Шмидта).
Входной ток микросхемы (втекающий и вытекающий) не должен превышать 20 мкА, входные линии соединяются с шиной питания +5 В резистором 1,2 кОм.
Входная емкость не должна превышать 50 пФ.
Когда появилась спецификация ЕСР, фирма Microsoft рекомендовала применение динамических терминаторов на каждую линию интерфейса. Однако в настоящее время следуют спецификации IEEE 1284, в которой динамические терминаторы не применяются. Рекомендованные схемы входных, выходных и двунаправленных цепей приведены на рис. 2.
Стандарт IEEE 1284 определяет три типа используемых разъемов. Типы A (DB-25) и В (Centronics-36) используются в традиционных кабелях подключения принтера, тип С - новый малогабаритный 36-контактный разъем.
Рис. 2. Оконечные цепи линий интерфейса IEEE 1284: а - однонаправленных, б - двунаправленных
Традиционные интерфейсные кабели имеют от 18 до 25 проводов, в зависимости от числа проводников цепи GND. Эти проводники могут быть как перевитыми, так и нет. К экранированию кабеля жестких требований не предъявлялось. Такие кабели вряд ли будут надежно работать на скорости передачи 2 Мбайт/с и при длине более 2 м. Стандарт IEEE 1284 регламентирует свойства кабелей.
Все сигнальные линии должны быть перевитыми с отдельными обратными (общими) проводами.
Каждая пара должна иметь импеданс 62╠б Ом в частотном диапазоне 4-16 МГц.
Уровень перекрестных помех между парами не должен превышать 10%.
Кабель должен иметь экран (фольгу), покрывающий не менее 85% внешней поверхности. На концах кабеля экран должен быть окольцован и соединен с контактом разъема.
Кабели, удовлетворяющие этим требованиям, маркируются надписью "lEEEStd 1284-1994 Compliant". Они могут иметь длину до 10 метров, обозначения типов приведены в табл. 3.
Таб. 3. Типы кабелей
Тип | Расшифровка | Разъем 1 | Разъем 2 |
АМАМ | Type A Male - Type A Male | А (вилка) | А (вилка) |
AMAF | Туре A Male - Type A Female | А (вилка) | А (розетка) |
АВ | Type A Male - Туре В Plug (стандартный кабель к принтеру) | А (вилка) | В |
АС | Type A Male - Type С Plug (новый кабель к принтеру) | А (вилка) | С |
ВС | Type В Plug - Type С Plug | В | С |
СС | Туре С Plug - Type С Plug | С | С |
Внутренности LPT порта
Если говорить на бытовом уровне, то можно сказать, что LPT порт это набор контактов, на которых мы можем установить напряжение 0 или +5 В (логическая 0 и 1) из программы или это может сделать внешнее устройство снаружи. Давайте разберемся, какими контактами мы можем оперировать, а какими нет. В этом нам поможет рис. ниже (его рисовал не я, автор мне неизвестен. Но он уж больно хорош, я и сам им постоянно пользуюсь)
Из рис. видно, что выводы порта можно разделить на четыре группы: это 'земляные' выводы (не понятно чем руководствовались разработчики интерфейса LPT, сделав этих выводов аж 8 штук). Они обозначены черным цветом (контакты 18-25). Все они соединены между собой, поэтому для своих разработок в качестве земли можно использовать любой из них.