Параллельный порт

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
Параллельный порт DB-25 принтера в стиле IBM PC и некоторых других компьютеров
36-контактное кабельное гнездо для принтеров некоторых компьютеров, применялось в промышленном оборудовании и в ранних персональных компьютерах (до 1980-х)

Паралле́льный порт — тип интерфейса, разработанный для компьютеров (персональных и других) для подключения различных периферийных устройств. В вычислительной технике параллельный порт является физической реализацией принципа параллельного соединения. Он также известен как принтерный порт или порт Centronics. Стандарт IEEE 1284 определяет двунаправленный вариант порта, который позволяет одновременно передавать и принимать биты данных.

Первый принтер с параллельным интерфейсом Centronics модели 101 был представлен в 1970 году[1]. Интерфейс был разработан в Centronics Робертом Говардом и Прентисом Робинсоном. Параллельный интерфейс Centronics де-факт стал отраслевым стандартом. В то время производители использовали в системные блоки уникальные разъёмы, для которых применялись различные кабели. Например, в ранних системах VAX использовался разъём DC-3, в NCR применялся 36-контактный плоский разъём, Texas Instruments использовала 25-контактный краевой разъём, а в Data General использовался 50-контактный плоский разъём.

Dataproducts представила весьма оригинальную реализацию параллельного интерфейса для своих принтеров. Она использовала разъём DC-37 со стороны хоста и 50-контактный разъём со стороны принтера: либо DD-50 (иногда его неправильно называют DB50), либо разъём М-50 в форме блока (его также называют винчестерным разъёмом)[2][3]. Параллельное соединение Dataproducts было доступно в двух вариантах: либо для коротких соединений (до 15 м), либо для длинных соединений (от 15 до 150 м). Интерфейс Dataproducts встречался во многих системах мейнфреймов вплоть до 1990-х годов, многие производители принтеров предлагали его в качестве опции.

IBM выпустила свой персональный компьютер в 1981 году и включила в него доработанный вариант интерфейса Centronics: только принтеры с логотипом IBM (ребрендинг от Epson) могли подключаться к IBM PC[4]. IBM стандартизировала параллельный кабель с разъёмом DB25F на стороне ПК и разъём Centronics на стороне принтера. Вскоре производители выпустили на рынок принтеры, совместимые как со стандартным соединением Centronics, так и с соединением IBM.

В 1987 году IBM реализовала первую версию двунаправленного интерфейса. HP в 1992 году представила свою версию двунаправленного интерфейса на принтере LaserJet 4, известную как Bitronics. Интерфейсы Bitronics и Centronics в 1994 году были заменены на стандартный интерфейс IEEE 1284.

Применение

[править | править код]

До появления USB параллельный интерфейс помимо принтеров был адаптирован к большому числу периферийных устройств. Вероятно, одним из первых таких устройств были электронные ключи для защиты от копирования программного обеспечения. Вскоре параллельный интерфейс нашёл применение в накопителях на гибких магнитных дисках Iomega Zip и сканерах, за которыми последовали и другие устройства: модемы, звуковые карты, веб-камеры, геймпады, джойстики, внешние жёсткие диски и CD-диски. Появились адаптеры для подключения через параллельный интерфейс SCSI-устройств.

Параллельный порт широко использовался как импровизированное GPIO. Он позволял напрямую менять напряжения на штырях, этих штырей было достаточно много и на них были обычные ТТЛ 5 вольт — а значит, можно подключать «глупую» периферию вроде транзисторов, а также «умную» вроде микроконтроллеров и ППЗУ, но работающую по нестандартным протоколам вроде SPI. На этом принципе работал примитивный звуковой ЦАП Covox. Существовал так называемый «дрыгоножный программатор» (он же bitbang-программатор), представлявший собой всего лишь кабель с токоограничивающими резисторами.

Текущее применение

[править | править код]

Для потребителей интерфейс USB, а в некоторых случаях — Ethernet, эффективно заменили параллельный порт принтера. Практически все современные производители персональных компьютеров, материнских плат и ноутбуков рассматривают параллельный порт как устаревшее наследие прошлого и больше его не поддерживают. Руководящие принципы для программы Windows Logo фирмы Microsoft «настоятельно рекомендуют» системным разработчикам воздерживаться от применения параллельных портов[5]. Разработаны и доступны адаптеры, которые позволяют подключать старые принтеры и сканеры с параллельным интерфейсом к USB-портам современных компьютеров.

Реализация в персональных компьютерах IBM

[править | править код]

Адреса портов

[править | править код]

Традиционно в системе IBM PC три первых параллельных порта распределяются в соответствии со следующей таблицей:

Имя порта Прерывание # Начальный
адрес I/O
Конечный
адрес I/O
LPT1 IRQ 2 0x3BC 0x3BF
LPT2 IRQ 7 0x378 0x37F
LPT3 IRQ 5 0x278 0x27F

Если в компьютере есть неиспользуемый слот LPTx, то адреса других портов сдвигаются вверх (например, при отсутствии порта 0x3BC порт 0x378 станет LPT1)[6]. Адреса портов, присвоенные каждому слоту LPTx, можно определить путём чтения области данных BIOS по адресу 0000:0408.

Программный интерфейс

[править | править код]

В версиях Windows, которые не используют ядро Windows NT (типа DOS и некоторых других операционных систем), программы могут получить доступ к параллельному порту с помощью подпрограмм outportb() и inportb(). В операционных системах Windows NT и Unix (NetBSD, FreeBSD, 386BSD, Solaris и т. д.) задействован встроенный в процессор 80386 механизм безопасности, и доступ к параллельному порту запрещён, если не указан нужный драйвер. Это повышает безопасность и способствует разрешению конфликтов при доступе к устройству. В Linux, если процесс запущен с правами администратора, могут использоваться функции inb(), outb() и команда ioperm() для доступа к базовому адресу порта.

Расположение выводов

[править | править код]

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

№ контакта
(25-контактный)
№ контакта
(36-контактный)
Обозначение Направление Бит регистра Инвертирование
1 1 Strobe In/Out Control-0 Да
2 2 Data0 Out Data-0 Нет
3 3 Data1 Out Data-1 Нет
4 4 Data2 Out Data-2 Нет
5 5 Data3 Out Data-3 Нет
6 6 Data4 Out Data-4 Нет
7 7 Data5 Out Data-5 Нет
8 8 Data6 Out Data-6 Нет
9 9 Data7 Out Data-7 Нет
10 10 Ack In Status-6 Нет
11 11 Busy In Status-7 Да
12 12 Paper-Out In Status-5 Нет
13 13 Select In Status-4 Нет
14 14 Linefeed In/Out Control-1 Да
15 32 Error In Status-3 Нет
16 31 Reset In/Out Control-2 Нет
17 36 Select-Printer In/Out Control-3 Да
18—25 19—30, 33, 17, 16 Ground

В инвертированных линиях низкий логический уровень имеет значение «истина», в неинвертированных, наоборот, истиной является высокий логический уровень.

Контакт 25 в разъёме DB-25 на современных компьютерах может быть не соединён с землёй.

[править | править код]

В исходном варианте параллельного интерфейса (SPP, Standard Parallel Port) линии данных были однонаправленными (только вывод). Специалисты компании LapLink, занимавшейся ПО для синхронизации настольного компьютера с ноутбуком, придумали обходной путь.

Кроме восьми линий данных, параллельный порт имеет пять линий состояния. Восьмибитный байт делился на два 4-битных полубайта, которые передавались друг за другом, приём осуществлялся через линии состояния. Пятая линия состояния (обычно штырь 11 «занят», ему соответствует верхний бит регистра состояния и единственный из пяти инвертированный) служила для синхронизации: 0 сменялся на 1 и наоборот каждый раз, когда передавался полубайт, в ответ принимающая сторона меняла 0 на 1 на своей линии (и заодно передавала свой полубайт). Таким «пинг-понгом» компьютеры могли передавать информацию с той скоростью, какую реально поддерживает ПО и кабель: быстрее для короткого кабеля и медленнее — для длинного. Подобным механизмом пользовалось и другое аппаратное обеспечение, подключавшееся к параллельному порту.

Разводка кабеля[7]:

Название Штырь DB-25M Направление Штырь DB-25M Название
Данные 0 2 15 Ошибка
Данные 1 3 13 Выбор
Данные 2 4 12 Нет бумаги
Данные 3 5 10 Подтверждение
Данные 4 6 11 Занят
Подтверждение 10 5 Данные 3
Занят 11 6 Данные 4
Нет бумаги 12 4 Данные 2
Выбор 13 3 Данные 1
Ошибка 15 2 Данные 0
Земля 25 25 Земля

В дальнейшем кабель LapLink (или кабель InterLink, названный в честь утилиты MS-DOS, или нуль-принтерный кабель, по аналогии с нуль-модемным) стал экзотическим, но быстрым и надёжным (до 100 килобайт в секунду[8]!) способом передачи данных между компьютерами. Игры, за редчайшими исключениями[9], такой связи не поддерживали; к тому же главным средством дистанционной игры тогда был телефонный модем, и под его частоты разрабатывали игры. Зато деловое ПО быстро взяло кабель на вооружение: утилиты для связи были в составе MS-DOS, Norton Commander и Microsoft Windows. Последняя давала возможность любой игре (как для DOS, так и для Windows) работать через параллельный кабель по протоколам IPX и TCP/IP.

Фабричные кабели имели длину около 2 м; кабель длиннее 4 м не рекомендуется — сильно падает скорость, повышается вероятность приёма с ошибкой.

На Windows 7 соединение компьютеров через нуль-модемный кабель и LapLink всё ещё работает[10].

Примечания

[править | править код]
  1. Webster, Edward C. Print Unchained: Fifty Years of Digital Printing: A Saga of Invention and Enterprise (англ.). — West Dover, VT: DRA of Vermont, 2000. — ISBN 0-9702617-0-5.
  2. Dataproducts D-Sub 50 Parallel. Hardware Book. Архивировано 25 августа 2011 года.
  3. Dataproducts M/50 Parallel. Hardware Book. Архивировано 25 августа 2011 года.
  4. Durda IV, Frank Centronics and IBM Compatible Parallel Printer Interface Pin Assignment Reference (2004). Архивировано из оригинала 25 августа 2011 года.
  5. Microsoft Windows Logo Program System and Device Requirements. Дата обращения: 8 июня 2011. Архивировано из оригинала 25 августа 2011 года.
  6. Frank Van Gilluwe, The Undocumented PC, 1994, page 703, ISBN 0-201-62277-7
  7. LapLink/InterLink Parallel — HwB. Дата обращения: 23 сентября 2012. Архивировано 9 ноября 2012 года.
  8. Для сравнения: больше 8 килобайт в секунду от нуль-модемного кабеля получить нельзя; основной носитель Ethernet того времени 10BASE-2 давал до 1 мегабайта в секунду, но был значительно дороже.
  9. Например, существовала неофициальная утилита для Doom.
  10. Installing and configuring a PPP null-modem connection on Windows 7 | MikeBeach.org