Интерфейсы ПК

       

Традиционный LPT-порт


1.1.2. Традиционный LPT-порт

Адаптер параллельного интерфейса представляет собой на- бор регистров, расположенных в пространстве ввода/вы- вода. Регистры порта адресуются относительно базового адреса порта, стандартными значениями которого явля- ются 3BCh, 378h и 278h. Порт может использовать линию запроса аппаратного прерывания, обычно IRQ7 или IRQ5. Порт имеет внешнюю 8-битную шину данных, 5-битную шину сигналов состояния и 4-битную шину управляющих сигналов,

BIOS поддерживает до четырех (иногда до трех) LPT-пор- тов (LPT1-LPT4) своим сервисом - прерыванием INT 17h, обеспечивающим через них связь с принтером по интерфей- су Centronics. Этим сервисом BIOS осуществляет вывод сим- вола (по опросу готовности, не используя аппаратных пре- рываний), инициализацию интерфейса и принтера, а также опрос состояния принтера.

Стандартный порт имеет три 8-битных регистра, располо- женных по соседним адресам в пространстве ввода/вывода, начиная с базового адреса порта (BASE).

Data Register (DR) - регистр данных, адрес=ВЛ5Е. Данные, записанные в этот порт, выводятся на выходные линии ин- терфейса. Данные, считанные из этого регистра, в зависимо- сти от схемотехники адаптера соответствуют либо ранее за- писанным данным, либо сигналам на тех же линиях, что не всегда одно и то же. Если в порт записать байт с единицами во всех разрядах, а на выходные линии интерфейса через микросхемы с выходом типа "открытый коллектор" подать какой-либо код (или соединить ключами какие-то линии со схемной землей), то этот код может быть считан из того же регистра данных. Таким образом на многих старых моделях адаптеров можно реализовать порт ввода дискретных сигна- лов, однако выходным цепям передатчика информации при- дется "бороться" с выходным током логической единицы выходных буферов адаптера. Схемотехника ТТЛ такие ре- шения не запрещает, но если внешнее устройство выполне- но на микросхемах КМОП, их мощности может не хватить для "победы" в этом шинном конфликте.
Однако современ-

ные адаптеры часто имеют в выходной цепи согласующий резистор с сопротивлением до 50 Ом. Выходной ток коротко- го замыкания выхода на землю обычно не превышает 30 мА. Простой расчет показывает, что в случае короткого замыка- ния контакта разъема на землю при выводе "единицы" на этом резисторе падает напряжение 1,5 В, что входной схе- мой приемника будет воспринято как "единица". Так что такой способ ввода не будет работать на всех компьютерах.

На некоторых адаптерах портов выходной буфер отключа- ется перемычкой на плате. Тогда порт превращается в обык- новенный порт ввода.

Status Register (SR) - регистр состояния; представляет со- бой 5-битный порт ввода сигналов состояния принтера (биты SR.4-SR.7), адрес==8ЛЗЕ+7. Бит SR. 7 инвертируется - низ- кому уровню сигнала соответствует единичное значение бита в регистре, и наоборот.

Назначение бит регистра состояния (в скобках даны номера контактов разъема):

SR. 7 - Busy - инверсные отображения состояния линии Busy (11): при низком уровне на линии устанавливается единичное значения бита - разрешение на вывод очеред- ного байта.

SR.6 - Ack (Acknowledge) - отображения состояния ли- нии Ack# (10).



SR.5 - РЕ (Paper End) - отображения состояния линии Paper End (12). Единичное значение соответствует высо- кому уровню линии - сигналу о конце бумаги в принтере.

ш SR.4 - Select - отображения состояния линии Select (13). Единичное значение соответствует высокому уровню ли- нии - сигналу о включении принтера.

s8 SR.3 - Error - отображения состояния линии Error (15). Нулевое значение соответствует низкому уровню линии - сигналу о любой ошибке принтера.

®? SR.2 - PIRQ - флаг прерывания по сигналу Ackft (толь- ко для порта PS/2). Бит обнуляется, если сигнал Ack# вызвал аппаратное прерывание. Единичное значение ус-

танавливается по аппаратному сбросу и после чтения ре- гистра состояния.

SR[1:OJ - зарезервированы.

Control Register (CR) - регистр управления, wpecBASE+2. Как и регистр данных, этот 4-битный порт вывода допуска- ет запись и чтение (биты 0-3), но его выходной буфер обычно имеет тип "открытый коллектор".


Это позволяет корректно использовать линии данного регистра как входные при про- граммировании их в высокий уровень. Биты О, 1, 3 инвер- тируются.

Назначение бит регистра управления:

SB CR[7:6] - зарезервированы.

т CR.5 - Direction - бит управления направлением переда- чи (только для портов PS/2). Запись единицы переводит порт данных в режим ввода. При чтении состояние бита не определено.

CR.4 - AcklntEn (Ack Interrupt Enable) - единичное зна- чение разрешает прерывание по спаду сигнала на линии Ack# - сигнал запроса следующего байта.

is CR.3 - Select In - единичное значение бита соответству- ет низкому уровню на выходе Select ln# (17) - сигналу, разрешающему работу принтера по интерфейсу Centronics.

CR.2 - Init - нулевое значение бита соответствует низко- му уровню на выходе 1п'Л# (16) - сигналу аппаратного сброса принтера.

т CR. 1 - Auto LF - единичное значение бита соответствует низкому уровню на выходе Auto LF# (14) - сигналу на автоматический перевод строки (LF - Line Feed) по при- ему байта возврата каретки (CR). Иногда сигнал и бит называют AutoFD или AutoFDXT.

CR.O - Strobe - единичное значение бита соответствует низкому уровню на выходе Strobeft (1) - сигналу стро- бирования выходных данных.

Запрос аппаратного прерывания (обьлно IRQ7 или IRQ5) вы- рабатывается по отрицательному перепаду сигнала на выво- де 10 разъема интерфейса (Ack#) при установке CR.4=i. Во

избежание ложных прерываний контакт 10 соединен резис- тором с шиной +5 В. Прерывание вырабатывается, когда принтер подтверждает прием предыдущего байта. Как уже было сказано, BIOS это прерывание не использует и не об- служивает.

Процедура вывода байта по интерфейсу Centronics включает следующие шаги (в скобках приведено требуемое количе- ство шинных операций процессора):

Вывод байта в регистр данных (1 цикл IOWR#).

Ввод из регистра состояния и проверка готовности уст- ройства (бит SR. 7 - сигнал Busy). Этот шаг зацикливает- ся до получения готовности или до срабатывания про- граммного тайм-аута (минимум 1 цикл IORD#).



ш По получении готовности выводом в регистр управления устанавливается строб данных, а следующим выводом строб снимается (2 цикла IOWR#). Обычно, чтобы переключить только один бит (строб), регистр управления предвари- тельно считывается, что добавляет еще один цикл IORD#.

Видно, что для вывода одного байта требуется 4-5 операций ввода/вывода с регистрами порта (в лучшем случае, когда готовность обнаружена по первому чтению регистра состоя- ния). Отсюда вытекает главный недостаток вывода через стандартный порт - невысокая скорость обмена при значи- тельной загрузке процессора. Порт удается разогнать до ско- ростей 100-150 Кбайт/с при полной загрузке процессора, что недостаточно для печати на лазерном принтере. Другой не- достаток - функциональный - сложность использования в качестве порта ввода.

Стандартный порт асимметричен - при наличии 12 линий (и бит), нормально работающих на вывод, на ввод работают только 5 линий состояния. Если необходима симметричная двунаправленная связь, на всех стандартных портах рабо- тоспособен ежгш полубайтного обмена - Nibble Mode. В этом режиме, называемом также Hewlett Packard Bitronics, одно- временно передаются 4 бита данных, пятая линия исполь- зуется для квитирования. Таким образом, каждый байт пе- редается за два цикла, а каждый цикл требует по крайней мере 5 операций ввода/вывода.


Содержание раздела