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

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

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

История

править

Первый принтер с параллельным интерфейсом 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
LPT1IRQ 20x3BC0x3BF
LPT2IRQ 70x3780x37F
LPT3IRQ 50x2780x27F

Если в компьютере есть неиспользуемый слот 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-контактный)
ОбозначениеНаправлениеБит регистраИнвертирование
11StrobeIn/OutControl-0Да
22Data0OutData-0Нет
33Data1OutData-1Нет
44Data2OutData-2Нет
55Data3OutData-3Нет
66Data4OutData-4Нет
77Data5OutData-5Нет
88Data6OutData-6Нет
99Data7OutData-7Нет
1010AckInStatus-6Нет
1111BusyInStatus-7Да
1212Paper-OutInStatus-5Нет
1313SelectInStatus-4Нет
1414LinefeedIn/OutControl-1Да
1532ErrorInStatus-3Нет
1631ResetIn/OutControl-2Нет
1736Select-PrinterIn/OutControl-3Да
18—2519—30, 33, 17, 16Ground

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

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

править

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

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

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

НазваниеШтырь DB-25MНаправлениеШтырь DB-25MНазвание
Данные 0215Ошибка
Данные 1313Выбор
Данные 2412Нет бумаги
Данные 3510Подтверждение
Данные 4611Занят
Подтверждение105Данные 3
Занят116Данные 4
Нет бумаги124Данные 2
Выбор133Данные 1
Ошибка152Данные 0
Земля2525Земля

В дальнейшем кабель 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

Ссылки

править