Первую модификацию LPT-порта называют SPP (Standard Parallel Port). Он является однонаправленным портом, через который программно реализуется протокол обмена Centronics. Сигналы порта
выводятся на разъем DB-25S (розетка), установленный непосредственно на плате адаптера (или системной плате) или соединяемый с ней плоским шлейфом. Название и назначение сигналов разъема порта (таблица 1) соответствуют интерфейсу Centronics.
Сам адаптер параллельного интерфейса представляет собой набор регистров, расположенных в пространстве ввода/вывода. Регистры порта адресуются относительно базового адреса порта, стандартными значениями которого являются 3BCh, 378h и 278h. Порт может использовать линию запроса аппаратного прерывания, обычно IRQ7 или IRQ5. Порт имеет внешнюю 8-битную шину данных, 5-битную шину сигналов состояния и 4-битную шину управляющих сигналов,
BIOS поддерживает до четырех (иногда до трех) LPT-портов (LPT1-LPT4) своим сервисом-прерыванием INT 17h, обеспечивающим через них связь с принтером по интерфейсу Centronics. Этим сервисом BIOS осуществляет вывод символа (по опросу готовности, не используя аппаратных прерываний), инициализацию интерфейса и принтера, а также опрос состояния принтера.
Стандартный порт имеет три 8-битных регистра, расположенных по соседним адресам в пространстве ввода/вывода, начиная с базового адреса порта (BASE). Базовым адресом LPT-порта как правило бывает 378h.
Если в порт записать байт с единицами во всех разрядах, а на выходные
линии интерфейса через микросхемы с выходом типа "открытый коллектор" подать какой-либо код (или соединить ключами какие-то линии со схемной землей), то этот код может быть считан из того же регистра данных.
Таблица 1. Назначение сигналов.
Сигнал | Направление | Контакт | Номер провода в кабеле | Назначение |
Strobe# | выход | 1 | 1 | Строб данных. |
Data [0:7] | выход | 2 - 9 | 3, 5, 7, 9, 11, 13,15, 17 | Линии данных. Data 0 (контакт 2) – младший бит |
Ack# | вход | 10 | 19 | Acknowledge – сигнал подтверждения приема байта, запрос на прием следующего. Может использоваться для формирования запроса прерывания. |
Busy | вход | 11 | 21 | Занято. Прием данных возможен только при низком уровне сигнала |
PaperEnd | выход | 12 | 23 | Высокий уровень сигнализирует о конце бумаги. |
Select | выход | 13 | 25 | Сигнал о включении принтера. |
AutoLF# | вход | 14 | 2 | Автоматический перевод строки. При низком уровне сигнала, принтер, получив символ CR (Carriage Return – возврат каретки) автоматически выполняет и функцию LF (Line Feed – перевод строки) |
Error# | вход | 15 | 4 | Ошибка: конец бумаги, Off-Line (принтер не в связи с РС) или внутренняя ошибка принтера. |
Init# | выход | 16 | 6 | Инициализация – сброс принтера в режим параметров умолчания, возврат головки к началу строки. |
Slct In# | выход | 17 | 8 | Выборка принтера (низким уровнем сигнала). При высоком уровне сигнала принтер не воспринимает остальных сигналов интерфейса. |
GND | - | 18-25 | 10, 12, 14, 16, 18, 20, 22, 24, 26 | Общий провод интерфейса. |
Таким образом, на многих старых моделях адаптеров можно реализовать порт ввода дискретных сигналов, однако выходным цепям передатчика информации придется "бороться" с выходным током логической единицы выходных буферов адаптера. Схемотехника ТТЛ такие решения не запрещает, но если внешнее устройство выполнено на микросхемах КМОП, их мощности может не хватить для "победы" в этом шинном конфликте.
На некоторых адаптерах портов выходной буфер отключается перемычкой на плате. Тогда порт превращается в обыкновенный порт ввода.
Status Контроллер порта имеет три 8-битовых регистра:
1) DR (Data Register) – 8-битовый регистр вывода данных, содержимое которого выводится на линии Data [0:7] разъема, но тот же регистр позволяет и принимать данные с линий Data [0:7]: если в регистр DR записать все единицы, а на контакты 2-9 разъема LPT-порта подать какой-либо код, то регистр DR запомнит этот код без всякого строба. Адрес регистра = базовому;
2) SR (Status Register) – 5-битовый регистр ввода состояния принтера, принимает сигналы Select, PaperEnd, Ack и Busy соответственно. Адрес регистра = базовому +1;
3) CR (Control Register) – 4-битовый регистр управления, вырабатывает сигналы Strobe#, Auto LF#, Init#, и Slct In#, соответственно. Подобно регистру данных позволяет и прием данных с разъема интерфейса
Стандартный порт асимметричен - при наличии 12 линий, нормально работающих на вывод, на ввод работают только 5 линий состояния.
Недостатки стандартного порта частично устраняли новые модификации LPT-порта, появившиеся в компьютерах PS/2.
Начиная с ПЭВМ модели PS/2 порты стали иметь возможность в режиме двунаправленного порта 1 (Type 1 parallel port). Такой порт кроме стандартного режима может работать в режиме ввода или двунаправленном режиме. Протокол обмена формируется программно, а для указания направления передачи в регистр управления порта введен специальный бит CR.5:0 - буфер данных работает на вывод, 1 - на ввод. Этот порт не следует путать с EPP. Главной особенностью этого порта является то, что теперь стало возможным считывать информацию с линий регистра данных LPT-порта. Для этого достаточно лишь установить в единицу бит 5 регистра состояния LPT-порта.
Теперь регистр данных LPT-порта может, как считывать, так и записывать информацию, производя полноценный обмен данными.
Из ранее изложенного следует отметить так же наличие в регистре управления LPT-порта четырёх линий, которые могут работать на вывод информации. Это сигналы: Strobe, Select, AutoLF, Init, из которых первые три инверсные. Эти сигналы можно будет использовать в качестве сигналов управления для разрабатываемого устройства связи, которые будут сопровождать передачу данных.
В настоящее время имеется большое количество и других модификаций LPT-порта поддерживающих более функциональные режимы передачи данных, такие как EPP, ECP. Но ознакомившись с ними, я пришёл к выводу, что они менее чем ранее рассмотренные режимы, подходят для реализации интерфейса с разрабатываемым контроллером сигнализации. По этой причине в своём проекте я их не рассматриваю.
На структурной схеме, представленной на чертеже АКВТ.230101.ДП00.14Э1, показан программатор, подключённый в компьютеру и разбитый на блоки.
Формирователь сигналов IBM представляет собой шинный формирователь, который пропускает сигналы с шины данных IBM (выходные сигналы регистра данных последовательного порта) на внутреннюю шину программатора, когда сигнал XA имеет нулевое значение. По положительному фронту сигнала XA в регистре управляющих сигналов запоминаются управляющие сигналы, которые поступают по той же шине IBM. Четыре управляющих сигнала (RD, WR, XA и OUT_HI) являются выходными сигналами регистра управления последовательного порта.
Информация для прожигания ячейки ПЗУ (адрес и данные), поступающая с шины данных IBM, запоминается в регистре адреса и регистре данных. Распределение информации по регистрам осуществляется путем программирования соответствующих управляющих сигналов.
Сигналы с выходов регистра адреса и регистра данных подаются непосредственно на микросхему ПЗУ. Кроме того, на нее поступают от одного до четырех сигналов с управляемых блоков питания. Напряжения на выходах этих блоков питания задаются информацией, записываемой в соответствующие регистры. Эта информация поступает с IBM точно так же, как данные для прожигания ячейки ПЗУ (через шинный формирователь IBM), а управляющие сигналы обеспечивают запись этой информации в соответствующие регистры.
Для чтения информации из ячейки ПЗУ сначала из IBM поступает адрес ячейки, который запоминается в регистре адреса, а затем управляющие сигналы открывают формирователь сигналов данных ПЗУ, пропуская информацию с шины данных ПЗУ на внутреннюю шину программатора. Сигнал MODE_OUT при открытом формирователе сигналов данных ПЗУ должен иметь единичное значение, отключающее формирователь сигналов IBM от внутренней шины программатора.
Чтение байта данных с внутренней шины программатора в IBM осуществляется через коммутатор в 2 этапа (по 4 бита), т.к. у последовательного порта IBM только 5 входных сигналов (входы регистра состояния). Подключение к выходу коммутатора старшего полубайта осуществляется при единичном значении сигнала OUT_HI, а при нулевом значении этого сигнала на выход коммутатора проходят сигналы младшего полубайта.
Формирователь сигналов адреса предназначен для считывания с ПЗУ младшего байта адреса. Это требуется для микросхем ПЗУ с общей 16-разрядной шиной для адреса и данных (например, КМ1801РР1). Шина адреса и данных этих микросхем является мультиплексированной (т.е. по ней сначала передается адрес, затем данные) и двунаправленной (при чтении из микросхемы данные передаются в обратную сторону). Для таких микросхем шина адреса/данных подключается к сигналам A0...A7, D0...D7 программатора, которые тоже являются двунаправленными.
Формирователь сигнала KROSS предназначен для идентификации кросс-платы. Сигнал KROSS, поступающий на формирователь с кросс-платы, скоммутирован на каждой кросс-плате с одним из разрядов адреса и поэтому повторяет значение этого разряда. Записывая в регистр адреса адрес с нулевым битом в определенном разряде, программа проверяет, соответствует ли подключенная кросс-плата микросхеме ПЗУ, выбранной пользователем.
3 ОБОСНОВАНИЕ СХЕМЫ ЭЛЕКТРИЧЕСКОЙ ПРИНЦИПИАЛЬНОЙ