Параллельный интерфейс: LPT-порт

Порт параллельного интерфейса был введен в РС для подключения принтера – отсюда и пошло его название LPT-порт (Line PrinTer – построчный принтер).

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

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


1. Интерфейс Centronics

Понятие Centronics относится как к набору сигналов и протоколу взаимодействия, так и к 36-контактному разъему, устанавливаемому на принтерах. Назначение сигналов приведено в табл. 1, а временные диаграммы обмена с принтером – на рис. 1.


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

Традиционный (стандартный) порт SPP (Standard Parallel Port) является однонаправленным портом, на базе которого программно реализуется протокол обмена Centronics. Порт обеспечивает возможность вырабатывания запроса аппаратного прерывания по импульсу на входе ACK#. Сигналы порта выводятся на разъем DB-25S (розетка), установленный непосредственно на плате адаптера (или системной плате) или соединяемый с ней плоским шлейфом. Название и назначение сигналов разъема порта (табл. 2) соответствует интерфейсу Centronics.

Data Register (DR) – регистр данных, адрес=BASE. Данные, записанные в этот порт, выводятся на выходные линии интерфейса. Данные, считанные из этого регистра, в зависимости от схемотехники адаптера соответствуют либо ранее записанные данным, либо сигналам на тех же линиях, что не всегда одно и то же.

Status Register (SR) –регистр состояния, представляющий собой 5-битный порт ввода сигналов состояния принтера (биты SR.4-SR.7), адрес BASE+1. Бит SR.7 инвертируется – низкому уровню сигнала соответствует единичное значение бита в регистре и наоборот.

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

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

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

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

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

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

- SR.2 – PIRQ – флаг прерывания по сигналу Ack# (только для порта РS/2). Бит обнуляется, если сигнал Ack# вызвал аппаратное прерывание. Единичное значение устанавливается по аппаратному сбросу и после чтения регистра состояния;

- SR[1:0] – зарезервированы.

Control Register (CR) – регистр управления, адрес=ВАSЕ+2. Как и регистр данных, этот 4-битный порт вывода допускает запись и чтение (биты 0-3), но его выходной буфер обычно имеет тип “открытый коллектор”. Это позволяет более корректно использовать линии данного регистра как входные при программировании их в высокий уровень. Биты 0, 1, 3 инвертируются – единичному значению в регистре соответствует низкий уровень сигнала, и наоборот.

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

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

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

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

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

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

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

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

Запрос аппаратного прерывания (обычно IRQ7 или IRQ5) вырабатывается по отрицательному перепаду сигнала на выводе 10 разъема интерфейса (АСК#) при установке СR.4=1. Во избежании ложных прерываний контакт 10 соединен резистором с шиной +5 В. Прерывание вырабатывается, когда принтер подтверждает прием предыдущего байта. Как уже было сказано, BIOS это прерывание не использует и его не обслуживает.

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

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

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

3) по получении готовности выводом в регистр управления устанавливается строб данных, а следующим выводом строб снимается (2 цикла IOWR$). Обычно для того, чтобы переключить только один бит (строб), регистр управления предварительно считывается, что добавляет еще один цикл 10Ш.

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


3. Функции BIOS для LPT-порта

BIOS обеспечивает поддержку LPT-порта, необходимую для организации вывода по интерфейсу Centronics.

В процессе начального тестирования POST BIOS проверяет наличие параллельных портов по адресам ЗВСh, 378h и 278h и помещает базовые адреса обнаруженных портов в ячейки BIOS DATA AREA 0:0408h, 040Ah, 040Сh, 040eh. Эти ячейки хранят адреса портов с логическими именами LPT1-LPT4, нулевое значение адреса является признаком отсутствия порта с данным номером. В ячейки 0:0478, 0479, 047А, 047В заносятся константы, задающие выдержку тайм-аута для этих портов.

Поиск портов обычно ведется достаточно примитивно – по базовому адресу (в порт данных предполагаемого порта) выводится тестовый байт (ААh или 55h), затем производится ввод по тому же адресу. Если считанный байт совпал с записанным, считается, что найден LPT-порт, и его адрес помещают в ячейку BIOS DATA AREA. Базовые адреса портов могут быть впоследствии изменены программно. Адрес порта LPT4 BIOS самостоятельно установить не может, поскольку в списке стандартных адресов поиска имеются только три вышеуказанных.

Обнаруженные порты инициализируются – записью в регистр управления формируется и снимается сигнал Init#, после чего записывается значение ОСh, соответствующее исходному состоянию сигналов интерфейса. В некоторых случаях сигнал Init# активен с момента аппаратного сброса до инициализации порта во время загрузки ОС. Это можно заметить по поведению включенного принтера во время перезагрузки компьютера по включении или нажатии кнопки REET – у принтера надолго гаснет индикатор ON-Line. Следствие этого явления – невозможность распечатки экранов (например, параметров BIOS Setup) по клавише Print Screen до загрузки ОС.

Программное прерывание BIOS INT 17h обеспечивает следующие функции поддержки LPT-порта:

- 00h – вывод символа из регистра АL по протоколу Centronics (без
аппаратных прерываний). Данные помещаются в выходной регистр, и, дождавшись готовности принтера (снятия сигнала BUSY), формируется строб;

- 01h – инициализация интерфейса и принтера (установка исходных уровней управляющих сигналов, формирование импульса Init#, запрет аппаратных прерываний и переключение на вывод двунаправленного интерфейса);

- 02h – опрос состояния принтера (чтение регистра состояния порта).

При вызове INT 17h номер функции задается в регистре АН, номер порта – в регистре DX (0 – LPT1, 1 – LPT2,..). При возврате после любой функции регистр АН содержит кой состояния – биты регистра состояния SR[7:3] (биты 6 и 3 инвертированы) и флаг тайм-аута в бите 0. Флаг тайм-аута устанавливается при неудачной попытке вывода символа, если сигнал BUSY не снимается в течение времени, определяемого для данного порта содержимым ячеек 0:0478, 0479, 047А, 047В BIOS DATA AREA. В этом случае, согласно протоколу Centronics, строб данных не вырабатывается.


4. Стандарт IEEE 1284-1994

Стандарт на параллельный интерфейс IEEE 1284, принятый в 1994 году, определяет термины SPP, EPP и ECP. Стандарт определяет 5 режимов обмена данными, метод согласования режима, физический и электрический интерфейсы, Согласно IEEE 1284, возможны следующие режимы обмена данными через параллельный порт:

- Compatibility Mode – однонаправленный (вывод) по протоколу Centronics. Этот режим соответствует стандартному (традиционному) порту SPP;

- Nibble Mode – ввод байта в два цикла (по 4 бита), используя для приема линии состояния. Этот режим обмена может использоваться на любых адаптерах;

- Byte Mode – ввод байта целиком, используя для приема линии данных. Этот режим работает только на портах, допускающих чтение выходных данных (Bi-Directional или PS/2 Type 1;

- EPP (Enhanced Parallel Port) Mode – двунаправленный обмен данными, при котором управляющие сигналы интерфейса генерируются аппаратно во время цикла обращения к порту (чтения или записи в порт). Эффективен при работе с устройствами внешней памяти, адаптерами локальных сетей;

- ECP (Extended Capability Port) Mode – двунаправленный обмен данными с возможностью аппаратного сжатия данных по методу RLE (Run Length Encoding) и использования FIFO-буферов и DMA. Управляющие сигналы интерфейса генерируются аппаратно. Эффективен для принтеров и сканеров.


5. Физический и электрический интерфейс

Стандарт IEEE 1284 определяет физические характеристики приемников и передатчиков сигналов. IEEE 1284 определяет два уровня интерфейсной совместимости. Первый уровень (Level I) определен для устройств, не претендующих на высокоскоростные режимы обмена, но использующих возможности смены направления передачи данных. Второй уровень (Level II) определен для устройств, работающих в расширенных режимах, с высокими скоростями и длинными кабелями. К передатчикам предъявляются следующие требования:

- уровни сигналов без нагрузки не должны выходить за пределы -0,5...+5,5 В;

- уровни сигналов при токе нагрузки 14 мА должны быть не ниже +2,4 В для высокого уровня и не выше +0,4 В для низкого уровня на постоянном токе;

- выходной импеданс, измеренный на разъеме, должен составлять 50(±)5 Ом на уровне VoH-VoL. Для обеспечения заданного импеданса в некоторых случаях используют последовательные резисторы в выходных цепях передатчика. Согласование импеданса передатчика и кабеля снижает уровень импульсных помех;

- скорость нарастания (спада) импульса должна находиться в пределах 0,05-0,4 В/нc.

Требования к приемникам:

- допустимые пиковые значения сигналов -2,0…+7,0 В (выдерживаемые без разрушений и ошибок в работе);

- пороги срабатывания должны быть не выше 2,0 В для высокого уровня и не ниже 0,8 В для низкого;

- приемник должен иметь гистерезис в пределах 0,2-1,2 В (гистерезисом обладают специальные микросхемы – триггеры Шмидта, у обычных логических микросхем его нет);

- входной ток микросхемы (втекающий и вытекающий) не должен превышать 20 мкА, входные линии соединяются с шиной питания +5 В резистором 1,2 кОм;

- входная емкость не должна превышать 50 пФ.

При описании режимов обмена фигурируют следующие понятия:

- Хост – компьютер, обладающий параллельным портом.

- ПУ – периферийное устройство, подключаемое к этому порту (им может оказаться и другой компьютер). В обозначениях сигналов Ptr обозначает передающее периферийное устройство.

- Прямой канал – канал вывода данных от хоста в ПУ.

- Обратный канал – канал ввода данных в хост из ПУ.


6. Режим ЕРР

Протокол ЕРР (Enhanced Parallel Port – улучшенный параллельный порт) был разработан задолго до принятия IEEE 1284 компаниями Intel, Xircom и Zenith Data Systems. Он предназначен для повышения производительности обмена по параллельному порту. ЕРР был реализован в чипсете Intel 386SL (микросхема 82360) и впоследствии принят множеством компаний как дополнительный протокол параллельного порта.

Протокол ЕРР обеспечивает четыре типа циклов обмена:

- Цикл записи данных.

- Цикл чтения данных.

- Цикл записи адреса.

- Цикл чтения адреса.

Назначение циклов записи и чтения данных ясно из их названия. Адресные циклы могут быть использованы для передачи адресной, канальной и управляющей информации. Циклы обмена данными явно отличаются от адресных циклов применяемыми стробирующими сигналами. Назначение сигналов порта EPP и их связь с сигналами SPP приведены в табл. 3.

Цикл записи данных состоит из следующих фаз:

1) Программа выполняет цикл записи (IOWR#) в порт 4 (EPP Data Port).

2) Адаптер устанавливает сигнал Write# (низкий уровень), и данные помещаются на выходную шину LPT-порта.

3) При низком уровне WAIT# устанавливается строб данных.

4) Порт ждет подтверждения от ПУ (перевода WAIT# в высокий уровень).

5) Снимается строб данных – внешний цикл завершается.

6) Завершается процессорный цикл ввода/вывода.

7) ПУ устанавливает низкий уровень WAIT#, указывая на возможность начала следующего цикла (рис. 2).

Главной отличительной чертой ЕРР является выполнение внешней передачи во время одного процессорного цикла ввода/вывода. Это позволяет достигать высоких скоростей обмена (0,5-2 Мбайт/с). Периферийное устройство, подключенное к параллельному порту ЕРР, может работать на уровне производительности устройства, подключаемого через слот ISA. Прозрачный протокол блокированного квитирования (interlocked handshakes) позволяет автоматически настраиваться на скорость обмена, доступную и хосту, и периферийному устройству. Периферийное устройство может регулировать длительность всех фаз обмена с помощью всего лишь одного сигнала WAIT#. Протокол автоматически подстраивается и под длину кабеля – вносимые задержки только приведут к удлинению цикла.

Естественно, что периферийное устройство не должно иметь возможности вызвать “зависание” процессора на шинном цикле обмена. Этому препятствует механизм тайм-аутов РС, который принудительно завершает любой цикл обмена, длящийся более 15 мкс. В ряде реализации ЕРР за тайм-аутом интерфейса следит и сам адаптер – если ПУ не отвечает в течение определенного времени (5 мкс), цикл прекращается и в дополнительном регистре состояния адаптера фиксируется ошибка (состав и назначение дополнительных регистров не стандартизованы).

С программной точки зрения контроллер ЕРР-порта выглядит достаточно просто, К трем регистрам стандартного порта, имеющим смещение 0, 1 и 2 относительно базового адреса порта, добавлены два регистра (ЕРР Address Port и EPP Data Port), чтение и запись в которые вызывает генерацию связанных внешних циклов.

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

ЕРР-порт имеет расширенный набор регистров (табл. 4.), который занимает в пространстве ввода/вывода 5-8 смежных байт.

Таким образом при обмене данными и обеспечивается производительность, достигающая 2 Мбайт/с, вполне достаточная и для адаптеров локальных сетей, внешних дисков, стримеров и CD-ROM. Адресные циклы ЕРР всегда выполняются только в однобайтном режиме обращения.

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


7. Режим ЕСР

Протокол ЕСР (Extended Capability Port – порт с расширенными возможностями) был предложен фирмами Hewlett-Packard и Microsoft как прогрессивный режим связи с периферией типа принтеров и сканеров. Как и ЕРР, данный протокол обеспечивает высокопроизводительный двунаправленный обмен данными хоста с периферийными устройствами.

Протокол ЕСР в обоих направлениях обеспечивает два типа циклов:

- Циклы записи и чтения данных.

- Командные циклы записи и чтения.

Командные циклы подразделяются на два типа: передача канальных адресов и счетчика RLC (Run-Length Count).

Как и в других режимах 1284, протокол ЕСР переопределяет сигналы SPP (табл. 5.).

На рис. 3,а приведена диаграмма двух циклов прямой передачи: за циклом данных следует командный цикл. Тип цикла задается уровнем на линии HostAck: в цикле данных – высокий, в командном цикле – низкий. В командном цикле байт может содержать канальный адрес или счетчик RLE. Отличительным признаком является бит 8 (старший): если он нулевой, то биты 1-7 содержат счетчик RLE (0-127), если единичный – то канальный адрес. На рис. 3,б приведена пара циклов обратной передачи.

Прямая передача данных на внешнем интерфейсе состоит из следующих шагов:

1) Хост помещает данные на шину канала и устанавливает признак цикла данных (высокий уровень) или команды (низкий уровень) на линии HostAck;

2) Хост устанавливает низкий уровень на линии HostClk, указывая на действительность данных.

2) ПУ отвечает установкой высокого уровня на линии PeriphAck.

3) Хост устанавливает высокий уровень линии HostClk, и этот перепад может использоваться для фиксации данных в ПУ.

4) ПУ устанавливает низкий уровень на линии PeriphAck для указания на готовность к приему следующего байта.

Из рис. 3 видно и другое отличие ЕСР от ЕРР. Протокол ЕРР позволяет драйверу чередовать циклы прямой и обратной передачи, не запрашивая подтверждения на смену направления. В ЕСР смет направления должна быть согласована: хост запрашивает реверс установкой ReverseRequest#, после чего он должен дождаться его подтверждения сигналом AckReverse#. Только после этого возможна передача данных в другом направлении.

Обратная передача данных состоит из следующих шагов:

1) Хост запрашивает изменение направления канала, устанавливая низкий уровень на линии ReverseRequest#.

2) ПУ разрешает смену направления установкой низкого уровня на линии AckReverse#.

3) ПУ помещает данные на шину канала и устанавливает признак цикла данных (высокий уровень) или команды (низкий уровень) на линии PeriphAck.

4) ПУ устанавливает низкий уровень на линии PeriphClk, указывая на действительность данных.

5) Хост отвечает установкой высокого уровня на линии HostAck.

6) ПУ устанавливает высокий уровень линии PeriphClk, и этот перепад может использоваться для фиксации данных хостом.

7) Хост устанавливает низкий уровень на линии HostAck для указания на готовность к приему следующего байта.


8. Конфигурирование LPT-портов

Управление параллельным портом разделяется на два этапа – предварительное конфигурирование (Setup) аппаратных средств порта и текущее (оперативное) переключение режимов работы прикладным или системным ПО. Оперативное переключение возможно только в пределах режимов, разрешенных при конфигурировании. Таким образом обеспечивается возможность согласования аппаратуры и программного обеспечения и блокирования ложных переключений, вызванных некорректными действиями программы.

Порт, расположенный на системной плате, обычно конфигурируется через BIOS Setup.

Конфигурированию подлежат следующие параметры:

1) Базовый адрес, который может иметь значение ЗВСh, 378h и 278h. При инициализации BIOS проверяет наличие портов по адресам именно в этом порядке и, соответственно, присваивает обнаруженным портам логические имена LPT1, LPT2, LPTЗ. Адрес ЗВСh имеет адаптер порта, расположенный на плате MDA или HGC. Большинство портов по умолчанию конфигурируется на адрес 378h и может переключаться на 278h.

2) Используемая линия запроса прерывания: для LPT1 обычно используется IRQ7, для LPT2 – IRQ5. Во многих “настольных” применениях прерывания от принтера не используются, и этот дефицитный ресурс РС можно сэкономить. Однако при использовании скоростных режимов ЕСР (или Fast Centronics) работа по прерываниям может заметно повысить производительность и снизить загрузку процессора.

3) Использование канала ВМА для режимов ЕСР и Fast Centronics – разрешение и номер канала DMA.

Режим работы порта может быть задан в следующих вариантах:

- SPP – порт работает только в стандартном однонаправленном программно-управляемом режиме.

- PS/2, он же Bi-Directional – отличается от SPP возможностью реверса канала (с помощью установки CR.5=1).

- Fast Centronics – аппаратное формирование протокола Centronics с использованием FIFO-буфера и, возможно, DMA.

- ЕРР – в зависимости от использования регистров, порт работает в режиме SPP или ЕРР.

- ЕСР – по умолчанию включается в режим SPP или PS/2, записью в ЕСК может переводиться в любой режим ЕСР, но перевод в ЕРР записью в ЕСR кода режима 100 не гарантируется.

- ЕСР+ЕРР – то же, что и ЕСР, но запись в ЕСR кода режима 100 переводит порт в режим ЕРР.

Выбор режима ЕРР, ЕСР или Fast Centronics в BIOS Setup или джамперами на плате сам по себе не приводит к повышению быстродействия обмена с подключенной периферией, а только дает возможность драйверу и периферийному устройству установить оптимальный режим в пределах их “умений”. Однако большинство современных драйверов и приложений автоматически пытаются использовать эффективные режимы, так что “подрезать им крылья” установкой простых режимов без веских оснований не стоит.

Принтеры и сканеры могут пожелать использования режима ЕСР, причем Windows (3.1x, 95 и NT) имеет и системные драйверы для этого режима. В среде DOS печать через ЕСР поддерживается только специальным загружаемым драйвером.

Сетевые адаптеры, внешние диски и CD-ROM, подключаемые к параллельному порту, обычно могут использовать режим ЕРР. Для этого режима специальный драйвер пока еще не применяется, а возможность использования ЕРР обычно включена в драйвер самого подключаемого устройства.


9. Использование параллельных портов

Наиболее распространенным применением LPT-порта является, естественно, подключение принтера. Не вдаваясь в проблемы установки и использования программных драйверов, остановимся на аппаратных аспектах – режиме порта и кабеле подключения. Практически все принтеры могут работать с портом в режиме SPP, но применение расширенных режимов дает дополнительные преимущества:

- Двунаправленный режим (Вi-Di) не повышает производительность, но дает дополнительные возможности для сообщения состояния и параметров принтера. Скоростные режимы (Fast Centronics) существенно повышают производительность практически любого принтера (особенно лазерного), но могут потребовать более качественного кабеля (см. ниже). От принтера этот режим не требует каких-либо дополнительных “интеллектуальных” способностей.

- Режим ЕСР потенциально самый эффективный, и он имеет системную поддержку во всех вариантах Windows. Однако он реализует свои способности (включая аппаратную компрессию) не на всех принтерах. Из распространенных семейств ЕСР поддерживают принтеры НР DeskJet моделей 6xx, LaserJet начиная с 4-го, современные модели фирмы Lexmark. Требует применения кабеля, по частотным свойствам соответствующего IEEE 1284.


10. Параллельный порт и РпР

Большинство современных периферийных устройств, подключаемых к LPT-порту, поддерживает стандарт 1284 и функции РпР. Для поддержки этих функций компьютером с аппаратной точки зрения достаточно иметь контроллер интерфейса, поддерживающий стандарт 1284. Если подключаемое устройство поддерживает РпР, оно по протоколу согласования режимов 1284 способно “договориться” с портом, представляющим “интересы” компьютера, о возможных режимах обмена. Далее, для работы РпР подключенное устройство должно сообщить операционной системе все необходимые сведения о себе. Как минимум это идентификаторы производителя, модели и набор поддерживаемых команд. Более развернутая информация об устройстве может содержать идентификатор класса, подробное описание и идентификатор устройства, с которым обеспечивается совместимость, В соответствии с принятой информацией операционная система может предпринять действия по установке требуемого программного обеспечения поддержки данного устройства.


Рисунок 1

Рис. 1.


Рис. 2. Цикл записи данных.


Рисунок 3

Рис. 3,а.

Рис. 3,б.


Рисунок 4. Формат асинхронной передачи

Рис. 4. Формат асинхронной передачи.


Рисунок 5. Соединение по RS-232C нуль-модемным кабелем

Рис. 5. Соединение по RS-232C нуль-модемным кабелем.


Рисунок 6

Рис. 6.


Рисунок 7. Формирование сигналов RS-232C

Рис. 7. Формирование сигналов RS-232C: а – приемник 1489 (A – вход RS-232, C – управление гистерезисом (ТТЛ), Y – выход ТТЛ); б – передатчик 1488 (А, В – входы ТТЛ, Y – выход RS-232, VDD=+12 В, VEE=-12 В); в – таблица состояния выходов передатчика (*1 В=лог. 1).


Рисунок 8

Рис. 8.


Рисунок 9

Рис. 9.


Таблица 1

Сигнал | I/O* | Контакт | Назначение
Strobe# | I | 1 | Строб данных. Данные фиксируются по низкому уровню сигнала.
Data [0:7] | I | 2-9 | Линии данных. Data 0 (контакт 2) – младший бит
Ack# | O | 10 | Acknowledge – импульс подтверждения приема байта (запрос на прием следующего). Может использоваться для формирования запроса прерывания
Busy | O | 11 | Занято. Прием данных возможен только при низком уровне сигнала
PaperEnd | O | 12 | Высокий уровень сигнализирует о конце бумаги
Select | O | 13 | Сигнализирует о включении принтера (обычно в принтере соединяется резистором с цепью +5 В)
Auto LF# | I | 14 | Автоматический перевод строки. При низком символ CR (Carriage Return – возврат каретки), автоматически выполняет и функцию LF (Line Feed – перевод строки)
Error# | O | 32 | Ошибка: конец бумаги, состояние OFF-Line или внутренняя ошибка принтера
Init# | I | 31 | Инициализация (сброс в режим параметров умолчания, возврат к началу строки)
Slctln# | I | 36 | Выбор принтера (низким уровнем). При высоком уровне принтер не воспринимает остальные сигналы интерфейса
GND | - | 19-30 33 | Общий провод интерфейса


Таблица 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 6
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, 16 | 18, 20, 22, 24, 26 | - | -


Таблица 3. Сигналы порта в режиме ввода/вывода EPP.

Контакт | Сигнал SPP | Имя в EPP | I/O | Описание
1 | STROBE# | WRITE# | O | Низкий уровень – признак цикл записи, высокий – чтения
14 | AUTOFEEM# | DATASTB# | O | Строб данных. Низкий уровень устанавливается в циклах передачи данных
17 | SELECTING# | ADDRSTB# | O | Строб адреса. Низкий уровень устанавливается в адресных циклах
16 | INIT# | RESET# | O | Сброс ПУ (низким уровнем)
10 | ACK# | INTR$ | I | Прерывание от ПУ
11 | BUSY# | WAIT# | I | Сигнал квитирования. Низкий уровень разрешает начало цикла (установку строба в низкий уровень), переход в высокий – разрешает завершение цикла (снятие)
2-9 | D[8:0] | AD[8:0] | I/O | Двунаправленная шина адреса/данных
12 | PE | AckDataReq | I | Используется по усмотрению разработчика периферии
13 | SELECT | Xflag | I | Используется по усмотрению разработчика периферии
15 | ERROR# | DataAvail# | I | Используется по усмотрению разработчика периферии


Таблица 4. Регистры EPP-порта

Таблица 4. Регистры ЕРР-порта.

Имя регистра | Смещение | Режим | R/W | Описание
SPP Data Port | +0 | SPP/EPP | W | Регистр данных стандартного порта
SPP Status Port | +1 | SPP/EPP | R | Регистр состояния стандартного порта
SPP Control Port | +2 | SPP/EPP | W | Регистр управления стандартного порта
EPP Address Port | +3 | ЕРР | R/W | Регистр адреса ЕРР. Чтение или запись в него генерирует связанный цикл чтения или записи адреса ЕРР
EPP Data Port | +4 | ЕРР | R/W | Регистр данных ЕРР. Чтение (запись) генерирует связанный цикл чтения (записи) данных ЕРР
Not defined | +5…+7 | ЕРР | N/A | В некоторых контроллерах могут использоваться для 16-32-битных операций ввода/вывода


Таблица 5. Сигналы LPT-порта в режиме ввода/вывода ECP.

Конт | Сигнал | Имя в ЕСР | I/O | Описание
1 | STROBE# | HostClk | O | Используется в паре с PeriphAck для передачи в прямом направлении (вывод)
14 | AUTOFEEDS | HostAck | O | Индицирует тип команда/данные при передаче в прямом направлении. Используется в паре с PeriphClk для передачи в обратном направлении
17 | SELECTING | 1284Active | O | Высокий уровень указывает на обмен в режиме ШЕЕ 1284. (В режиме SPP уровень низкий)
16 | INIT# | ReverseRequest# | О | Низкий уровень переключает канал на передачу в обратном направлении
10 | АСК# | PeriphClk | I | Используется в паре с HostAck для передачи в обратном направлении
11 | BUSY | PeriphAck | I | Используется в паре с HostClk для передачи в обратном направлении. Индицирует тип команда/данные при передаче в обратном направлении
12 | PE | AckReverse# | I | Переводится в низкий уровень как подтверждение сигналу ReverseRequest#
13 | SELECT | Xflag* | I | Флаг расширяемости Extensibility flag
15 | ERRORS | PeriphRequest#* | I | Устанавливается ПУ для указания на доступность (наличие) обратного канала передачи*
2-9 | Data[0:7] | Data[0:7] | I/O | Двунаправленный канал данных


Таблица 6. Назначение сигналов интерфейса RS-232C

Таблица 6. Назначение сигналов интерфейса RS-232С

Сигнал | Назначение
PG | Защитная земля, соединяется с корпусом устройства и экраном кабеля
SG | Сигнальная (схемная) земля, относительно которой действуют уровни сигналов
TD | Последовательные данные – выход передатчика
RD | Последовательные данные – вход приемника
RTS | Выход запроса передачи данных: состояние “включено” уведомляет модем о наличии у терминала данных для передачи. В полудуплексном режиме используется для управления направлением – состояние «включено» является сигналом модему на переключение в режим передачи
CTS | Вход разрешения терминалу передавать данные. Состояние “выключено” аппаратно запрещает передачу данных. Сигнал используется для аппаратного управления потоками данных
DTR | Выход сигнала готовности терминала к обмену данными. Состояние “включено” поддерживает коммутируемый канал в состоянии соединения
DSR | Вход сигнала готовности от аппаратуры передачи данных (модем в рабочем режиме подключен к каналу и закончил действия по согласованию с аппаратурой на противоположном конце канала)
DCD | Вход сигнала обнаружения несущей удаленного модема
RI | Вход индикатора вызова (звонка). В коммутируемом канале этим сигналом модем сигнализирует о принятии вызова


Таблица 7. Регистры UART 16550A

Таблица 7. Регистры UART 16550А.

Доступ |  | Регистр |  | Чтение/запись R/W
Смещение | DLAB | Имя | Название
Оh | 0 | THR | Transmit Holding Register | WO
Оh | 0 | RBR | Receiver Buffer Register | RO
Оh | 1 | DLL | Divisor Latch LSB | R/W
Lh | 1 | DLM | Divisor Latch MSB | R/W
Ih | 0 | IER | Interrupt Enable Register | R/W
2h | X | IIR | Interrupt Identification | RO
2h | X | FCR | FIFO Control Register | WO
Зh | X | LCR | Line Control Register | R/W
4h | X | MCR | Modem Control Register | R/W
5h | X | LSR | Line Status Register | R/W
6h | X | MSR | Modem Status Register | R/W
7h | X | SCR | Scratch Pad Register | R/W


Параллельные и последовательные порты