С появлением шин USB и Fire Wire в качестве характеристики интерфейса стала фигурировать и топология соединения. Для интерфейсов RS-232C и Centronics практически всегда применялась двухточечная топология PC — устройство (или PC — PC). Исключениями из этого правила являются различные устройства безопасности и защиты данных (Security devices), которые подключаются к СОМ- или LPT-портам, но имеют разъем для подключения внешнего устройства. Однако эти устройства для традиционной периферии прозрачны, поэтому можно считать, что они не нарушают общего правила. Аналогично обстоит дело и с адаптерами локальных сетей (например, Paraport) и внешних дисковых накопителей (Iomega Zip), подключаемых к LPT-портам. Хотя разрабатываемые стандарты для параллельного порта (IEEE 1284.3) и предусматривают соединение устройств в цепочку (Daisy Chain) или через мультиплексоры, широкого распространения такие способы подключения пока не получили. К другому классу исключений относится построение моноканала на СОМ-портах, которое несколько лет назад применялись в "любительских" локальных сетях, но было вытеснено существенно более эффективной и подешевевшей технологией Ethernet. Интерфейсные шины USB и Fire Wire реализуют древовидную топологию, в которой внешние устройства могут быть как оконечными, так и промежуточными (разветвителями). Эта топология позволяет подключать множество устройств к одному порту USB или Fire Wire.
Важным свойством интерфейса, на которое часто не обращают внимание, является гальваническая развязка, а точнее — ее отсутствие. "Схемные земли" устройств, соединяемых интерфейсом с СОМ- или LPT-портом PC, оказываются связанными со схемной землей компьютера (а через интерфейсный кабель и между собой). Если между ними до подключения интерфейса была разность потенциалов, то по общему проводу интерфейса потечет уравнивающий ток, что плохо по целому ряду причин. Падение напряжения на общем проводе, вызванное протеканием этого тока, приводит к смещению уровней сигналов, а протекание переменного тока приводит к сложению полезного сигнала с переменной составляющей помехи. К этим помехам особенно чувствительны ТТЛ-интерфейсы; в то же время в RS-232C смещение и помеху в пределах 2 В поглотит зона нечувствительности. В случае обрыва общего провода или плохого контакта, а гораздо чаще — при подключении и отключении интерфейсов без выключения питания устройств, разность потенциалов прикладывается к сигнальным цепям, а протекание уравнивающих токов через них часто приводит к пиротехническим эффектам.
Существенным свойством является возможность "горячего" подключения/отключения или замены устройств (Hot Swap), причем в двух аспектах. Во-первых, это безопасность переключений "на ходу" как для самих устройств и их интерфейсных схем, так и для целостности хранящихся и передаваемых данных и, наконец, для человека. Во-вторых, это возможность использования вновь подключенных устройств без перезагрузки системы, а также продолжения устойчивой работы системы при отключении устройств. Далеко не все внешние интерфейсы поддерживают "горячее подключение" в полном объеме, так, например, зачастую сканер с интерфейсом SCSI должен быть подключен к компьютеру и включен до загрузки ОС, иначе он не будет доступен системе. С новыми шинами USB и Fire Wire проблем "горячего подключения" не возникает.
В ряде интерфейсов заложены возможности PnP (Plug and Play — включай и играй), которые предназначены для снятия с пользователей забот по конфигурированию подключаемых устройств. В современных интерфейсах эти возможности закладывались изначально (PCI, USB, Fire Wire, Bluetooth), и эти функции в большинстве случаев работают нормально. Однако для интерфейсов-ветеранов (например, ISA, SCSI) технология PnP является поздней искусственной надстройкой, работающей с переменным успехом (Plug and Pray — включай и молись). Часто побочные эффекты вызваны наследием "тяжелого прошлого" — соседством устройств PnP с традиционными (legacy) устройствами. На закате шины ISA ее система PnP в общем работала, но в SCSI от идей автоконфигурирования со временем отказались. При разработке собственных устройств встает вопрос выбора подходящего интерфейса подключения. Этот вопрос следует решать, исходя из принципа разумной достаточности, по возможности отдавая предпочтение внешним интерфейсам. Следует помнить, что разработка аппаратной части устройства (hardware) тесно связана и с программной поддержкой устройств — как модулями ПО, исполняемыми процессором компьютера (software), так и программами встроенного микроконтроллера (firmware), на базе которого, как правило, строятся современные устройства. Промышленностью выпускается множество моделей микроконтроллеров, имеющих популярные интерфейсы (USB, RS-232, PC и другие). Однако в ряде случаев приходится использовать и стандартизованные шины расширения ввода-вывода. Эти шины предоставляют более широкие возможности для взаимодействия процессора с аппаратурой, нескованные жесткими ограничениями внешних интерфейсов. Однако за универсальность и производительность внутренних шин расширения приходится расплачиваться более замысловатой реализацией интерфейсных схем и сложностями при обеспечении совместимости с другим установленным в компьютер оборудованием. Ошибки могут приводить к потере работоспособности компьютера. Недаром серьезные производители компьютеров гарантируют работоспособность своих изделий только при установке сертифицированных (ими или независимыми лабораториями) карт расширения. При использовании внешних интерфейсов неприятности в случае ошибок чаще всего имеют отношение только к подключаемому устройству.
1.2 Параллельный интерфейс — LPT-порт
Порт параллельного интерфейса был введен в PC для подключения принтера — отсюда и пошло его название LPT-порт (Line PrinTer — построчный принтер). Традиционный, он же стандартный, LPT-порт (так называемый SPP-nopm) ориентирован на вывод данных, хотя с некоторыми ограничениями позволяет и вводить данные. Существуют различные модификации LPT-порта — двунаправленный, ЕРР, ЕСР и другие, расширяющие его функциональные возможности, повышающие производительность и снижающие нагрузку на процессор. Поначалу они являлись фирменными решениями отдельных производителей, позднее был принят стандарт IEEE 1284.
С внешней стороны порт имеет 8-битную шину данных, 5-битную шину сигналов состояния и 4-битную шину управляющих сигналов, выведенные на разъем-розетку DB-25S. В LPT-порте используются логические уровни ТТЛ, что ограничивает допустимую длину кабеля из-за невысокой помехозащищенности ТТЛ-интерфейса. Гальваническая развязка отсутствует — схемная земля подключаемого устройства соединяется со схемной землей компьютера. Из-за этого порт является уязвимым местом компьютера, страдающим при нарушении правил подключения и заземления устройств. Поскольку порт обычно располагается на системной плате, в случае его "выжигания" зачастую выходит из строя и его ближайшее окружение, вплоть до выгорания всей системной платы.
С программной стороны LPT-порт представляет собой набор регистров, расположенных в пространстве ввода-вывода. Регистры порта адресуются относительно базового адреса порта, стандартными значениями которого являются 3BCh, 378h и 278h. Порт может использовать линию запроса аппаратного прерывания, обычно IRQ7 или IRQ5. В расширенных режимах может использоваться и канал DMA.
Порт имеет поддержку на уровне BIOS — поиск установленных портов во время теста POST и сервисы печати Int 17h обеспечивают вывод символа (по опросу готовности, не используя аппаратных прерываний), инициализацию интерфейса и принтера, а также опрос состояния принтера.
Практически все современные системные платы (еще начиная с PCI-плат для процессоров 486) имеют встроенный адаптер LPT-порта. Существуют карты ISA с LPT-портом, где он чаще всего соседствует с парой СОМ-портов, а также с контроллерами дисковых интерфейсов (FDC+IDE). LPT-порт обычно присутствует и на плате дисплейного адаптера MDA (монохромный текстовый) и HGC (монохромный графический "Геркулес"). Есть и карты PCI с дополнительными LPT-портами.
К LPT-портам подключают принтеры, плоттеры, сканеры, коммуникационные устройства и устройства хранения данных, а также электронные ключи, программаторы и прочие устройства. Иногда параллельный интерфейс используют для связи между двумя компьютерами — получается сеть, "сделанная наколенке" (LapLink).
Традиционный, он же стандартный, LPT-порт называется стандартным параллельным портом (Standard Parallel Port, SPP), или SPP-портом, и является однонаправленным портом, через который программно реализуется протокол обмена Centronics. Название и назначение сигналов разъема порта (табл. 1.1) соответствуют интерфейсу Centronics.
Рисунок 1.1 - Схема цоколевки
Вилка (устанавливается на кабеле) | Розетка (устанавливается на корпусе компьютера) |
Названия и функциональные назначения выводов
№ вывода | Обозначение | Описание |
1 | /STROBE | Strobe (Строб) |
2 | D0 | Data Bit 0 (данные, нулевой бит) |
3 | D1 | Data Bit 1 (данные, 1-й бит) |
4 | D2 | Data Bit 2 (данные, 2-й бит) |
5 | D3 | Data Bit 3 (данные, 3-й бит) |
6 | D4 | Data Bit 4 (данные, 4-й бит) |
7 | D5 | Data Bit 5 (данные, 5-й бит) |
8 | D6 | Data Bit 6 (данные, 6-й бит) |
9 | D7 | Data Bit 7 (данные, 7-й бит) |
10 | /ACK | Acknowledge (Подтверждение) |
11 | BUSY | Busy (Занято) |
12 | PE | Paper End (Нет бумаги) |
13 | SEL | Select (Выбор) |
14 | /AUTOFD | Autofeed (Перевод строки) |
15 | /ERROR | Error (Ошибка) |
16 | /INIT | Initialize (Инициализация) |
17 | /SELIN | Select In (Выбор) |
18 | GND | Signal Ground (Корпус) |
19 | GND | Signal Ground (Корпус) |
20 | GND | Signal Ground (Корпус) |
21 | GND | Signal Ground (Корпус) |
22 | GND | Signal Ground (Корпус) |
23 | GND | Signal Ground (Корпус) |
24 | GND | Signal Ground (Корпус) |
25 | GND | Signal Ground (Корпус) |
Вилка (устанавливается на кабеле) | Розетка (устанавливается на корпусе принтера) |
№ вывода | Обозначение | Описание |
1 | /STROBE | Strobe (Строб) |
2 | D0 | Data Bit 0 (данные, нулевой бит) |
3 | D1 | Data Bit 1 (данные, 1-й бит) |
4 | D2 | Data Bit 2 (данные, 2-й бит) |
5 | D3 | Data Bit 3 (данные, 3-й бит) |
6 | D4 | Data Bit 4 (данные, 4-й бит) |
7 | D5 | Data Bit 5 (данные, 5-й бит) |
8 | D6 | Data Bit 6 (данные, 6-й бит) |
9 | D7 | Data Bit 7 (данные, 7-й бит) |
10 | /ACK | Acknowledge (Подтверждение) |
11 | BUSY | Busy (Занято) |
12 | PE | Paper End (Нет бумаги) |
13 | SEL | Select (Выбор) |
14 | /AUTOFD | Auto feed (Перевод строки) |
15 | n/c | Не используется |
16 | GND | Signal ground (земля сигнала) |
17 | GND | Сhassis ground (корпус устройства) |
18 | +5VDC | Питание, +5V |
19-30 | GND | Ground (земля сигнала) |
31 | /INIT | Initialize (Инициализация) |
32 | /ERROR | Error (Ошибка) |
33 | GND | Ground (корпус) |
34 | CLK | Clock (синхросигнал) |
35 | TEST | Test (тест) |
36 | /SELIN | Select In (Выбор) |
Адаптер SPP-порта содержит три 8-битных регистра, расположенных по соседним адресам в пространстве ввода-вывода, начиная с базового адреса порта BASE (3BCh, 378h или 278h).