Параллельный интерфейс: LPT-порт
Параллельный интерфейс: LPT-порт
Параллельный интерфейс: LPT-порт
Порт параллельного интерфейса был введен в PC для подключения принтера
—LP'T-порт (Line PrinTer — построчный принтер).
Адаптер параллельного интерфейса представляет собой набор регистров,
расположенных в пространстве ввода/вывода. Регистры порта адресуются
относительно базового адреса порта, стандартными значениями которого
являются 386h, 378h и 278h. Порт имеет внешнюю 8-битную шину данных, 5-
битную шину сигналов состояния и 4-битную шину управляющих сигналов.
BIOS поддерживает до четырех LPT-портов (LPT1-LPT4) своим сервисом —
прерыванием INT 17h, обеспечивающим через них связь с принтерами по
интерфейсу Centronics. Этим сервисом BIOS осуществляет вывод символа,
инициализацию интерфейса и принтера, а также опрос состояния принтера.
Интерфейс Centronics
Понятие Centronics относится как к набору сигналов и протоколу
взаимодействия, так и к 36-контактному разъему, устанавливаемому на
принтерах. Назначение сигналов приведено в табл. 1.
Таблица 1.
Сигналы интерфейса Centronics
|Сигна|I/O*|Контакт |Назначение |
|л | | | |
|Strob|I |1 |Строб данных. Данные фиксируются по низкому |
|e | | |уровню сигнала |
|Data |I |2-9 |Линии данных. Data 0 (контакт 2) — младший бит|
|[0:7]| | | |
|Actt |0 |10 |Acknowledge — импульс подтверждения приема |
| | | |байта (запрос на прием следующего). Может |
| | | |использоваться для формирования запроса |
| | | |прерывания |
|Busy |0 |11 |Занято. Прием данных возможен только при |
| | | |низком уровне сигнала |
|Paper|0 |12 |Высокий уровень сигнализирует о конце бумаги |
|End | | | |
|Selec|0 |13 |Сигнализирует о включении принтера |
|t | | | |
|Auto |I |14 |Автоматический перевод строки. |
|LF# | | | |
|Еггог|0 |32 |Ошибка: конец бумаги, состояние OFF-Line или |
|й | | |внутренняя ошибка принтера |
|Imt# |I |31 |Инициализация |
|Slot |I |36 |Выбор принтера (низким уровнем). При высоком |
|In# | | |уровне принтер не воспринимает остальные |
| | | |сигналы интерфейса |
|GND |- |19-30 33 |Общий провод интерфейса |
|* I/O|Зада|Направление|(вход/выход) применительно к принтеру. |
| |ет | | |
Интерфейс Centronics поддерживается большинством принтеров с параллельным
интерфейсом, его отечественным аналогом является интерфейс ИРПР-М.
Традиционный LPT-порт
Традиционный порт SPP (Standard Parallel Port) является однонаправленным
портом, на базе которого программно реализуется протокол обмена Centronics.
Порт обеспечивает возможность вырабатывания запроса аппаратного прерывания
по импульсу на входе АСК#. Сигналы порта выводятся на разъем DB-25S
(розетка), установленный непосредственно на плате адаптера (или системной
плате) или соединяемый с ней плоским шлейфом. Название и назначение
сигналов разъема порта (табл. 2) соответствуют интерфейсу Centronics.
Таблица 2.
Разъем стандартного LPT-порта
|Контакт |Провод |Назначение |
|DB-25S |шлейфа | |
| | |I/O* |Reg.Bit** |Сигнал |
|1 |1 |0/1 |CR: 0\ |Strobe# |
|2 |3 |0(1) |DR:0 |Data 0 |
|3 |5 |0(1) |DR: 1 |Data 1 |
|4 |7 |0(1) |DR: 2 |Data 2 |
|5 |9 |0(1) |DR:3 |Data 3 |
|6 |11 |0(1) |DR: 4 |Data 4 |
|7 |13 |0(1) |DR:5 |Data 5 |
|8 |15 |0(1) |DR:6 |Data 6 |
|9 |17 |0(1) |DR:7 |Data 7 |
|10 |19 |I |SR: 6 |Ack# |
|11 |21 |I |SR: 7\ |Busy |
|12 |23 |I |SR: 5 |PaperEnd |
|13 |25 |I |SR: 4 |Select |
|14 |2 |0/1 |CR: 1\ |Auto LF# |
|15 |4 |I |SR: 3 |Error# |
|16 |6 |0/1 |CR: 2 |Init# |
|17 |8 |0/1 |CR:3\ |Select In# |
|18-25 |10, 12, 14, |18, 20, 22, 24,|- |- |
| |16 |26 | | |
* I/O задает направление передачи (вход/выход) сигнала порта; 0/I
обозначает выходные линии, состояние которых считывается при чтении из
соответствующих портов вывода.
** Символом «\» отмечены инвертированные сигналы (1 в регистре
соответствует низкому уровню линии).
*** Вход Ack# соединен резистором (10 кОм) с питанием +5 В.
Стандартный порт имеет три 8-битных регистра, расположенных по соседним
адресам в пространстве ввода/вывода, начиная с базового адреса порта
(BASE).
Data Register (DR) — регистр данных, адрес= BASE. Данные, записанные в этот
порт, выводятся на выходные линии интерфейса. Данные, считанные из этого
регистра, в зависимости от схемотехники адаптера соответствуют либо ранее
записанным данным, либо сигналам на тех же линиях.
Status Register (SR) — регистр состояния, представляющий собой 5-битный
порт ввода сигналов состояния принтера (биты SR.4-SR.7), адрес= BASE+1. Бит
SR.7 инвертируется — низкому уровню сигнала соответствует единичное
значению бита в регистре, и наоборот.
Назначение бит регистра состояния (в скобках даны номера контактов
разъема):
SR.7—Busy — инверсные отображения состояния линии Busy (11);
SR.6 —АСК (Acknowledge) — отображения состояния линии Ack# (10).
SR.5 —РЕ (Paper End) — отображения состояния линии Paper End (12).
SR.4—Select — отображения состояния линии Select (13). Единичное значение
соответствует cигналу о включении принтера.
SR.3—Error — отображения состояния линии Error (15).
SR.2 — PIRQ — флаг прерывания по сигналу Ack# (только для порта PS/2). Бит
обнуляется, если сигнал Ack# вызвал аппаратное прерывание. Единичное
значение устанавливается по аппаратному сбросу и после чтения регистра
состояния.
SR[1:0] — зарезервированы.
Control Register (CR) — регистр управления, адрес=ВА5Е+2. Как и регистр
данных, этот 4-битный порт вывода допускает запись и чтение (биты 0-3), но
его выходной буфер обычно имеет тип открытый коллектор. Это позволяет более
корректно использовать линии данного регистра как входные при
программировании их в высокий уровень. Биты О, 1, 3 инвертируются —
единичному значению в регистре соответствует низкий уровень сигнала, и
наоборот.
Назначение бит регистра управления:
CR[7:6] — зарезервированы.
CR.5 — Direction — бит управления направлением передачи (только для портов
PS/2). Запись единицы переводит порт данных в режим ввода.
CR.4 —ACKINTEN (Ack Interrupt Enable) — единичное значение разрешает
прерывание по спаду сигнала на линии Ackff — сигнал запроса следующего
байта.
CR.3 — Select In — единичное значение бита соответствует низкому уровню на
выходе Selecting (17) — сигналу, разрешающему работу принтера по интерфейсу
Centronics.
CR.2 — Init — нулевое значение бита соответствует низкому уровню на выходе
Imt# (16) — сигнал аппаратного сброса принтера.
CR.1 — Auto LF — единичное значение бита соответствует низкому уровню на
выходе Auto LF# (14) — сигналу на автоматический перевод строки (LF — Line
Feed) по приему байта возврата каретки (CR — Carriage Return).
CR.O —Strobe — единичное значение бита соответствует низкому уровню на
выходе Strobeff (1) — сигналу стробирования выходных данных.
Запрос аппаратного прерывания (обычно IRQ7 или IRQ5) вырабатывается по
отрицательному перепаду сигнала на выводе 10 разъема интерфейса (АСК#) при
установке CR.4=1. Прерывание вырабатывается, когда принтер подтверждает
прием предыдущего байта.
Процедура вывода байта по интерфейсу Centronics через стандартный порт
включает следующие шаги (в скобках приведено требуемое количество шинных
операций процессора):
Вывод байта в регистр данных (1 цикл IOWR#).
Ввод из регистра состояния и проверка готовности устройства (бит SR.7 —
сигнал BUSY).
По получении готовности выводом в регистр управления устанавливается строб
данных, а следующим выводом строб снимается (2 цикла lOWRff).
Стандартный порт сильно асимметричен — при наличии 12 линий (и бит),
нормально работающих на вывод, на ввод работает только 5 линий состояния.
Если необходима симметричная двунаправленная связь, на всех стандартных
портах работоспособен режим полубайтного обмена — Nibble Mode. В этом
режиме, называемым также и Hewlett Packard Bitronics, одновременно
передаются 4 бита данных, пятая линия используется для квитирования.
Функции BIOS для LPT-порта
BIOS обеспечивает поддержку LPT-порта, необходимую для организации вывода
по интерфейсу Centronics.
В процессе начального тестирования POST BIOS проверяет наличие параллельных
портов по адресам ЗВСЬ, 378h и 278h и помещает базовые адреса обнаруженных
портов в ячейки BIOS DATA AREA 0:0408h, 040Ah, 040СП, 040ЕП. Эти ячейки
хранят адреса портов с логическими именами LPT1-LPT4. В ячейки 0:0478,
0479, 047А, 047В заносятся константы, задающие выдержку тайм-аута для этих
портов.
Поиск портов обычно ведется по базовому адресу. Если считанный байт совпал
с записанным, считается, что найден LPT-порт, и его адрес помещают в ячейку
BIOS DATA AREA. Адрес порта LPT4 BIOS самостоятельно установить не может,
поскольку в списке стандартных адресов поиска имеются только три
вышеуказанных.
Обнаруженные порты инициализируются — записью в регистр управления
формируется и снимается сигнал Initff, после чего записывается значение
00h, соответствующее исходному состоянию сигналов интерфейса.
Программное прерывание BIOS I NT 17h обеспечивает следующие функции
поддержки LPT-порта:
00h — вывод символа из регистра AL по протоколу Centronics. Данные
помещаются в выходной регистр и после готовности принтера формируется
строб.
01h — инициализаия интерфейса и принтера.
02h — опрос состояния принтера.
При вызове INT 17h номер функции задается в регистре АН, номер порта — в
регистре DX (0 — LPT1, 1 — LPT2...). При возврате после любой функции
регистр АН содержит код состояния — биты регистра состояния SR[7:3] (биты 6
и 3 инвертированы) и флаг тайм-аута в бите 0. Флаг тайм-аута
устанавливается при неудачной попытке вывода символа.
Расширения параллельного порта
Недостатки стандартного порта частично устраняют новые типы портов,
появившихся в компьютерах семейства PS/2.
Двунаправленный порт 1 (Typel parallel port) — интерфейс, введенный с PS/2.
Такой порт кроме стандартного режима может работать в режиме ввода или
двунаправленном. Протокол обмена формируется программно, а для указания
направления передачи в регистр управления порта введен специальный бит: при
CR.5=0 буфер данных работает на вывод, при CR.5=1 — на ввод.
Порт с прямым доступом к памяти (Type 3 DMA parallel port) применялся в
PS/2 моделей 57, 90, 95. Этот тип был введен для повышения пропускной
способности и разгрузки процессора при выводе на принтер. Программе,
работающей с данным портом, требовалось только задать блок данных в памяти,
подлежащих выводу, и вывод по протоколу Centronics производился без участия
процессора.
Физический и электрический интерфейс
Стандарт IEEE 1284 определяет физические характеристики приемников и
передатчиков сигналов.
К передатчикам предъявляются следующие требования:
Уровни сигналов без нагрузки не должны выходить за пределы -0,5... +5,5 В.
Уровни сигналов при токе нагрузки 14 мА должны быть не ниже +2,4 В для
высокого уровня (voh) и не выше +0,4 В для низкого уровня (vol) на
постоянном токе.
Выходной импеданс ro, измеренный на разъеме, должен составлять 50(±)5 Ом на
уровне voh-vol. Для обеспечения заданного импеданса в некоторых случаях
используют последовательные резисторы в выходных цепях передатчика.
Согласование импеданса передатчика и кабеля снижает уровень импульсных
помех.
Скорость нарастания (спада) импульса должна находиться в пределах 0,05-0,4
В/нс.
Требования к приемникам:
Допустимые пиковые значения сигналов -2,0...+7,0.
Пороги срабатывания должны быть не выше 2,0 В (vih) для высокого уровня и
не ниже 0,8 В (vil) для низкого.
Приемник должен иметь гистерезис в пределах 0,2-1,2 В.
Входной ток микросхемы не должен превышать 20 мкА.
Входная емкость не должна превышать 50 пФ.
Стандарт IEEE 1284 определяет три типа используемых разъемов. Типы Л (DB-
25) и В (Centronics-36) используются в традиционных кабелях подключения
принтера, тип С — новый малогабаритный 36-контактный разъем.
Интерфейсные кабели, традиционно используемые для подключения принтеров,
обычно имеют от 18 до 25 проводников, в зависимости от числа проводников
цепи GND.
Стандарт IEEE 1284 регламентирует и свойства кабелей:
Все сигнальные линии должны быть перевитыми с отдельными обратными
(общими) проводами.
Каждая пара должна иметь импеданс 62(±)6 Ом в частотном диапазоне 4-16 МГц.
Уровень перекрестных помех между парами не должен превышать 10%.
Кабель должен иметь экран (фольгу), покрывающий не менее 85% внешней
поверхности. На концах кабеля экран должен быть окольцован и соединен с
контактом разъема.
Кабели, удовлетворяющие этим требованиям, маркируются надписью IЕЕЕ Std
1284-1994 Compliant». Они могут иметь длину до 10 метров.
Режимы передачи данных
Стандарт IEEE 1284 определяет пять режимов обмена, один из которых
полностью соответствует традиционному стандартному программно-управляемому
выводу по протоколу Centronics. Остальные режимы используются для
расширения функциональных возможностей и повышения производительности
интерфейса. Стандарт определяет способ согласования режима, по которому
программное обеспечение может определить режим, доступный и хосту (в нашем
случае это PC), и периферийному устройству.
Режимы нестандартных портов, реализующих протокол обмена Centronics
аппаратно («Fast Centronics, «Parallel Port FIFO Mode»), могут и не
являться режимами IEE1284, несмотря на наличие в них черт ЕРР и ЕСР.
При описании режимов обмена фигурируют следующие понятия:
Хост — компьютер, обладающий параллельным портом.
ПУ — периферийное устройство, подключаемое к этому порту (им может
оказаться и другой компьютер). обозначениях сигналов Ptr обозначает
передающее периферийное устройство.
Прямой канал — канал вывода данных от хоста в ПУ.
Обратный канал канал ввода данных в хост из ПУ.
Полубайтный режим ввода — Nibble Mode
Режим полубайтного обмена является наиболее общим решением задачи
двунаправленного обмена данными, поскольку может работать на всех
стандартных (традиционных) портах. Все эти порты имеют 5 линий ввода
состояния, используя которые периферийное устройство может посылать в PC
байт тетрадами (nibble — полубайт, 4 бита) за два приема. Назначение
сигналов порта приведено в табл 4.
Таблица 4.
Сигналы LPT-порта в полубайтном режиме ввода
|Конт|Сигнал |I/|Использование сигнала при приеме данных в Nibble Mode|
|акт |SPP |O | |
|14 |AUTOFEE|0 |HostBusy — сигнал квитирования. Низкий уровень |
| |D# | |означает готовность к приему тетрады, высокий |
| | | |подтверждает прием тетрады |
|17 |SELECTI|0 |Высокий уровень указывает на обмен в режиме IEEE 1284|
| |N» | |(в режиме SPP уровень низкий) |
|10 |АСК# |' |PtrClk. Низкий уровень означает действительность |
| | | |тетрады, переход в высокий — ответ на сигнал HostBusy|
|11 |BUSY |I |Прием бита данных 3, затем бита 7 |
|12 |РЕ |I |Прием бита данных 2, затем бита 6 |
|13 |SELECT |I |Прием бита данных 1, затем бита 5 |
|15 |ERRORS |I |Прием бита данных 0, затем бита 4 |
Прием байта данных в полубайтном режиме состоит из следующих фаз:
1. Хост сигнализирует о готовности приема данных установкой низкого уровня
на линии HostBusy.
Страницы: 1, 2, 3
|