Сайт о телевидении

Сайт о телевидении

» » Портал вычислительной техники. Параллельный интерфейс: lpt-порт

Портал вычислительной техники. Параллельный интерфейс: lpt-порт

Министерство образования и науки Российской Федерации

Федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования

«Комсомольский-на-Амуре государственный технический университет»

Кафедра «Промышленная электроника»

Тестирование LPT-порта персонального компьютера

Методические указания к лабораторной работе по курсу

«Отладочные средства микропроцессорных систем» для студентов направления 210100 «Электроника и наноэлектроника»

Комсомольск-на-Амуре 2013

Тестирование LPT-порта персонального компьютера: Методические указания к лабоpатоpной работе по курсу "Отладочные средства микропроцессорных систем" для студентов направления 210100 «Электроника и наноэлектроника» / Сост. С.М. Копытов. - Комсомольск-на-Амуpе: Комсомольский-на-Амуpе гос. техн. ун-т, 2013. - 19 с.

Рассмотрены параллельный интерфейс Centronics, сигналы и программная поддержка LPT-порта персонального компьютера, приведены рекомендации по его тестированию.

Предлагаемые методические указания предназначены для студентов направления 210100.

Печатается по постановлению редакционно-издательского совета Комсомольского-на-Амуре государственного технического университета.

Согласовано с отделом стандартизации.

Рецензент В.А. Егоров

Цель работы: изучить основные возможности стандартного LPT-порта. Освоить принципы программно-управляемого обмена информацией через параллельный порт. Научиться проверять его работоспособность.

1 основные сведения

1.1 Описание параллельного интерфейса

Исторически параллельный интерфейс был введен в персональный компьютер (ПК) для подключения принтера (отсюда и аббревиатура LPT – Line Printer – построчный принтер). Однако впоследствии параллельный интерфейс стал использоваться для подключения других периферийных устройств (ПУ). Базовая разновидность порта позволяет передавать данные только в одном направлении (от ПК к ПУ), однако позднее был разработан ряд стандартов двунаправленной передачи данных.

В современных офисных компьютерах LPT-порт, как правило, не предусмотрен, однако, установив мультикарту расширения портов, такой порт можно получить в свое распоряжение.

Адаптер параллельного интерфейса представляет собой набор регистров, расположенных в адресном пространстве устройств ввода/вывода. Количество регистров зависит от типа порта, однако три из них стандартны и присутствуют всегда. Это регистр данных, регистр состояния и регистр управления. Адреса регистров отсчитываются от базового, стандартные значения которого 3BCh, 378h, 278h. Порт может использовать аппаратное прерывание (IRQ7 или IRQ9). Многие современные системы позволяют изменять режим работы порта, его адрес и IRQ из настроек базовой системы ввода-вывода (Base Input Output System – BIOS) Setup.

LPT порт имеет внешнюю 8-битную шину данных, 5-битную шину сигналов состояния и 4-х битную шину управляющих сигналов. Очевидно, что порт асимметричен  12 линий работают на вывод и только 5 на ввод.

При начальной загрузке BIOS пытается обнаружить параллельный порт, причем делает это примитивным и не всегда корректным образом  по возможным базовым адресам портов передается тестовый байт, состоящий из чередующегося набора нулей и единиц (55h или AAh), затем производится чтение по тому же адресу, и если прочитанный байт совпал с записанным, то считается, что по данному адресу найден LPT порт. Определить адрес порта LPT4 BIOS не может. Для работы с ПУ в BIOS предусмотрено прерывание INT 17h, предоставляющее возможность передавать данные (побайтно), инициализировать ПУ и получать информацию о его состоянии.

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

Таблица 1 - Сигналы интерфейса Centronics

Направление

Назначение

Строб данных. Передается ЭВМ, данные фиксируются по низкому уровню сигнала.

Линии данных. D0 - младший бит.

Acknowledge – импульс подтверждения приема байта (запрос на прием следующего). Может использоваться для формирования прерывания.

Занят. Прием данных возможен только при низком уровне сигнала

"1" сигнализирует о конце бумаги

"1" сигнализирует о включении принтера (ГП – готовность приемника), обычно +5 В через резистор от источника питания ПУ)

Автоматический перевод строки. Если "0", то ПУ при получении символа CR (перевод каретки) выполняет функцию LF – перевод строки

Ошибка ПУ (off-line, нет бумаги, нет тонера, внутренняя ошибка)

Инициализация (переход к началу строки, сброс всех параметров на значения по умолчанию)

Выбор принтера. При "1" принтер не воспринимает остальные сигналы интерфейса

Общий провод

Примечание: столбец "T" – активный уровень сигнала: "1" – высокий активный уровень, "0" – низкий активный уровень. Столбец "Направление" – направление передачи по отношению к принтеру: I – Input (вход), O – Output (выход).

Сигнал Auto LF практически не применяется, но его неправильное значение приводит к тому, что принтер либо делает пропуски строк, либо печатает строки поверх друг друга, либо дублирует строки при печати в два прохода.

Отечественным аналогом интерфейса Centronics является ИРПР-М. Кроме него существует интерфейс ИРПР (устаревший), который отличается протоколом обмена, отсутствием сигнала "Error" и инверсией линий данных. Кроме того, ко всем входным линиям ИРПР подключены пары согласующих резисторов: 220 Ом к +5 В и 330 Ом к общему проводу. Это перегружает большинство интерфейсных адаптеров современных ПК.

Протокол обмена данными по интерфейсу Centronics приведен на рисунке 1.

Рисунок 1 - Протокол обмена данными по интерфейсу Centronics

Передача начинается с проверки источником сигнала Error. Если он установлен, то обмен не производится. Затем проверяется состояние сигнала Busy. Если он равен "0", то источник приступает к передаче байта данных. Для передачи байта источник выставляет на линии D0-D7 байт данных и выдает сигнал Strobe#. Приемник по сигналу Strobe# (здесь и далее по тексту значок "#" после названия сигнала является признаком того, что сигнал имеет низкий активный уровень) читает данные с шины данных и выставляет сигнал Busy на время его обработки. По окончании обработки приемник выдает сигнал ACK# и снимает сигнал Busy.

Если в течение длительного времени (6 – 12 сек) источник не получает ACK#, то он принимает решение об ошибке "тайм-аут" (time-out) устройства. Если после приема байта приемник по какой - либо причине не готов принимать данные, то он не снимает сигнал Busy. При программной реализации обмена по указанному протоколу желательно ограничить время ожидания снятия Busy (обычно 30 – 45 сек), иначе возможно зависание программы.

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

Названия сигналов соответствуют названиям сигналов интерфейса Centronics (таблица 1), а изображение разъема интерфейсного адаптера со стороны компьютера приведено на рисунке 2.

Таблица 2 - Разъем и шлейф стандартного LPT порта

Провод шлейфа

10, 22, 14, 16, 18, 20, 22, 24, 26

Примечание. I/O – направление передачи: I – вход; O – выход; O(I) – выход, состояние которого может быть считано при определенных условиях, O/I – выходные линии, состояние которых читается при чтении из соответствующих регистров порта. * - Вход ACK# соединен с питанием +5 В через резистор 10 кОм. Это сделано для исключения ложных прерываний, т.к. прерывание генерируется по отрицательному перепаду сигнала на входе ACK#.

Рисунок 2 - Разъем интерфейсного адаптера Cetronics DB-25S

В качестве недостатков стандартного LPT порта (SPP) следует отметить невысокую скорость передачи данных (100 – 150 кБ/сек), загрузку процессора при передаче данных, невозможность двунаправленного побайтного обмена. Существует "радиолюбительская" методика двунаправленного обмена, которая состоит в том, что для ввода данных на линии D0-D7 выставляют "1", а в качестве передатчика используют микросхемы с открытым коллектором, которые при открытом транзисторе могут "подсаживать" напряжение логической единицы до уровня порядка 1.5 – 1.7 В. Ток ограничен на уровне 30 мА. Как очевидно из уровней сигналов, они не соответствуют уровням ТТЛ, поэтому многие порты не работают в таком режиме или работают нестабильно. Кроме того, такой способ может быть опасен для адаптера порта, который будет работать с предельными для него токами.

Стандарт 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) Mode – двунаправленный обмен данными, при котором управляющие сигналы интерфейса генерируются аппаратно во время цикла обращения к порту (чтения или записи в порт). Эффективен при работе с устройствами внешней памяти, адаптерами локальных сетей;

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

В современных машинах с LPT-портом на системной плате режим порта – SPP, ЕРР, ЕСР или их комбинация задается в BIOS Setup. Режим Compatibility Mode полностью соответствует SPP и часто установлен по умолчанию. Все остальные режимы расширяют функциональные возможности интерфейса и повышают его производительность. Кроме того, стандарт регламентирует способ согласования режима, доступного как ПК, так и периферийному устройству.

Физический и электрический интерфейс. Стандарт IEEE 1284 определяет физические характеристики приемников и передатчиков сигналов. Существенным является то, что при передаче используются уровни ТТЛ логики.

Стандарт IEEE 1284 определяет три типа используемых разъемов: А (DB-25S), B (Centronics-36), C (новый малогабаритный 36-контактный разъем). Интерфейсные кабели могут иметь от 18 до 25 проводников (в зависимости от числа проводников GND). Обычные кабели могут работать только на низких скоростях при длине не более 2 метров. Улучшенные экранированные кабели с сигнальными проводниками, перевитыми с общими проводами, могут иметь длину до 10 метров. Такие кабели маркируются как "IEEE Std 1284 - 1994 Compliant".

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

Контроллер порта расположен в адресном пространстве устройств ввода-вывода и обращение к нему производится посредством команд IN и OUT ассемблера. Информацию о портах LPT1 – LPT3 можно получить, прочитав переменные BIOS, приведенные в таблице 3.

Таблица 3 - Переменные BIOS для LPT портов

Имя порта

Адрес в BIOS

Тип переменной

Описание

Базовый адрес порта LPT1. Если переменная равна 0, то порт LPT1 не найден

Константа, задающая тайм-аут

Базовый адрес порта LPT2. Если переменная равна 0, то порт LPT2 не найден

Константа, задающая тайм-аут

Базовый адрес порта LPT3. Если переменная равна 0, то порт LPT3 не найден

Константа, задающая тайм-аут

Базовый адрес порта LPT4. Если переменная равна 0, то порт LPT4 не найден

Константа, задающая тайм-аут

BIOS ищет порты по адресам Base: 3BCh, 378h, 278h. Порт LPT4 BIOS найти не может:

378h - параллельный адаптер LPT1;

278h - параллельный адаптер LPT2;

3BCh - параллельный адаптер LPT3.

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

Таблица 4 - Регистры стандартного LPT порта

Регистр данных (DR). Записанные в этот регистр данные выводятся на выходные линии интерфейса D0D7. Результат чтения этого регистра зависит от схемотехники адаптера и соответствуют либо записанным ранее данным, либо сигналам на линиях D0D7, что не всегда одно и тоже. При стандартном включении справедлив первый вариант - читаемые данные равны ранее записанным.

Регистр состояния (SR) . Представляет собой 5-ти битный порт ввода, на который заведены сигналы состояния от внешнего устройства. Допускает только чтение. Назначение битов данного регистра приведены в таблице 5.

Таблица 5 - Биты регистра состояния SR

Название

Назначение

Инверсное отображение состояния линии Busy (11). При низком уровне на линии 11 (Busy) – бит равен "1" – ПУ готово к приему очередного байта

Отображение состояния линии ACK# (10).

"0" – подтверждение приема,

"1" – обычное состояние

Отображение состояния линии Paper End (12).

"0" – норма, "1" – в ПУ нет бумаги

Отображение состояния линии Select (13).

"0" - ПУ не выбрано, "1" - ПУ выбрано

(инверсн.)

Отображение состояния линии Error (15).

"0" – ошибка ПУ, "1" – обычное состояние

Флаг прерывания по ACK# (только PS/2).

Обнуляется, если ACK# вызвал аппаратное прерывание. "1" – после сброса или после чтения регистра состояния

Не используются (резерв)

Регистр управления (CR). Регистр управления представляет собой 4-х битный порт вывода, допускающий чтение и запись. Биты 0, 1, 3 инвертируются, т.е. "1" в данных битах регистра управления соответствует "0" на соответствующих линиях порта. Назначение битов регистра управления приведены в таблице 6. Бит 5 используется только двунаправленными портами.

Таблица 6 - Биты регистра управления CR

Название

Назначение

Бит управления направлением порта.

"1" – режим ввода, "0" – режим вывода

Бит управления генерацией прерывания по ACK# . "1" – разрешить прерывание по спаду ACK# (10)

Управление линией SLCT IN# (17).

"1" – работа принтера разрешена.

Управление линией INIT# (16). "1" – обычное состояние, "0" – аппаратный сброс ПУ

Управление линией Auto LF# (14). "1" – включить режим "Auto LF", "0" – обычное состояние

Управление линией Strobe# (1). "1" – стробирование данных, "0" – обычное состояние

Программирование интерфейса. Для разработки прикладных программ необходимо выбрать язык программирования. Если требуется несложная, быстрая и компактная программа, которая не содержит сложных вычислительных операций, то для ее написания лучше выбирать язык низкого уровня (язык ассемблера). Язык ассемблера относится к группе машинно-ориентированных языков, т.е. каждому семейству микропроцессоров соответствует свой язык.

Язык высокого уровня следует выбирать, если необходимо производить сложные вычисления, или в случае, если высокое быстродействие программы не требуется. Объектные коды, полученные в результате трансляции программ, написанных на языке высокого уровня, обычно занимают в памяти ЭВМ намного больше места и исполняются медленнее в сравнении с программами на ассемблере. Часто применяется подход, когда критичные к быстродействию части программы пишутся на ассемблере, а вычислительные процедуры – на языке высокого уровня, например, на Паскале или Си.

Рассмотрим работу с регистрами интерфейса CENTRONICS на языке PASCAL или ассемблере:

Х - число типа "byte" (0..255). Например, при посылке 170 10 = =10101010 2 на линии d0–d7 единичный сигнал будет присутствовать на выводах d1, d3, d5, d7 (обозначение выводов начинается с d0). Число 170 останется на выводах разъёма до тех пор, пока Вы не перешлёте туда же другое число (это может сделать и другая программа) или не выключите компьютер. Заметьте, что адрес порта в команде задан в шестнадцатиричном виде, а посылка - в десятичном. Если вместо Паскаль-команды

Port[$378]:=170;

Вы примените

где d – переменная, то переменная примет значение последнего посланного в порт байта или, при переходе в режим приёма, значение байта, поданного на порт внешним устройством.

Пример чтения статус-регистра на языке Pascal:

В переменной d после выполнения программы будет отображено состояние порта. Допустим, переменная вернула значение 126 10 . В двоичном виде оно выглядит как 01111110 2 . Младшие (правые) три бита (нулевой, первый и второй) не используются, и почти равны 1, 1 и 0. Третий бит – 1, значит на ERROR высокий уровень. Та же ситуация на SELECT, Paper End, ACK и BUSY (не забывайте, что сигнал BUSY является инвертированным).

Приведем пример фрагмента программы, которая считывает байт с линий данных D0-D7:

Port[$37A]:=32 ; значение 32 "включает" единицу в пятом

d:=Port[$378] ; бите, переводя порт в режим ввода

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

1.2 Тестирование LPT-поpтa

Тестирование LPT-поpтa можно выполнить с помощью простой заглуш­ки, которую можно изготовить, воспользовавшись таблице 7.

Таблица 7 - Таблица цепей заглушки для тестирования LPT-поpтa

Направление

Направление

Весьма советуем с ним познакомиться. Там Вы найдете много новых друзей. Кроме того, это наиболее быстрый и действенный способ связаться с администраторами проекта. Продолжает работать раздел Обновления антивирусов - всегда актуальные бесплатные обновления для Dr Web и NOD. Не успели что-то прочитать? Полное содержание бегущей строки можно найти по этой ссылке .

Работа с LPT-портом в Win NT/2000/XP

LPT-порт (L ine P rinT er) - порт параллельного интерфейса, который изначально создавался для подключения принтера. BIOS обеспечивает поддержку LPT-порта, необходимую для организации вывода по интерфейсу Centronics. Адресное пространство порта занимает диапазон &H378-&H37F

LPT-порт имеет 12 выходных и 5 входных линий. Такое довольно большое количество линий делает возможным подключение к порту несложной аппаратуры, возможно даже не имеющей своего микроконтроллера. Поэтому этот порт, несмотря на исчезновение принтеров с LPT-интерфейсом, активно используется для подключения простых программаторов микросхем памяти, JTAG-интерфейсов для перепрошивки (замены программного обеспечения) спутниковых рессиверов, DVD-плееров и другой электронной техники. Популярен LPT-порт и у моддеров, поскольку позволяет подключить к компьютеру LCD-дисплеи без изготовления сложных плат-интерфейсов.

Windows 2000/XP не позволяет приложениям обращаться к портам ввода-вывода напрямую. Для этого нужно использовать драйвер, работающий в KERNEL-mode (в режиме ядра операционной системы).

Ограничение доступа к портам ввода-вывода для обычных прикладных программ (работающих в пользовательском режиме) позволяет сделать операционную систему более стабильной. Хотя с другой стороны никто не мешает программисту написать драйвер, обращающийся к портам.

Интересно, что для процессора Intel x86 можно написать драйвер, использующий один из двух принципиально разных подходов. Первый вариант - драйвер сам обращается к портам, а прикладная программа только указывает драйверу, что делать. Этот вариант в общем случае является стандартным и предпочтительным.

Для решения проблемы существуют четыре популярных варианта драйверов, позволяющих прикладной программе обращаться к портам ввода-вывода: драйвер DLPortIO , драйвер UserPort , драйвер GiveIO.sis , драйвер Port95nt .

Все четыре варианта практически равноценны.

Драйвер DLPortIO

DLportIO - драйвер доступа к портам из пакета DriverLINX от Scientific Software Tools, Inc. (http://www.sstnet.com) в сокращённом виде (без описания и лишней документации). Для нормальной работы программ обслуживания LCD-индикаторов можно порекомендовать именно этот вариант драйвера .

Собственно драйвер состоит из двух составляющих:
. DLPortIO.dll - Win32 DLL, обеспечивающая аппаратные функции ввода/вывода и
. DLPortIO.sys - драйвер для WinNT, работающий в режиме ядра ОС (не требуется для Win95/98)

В установочном пакете драйвера, помимо этих двух компонентов, есть ещё файл Install.exe, перемещающий два вышеназванных в папку драйверов Windows и регистрирующий их в системе.

Больше писать про этот драйвер и нечего. Настройка не требуется. Скачали, установили, пользуемся. Не забываем заглянуть в конец статьи и почитать обеспечения работоспособности LPT-порта.

Установка элементарная - запускаем файл Install.exe, устанавливаем. По окончанию установки заглядываем в папку C:\Windows\System32\drivers и проверяем наличие двух файлов драйвера (DLPortIO.sys и DLPortIO.dll). Если видим, что эти файлы так и не скопировались, берем их из установочного пакета и копируем вручную. Не переживайте, с компьютером ничего плохого не случится. Перегружаем компьютер и работаем с LPT-портом.

Если вдруг, в результате манипуляций с оборудованием, вы получите от драйвера сообщение такого плана: "dlportio.sys device driver not loaded. Port I/O will have no effect", не стоит паниковать. Исправляется эта проблема так:
. Запускаем regedit.
. Заходим в реестре в ветку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ .
. В папке dlportio изменяем значение параметра Start на 1 .
. Перезагружаем компьютер.

Драйвер UserPort

Драйвер UserPort открывает доступ к портам в Win NT/2000/XP для программ. Этим вариантом драйвера LPT-порта чаще всего пользуются "технари", работающие с программаторами и JTAG"ами, поскольку драйвер имеет хоть какие-то конфигурирующие настройки. Для работы программ обслуживания LCD-индикаторов его так же можно использовать.

В архиве драйвера имеются три файла:
. UserPort.sys - драйвер для WinNT, работающий в режиме ядра ОС,
. UserPort.exe - программа для настройки драйвера и
. UserPort.pdf - файл описания.

Установка UserPort:
. 1. Распакуйте архив в отдельную папку.
. 2. Скопируйте файл UserPort.sys в C:\Windows\System32\drivers

Настройка UserPort:
. Запустите UserPort.exe.
. Перед нами появится панель с 2-мя окошками.

Левое окошко относится к работе программы в ДОС окне, правое на полном экране. По умолчанию в них прописаны номера портов LPT - все их можно удалить с помощью кнопки "Remove". В оба окна нужно вписать нужные номера портов, которые планируется использовать.

Для использования с драйвера с большинством программаторов, JTAG"ов и программ обслуживания дисплеев, добавьте в левую колонку следующие параметры:
378 , 379 и 37A для LPT1
278 , 279 и 27A для LPT2 (Если в BIOS"е переназначен адрес LPT-порта).

Поясню, что означают цифры. 0x378 - это адрес порта.
. Адрес 0x378 называется базовым и служит для записи и чтения данных в порт и из порта, по шине данных D0-D7 .
. Адрес 0x379 (базовый+1) предназначен для чтения битов состояния из устройства, подключеного к LPT-порту.
. Адрес 0x37A (базовый+2) служит для записи битов управления устройства, подключенного к LPT-порту.

Добавляем так:
0x378-0x378
0x37A-0x37A



Добавлять адреса порта в список нужно через окно ввода и с помощью кнопки "Add". Адрес 0x379 чаще всего не нужен и его можно не вписывать, поскольку он предназначен для чтения битов состояния из устройства, подключеного к LPT-порту, а большинство устройств (программаторы, JTAG"и и LCD-индикаторы тем более) сигналы состояния не формируют. При желании можно наоборот вписать весь диапазон адресов, отведённых системой под LPT-порт 0x378-0x37F .

Заходим в Панель Управления , Система , выбираем закладку Оборудование , Диспетчер устройств , заходим в Порты (COM и LPT) и смотрим свойства LPT порта, по которому вы хотите установить соединение. В Свойствах открываем закладку Ресурсы и смотрим значение параметра Диапазон ввода/вывода (I/O) . (Обычно в Windows XP оно равно 378 - 37F )

После формирования списка адресов, нужно нажать кнопку "Start", драйвер будет запущен и появится сообщение:



Затем нажать кнопку "Update", при этом драйвер будет зарегистрирован в системе, затем "Exit". Разумеется, кнопку "Stop", пока мы пользуемся драйвером, нажимать не нужно.

Если при нажатии кнопки "Update" система уходит в перезагрузку, нужно пробовать запускать регистрацию драйвера в системе с правами администратора или попытаться временно отключить файрволл или антивирус, которые могут блокировать вмешательство в системные процессы. Если что-то не получилось, читайте UserPort.pdf

Для проверки, появился ли доступ к портам, можно запустить программу "lpt-test.exe" .

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



Отсутствие сообщения "Тестируется порт LPT (Адрес XXXh)" и последующих за ним строк говорит о том, что драйвер не работает.

Эта программа просто посылает в регистр данных Dx и регистр управления Ux порта LPT различные числа, а потом их же считывает. Регистр статуса Sx порта LPT только считывается. На экран выводится номер и адрес тестируемого порта LPT. Если порт исправный, то для регистров Dx и Ux не должно выдаваться никаких сообщений.



LPT-TEST v1.03 1995-2003 Copyright (C) С.Б.Алеманов. Москва "БИНАР".
Во время тестирования к портам не должно быть подключено периферийных устройств.
Dx - рег. данных (out), Ux - рег. управления (out), Sx - рег. статуса (inp).

Тестируется порт LPT1 (Адрес 378h)
2-й контакт (D0) - нет "1"
3-й контакт (D1) - нет "1"
4-й контакт (D2) - нет "1"
5-й контакт (D3) - нет "1"
6-й контакт (D4) - нет "1"
7-й контакт (D5) - нет "1"
8-й контакт (D6) - нет "1"
9-й контакт (D7) - нет "1"
1-й контакт (U0) - нет "1"
14-й контакт (U1) - нет "1"
17-й контакт (U3) - нет "1"
1-й контакт (U0) - нет "0"
14-й контакт (U1) - нет "0"
17-й контакт (U3) - нет "0"
15-й контакт (S3) - нет "0"


Если регистры Dx или Ux неисправны, то выводится сообщение "нет 0" или "нет 1" и указывается номер контакта на LPT-разъеме (сигналы на этом контакте можно посмотреть осциллографом). На входе регистра статуса Sx может быть как "0" так и "1", но обычно, когда к порту LPT ничего не подключено, на всех входах регистра статуса имеется "1". Появление же на входе регистра статуса "0" может являться признаком того, что вход пробит, если раньше там всегда была "1".
На некоторых машинах, если регистр данных или регистр управления неисправны, то доступ к LPT-порту вообще не появляется. Видимо, BIOS при включении компьютера тестирует порт LPT и, если он неисправный, то отключает его.

Если возникают проблемы, возможно, работе мешают какие-то драйвера, периодически посылая импульсы в порт LPT (это можно увидеть осциллографом). Например, можно в настройках принтера отключиться от порта LPT:
выключить LPT1: Порт принтера
включить FILE: Печатать в файл

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

Драйвер GiveIO.sys

В далеком 1996 году американский программист Дейл Робертс, провел серию экспериментов, результатом которых стал драйвер GiveIO.sys . До сих пор этот драйвер остается одним из популярных инструментов, позволяющих прикладной программе обращаться к портам ввода-вывода.

Сам автор драйвера настоятельно рекомендует использовать этот драйвер только в отладочных целях. Окончательная версия прикладной программы должна вместо самостоятельного обращения к портам ввода-вывода, поручить это дело драйверу, написанному специально для этих целей. Драйвер должен вести себя "корректно", проверяя, не используется ли уже устройство каким-нибудь другим приложением.

Однако, если вы абсолютно уверены в том, что требуемые порты ввода-вывода никто кроме вас не использует (например, у вас нет принтера, подключенного к LPT), вы можете спокойно пользоваться драйвером GiveIO.sys.

Установка драйвера :

1. Скачайте архив, распакуйте и скопируйте файл GiveIO.sys в каталог C:\Windows\System32\Drivers (подразумевается, что ваша Windows установлена в каталог C:\Windows) .
. 2. Запустите файл install.reg. На экране появится следующее сообщение:


. 3. Отвечаем утвердительно. При этом появится сообщение об успешном внесении информации в реестр. При желании, можно убедиться в этом. Запускаем редактор реестра regedit.exe и в ветви HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\giveio проверяем наличие следующих записей:


. 4. Перегружаем компьютер и проверяем работу программ, пользующихся драйвером.

Драйвером GiveIO.sys народ активно пользуется, и, со временем, появились и другие варианты его установки .

Например - драйвер GiveIO.sys при наличии файла с "информацией об оборудовании" GiveIO.inf можно установить через апплет "Установка оборудования".




Драйвер GiveIO.sys мы покажем операционной системе, чтобы она поверила в существование оборудования "GiveIO".

Скачать комплект файлов для такого варианта установки драйвера GiveIO.sys (giveio_sys_v2.rar - 78kb). Архив содержит файлы GiveIO.sys и GiveIO.inf, а так же подробную инструкцию по установке с иллюстрациями.

Помимо вариантов "ручной" установки драйвера, написано несколько вариантов инсталлятора, выполняющего установку в автоматическом режиме.

Скачать комплект файлов для автоматической установки драйвера GiveIO.sys (giveio_sys_install.rar - 28kb). Архив содержит файлы GiveIO.sys и instdrv.exe, а так же файл remove-giveio.cmd, с помощью которого драйвер GiveIO.sys можно удалить из системы.

Драйвер Port95nt

Термин "драйвер Port95nt" здесь будет не совсем корректен. По сути, это тот же драйвер DLPortIO из пакета DriverLINX от Scientific Software Tools, Inc , только в полном варианте, с парой утилит управления портом, с описанием и множеством примеров для программистов. Рядовому пользователю никакой пользы от дополнительных компонентов нет, а компоненты драйвера DLPortIO.sys и DLPortIO.dll абсолютно такие же, как и в сокращённой версии.

Упомянул о Port95nt, как о драйвере, по двум причинам. Первая - для полноты перечня встречающихся в интернете упоминаний о драйверах LPT-порта.

Вторая причина - в некоторых случаях могут быть проблемы с установкой сокращённой версии DLPortIO под WinXP. Обычно, но нечасто, это происходит в урезанных "авторских" сборках WinXP. В таком случае можно взять полную версию инсталлятора (1.5МБ). Хотя, по моему мнению, быстрее получится вручную положить в нужную папку DLPortIO.sys и DLPortIO.dll, чем заморачиваться с подбором инсталлятора, который сможет это сделать за вас.

Дополнительные меры

Кроме установки одного из вышеназванных драйверов, для нормальной работы порта LPT под ОС WinXP необходимо сделать правку реестра с помощью REG-файла xp_stop_polling.reg (xp_stop_polling.rar - 0,48kb)

Под WinXP иногда нестабильно работают устройства, использующие LPT-порт. Причиной таких сбоев может быть работа подсистемы Plug-and-Play (PnP) в Windows, периодически опрашивающей LPT с целью обнаружения подключенных устройств. Такой опрос производится при загрузке системы, но оно может происходить и при работе. К сожалению, драйвер DLportIO.sys и другие варианты драйверов не блокируют доступ к LPT от других программ при работе с портом клиента данного драйвера и подсистема PnP уверена, что порт не занят, обращается к нему и нарушает работу внешних устройств. Для устранения проблемы и служит REG-файл xp_stop_polling.reg . Этот файл прописывает в реестре Windows ключ, запрещающий такой опрос (poll) во время работы системы.

Помимо установки драйвера и ограничения одновременного доступа к порту для программ, для обеспечения аппаратной совместимости и нормальной работы оборудования с LPT-портом, необходимо в BIOS выставить правильный адрес и режим работы порта ("Normal", SPP или ЕРР, но не ECP).

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

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

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

В то же время, режим ЕСР нельзя использовать с устройствами, требующими жёстких таймингов (программаторами и JTAG-интерфейсами).

В завершение немного о терминологии :

. SPP (Standard Parallel Port - стандартный параллельный порт). Нередко, для упрощения понимания, в BIOS"е обозначается термином "Normal ".
. EPP (Enhanced Parallel Port - расширенный параллельный порт) - скоростной двунаправленный вариант интерфейса. Изменено назначение некоторых сигналов, введена возможность адресации нескольких логических устройств и 8-разрядного ввода данных, 16-байтовый аппаратный FIFO-буфер. Максимальная скорость обмена - до 2 Мб/с.
. ECP (Enhanced Capability Port - порт с расширенными возможностями) - интеллектуальный вариант EPP. Введена возможность разделения передаваемой информации на команды и данные, поддержка DMA и сжатия передаваемых данных методом RLE (Run-Length Encoding - кодирование повторяющихся серий).

Компьютер обрабатывает сигналы параллельными потоками, поэтому ему легче «общаться» с параллельными, а не с последовательными внешними портами. В 1984 г. в составе IBM PC впервые появился параллельный порт. Задуман он был как средство подключения матричных принтеров, отсюда и название LPT - Line PrinTer или Line Printer Terminal. В дальнейшем для принтеров стали использовать быстродействующий интерфейс USB, а LPT-порт начал постепенно вытесняться из компьютерных спецификаций. Остряки сравнивают LPT с чемоданом без ручки - и выбросить жалко, и тащить невозможно. Тем не менее, «ветеран» ещё на многое способен, если, конечно, он присутствует в конкретном компьютере.

Разъём LPT-порта имеет 25 контактов. Нормой «де-факто» считается розетка DB-25F в компьютере и вилка DB-25M в ответном кабеле (Табл. 4.2). Нумерация контактов вилок и розеток зеркальная (Рис. 4.7, а, б).

Таблица 4.2. Раскладка сигналов в 25-контактном разъёме LPT-порта

Расшифровка

Направление

Вход/выход

Вход/выход

Подтверждение

Готовность

Нет бумаги

Автоперенос

Вход/выход

Инициализация

Вход/выход

Выбор входа

Вход/выход

Рис. 4.7. Внешний вид спереди 25-контактных разъёмов LPT-порта: а) розетка DB-25F в компьютере; б) вилка DB-25M в соединительном кабеле.

Первоначально линии LPT-порта были однонаправленными SPP (Standard Parallel Port). Часть из них работала только на вход, часть - только на выход, что по набору сигналов и протоколу обмена соответствовало принтерному интерфейсу «Centronics». В 1994 г. был утверждён новый стандарт параллельного интерфейса IEEE 1284, предусматривающий двунаправленные линии и три режима работы: SPP, EPP (Enhanced Parallel Port), ECP (Extended Capabilities Port).

Уровни электрических сигналов LPT-порта совпадают с обычными «пятивольтовыми» логическими микросхемами. Раньше в компьютерах применялись буферные TTJl-микросхемы серии 74LSxx, позднее - КМОП-микросхемы и БИС, примерно эквивалентные серии 74ACxx. В последнем случае можно ориентировочно считать, что НИЗКИЙ уровень равен 0.1..0.2 В, а ВЫСОКИЙ - 4.5…4.9 В.

Стандартом регламентируется нагрузка 14 мА по каждому выходу при сохранении напряжения не менее +2.4 В ВЫСОКОГО и не более +0.4 В НИЗКОГО уровня. Однако в разных материнских платах выходные буферы LPT-порта могут иметь разную нагрузочную способность, в том числе и ниже стандарта («слабый» порт).

Требования к соединительным кабелям, подключаемым к LPT-порту:

Сигнальные провода должны быть свиты в пары с общим проводом GND;

Каждая пара должна иметь импеданс 56…68 Ом в диапазоне частот 4… 16 M Гц;

Если применяется плоский ленточный кабель, то сигнальные провода должны физически чередоваться с общим проводом GND (локальные экраны);

Уровень перекрёстных помех между сигналами не более 10%;

Кабель должен иметь экран, покрывающий не менее 85% внешней поверхности. На концах кабеля экран должен быть окольцован и соединён с «земляным» контактом разъёма;

В разъёме кабеля можно запаять на контакты 1…17 последовательные резисторы C2-23 (OMJIT-O.125) сопротивлением 100…300 Ом (Рис. 4.8). Это позволит защитить компьютер от случайных коротких замыканий в нагрузке и уменьшить высокочастотный «звон» на фронтах сигналов.

Рис. 4.8. Электрическая схема LPT-кабеля с «антизвонными» резисторами.

Схемы соединения MK с LPT-портом можно разделить на три группы:

Приём сигналов от компьютера (Рис. 4.9, а…з);

Передача сигналов в компьютер (Рис. 4.10, а…д);

Приём/передача сигналов одновременно (Рис. 4.11, a…e).

В схемах приняты некоторые упрощения. В качестве входного сигнала указывается в основном «DO», а в качестве выходного - «АСК», хотя могут быть и другие, перечисленные в Табл. 4.2. На каждом конкретном компьютере работоспособность самодельных схем необходимо проверять экспериментально, что связано с наличием «сильных» и «слабых» LPT-портов по нагрузочной способности.

Рис. 4.9. Схемы ввода сигналов из LPT-порта в MK (начало):

а) резистор R1 ограничивает входной ток. Элементы R2, C1 могут отсутствовать, но они уменьшают «звон» на фронтах сигналов при длинном кабеле;

б) буферный транзистор VT1 инвертирует сигнал. Диод VD1 не обязателен, но он защищает транзистор от ошибочной подачи большого отрицательного напряжения. Если не ставить резистор R2, то схема останется работоспособной, однако при отстыковке кабеля от LPT-порта возможны ложные срабатывания транзистора VT1 от внешних помех и наводок;

в) диод VD1 отсекает помехи и повышает порог срабатывания транзистора VT1. Резистор R1 надёжно закрываеттранзистор VT1 при НИЗКОМ уровне с LPT-порта;

г) буферный логический элемент DD1 имеет выход с открытым коллектором. Фронты сигналов формируются элементами R1, C1. Можно вместо инвертора DD1 поставить повторитель К155ЛП9, сделав соответствующие изменения в программе MK и компьютера;

д) триггер Шмитта DD1 (замена - К555ТЛ2) повышает помехоустойчивость. Чем меньше сопротивление резисторов R1, R2, тем больше крутизна фронтов сигнала. При отключённом кабеле от LPT-порта резистор R1 не даёт входу микросхемы DD1 «висеть в воздухе»;

е) последовательное включение двух логических элементов DD11, /)/)/.2увеличивает (восстанавливает) крутизну фронтов сигнала. Резистор R1 устраняет выбросы, «звон»;

Рис. 4.9. Схемы ввода сигналов из LPT-порта в MK (окончание):

ж) данные, поступающие от LPT-порта, предварительно помещаются в промежуточный регистр DD1. Запись производится при ВЫСОКОМ уровне на входе «С» микросхемы DD1, хранение - при НИЗКОМ. Такое решение устраняет помехи, поскольку в LPT-порт в зависимости от установленных в компьютере драйверов периодически могут выводиться случайные данные. Их устраняют программно, например, путём многократного считывания входного сигнала с линий MK;

з) буферизация LPT-порта мощными транзисторными ключами, находящимися в микросхеме DA1 фирмы Texas Instruments. Резисторы R1…R8 могут иметь в 10… 15 раз более низкие сопротивления, что позволяет подключить параллельно выходам микросхемы А4/другие узлы устройства.

Рис. 4.10. Схемы вывода сигналов из MK в LPT-порт (начало):

а) непосредственное подключение выхода MK без буферных элементов. Резисторы R1, R2 уменьшают отражение сигналов в линии. Кроме того, резистор R2 защищает выход MK от случайного короткого замыкания с цепью GND в проводах соединительного кабеля;

б) триггер Шмитта DD1 служит защитным буфером для MK при аварийной ситуации на выходе (короткое замыкание или подача большого напряжения);

в) микросхема DD1 имеет выход с открытым коллектором, что защищает её от короткого замыкания в проводах и разъёмах соединительного кабеля;

г) подача двух противофазных сигналов в компьютер. Цель - программная необходимость или организация дублирующего (контрольного) канала передачи данных;

д) опторазвязка на элементах HL1, BL1, которые применяются в компьютерных механических «мышах». Транзистор КГ/усиливает и инвертирует сигнал. Для нормальной работы устройства компьютер должен выставить ВЫСОКИЙ уровень на линии «D8».

Рис. 4.11. Комбинированные схемы ввода/вывода сигналов между MK и LPT-портом (начало):

а) если компьютер выставляет на линии «DO» ВЫСОКИЙ уровень, то MK в режиме выхода может генерировать сигнал «АСК» через резистор R1. Если MK переводится в режим входа, то компьютер может передавать ему данные по линии «DO» через диод VD1 при этом внутренний « pull-up» резистор MK формирует ВЫСОКИЙ уровень;

б) сигнал от LPT-порта вводится в MK через инвертор на транзисторе VT1 при этом компьютер должен выставить ВЫСОКИЙ уровень на линии «D2». Информация в MK вводится с линии «DO» через резистор R1 Высокое сопротивление резистора R1 физически развязывает входной и выходной каналы;

Рис. 4.11. Комбинированные схемы ввода/вывода сигналов между MK и LPT-портом (окончание):

б) сигнал от LPT-порта вводится в MK через инвертор на транзисторе VT1, при этом компьютер должен выставить НИЗКИЙ уровень на линии «DO». Информация в МК вводится через элементы R1, R3, VT2;

г) сигнал от LPT-порта вводится в MK через повторитель на транзисторе VT1, при этом компьютер должен выставить ВЫСОКИЙ уровень на линии «DO». Информация в MK вводится через повторитель на микросхеме DD1\

ж) сигналы «D0»…«D3» вводятся в MK при НИЗКОМ уровне на линии «INIT», при этом компьютер должен настроить линии «D4»…«D7» как входы. В настройках BIOS компьютера надо установить двунаправленный режим EPP или ЕСР для LPT-порта. Информация в компьютер из МК передаётся по линиям «D4»…«D7» при ВЫСОКОМ уровне на линии «INIT». Резистор R1 переводит выходы микросхемы DD1 в Z-состояние при отключённом кабеле от LPT-порта;

e) сигнал от MK в LPT-порт вводится через повторитель DD1.2, при этом компьютер должен выставить ВЫСОКИЙ уровень на линии «D2» и НИЗКИЙ уровень на линии «D5». Информация в MK вводится через повторитель DD1.1 при НИЗКОМ уровне налинии «D2». Стробирование сигналов по входам «Е1», «Е2» микросхемы DD1 повышает достоверность передачи данных.

Параллельные интерфейсы характеризуются тем, что в них для передачи бит в слове используются отдельные сигнальные линии, и биты передаются одновременно. Параллельные интерфейсы используют логические уровни ТТЛ (транзисторно-транзисторной логики), что ограничивает длину кабеля из-за невысокой помехозащищенности ТТЛ-интерфейса. Гальваническая развязка отсутствует. Параллельные интерфейсы используют для подключения принтеров. Передача данных может быть как однонаправленной (Centronics), так и двунаправленной (Bitronics). Иногда параллельный интерфейс используют для связи между двумя компьютерами - получается сеть, "сделанная на коленке" (LapLink). Ниже будут рассмотрены протоколы интерфейсов Centronics, стандарт IEEE 1284, а также реализующие их порты PC.

1.1. Интерфейс Centronics и LPT-порт

Для подключения принтера по интерфейсу Centronics в PC был введен порт параллельного интерфейса - так возникло название LPT-порт (Line PrinTer - построчный принтер). Хотя сейчас через этот порт подключаются не только построчные принтеры, название "LPT" осталось.

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

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

Интерфейс Centronics поддерживается принтерами с параллельным интерфейсом. Его отечественным аналогом является интерфейс ИРПР-М.

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

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

Рис. 1.1. Передача данных по протоколу Centronics

Контакт DB-25S Номер провода в кабеле Назначение
I/O* Reg. Bit** Сигнал
1 1 O/I CR.0\ Strobe#
2 3 O(I) DR.0 Data 0
3 5 O(I) DR.1 Data 1
4 7 O(I) DR.2 Data 2
5 9 O(I) DR.3 Data 3
6 11 O(I) DR.4 Data 4
7 13 O(I) DR.5 Data 5
8 15 O(I) DR.6 Data 6
9 17 O(I) DR.7 Data 7
10 19 I*** SR.6 Ack#
11 21 I SR.7 Busy
12 23 I SR.5 PaperEnd (PE)
13 25 I SR.4 Select
14 2 O/I CR.1\ Auto LF#
15 4 I SR.3 Error*
16 6 O/I CR.2 Init#
17 8 O/I CR.3\ Select ln#
18-25 10, 12, 14, 16, 18, 20, 22, 24, 26 - - -
* I/O задает направление передачи (вход/выход) сигнала порта. O/I обозначает выходные линии, состояние которых считывается при чтении из портов вывода; (I) - выходные линии, состояние которых может быть считано только при особых условиях (см. ниже).
** Символом "\" отмечены инвертированные сигналы (1 в регистре соответствует низкому уровню линии).
*** Вход Ack# соединен резистором (10 кОм) с питанием +5 В.

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

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

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

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

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

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

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 - РЕ (Paper End) - отображения состояния линии Paper End (12). Единичное значение соответствует высокому уровню линии - сигналу о конце бумаги в принтере.
  • SR.4 - Select - отображения состояния линии Select (13). Единичное значение соответствует высокому уровню линии - сигналу о включении принтера.
  • SR.3 - Error - отображения состояния линии Error (15). Нулевое значение соответствует низкому уровню линии - сигналу о любой ошибке принтера.
  • SR.2 - PIRQ - флаг прерывания по сигналу Ack# (только для порта PS/2). Бит обнуляется, если сигнал Ack# вызвал аппаратное прерывание. Единичное значение устанавливается по аппаратному сбросу и после чтения регистра состояния.
  • SR - зарезервированы.

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

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

  • CR - зарезервированы.
  • CR.5 - Direction - бит управления направлением передачи (только для портов PS/2). Запись единицы переводит порт данных в режим ввода. При чтении состояние бита не определено.
  • CR.4 - AcklntEn (Ack Interrupt Enable) - единичное значение разрешает прерывание по спаду сигнала на линии Ack# - сигнал запроса следующего байта.
  • CR.3 - Select ln - единичное значение бита соответствует низкому уровню на выходе Select ln# (17) - сигналу, разрешающему работу принтера по интерфейсу Centronics.
  • CR.2 - Init - нулевое значение бита соответствует низкому уровню на выходе Init# (16) - сигналу аппаратного сброса принтера.
  • CR.1 - Auto LF - единичное значение бита соответствует низкому уровню на выходе Auto LF# (14) - сигналу на автоматический перевод строки (LF - Line Feed) по приему байта возврата каретки (CR). Иногда сигнал и бит называют AutoFD или AutoFDXT.
  • CR.0 - Strobe - единичное значение бита соответствует низкому уровню на выходе Strobe# (1) - сигналу стробирования выходных данных.

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

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

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

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

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

1.1.3. Расширения параллельного порта

Недостатки стандартного порта частично устраняли новые типы портов, появившиеся в компьютерах PS/2.

Двунаправленный порт 1 (Type 1 parallel port) -интерфейс, введенный в PS/2. Такой порт кроме стандартного режима может работать в режиме ввода или двунаправленном режиме. Протокол обмена формируется программно, а для указания направления передачи в регистр управления порта введен специальный бит CR.5:0 - буфер данных работает на вывод, 1 - на ввод. Не путайте этот порт, называемый также enhanced bidirectional, с ЕРР. Данный тип порта прижился и в обычных компьютерах.

Порт с прямым доступом к памяти (Type 3 DMA parallelport) применялся в PS/2 моделей 57, 90, 95. Был введен для повышения пропускной способности и разгрузки процессора при выводе на принтер. Программе, работающей с портом, требовалось только задать в памяти блок данных, подлежащих выводу, а затем вывод по протоколу Centronics производился без участия процессора.

Позже появились другие адаптеры LPT-портов, реализующие протокол обмена Centronics аппаратно - Fast Centronics. Некоторые из них использовали FIFO-буфер данных - Parallel Port FIFO Mode. He будучи стандартизованными, такие порты разных производителей требовали использования собственных специальных драйверов. Программы, использующие прямое управление регистрами стандартных портов, не умели более эффективно их использовать. Такие порты часто входили в состав мультикарт VLB. Существуют их варианты с шиной ISA, в том числе встроенные.

1.2. Стандарт 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. Остальные режимы подробно рассмотрены ниже.

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

Стандарт IEEE 1284 определяет физические характеристики приемников и передатчиков сигналов. Спецификации стандартного порта не задавали типов выходных схем, предельных значений величин нагрузочных резисторов и емкости, вносимой цепями и проводниками. На относительно невысоких скоростях обмена разброс этих параметров не вызывал проблем совместимости. Однако расширенные (функционально и по скорости передачи) режимы

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

  • Уровни сигналов без нагрузки не должны выходить за пределы -0,5... +5,5 В.
  • Уровни сигналов при токе нагрузки 14 мА должны быть не ниже +2,4 В для высокого уровня (Vон) и не выше +0,4 В для низкого уровня (Vol) на постоянном токе.
  • Выходной импеданс Ro, измеренный на разъеме, должен составлять 50±5 Ом на уровне Voh~Vol. Для обеспечения заданного импеданса используют последовательные резисторы в выходных цепях передатчика. Согласование импеданса передатчика и кабеля снижает уровень импульсных помех.
  • Скорость нарастания (спада) импульса должна находиться в пределах 0,05-0,4 В/нс.

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

  • Допустимые пиковые значения сигналов -2,0...+7,0 В.
  • Пороги срабатывания должны быть не выше 2,0 В (Vh) для высокого уровня и не ниже 0,8 В (Vl) для низкого.
  • Приемник должен иметь гистерезис в пределах 0,2...1,2 В (гистерезисом обладают специальные микросхемы — ).
  • Входной ток микросхемы (втекающий и вытекающий) не должен превышать 20 мкА, входные линии соединяются с шиной питания +5 В резистором 1,2 кОм.
  • Входная емкость не должна превышать 50 пФ.

Когда появилась спецификация ЕСР, фирма Microsoft рекомендовала применение динамических терминаторов на каждую линию интерфейса. Однако в настоящее время следуют спецификации IEEE 1284, в которой динамические терминаторы не применяются. Рекомендованные схемы входных, выходных и двунаправленных цепей приведены на рис. 1.2.

Стандарт IEEE 1284 определяет три типа используемых разъемов. Типы A (DB-25) и В (Centronics-36) используются в традиционных кабелях подключения принтера, тип С - новый малогабаритный 36-контактный разъем.

Рис. 1.2. Оконечные цепи линий интерфейса IEEE 1284:

а - однонаправленных, б - двунаправленных

Традиционные интерфейсные кабели имеют от 18 до 25 проводов, в зависимости от числа проводников цепи GND. Эти проводники могут быть как перевитыми, так и нет. К экранированию кабеля жестких требований не предъявлялось. Такие кабели вряд ли будут надежно работать на скорости передачи 2 Мбайт/с и при длине более 2 м. Стандарт IEEE 1284 регламентирует свойства кабелей. Все сигнальные линии должны быть перевитыми с отдельными обратными (общими) проводами.

  • Каждая пара должна иметь импеданс 62±б Ом в частотном диапазоне 4-16 МГц.
  • Уровень перекрестных помех между парами не должен превышать 10%.
  • Кабель должен иметь экран (фольгу), покрывающий не менее 85% внешней поверхности. На концах кабеля экран должен быть окольцован и соединен с контактом разъема.

Кабели, удовлетворяющие этим требованиям, маркируются надписью "lEEEStd 1284-1994 Compliant". Они могут иметь длину до 10 метров, обозначения типов приведены в табл. 1.3.

1.2.2. Режимы передачи данных

IEEE 1284 определяет пять режимов обмена, один из которых полностью соответствует стандартному выводу по протоколу Centronics. Стандарт определяет способ, по которому ПО может определить режим, доступный и хосту (PC), и ПУ (или присоединенному второму компьютеру). Режимы нестандартных портов, реализующих протокол обмена Centronics аппаратно (Fast Centronics, Parallel Port FIFO Mode), могут и не являться режимами IEEE 1284, несмотря на наличие в них черт ЕРР и ЕСР.

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

  • Хост - компьютер, обладающий параллельным портом.
  • ПУ - периферийное устройство, подключаемое к этому порту.
  • Ptr - в обозначениях сигналов обозначает передающее ПУ.
  • Прямой канал - канал вывода данных от хоста в ПУ.
  • Обратный канал - канал ввода данных в хост из ПУ.

Полубайтный режим ввода - Nibble Mode

Предназначен для двунаправленного обмена. Может работать на всех стандартных портах. Порты имеют 5 линий ввода состояния, используя которые ПУ может посылать в хост байт тетрадами (nibble - полубайт, 4 бита) за два приема. Сигнал Ack#, вызывающий прерывание, которое может использоваться в данном режиме, соответствует биту 6 регистра состояния, что усложняет программные манипуляции с битами при сборке байта. Сигналы порта приведены в табл. 1.4, временные диаграммы - на рис. 1.3.

Рис. 1.3. Прием данных в полубайтном режиме

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

  1. ПУ в ответ помещает тетраду на входные линии состояния.
  2. ПУ сигнализирует о готовности тетрады установкой низкого уровня на линии PtrClk.
  3. Хост устанавливает высокий уровень на линии HostBusy, указывая на занятость приемом и обработкой тетрады.
  4. Шаги 1-5 повторяются для второй тетрады, после чего ПУ может сигнализировать о наличии данных для хоста (Selekt) и занятости прямого канала (Busy); вызывать прерывание (ACK).
Контакт Сигнал SPP I/O Бит Описание
14 AutoFeed# O CR.1\ HostBusy - сигнал квитирования. Низкий уровень означает готовность к приему тетрады, высокий подтверждает прием тетрады
17 Selectln# O CR.3\
10 Ack# I SR.6 PtrClk. Низкий уровень означает готовность тетрады, высокий - ответ на сигнал HostBusy
11 Busy I SR.7 Прием бита данных 3, затем бита 7
12 РЕ I SR.5 Прием бита данных 2, затем бита 6
13 Sdect I SR.4 Прием бита данных 1, затем бита 5
15 Error# I SR.3 Прием бита данных 0, затем бита 4

Полубайтный режим сильно нагружает процессор, так как сигналы CR и SR формируются программно, и поэтому поднять скорость обмена выше 50 Кбайт/с не удается. Безусловное его преимущество в том, что он работает на всех портах. Его применяют в тех случаях, когда поток данных невелик (например, для связи с принтерами). Однако при связи с адаптерами локальных сетей, внешними дисковыми накопителями и CD-ROM прием больших объемов данных требует изрядного терпения со стороны пользователя.

Двунаправленный байтный режим - Byte Mode

В данном режиме данные принимаются с использованием двунаправленного порта, у которого выходной буфер данных может отключаться установкой бита С/?.5=1. Как и предыдущие, режим является программно-управляемым - все сигналы квитирования анализируются и устанавливаются драйвером. Сигналы порта описаны в табл. 1.5, временные диаграммы - на рис. 1.4.

Контакт Сигнал SPP Имя в байтном режиме I/O Бит Описание
1 Strobe# HostClk O CR.0\ Импульс (низкого уровня) подтверждает прием байта в конце каждого цикла
14 AutoFeed# HostBusy O CR.1\ Сигнал квитирования. Низкий уровень означает готовность хоста принять байт; высокий уровень устанавливается по приему байта
17 Selectln# 1284Active O CR.3\ Высокий уровень указывает на обмен в режиме IEEE 1284 (в режиме SPP уровень низкий)
16 Init# Init# O CR.2 Не используется; установлен высокий уровень
10 Ack# PtrClk I SR.6 Устанавливается в низкий уровень для индикации действительности данных на линиях Data . Низкий уровень устанавливается в ответ на сигнал HostBusy
11 Busy PtrBusy I SR.7\ Состояние занятости прямого канала
12 PE AckDataReq* 1 SR.5
13 Select Xflag* I SR.4 Флаг расширяемости
15 Error# DataAvail#* I SR.2 Устанавливается ПУ для указания на наличие обратного канала передачи
2-9 Data Data I/O DR Двунаправленный (прямой и обратный) канал данных

Рис. 1.4. Прием данных в байтном режиме

Фазы приема байта данных:

  1. Хост сигнализирует о готовности приема данных установкой низкого уровня на линии HostBusy.
  2. ПУ в ответ помещает байт данных на линии Data .
  3. ПУ сигнализирует о действительности байта установкой низкого уровня на линии PtrClk.
  4. Хост устанавливает высокий уровень на линии HostBusy, указывая на занятость приемом и обработкой байта.
  5. ПУ отвечает установкой высокого уровня на линии PtrClk.
  6. Хост подтверждает прием байта импульсом HostClk.
  7. Шаги 1-6 повторяются для каждого следующего байта.

Побайтный режим позволяет поднять скорость обратного канала до скорости прямого канала в стандартном режиме. Однако он может работать только на двунаправленных портах.

Режим ЕРР

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

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

  • запись данных;
  • чтение данных;
  • запись адреса;
  • чтение адреса.

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

Контакт Сигнал SPP Имя в ЕРР I/O Описание
1 Strobe" Write# O Низкий уровень - цикл записи, высокий - цикл чтения
14 AutoLF# DataStb# O Строб данных. Низкий уровень устанавливается в циклах передачи данных
17 Selecting AddrStbft O Строб адреса. Низкий уровень устанавливается в адресных циклах
16 Init# Reset# O Сброс (низким уровнем ПУ переводится в режим совместимости)
10 Ack# INTR# I Прерывание от ПУ
11 Busy Wait# I Сигнал квитирования. Низкий уровень разрешает начало цикла (установку строба в низкий уровень), переход в высокий - разрешает завершение цикла (снятие строба)
2-9 Data AD I/O Двунаправленная шина адреса/данных
12 PaperEnd AckDataReq* I
13 Select Xflag* I Используется по усмотрению разработчика периферии
15 Error# DataAvail#* I Используется по усмотрению разработчика периферии
* Сигналы действуют в последовательности согласования (см. далее).

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

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

В отличие от программно-управляемых режимов, описанных ранее, внешние сигналы EPP-порта для каждого цикла обмена формируются аппаратно по одной операции записи или чтения в регистр порта. На рис. 1.5 приведена диаграмма цикла записи данных, иллюстрирующая внешний цикл обмена, вложенный в цикл записи системной шины процессора (иногда эти циклы называют связанными). Адресный цикл записи отличается от цикла данных только стробом внешнего интерфейса.

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

  1. Программа выполняет цикл вывода (IOWR#) в порт 4 (EPP Data Port).
  2. Адаптер устанавливает сигнал Write* (низкий уровень), и данные помещаются на выходную шину LPT-порта.
  3. При низком уровне Wait# устанавливается строб данных.
  4. Порт ждет подтверждения от ПУ (перевода Wait# в высокий уровень).
  5. Снимается строб данных - внешний ЕРР-цикл завершается.
  6. Завершается процессорный цикл вывода.
  7. ПУ устанавливает низкий уровень Wait#, указывая на возможность начала следующего цикла.

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

Пример адресного цикла чтения приведен на рис. 1.6. Цикл чтения данных отличается только применением другого стробирующего сигнала.


Рис. 1.6. Адресный цикл чтения ЕРР

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

Устройства с интерфейсом ЕРР, разработанные до принятия IEEE 1284, отличаются началом цикла: строб DataStb# или AddrStb# устанавливается независимо от состояния WAIT#. Это означает, что ПУ не может задержать начало следующего цикла (хотя может растянуть его на требуемое время). Такая спецификация называется ЕРР 1.7 (предложена Xircom). Именно она применялась в контроллере 82360. Периферия, совместимая с ЕРР 17, будет нормально работать и с контроллером ЕРР 1284, но периферия в стандарте ЕРР 1284 может отказаться работать с контроллером ЕРР 1.7.

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

Назначение регистров стандартного порта сохранено для совместимости fPP-порта с ПУ и ПО, рассчитанными на применение программно-управляемого обмена. Поскольку сигналы квитирования адаптером вырабатываются аппаратно, при записи в регистр управления СП биты 0, 1 и 3, соответствующие сигналам Strobeft, AutoFeed# и Selecting должны иметь нулевые значения. Программное вмешательство могло бы нарушить последовательность квитирования. Некоторые адаптеры имеют специальные средства защиты (ЕРР Protect), при включении которых программная модификация этих бит блокируется.

Использование регистра данных ЕРР позволяет осуществлять передачу блока данных с помощью одной инструкции REP INSB или REP OUTSB. Некоторые адаптеры допускают 16-/ 32-битное обращение к регистру данных ЕРР. При этом адаптер просто дешифрует адрес со смещением в диапазоне 4-7 как адрес регистра данных ЕРР, но процессору сообщает о разрядности 8 бит. Тогда 16- или 32-битное обращение по адресу регистра данных ЕРР приведет к автоматической генерации двух или четырех шинных циклов по нарастающим адресам, начиная со смещения 4. Эти циклы будут выполняться быстрее, чем то же количество одиночных циклов. Таким образом обеспечивается производительность до 2 Мбайт/с, достаточная для адаптеров локальных сетей, внешних дисков, стриммеров и CD-ROM. Адресные циклы ЕРР всегда выполняются только в однобайтном режиме.

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

Режим ЕСР

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

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

  • циклы записи и чтения данных;
  • командные циклы записи и чтения.

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

В отличие от ЕРР, вместе с протоколом ЕСР сразу появился стандарт на программную (регистровую) модель его адаптера, изложенный в документе "The IEEE 1284 Extended Capabilities Port Protocol and ISA Interface Standard" компании Microsoft. Этот документ определяет свойства протокола, не заданные стандартом IEEE 1284:

  • компрессию данных хост-адаптером по методу RLE;
  • буферизацию FIFO для прямого и обратного каналов;
  • применение DMA и программного ввода/вывода.

Компрессия в реальном времени по методу RLE (Run-Length Encoding) позволяет достичь коэффициента сжатия 64:1 при передаче растровых изображений, которые имеют длинные строки повторяющихся байт. Компрессию можно использовать, только если ее поддерживает и хост, и ПУ.

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

Протокол ЕСР переопределяет сигналы SPP (табл. 1.8).

Контакт Сигнал SPP Имя в ЕСР I/O Описание
1 Strobe# HostClk O Используется в паре с PeriphAck для передачи в прямом направлении (вывод)
14 AutoLF# HostAck O Указывает тип цикла (команда/данные) при передаче в прямом направлении. Используется в паре с PeriphClk для передачи в обратном направлении
17 Selecting 1284Active O Высокий уровень указывает на обмен в режиме IEEE 1284 (в режиме SPP уровень низкий)
16 Init# ReverseRequest* O Низкий уровень переключает канал на передачу в обратном направлении
10 Ack# PeriphQk I Используется в паре с HostAck для передачи в обратном направлении
11 Busy PeriphAck I Используется в паре с HostClk для передачи в обратном направлении. Индицирует тип команда/ данные при передаче в обратном направлении
12 PaperEnd AckReverse# I Переводится в низкий уровень как подтверждение сигналу ReverseRequest#
13 Select Xflag* I Флаг расширяемости
15 Error# PeriphRequest#* I Устанавливается ПУ для указания на доступность (наличие) обратного канала передачи*
2-9 Data Data I/O Двунаправленный канал данных
* Сигналы действуют в последовательности согласования (см. далее).

Адаптер ЕСР тоже генерирует внешние протокольные сигналы квитирования аппаратно, но его работа существенно отличается от режима ЕРР.

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

Рис. 1.7. Передача в режиме ЕСР: a - прямая, б - обратная

В отличие от диаграмм обмена ЕРР, на рис. 1.7 не приведены сигналы циклов системной шины процессора. В данном режиме обмен программы с ПУ разбивается на два относительно независимых процесса, которые связаны через FIFO буфер. Обмен драйвера с FIFO-буфером может осуществляться с использованием как DMA, так и программного ввода-вывода. Обмен ПУ с буфером аппаратно выполняет адаптер ЕСР. Драйвер в режиме ЕСР не имеет информации о точном состоянии процесса обмена, но здесь обычно важно только то, завершен он или нет.

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

  1. Хост помещает данные на шину канала и устанавливает признак цикла данных (высокий уровень) или команды (низкий уровень) на линии HostAck.
  2. Хост устанавливает низкий уровень на линии HostClk, указывая на действительность данных.
  3. ПУ отвечает установкой высокого уровня на линии PeriphAck.
  4. Хост устанавливает высокий уровень линии HostClk, и этот перепад может использоваться для фиксации данных в ПУ.
  5. ПУ устанавливает низкий уровень на линии PeriphAck для указания на готовность к приему следующего байта.

Поскольку передача в ЕСР происходит через FIFO-буферы, которые могут присутствовать на обеих сторонах интерфейса, важно понимать, на каком этапе данные можно считать переданными. Данные считаются переданными на шаге 4, когда линия HostClk переходит в высокий уровень. В этот момент модифицируются счетчики переданных и принятых байт. В протоколе ЕСР есть условия, вызывающие прекращение обмена между шагами 3 и 4. Тогда эти данные не должны рассматриваться как переданные.

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

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

  1. Хост запрашивает изменение направления канала, устанавливая низкий уровень на линии ReverseRequest#.
  2. ПУ разрешает смену направления установкой низкого уровня на линии AckReverse#.
  3. ПУ помещает данные на шину канала и устанавливает признак цикла данных (высокий уровень) или команды (низкий уровень) на линии PeriphAck.
  4. ПУ устанавливает низкий уровень на линии PeriphClk, указывая на действительность данных.
  5. Хост отвечает установкой высокого уровня на линии HostAck.
  6. ПУ устанавливает высокий уровень линии PeriphClk; этот перепад может использоваться для фиксации данных хостом.
  7. Хост устанавливает низкий уровень на линии HostAck для указания на готовность к приему следующего байта.

Режимы и регистры ЕСР - порта *

* Этот режим не входит в спецификацию Microsoft, но трактуется как EPP контроллером SMC FDC37C665/666 и многими другими.

Программный интерфейс и регистры ЕСР для адаптеров IEEE 1284 определяет спецификация Microsoft. Определены режимы (табл. 1.9), в которых может функционировать адаптер. Они задаются полем Mode регистра ECR (биты ).

Регистровая модель адаптера ЕСР (табл. 1.10) использует свойства архитектуры стандартной шины и адаптеров ISA - для дешифрации адресов портов ввода/вывода задействуются только 10 младших линий шины адреса. Поэтому, например, обращения по адресам Port, Port+400h, Port+800h... будут восприниматься как обращения к адресу Port, лежащему в диапазоне 0-3FFh. Современные PC и адаптеры декодируют большее количество адресных бит, поэтому обращения по адресам 0378h и 0778h будет адресованы двум различным регистрам. Помещение дополнительных регистров ЕСР "за спину" регистров стандартного порта (смещение 400-402h) преследует две цели. Во-первых, эти адреса никогда не использовались традиционными адаптерами и их драйверами, и их применение в ЕСР не приведет к сужению доступного адресного пространства ввода/вывода. Во-вторых, этим обеспечивается совместимость со старыми адаптерами на уровне режимов 000-001 и возможность определения присутствия EСР - адаптера через попытку обращения к его расширенным регистрам.

Режим Название Описание
000 SPPmode Стандартный (традиционный) режим
001 Bi-directional mode Двунаправленный порт (тип 1 для PS/2)
010 Fast Centronics Однонаправленный с использованием FIFO и DMA
011 ECP Parallel Port mode ECP
100 EPP Parallel Port mode* Перевод в режим EPP
101 Зарезервировано -
110 Test mode Тестирование работы FIFO и прерываний
111 Configuration mode Доступ к конфигурационным регистрам

Каждому режиму ECP соответствуют (и доступны) свои функциональные регистры. Переключение режимов осуществляется записью в регистр ECR. "Дежурными" режимами, включаемыми по умолчанию, являются 000 или 001. В любом из них работает полубайтный режим ввода. Из этих режимов всегда можно переключиться в любой другой, но из старших режимов (010-111) переключение возможно только в 000 или 001. Для корректной работы интерфейса перед выходом из старших режимов необходимо дождаться завершения обмена по прямому доступу и очистки FIFO-буфера.

В режиме 000 (SPP) порт работает как стандартный однонаправленный программно-управляемый SPP.

В режиме 001 (Bi-Di PS/2) порт работает как двунаправленный порт PS/2 типа 1. От режима 000 отличается возможностью реверса канала данных по биту CR.5.

Режим 010(Fast Centronics) предназначен только для высокопроизводительного вывода через FIFO-буфер с использованием DMA. Сигналы квитирования по протоколу Ceritromcs вырабатываются аппаратно. Сигнал запроса прерывания вырабатывается по состоянию FIFO-буфера, но не по сигналу Аск# (запрос одиночного байта "не интересует" драйвер быстрого блочного вывода).

Режим 011 является собственно режимом ЕСР, описанным ранее. Поток данных и команд, передаваемых в ПУ, помещается в FIFO-буфер через регистры ECPDFIFO и ECPAFIFO соответственно. Из FIFO они выводятся с соответствующим признаком цикла (состояние линии HostAck). Принимаемый поток данных от ПУ извлекается из FIFO-буфера через регистр ECPDFIFO. Получение адреса в командном цикле от ПУ не предусматривается. Обмен с регистром ECPDFIFO может производиться и по каналу DMA.

Компрессия по методу RLE при передаче выполняется программно. Для передачи подряд более двух одинаковых байт данных в регистр ECPAFIFO записывается байт, у которого младшие 7 бит содержат счетчик RLC (значение RLC=127 соответствует 128 повторам), а старший бит нулевой. После этого в ECPDFIFO записывается сам байт. Отсюда очевидно, что вывод данных с одновременным использованием компрессии и DMA невозможен. Принимая эту пару байт (командный байт и байт данных), ПУ осуществляет декомпрессию. При приеме потока от ПУ адаптер ЕСР декомпрессию осуществляет аппаратно и в FIFO-буфер помещает уже декомпрессированные данные.

Режим 100 (ЕРР) - один из способов включения режима ЕРР.

Режим 110 (Test Mode) предназначен для тестирования взаимодействия FIFO и прерываний. Данные могут передаваться в/из регистра TFIFO с помощью DMA или программным способом. На внешний интерфейс обмен не воздействует. Адаптер отрабатывает операции вхолостую на максимальной скорости интерфейса (как будто сигналы квитирования приходят без задержек). Адаптер следит за состоянием буфера и по мере необходимости вырабатывает сигналы запроса прерывания. Таким образом программа может определить максимальную пропускную способность канала.

Режим 111 (Configuration mode) предназначен для доступа к конфигурационным регистрам. Выделение режима защищает адаптер и протокол от некорректных изменений конфигурации в процессе обмена.

Смещение Имя R/W Режимы ЕСР* Название
000 DR R/W 000-001 Data Register
000 ECPAF1FO R/W 011 ЕСР Address FIFO
001 SR R/W Все Status Register
002 CR R/W Все Control Register
400 SDFIFO R/W 010 Parallel Pwt Data FIFO
400 ECPDFIFO R/W 011 ЕСР Data FIFO
400 TFIFO R/W 110 Test FIFO
400 CNFGA R 111 Configuration Register A
401 CNFGB R/W 111 Configuration Register В
402 ECR R/W Все Extended Control Register
* Регистры доступны только в указанных режимах (режим задается битами 7-5 регистра ECR).

Регистр данных DR используется для передачи данных только в программно-управляемых режимах (000 и 001).

Регистр состояния SR передает значение сигналов на соответствующих линиях (как в SPP ).

Регистр управления CR имеет назначение бит, совпадающее с SPP. В режимах 010, 011 запись в биты 0, 1 (сигналы AutoLF# и Strobe#) игнорируется.

Регистр ECPAFIFO служит для помещения информации командных циклов (канального адреса или счетчика RLE, в зависимости от бита 7) в FIFO-буфер. Из буфера информация будет выдана в командном цикле вывода.

Регистр SDFIFO используется для передачи данных в режиме 010. Данные, записанные в регистр (или посланные по каналу DMA), передаются через буфер FIFO по реализованному аппаратно протоколу Centronics. При этом должно быть задано прямое направление передачи (бит CR.5=0).

Регистр DFIFO используется для обмена данными в режиме 011 (ЕСР). Данные, записанные в регистр или считанные из него (или переданные по каналу DMA), передаются через буфер FIFO по протоколу ЕСР.

Регистр TFIFO обеспечивает механизм тестирования FIFO - буфера в режиме 110.

Регистр ECPCFGA позволяет считывать информацию об адаптере (идентификационный код в битах ).

Регистр ECPCFGB хранит информацию, необходимую драйверу. Запись в регистр не влияет на работу порта.

Регистр ECR - главный управляющий регистр ЕСР.

Назначение бит регистра ECR:

  • ECR -ЕСР MODE - задает режим ЕСР.
  • ECR.4 - ERRINTREN^t (Error Interrupt Disable) - запрещает прерывания по сигналу Error# (при нулевом значении бита по отрицательному перепаду на этой линии вырабатывается запрос прерывания).
  • ECR.3 - DMAEN (DMA Enable) - разрешает обмен по каналу DMA.
  • ECR.2 - SERVICEINTR (Service Interrupt) - запрещает сервисные прерывания, которые вырабатываются по окончании цикла DMA (если он разрешен), по порогу заполнения/опустошения FIFO-буфера (если не используется DMA) и по ошибке переполнения буфера сверху или снизу.
  • ECR.1 - FIFOFS (FIFO Full Status) - сигнализирует о заполнении буфера; при FIFOFS=1 в буфере нет ни одного свободного байта.
  • ECR.0 - FIFOES (FIFO Empty Status) - указывает на полное опустошение буфера; комбинация FIFOFS=FIFOES=i означает ошибку работы с FIFO (переполнение сверху или снизу).

Когда порт находится в стандартном или двунаправленном режимах (000 или 001), первые три регистра полностью совпадают с регистрами стандартного порта. Так обеспечивается совместимость драйвера со старыми адаптерами и старых драйверов с новыми адаптерами.

По интерфейсу с программой ECP-порт напоминает ЕРР: после установки режима (записи кода в регистр ECR) обмен данными с устройством сводится к чтению или записи в соответствующие регистры. За состоянием FIFO-буфера наблюдают либо по регистру ECR, либо по обслуживанию сервисных прерываний от порта. Весь протокол квитирования генерируется адаптером аппаратно. Обмен данными с ЕСР - портом (кроме явного программного) возможен и по прямому доступу к памяти (каналу DMA), что эффективно при передаче больших блоков данных.

1.2.3. Согласование режимов IEEE 1284

ПУ в стандарте IEEE 1284 обычно не требуют от контроллера реализации всех режимов, предусмотренных стандартом. Для определения режимов и методов управления конкретным устройством стандарт предусматривает последовательность согласования (negotiation sequence). Последовательность построена так, что старые устройства, не рассчитанные на применение IEEE 1284, на нее не ответят, и контроллер останется в стандартном режиме. Периферия IEEE 1284 может сообщить о своих возможностях, и контроллер установит режим, удовлетворяющий и хост, и ПУ.

Во время фазы согласования контроллер выставляет на линии данных байт расширяемости (extensibility byte), запрашивая подтверждение на перевод интерфейса в требуемый режим или прием идентификатора ПУ (табл. 1.11). Идентификатор передается контроллеру в запрошенном режиме (любой режим обратного канала, кроме ЕРР). ПУ использует сигнал Xflag (Select в терминах SPP) для подтверждения запрошенного режима обратного канала, кроме полубайтного. Полубайтный режим поддерживается всеми устройствами IEEE 1284. Бит Extensibility Link request послужит для определения дополнительных режимов в будущих расширениях стандарта.

Бит Описание Допустимые комбинации бит
7 Request Extensibility Link - зарезервирован 10000000
6 Запрос режима ЕРР 01000000
5 Запрос режима ЕСР с RLE 00110000
4 Запрос режима ЕСР без RLE 00010000
3 Зарезервировано 00001000
2 Запрос идентификатора устройства с ответом в режиме:
полубайтный 00000100
байтный 00000101
ЕСР без RLE 00010100
ЕСР с RLE 0011 0100
1 Зарезервировано 00000010
0 Запрос полубайтного режима 00000001
none Запрос байтного режима 00000000

Последовательность согласования (рис. 1.8) состоит из следующих шагов:

  1. Хост выводит байт расширяемости на линии данных.
  2. Хост устанавливает высокий уровень сигнала Selecting и низкий - AutoFeed#, что означает начало последовательности согласования.
  3. ПУ отвечает установкой низкого уровня сигнала Ack# и высокого - Errorft, PaperEnd и Select. Устройство, "не понимающее" стандарта 1284, ответа не даст, и дальнейшие шаги не выполнятся.
  4. Хост устанавливает низкий уровень сигнала Strobe# для записи байта расширяемости в ПУ.
  5. Хост устанавливает высокий уровень сигналов Strobeft и AutoLF#.
  6. ПУ отвечает установкой в низкий уровень сигналов PaperEnd и Еггог^, если ПУ имеет обратный канал передачи данных. Если запрошенный режим поддерживается устройством, на линии Select устанавливается высокий уровень, если не поддерживается - низкий.
  7. ПУ устанавливает высокий уровень на линии Ack# для указания на завершение последовательности согласования, после чего контроллер устанавливает требуемый режим работы.


Рис. 1.8. Последовательность согласования режимов IEEE 1284

1.2.4. Развитие стандарта IEEE 1284

Кроме основного стандарта IEEE 1284, который уже принят, в настоящее время в стадии проработки находятся новые стандарты, дополняющие его. К ним относятся:

  • IEEE Р1284.1 "Standard for Information Technology for Transport Independent Printer/ Scanner Interface (TIP/SI)". Этот стандарт разрабатывается для управления и обслуживания сканеров и принтеров на основе протокола NPAP (Network Printing Alliance Protocol).
  • IEEE P1284.2 "Standard for Test, Measurement and Conformance to IEEE Std. 1284" - стандарт для тестирования портов, кабелей и устройств на совместимость с IEEE 1284.
  • IEEE P12843 "Standard for Interface and Protocol Extensions to IEEE Std. 1284 Compliant Peripheral and Host Adapter Ports" - стандарт на драйверы и использование устройств прикладным программным обеспечением (ПО). Уже приняты спецификации BIOS для использования ЕРР драйверами DOS. Прорабатывается стандарт на разделяемое использование одного порта цепочкой устройств или группой устройств, подключаемых через мультиплексор.
  • IEEE P1284.4 "Standard for Data Delivery and Logical Channels for IEEE Std. 1284 Interfaces" направлен на реализацию пакетного протокола достоверной передачи данных через параллельный порт. Основой служит протокол MLC (Multiple Logical Channels) фирмы Hewlett- Packard, однако совместимость с ним в окончательной версии стандарта не гарантируется.

1.3. Применение параллельных интерфейсов и LPT-портов

Параллельные интерфейсы применяются в компьютерах разных семейств и классов, здесь мы ограничимся рассмотрением IBM PC-совместимых компьютеров.

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

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

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

Простейший вариант кабеля подключения принтера - 18-проводный кабель с неперевитыми проводами. Он используется для работы в режиме SPP. При длине более 2 м желательно, чтобы хотя бы линии Strobe# и Busy были перевиты с отдельными общими проводами. Для скоростных режимов может оказаться непригодным, причем сбои могут происходить нерегулярно и лишь при определенных последовательностях передаваемых кодов. Встречаются кабели Centronics, у которых отсутствует связь контакта 17 разъема PC с контактом 36 разъема принтера. При попытке подключения таким кабелем принтера, работающего в стандарте 1284, появится сообщение о необходимости применения "двунаправленного кабеля". Принтер не может сообщить системе о поддержке расширенных режимов, на что рассчитывают драйверы принтера.

Неплохие электрические свойства имеют ленточные кабели, у которых сигнальные цепи (управляющих сигналов) чередуются с общими проводами. Но их применение в качестве внешнего интерфейса непрактично (нет второго защитного слоя изоляции, высокая уязвимость) и неэстетично (круглые кабели смотрятся лучше).

Идеальным вариантом являются кабели, в которых все сигнальные линии перевиты с общими проводами и заключены в общий экран - то, что требует IEEE 1248. Такие кабели гарантированно работают на скоростях до 2 Мбайт/с, их длина может достигать 10 м.

В табл. 1.12 приводится распайка кабеля подключения принтера с разъемом XI типа A (DB25-P) со стороны PC и Х2 типа В (Centronics-36) или типа С (миниатюрный) со стороны принтера. Использование общих проводов (GND) зависит от качества кабеля (см. выше). В простейшем случае (18-проводный кабель) все сигналы GND объединяются в один провод. Качественные кабели требуют отдельного обратного провода для каждой сигнальной линии, однако в разъемах типа А и В для этого недостаточно контактов (см. табл. 1.12, где в скобках указаны номера контактов разъема PC типа А, которым соответствуют обратные провода). В разъеме типа С обратный провод (GND) имеется для каждой сигнальной цепи; сигнальным контактам 1-17 этого разъема соответствуют контакты GND 19-35.

XI,разъем PC типа А Сигнал Х2, разъем PRN типа В Х2, разъем PRN типа С
1 Strobe# 1 15
2 Data 0 2 6
3 Data 1 3 7
4 Data 2 4 8
5 Data 3 5 9
6 Data 4 6 10
7 Data 5 7 11
8 Data 6 8 12
9 Data7 9 13
10 Ack# 10 3
11 Busy 11 1
12 PaperEnd 12 5
13 Select 13 2
14 AutoLF# 14 17
15 Error* 32 4
16 lnit# 31 14
17 Selecting 36 16
18 GND(1) 19 33
19 GND (2 3) 20 21 24 25
20 GND (4 5) 22 23 26 27
21 GND (6 7) 24 25 28 29
22 GND (8 9) 26 27 30 31
23 GND (11 15) 29 19 22
24 GND (10 12 13) 28 20 21 23
25 GND (14 16 17) 30 32 34 35

Ряд отечественных (и стран бывшего СЭВ) принтеров имеет интерфейс ИРПР (IFSP в документации на принтеры ROBOTRON). Он является близким родственником интерфейса Centronics, но со следующими отличиями:

  • Линии данных инвертированы. Протокол квитирования несколько иной.
  • Ко всем входным линиям (на принтере) подключены пары согласующих резисторов: 220 Ом к питанию +5 В и 330 Ом к общему проводу. Это позволяет использовать длинные кабели, но перегружает большинство интерфейсных адаптеров PC.
  • Сигналы ошибки и конца бумаги отсутствуют.

Интерфейс ИРПР может быть программно реализован через обычный LPT-порт, но для устранения перегрузки выходных линий согласующие резисторы из принтера желательно удалить. Порт, перегруженный по выходу, может преподносить всякого рода сюрпризы (естественно, неприятные и трудно диагностируемые).

Для связи двух компьютеров по параллельному интерфейсу применяются различные кабели в зависимости от режимов используемых портов. Самый простой и медленный - полубайтный режим, работающий на всех портах. Для этого режима в кабеле достаточно иметь 10 сигнальных и один общий провод. Распайка разъемов кабеля приведена в табл. 1.13. Связь двух PC данным кабелем поддерживается стандартным ПО типа Interink из MS-DOS или Norton Commander.

Для машин PS/2 с двунаправленным портом фирма IBM выпускала переходное устройство в комплекте с программой Data Migration Facility. Переходник устанавливался на разъем LPT-порта PS/2, а к его разъему Х2 типа Centronics присоединялся обычный принтерный кабель, подключаемый к LPT-порту любого PC. Так предлагалось решить проблему переноса файлов со старых компьютеров, оснащенных 5" дисководами, на компьютеры PS/2 с дисководами 3,5". Распайка такого переходника приведена в табл. 1.14. Как видно, данный переходник нельзя использовать при связи через Interink или Norton Commander. Если обе соединяемые машины имеют двунаправленные порты, переходник обеспечивает симметричную двунаправленную связь. По скорости обмена превосходит вышеописанное полубайтное соединение в 2 раза. Это соединение не соответствует двунаправленному режиму IEEE 1284.

XI, разъем РС#1 Х2, разъем РС#2
Бит Контакт Контакт Бит
DR.O 2 15 SR.3
DR.1 3 13 SR.4
DR.2 4 12 SR.5
DR.3 5 10 SR.6
DR.4 6 11 SR.7
SR.6 10 5 DR.3
SR.7 11 6 DR.4
SR.5 12 4 DR.2
SR.4 13 3 DR.1
SR.3 15 2 DR.O
GND 18-25 18-25 GND

Разъемы XI и Х2 - DB25-P (вилки).

XI Х2
Контакт Бит Бит Контакт
1 CR.0 SR.6 10
2 DR.0 DR.0 2
3 DR.1 DR.1 3
4 DR.2 DR.2 4
5 DR.3 DR.3 5
6 DR.4 DR.4 6
7 DR.5 DR.5 7
8 DR.6 DR.6 8
9 DR.7 DR.7 9
10 SR.6 CR.0 1
12 SR.5 CR.3 36
17 CR.3 SR.5 12
18-25 GND GND 19-30, 33

Разъемы XI - DB25-P (вилка), Х2 - Centmnics-36 (розетка).

Высокоскоростная связь двух компьютеров может выполняться и в режиме ЕСР (режим ЕРР неудобен, поскольку требует синхронизации шинных циклов ввода/вывода двух компьютеров). В табл. 1.15 приведена распайка кабеля. В отличие от предыдущих таблиц, описывающих кабели для программно-управляемых режимов, в ней приведены имена сигналов, которые аппаратно генерируются адаптерами портов. Этот же кабель может использоваться и для связи в байтном режиме. Такая связь поддерживается Windows 95.

Разъем XI Разъем Х2
Контакт Имя в ЕСР Имя в ЕСР Контакт
1 HostClk PeriphClk 10
14 HostAck PeriphAck 11
17 1284Active PeriphRequest# 15
16 ReverseRequest* AckReverse* 12
10 PeriphClk HostClk 1
11 PeriphAck ^MostAck 14
12 AckReverse* ReverseRequest# 16
13 Xflag /- -
15 PeriphRequest# 1284Active 17
2-9 Data Data 2-9

Подключение сканера к LPT-порту эффективно, только если порт обеспечивает хотя бы двунаправленный режим (Bi-Di), поскольку основной поток - ввод. Лучше использовать порт ЕСР, если этот режим поддерживается сканером (или ЕРР, что маловероятно).

Подключение внешних накопителей (lomega Zip Drive, CD-ROM и др.), адаптеров ЛВС и других симметричных устройств ввода/вывода имеет свою специфику. В режиме SPP наряду с замедлением работы устройства заметна принципиальная асимметрия этого режима: чтение данных происходит в два раза медленнее, чем (весьма небыстрая) запись . Применение двунаправленного режима (Bi-Di или PS/2 Type 1} устранит эту асимметрию - скорости сравняются. Только перейдя на ЕРР, можно получить нормальную скорость работы. В режиме ЕРР подключение к LPT-порту почти не уступает по скорости подключению через ISA- контроллер. Это справедливо и при подключении устройств со стандартным интерфейсом шин к LPT-портам через преобразователи интерфейсов (например, LPT - IDE, LPT - SCSI, LPT - PCMCIA).

В табл. 1.16 описано назначение выводов разъема LPT-порта в различных режимах и их соответствие битам регистров стандартного порта.

Контакт I/O Бит* SPP ECP ЕРР
1 O/I CR.0\ Strobe# Hostdk Write#
2 O/I DR.0 Data0 Data0 Data0
3 O/I DR.1 Data1 Data1 Data1
4 O/I DR.2 Data2 Data2 Data2
5 O/I DR.3 Data3 Data3 Data3
6 O/I DR.4 Data4 Data4 Data4
7 O/I DR.5 Data5 Data5 Data5
8 O/I DR.6 Data6 Data6 Data6
9 O/I DR.7 Data7 Data7 Data7
10 I SR.6 Ack# PeriphClk INTR#
11 I SR.7\ Busy PeriphAck Wait"
12 I SR.5 PaperEnd AckReverse* ^*
13 I SR.4 Select Xflag **
14 O/I CR.1\ AutoLF# HostAck DataStb#
15 I SR.3 Error" PeriphRequest# **
16 O/I CR2 hit" ReverseRequest* Reset*
17 O/I CR.3\ Selecting 1284Active AddrStb#
* Символом "\" отмечены инвертированные сигналы (1 в регистре соответствует низкому уровню линии). ** - означает "определяется пользователем".

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

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

Конфигурирование LPT-порта зависит от его исполнения. Порт, расположенный на плате расширения (мультикарте), устанавливаемой в слот ISA или ISA+VLB, конфигурируется джамперами на самой плате. Порт на системной плате конфигурируется через BIOS Setup.

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

  • Базовый адрес - 3BCh, 378h или 278h. При инициализации BIOS проверяет наличие портов по адресам именно в этом порядке и, соответственно, присваивает обнаруженным портам логические имена LPT1, LPT2, LPT3. Адрес 3BCh имеет адаптер порта, расположенный на плате MDA или HGC. Большинство портов по умолчанию конфигурируются на адрес 378h и могут переключаться на 278h.
  • Используемая линия запроса прерывания: для LPT - IRQ7, для LPT2 - IRQ5. Традиционно прерывания от принтера не используются, и этот дефицитный ресурс можно сэкономить. Однако при использовании скоростных режимов ЕСР (или Fast Centronics) работа через прерывания может заметно повысить производительность и снизить загрузку процессора.
  • Использование канала DMA для режимов ЕСР и Fast Centronics - разрешение и номер канала DMA (по умолчанию - 3).

Режимы работы порта:

  • SPP - порт работает только в стандартном однонаправленном программно-управляемом режиме. PS/2, он же Bi-Directional - отличается от SPP возможностью реверса канала (установкой СЯ.5=7).
  • Fast Centronics - аппаратное формирование протокола Centronics с использованием FIFO-буфера и, возможно, DMA.
  • ЕРР - в зависимости от использования регистров порт работает в режиме SPP или ЕРР.
  • ЕСР - по умолчанию включается в режим SPP или PS/2, записью в ECR может переводиться в любой режим ЕСР, но перевод в ЕРР записью в ECR кода 100 не гарантируется.
  • ЕСР+ЕРР - то же, что и ЕСР, но запись в ECR кода режима 100 переводит порт в ЕРР.

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

Принтеры и сканеры могут пожелать режима ЕСР. Windows (3-х, 95 и NT) имеет системные драйверы для этого режима. В среде DOS печать через ЕСР поддерживается только специальным загружаемым драйвером. Сетевые адаптеры, внешние диски и CD-ROM, подключаемые к параллельному порту, могут использовать режим ЕРР. Для этого режима специальный драйвер пока еще не применяется; использование ЕРР включается в драйвер самого подключаемого устройства.

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

1.3.3. Неисправности и тестирование параллельных портов

Тестирование параллельных портов разумно начинать с проверки их наличия в системе. Список адресов установленных портов появляется в таблице, выводимой BIOS на экран перед загрузкой ОС. Список можно посмотреть и с помощью тестовых программ или прямо в BIOS Data Area с помощью отладчика.

Если BIOS обнаруживает меньше портов, чем установлено физически, скорее всего, двум портам присвоен один адрес. При этом работоспособность ни одного из конфликтующих портов не гарантируется: они будут одновременно выводить сигналы, но при чтении состояния конфликт на шине скорее всего приведет к искажению данных. Программное тестирование порта без диагностической заглушки (Loop Back) не покажет ошибок, поскольку при этом читаются данные выходных регистров, а они у всех конфликтующих (по отдельности исправных) портов совпадут. Именно такое тестирование производит BIOS при проверке на наличие портов. Разбираться с такой ситуацией следует, последовательно устанавливая порты и наблюдая за адресами, появляющимися в списке.

Если физически установлен только один порт, a BIOS его не обнаруживает, то либо порт отключен при конфигурировании, либо он вышел из строя (скорее всего из-за нарушений правил подключения). Иногда вам везет, и неисправность устраняется при "передергивании" платы в слоте - там возникают проблемы с контактами.

Наблюдаются и такие "чудеса" - при "теплой" перезагрузке DOS после Windows 95 порт не виден (и приложения не могут печатать из MS-DOS). Однако после повторной перезагрузки LPT порт оказывается на месте. С этим явлением легче смириться, чем бороться.

Тестирование портов с помощью диагностических программ позволяет проверить выходные регистры, а при использовании специальных заглушек - и входные линии. Поскольку количество выходных линий порта (12) и входных (5) различно, то полная проверка порта с помощью пассивной заглушки принципиально невозможна. Разные программы тестирования требуют применения разных заглушек (рис. 1.9).

Рис. 1.9. Схема заглушки для тестирования LPT-порта: a - для программы Checkit, б - для программы Norton Diagnostics.

Большинство неприятностей при работе с LPT-портами доставляют разъемы и кабели. Для проверки порта, кабеля и принтера можно воспользоваться специальными тестами из популярных диагностических программ (Checkit, PCCheck и т. п.), а можно и попытаться вывести на принтер какой либо символьный файл.

  • Если вывод файла с точки зрения DOS проходит (копирование файла на устройство с именем LPTn или PRN совершается быстро и успешно), а принтер (исправный) не напечатал ни одного символа - скорее всего, это обрыв (неконтакт в разъеме) цепи Strobed.
  • Если принтер находится в состоянии On Line, но появляется сообщение о его неготовности, причину следует искать в линии Busy.
  • Если принтер, подключенный к порту, в стандартном режиме (SPP) печатает нормально, а при переходе в ЕСР начинаются сбои, следует проверить кабель - соответствует ли он требованиям IEEE 1284 (см. выше). Дешевые кабели с неперевитыми проводами нормально работают на скоростях 50-100 Кбайт/с, но при скорости 1-2 Мбайт/с, обеспечиваемой ЕСР, имеют полное право не работать, особенно при длине более 2 м.
  • Если при установке драйвера РпР-принтера появилось сообщение о необходимости применения "двунаправленного кабеля", проверьте наличие связи контакта 17 разъема DB-25 с контактом 36 разъема Centronics. Хотя эта связь изначально предусматривалась, в ряде кабелей она отсутствует.
  • Если принтер искажает информацию при печати, возможен обрыв (или замыкание) линий данных. В этом случае удобно воспользоваться файлом, содержащим последовательность кодов всех печатных символов. Вот пример программы на языке Basic:

10 OPEN "bincod.chr" FOR OUTPUT AS #1
20 FOR J=2 TO 15
30 FOR I=0 TO 15
40 PRINT#1, СНR$(1б*J+I);
50 NEXT I
60 PRINT#1
70 NEXT J
80 CLOSE #1
90 END

Файл BINCOD.CHR, созданный данной программой, представляет собой таблицу всех печатных символов (управляющие коды пропущены), расположенных по 16 символов в строке. Если файл печатается с повтором некоторых символов или их групп, по периодичности повтора можно легко вычислить оборванный провод данных интерфейса. Этот же файл удобно использовать для проверки аппаратной русификации принтера.

Аппаратные прерывания от LPT-порта используются не всегда. Даже DOS-программа фоновой печати PRINT работает с портом по опросу состояния, а ее обслуживающий процесс запускается по прерыванию от таймера. Поэтому неисправности, связанные с цепью прерывания от порта, проявляются не часто. Однако по-настоящему многозадачные ОС (например, NetWare) стараются работать с портом по прерываниям. Протестировать линию прерывания можно, только подключив к порту ПУ или заглушку. Если к порту с неисправным каналом прерывания подключить адаптер локальной сети, то он, возможно, будет работать, но с очень низкой скоростью: на любой запрос ответ будет приходить с задержкой в десятки секунд - принятый из адаптера пакет будет приниматься не по прерыванию (сразу по приходу), а по внешнему тайм-ауту.

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

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

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

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

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

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

  • 00h - вывод символа из регистра AL по протоколу Centronics (без аппаратных прерываний). Данные помещаются в выходной регистр, и, дождавшись готовности принтера (снятия сигнала Busy), формируется строб.
  • 01h - инициализация интерфейса и принтера (установка исходных уровней управляющих сигналов, формирование импульса Init#, запрет аппаратных прерываний и переключение на вывод двунаправленного интерфейса).
  • 02h - опрос состояния принтера (чтение регистра состояния порта).

При вызове INT 17h номер функции задается в регистре АН, номер порта - в регистре DX(Q - LPT1, 1 - LPT2...). При возврате регистр АН содержит код состояния - биты регистра состояния SR (биты 6 и 3 инвертированы) и флаг таймаута в бите 0. Флаг тайм-аута устанавливается при неудачной попытке вывода символа, если сигнал Busy не снимается в течение времени, определенного для данного порта в ячейках тайм-аута. В этом случае, согласно протоколу Centronics, строб данных не вырабатывается.

Перехват прерывания INT 17h является удобным способом внедрения собственных драйверов принтера. Потребность в них может возникать при подключении к порту принтера с интерфейсов ИРПР или необходимости перекодировки символов.

бЧФПТ нЙЛХЫЙО б. ч. All rights reserved. 2001 ... 2015

рТЕДЩДХЭЙЕ ЧЕТУЙЙ УБКФБ:
http://neic.nsk.su/~mavr
http://digital.sibsutis.ru/

Современный персональный компьютер никогда не приобрёл бы такую огромную популярность, выполняй он только вычислительные функции. Нынешний ПК – это многофункциональное устройство, при помощи которого, пользователь может не только проводить какие-либо расчёты, но также выполнять ещё массу различных дел: распечатывать текст, управлять внешними устройствами, связываться с другими пользователями с помощью компьютерных сетей и т. д. Все эта огромная функциональность достигается при помощи дополнительных устройств – периферии, которые подключаются к персональному компьютеру посредством специальных разъёмов, называемыми портами.

Порты персонального компьютера

Порт – электронное устройство, выполняемое прямо на материнской плате ПК или на дополнительных платах, устанавливаемых в персональный компьютер. Порты имеют уникальный разъем для подключения внешних устройств – периферии. Предназначены они для обмена данными между ПК и внешними устройствами (принтерами, модемами, цифровыми фотоаппаратами и т. д.). Довольно часто, в литературе можно встретить ещё одно название для портов – интерфейсы .

Все порты можно условно разбить на две группы:

  • Внешние - для подключения внешних устройств (принтеры , сканеры , плоттеры , устройства видеоизображения , модемы и т. п.);
  • Внутренние - для подключения внутренних устройств (жёсткие диски , платы расширения).

Внешние порты персонального компьютера

  1. PS/2 - порт для подключения клавиатуры ;
  2. PS/2 - порт для подключения "мышки ";
  3. Ethernet - порт для подключения локальной сети и сетевых устройств (роутеров, модемов и др.);
  4. USB - порт для подключения устройств внешней периферии (принтеров, сканеров, смартфонов и др.);
  5. LPT - параллельный порт. Служит для подключения ныне устаревших моделей принтеров, сканеров и плотеров;
  6. COM - последовательный порт RS232. Служит для подключения устройств типа dial-up модемов и старых принтеров. Ныне устарели, практически не используется;
  7. MIDI - порт для подключения игровых консолей, midi клавиатур, музыкальных инструментов с таким же интерфейсом. В последнее время практически вытеснен USB-портом;
  8. Audio In - аналоговый вход для линейного выхода звуковых устройств (магнитофонов, плееров и др.);
  9. Audio Out - выход аналогово звукового сигнала (наушники, калонки и др.);
  10. Mikrophone - микрофонный выход для подключения микрофона;
  11. SVGA - порт для подключения устройств видеоотображения: мониторов, современных LED, LCD и плазменных панелей (этот тип разъёма является устаревшим);
  12. VID Out - порт используется для вывода и ввода низкочастотного видеосигнала;
  13. DVI - порт для подключения устройств видеоотображения, более современнее чем SVGA.

Последовательный порт (COM-порт)

Один из самых старых портов, устанавливаемых в ПК на протяжении уже более 20 лет. В литературе довольно часто можно встретить его классическое наименование – RS232 . Обмен данными при помощи его происходит в последовательном режиме, то есть линии передачи и приёма – однобитные. Таким образом, информация, которая передаётся от компьютера к устройству или наоборот, разделяется на биты, которые последовательно следуют друг за другом.

Скорость передачи данных , обеспечиваемая этим портом не велика, и имеет стандартизованный ряд: 50, 100, 150, 300, 1200, 2400, 4800, 9600, 14400, 38400, 57600, 115200 Кбит/сек.

Использовался последовательный порт для подключения к ПК таких «медленных» устройств, как первые принтеры и плоттеры, dial-up модемы, манипуляторы «мышь» и даже для связи компьютеров между собой. Как бы ни была медленной его скорость, для того, чтобы соединить устройства между собой требовалось всего три провода – настолько простым был протокол обмена данными. Понятно, что для полноценной работы требовалось большее количество проводников в шнуре.

На сегодняшний день последовательный порт практически уже не используется и полностью вытеснен более молодым, но и более скоростным «собратом» - USB-портом . Следует, правда, отметить, что некоторые производители все ещё комплектуют COM-портом свои материнские платы. Однако, само наименование - «последовательный порт» до сих пор используется разработчиками программного обеспечения. Так, например, Bluetooth-устройства, порты сотовых телефонов часто представляются именно, как «последовательный порт». Это, возможно, несколько сбивает с толку, но сделано это по той причине, что передача данных в них тоже осуществляется последовательно, но на более высокой скорости.

Если по какой-то причине вам может потребоваться COM-порт, а на вашем ПК его нет, то для это цели можно воспользоваться переходником, который подключается к современному USB-порту, имеющемуся на всех современных ПК, а с другой стороны у такого переходника имеется разъем последовательного порта. Есть, правда, одно ограничение, если программное обеспечение обращалось напрямую к «железу» настоящего COM-порта, то работать с таким переходником оно не будет. В этом случае необходимо приобретать специальную плату, которая устанавливается внутрь вашего ПК.

Конструктивно, последовательный порт ПК имеет разъем типа «папа» (с торчащими штырьками):


На сегодняшний день, 25-ти штырьковый разъем последовательного порта практически вышел из употребления и уже несколько лет не устанавливается на ПК. Если производитель снабжает материнскую плату COM-портом, то это 9-ти контактный разъем типа DB9.

Представляет собой интерфейс для подключения таких устройств, как принтеры, сканеры и плоттеры.

Позволяет одновременно передавать 8 бит данных, правда в одном направлении – от компьютера к периферии. В дополнении к этому, имеет 4 управляющих бита (так же как и в случае с битами данных, управляющие биты передаются от ПК к внешнему устройству), и 4 бита состояния (эти биты компьютер может «прочитать» из устройства).

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

Энтузиасты и радиолюбители часто используют этот порт для управления какими-либо нестандартными устройствами (поделки и пр.).

USB-интерфейс

USB – это сокращение полного названия порта – universal serial bus («универсальная последовательная шина»).

На сегодняшний день это один из самых широко используемых портов на персональном компьютере. И это не случайно – его технические характеристики и простота использования действительно впечатляют.

Скорость обмена данными для интерфейса USB 2.0 может достигать - 480 Мбит/сек, а интерфейса USB3.0 – до 5 Гбит/сек (!).

Причём, все версии этого интерфейса совместимы между собой. То есть устройство использующее интерфейс 2.0 может быть подключено к порту USB3.0 (порт в этом случае автоматически понизит скорость до нужного значения). Соответственно, устройство использующее порт USB 3.0 может быть подключено к порту USB 2.0. Единственное условие, если для нормальной работы требуется скорость выше, чем максимальная скорость USB 2.0, то нормальное функционирование периферийного устройства будет в этом случае не возможно.

Кроме этого, популярность данного порта обусловлена ещё и тем, что разработчики заложили в него одну, очень полезную особенность – данный порт может служить источником электропитания , для подключённого к нему внешнего устройства. В этом случае не требуется дополнительный блок для подключения к электрической сети, что очень удобно.

Для версии порта USB 2.0 максимальный потребляемый ток может достигать значения в 0.5A, а в версии USB3.0 – 0.9А. Превышать указанные значения не рекомендуется, так как это приведёт к выходу интерфейса из строя.


Разработчики современных цифровых устройств, все время стремятся к минимизации. Поэтому, конструктивно данный порт может иметь кроме стандартного разъёма, ещё и мини-вариант для миниатюрных устройств – mini-USB . Никаких принципиальных отличий от стандартного USB-порта кроме конструкции самого разъёма mini-USB не имеет.


Практически все современные устройства имеют USB-порт для подключения к ПК. Лёгкость установки – подключенное устройство распознаётся операционной системой практически сразу после присоединения, даёт возможность пользоваться таким портом без специальных «компьютерных» знаний. Принтеры, сканеры, цифровые фотоаппараты, смартфоны и планшеты, внешние накопители – это лишь небольшой список периферийного оборудования, которое сейчас использует этот интерфейс. Простой принцип – «воткнул и работай» сделали данный порт поистине бестселлером среди всех имеющихся на сегодняшний день интерфейсов персонального компьютера.

Порт Fire-Wire (Другие названия - IEEE1394, i-Link)

Этот вид интерфейса появился сравнительно недавно – с 1995 года. Представляет собой высокоскоростную шину последовательного типа. Скорость передачи данных может достигать - до 400 Мбит/сек в стандарте IEEE 1394 и IEEE 1394a, 800 Мбит/сек и 1600 Мбит/сек - для стандарта IEEE1394b.

Изначально этот интерфейс был разработан, как порт для подключения внутренних накопителей (типа SATA), но лицензионная политика компании Apple – одного из разработчиков этого стандарта, требовала выплаты за каждый чип контроллера. Поэтому, на сегодняшний день лишь небольшое количество цифровых устройств (некоторые модели фотоаппаратов и видеокамер) снабжены данным видом интерфейса. Широкого распространения этот вид порта так и не получил.



Значение этого интерфейса трудно переоценить, как правило, именно он используется для подключения персонального компьютера к локальной сети или для выхода в интернет в большинстве случаев. Практически все современные ПК, ноутбуки и нетбуки оборудованы встроенным в материнскую плату Ethernet-портом. В этом нетрудно убедиться, если осмотреть внешние разъёмы.

Для подключения внешних устройств используется специальный , имеющий с обоих концов одинаковые разъёмы – RJ-45 , содержащие восемь контактов.


Кабель симметричен, в связи с чем, порядок подключения устройств значения не имеет – к любому из идентичных разъёмов кабеля можно подключить любое устройство на выбор – ПК, роутер, модем и т. п. Маркируется аббревиатурой - UTP, общепринятое название – «витая пара» . В большинстве случаев как для домашнего, так и для офисного использования применяют кабель пятой категории марки UTP-5 или UTP-5E.

Скорость передаваемых по Ethernet-соединению данных зависит от технических возможностей порта и составляет 10 Мбит/сек, 100 Мбит/сек и 1000 Мбит/сек. Следует понимать, что эта пропускная способность является теоретической, и что в реальных сетях она несколько ниже в виду особенностей работы Ethernet-протокола передачи данных.

Также, следует иметь в виду, что далеко не все производители устанавливают в свои Ethernet-контроллеры быстродействующие чипы, так как они весьма дороги. Это приводит к тому, что на практике, реальная скорость передачи данных значительно ниже, указанной на упаковке или в спецификации. Как правило, практически все Ethernet-карты совместимы между собой и сверху вниз. То есть более новые модели, имеющие возможность подключения на скорости в 1000 Мбит/сек (1 Гбит/сек), без проблем будут работать со старыми моделями, на скоростях 10 и 100 Мбит/сек.

Для визуального контроля целостности подключения Ethernet-порт имеет индикаторы Link и Act . Индикатор Link - горит зелёным цветом при правильном и работающем физическом подключении, т. е. кабель между устройствами подключён, он целый, порты рабочие. Второй индикатор Act («активность») имеет, как правило, оранжевое свечение и мигает во время передачи или приёма данных.

Внутренние порты персонального компьютера

Как уже было сказано выше, внутренние порты предназначены для подключения такой периферии, как накопители на жёстких дисках, CD и DVD-ROM , «карт-ридеры» , дополнительные COM и USB порты и т. п. Находятся внутренние порты либо на материнской плате , либо на дополнительных платах расширения, устанавливаемых в системную шину.

Ныне устаревший интерфейс для подключения старых моделей накопителей на жёстких дисках («винчестеров», HDD). После создания SATA-интерфейса, получил название PATA-интерфейса, или сокращённо – ATA. PATA – ParallelAdvanced Technology Attachment . Это параллельный интерфейс передачи данных для подключения накопителей был разработан в середине 1986 года знаменитой теперь компанией WesternDigital.


В зависимости от производителя, материнская плата может содержать от одного до четырёх IDE-каналов. Современные производители, как правило, оставляют всего один IDE-порт для совместимости, а в последнее время и он исключён из состава материнской платы, будучи полностью вытеснен современным интерфейсом SATA.

Скорость передачи данных в последней версии интерфейса EnhancedIDE может достигать - 150 Мбит/сек. Подключение устройств осуществляется при помощи IDE-кабеля, имеющего 40 или 80 жил для старого или нового типа интерфейса соответственно.



Как правило, при помощи одного кабеля можно подключить до двух устройств одновременно к одному порту IDE. В этом случае, при помощи перемычек на накопителях, определяющих «старшинство» устройств работающих в паре, выбирается режим работы – на одном устройстве – «мастер» (master) , а для другого «подчинённый» (slave) .

Подключать можно как однотипные устройства, например, два накопителя на жёстких дисках или два DVD-ROM, так и разные в любых сочетаниях – DVD-ROM и HDD или CD-ROM и DVD-ROM. Разъём для подключения значения не имеет, следует лишь обратить внимания, что два разъёма для подключения периферии смещены для удобства к одному из концов шлейфа.

Следует также иметь в виду, что подключив «быстрое» устройство, рассчитанное на 80-ти жильный кабель при помощи старого 40-ка жильного кабеля, вы сильно снизите скорость обмена. Кроме этого, если одно из устройств в паре имеет старый (медленный) интерфейс ATA, то скорость передачи данных в этом случае будет определяться именно скоростью работ этого устройства.

При наличии двух портов IDE и двух накопителей внутри ПК, для увеличения скорости обмена данными необходимо подключать каждый накопитель на отдельный порт IDE.

Этот интерфейс является развитием своего предшественника интерфейса IDE, с той лишь разницей, что в отличие от своего «старшего товарища» он является не параллельным, а последовательным интерфейсом. SATA – SerialATA.

Конструктивно он имеет всего семь проводников для своей работы и намного меньшую площадь как самого разъёма, так и связующего кабеля.


Скорость передачи данных у этого интерфейса значительно выше устаревшего IDE и в зависимости от версии SATA составляет:

  1. SATARev. 1.0 – до 1.5 Гбит/сек;
  2. SATARev. 2.0 – до 3 Гбит/сек;
  3. SATARev. 3.0 – до 6 Гбит/сек.

Так же, как и IDE-интерфейс шнур для подключения устройств «универсален» - разъёмы одинаковы с обеих сторон, но в отличие от «собрата» теперь при помощи одного SATA-кабеля можно подключить лишь одно устройство к одному SATA-порту.

Но вряд ли стоит огорчаться по этому поводу. Производители позаботились о том, чтобы количество портов было достаточным для самых разных применений, устанавливая на одну материнскую плату до 8 портов SATA. Разъем SATA-порта третьей ревизии, как правило, имеет ярко-красный цвет.

Дополнительные порты

Большинство материнских плат оборудуется производителями дополнительным количеством портов USB, а иногда и ещё одним, дополнительным COM-портом.


Сделано это для удобства пользователя. Большинство современных корпусов настольных ПК имеют Usb-разъёмы, установленные на передней панели для комфортного подключения внешних накопителей. В этом случае не нужно тянуться к задней стенке системного блока и «попадать» в Usb-разъём, который выведен на заднюю панель.

Такой разъем на передней панели и подключается к дополнительному USB-порту установленному на материнской плате. Кроме всего прочего, выведенных на заднюю панель интерфейсов USB может попросту не хватать, в виду большого количества устройств периферии , в этом случае можно приобрести дополнительную планку с разъёмами USB и подключить их к дополнительным портам.


Все вышесказанное относится и к другим портам, установленным на материнской плате. Например, последовательный порт COM или FireWireIEEE1394 может попросту не выводиться на заднюю панель персонального компьютера, однако на материнской плате он в то же время присутствует. В этом случае достаточно купить соответствующий шлейф и вывести его наружу.

Назвать портами данные разъёмы будет технически неверно, хотя метод подключения к ним дополнительных плат всё-таки чем-то схож с другими привычными портами. Принцип тот же – воткнул и включил. Система в большинстве случаев сама найдёт устройство и запросит (или установит автоматически) для него драйвера.


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

Шины PCI и PCIe несовместимы друг с другом, поэтому прежде чем приобрести себе плату расширения необходимо уточнить – какие системные шины установлены на материнской плате вашего ПК.

PCIex 1 и PCIex 16 – это современная реализация более старой шины PCI разработанной в 1991 году. Но в отличие от своей предшественницы, она является последовательной шиной, а кроме этого все шины PCIe соединены по топологии «звезда», в то время как старая шина PCI соединялась параллельно друг другу. Кроме этого, новая шина обладает такими преимуществами, как:

  1. Возможность горячей замены плат;
  2. Полоса пропускания имеет гарантированные параметры;
  3. Контроль целостности данных при приёме и передачи;
  4. Управляемое энергопотребление.

Различаются шины PCI Express количеством проводников подводимых к слоту, при помощи которых осуществляется обмен данными с установленным устройством (PCIex 1, PCIex2, PCIex 4, PCIex 8, PCIex 16, PCIex 32). Максимальная скорость передачи данных может достигать - 16 Гбит/сек.