
3. Специальные интерфейсы
В этой главе рассматриваются следующие интерфейсы IBM PC-совместимых компьютеров: интерфейсы устройств ввода (клавиатуры и манипуляторов), аналоговый и дискретный интерфейсы игрового адаптера, аудиоинтерфейсы и интерфейсы мониторов.
3.1. Интерфейс клавиатуры
Для подключения клавиатуры предназначен последовательный синхронный интерфейс, состоящий из двух обязательных сигналов, KB-Data и KB-Clock. Необязательный сигнал KB-Reset сбрасывает клавиатуру низким уровнем сигнала. Интерфейс на системной плате XT реализован аппаратной логикой — регистром сдвига, параллельный выход которого подключается ко входам порта А системного интерфейса 18255. По приему байта от клавиатуры вырабатывается аппаратное прерывание IRQ2, обработчик которого может прочитать принятый байт из порта 60h. С помощью бит 7 и 6 порта 61h возможны программная блокировка и сброс клавиатуры соответственно. Сброс клавиатуры XT осуществляется обнулением линии KB-Clock.
Интерфейс клавиатуры AT построен на микроконтроллере i8042, обеспечивающем, в отличие от XT, двунаправленный интерфейс с клавиатурой. Передача информации к клавиатуре используется для управления индикаторами ее состояния и программирования параметров (автоповтор, набор скан-кодов).
Хотя электрический интерфейс клавиатур XT и AT совпадает (за исключением двунаправленного обмена в AT), логические форматы посылок существенно отличаются. POST способен производить диагностику клавиатуры. Подключение клавиатуры неподходящего типа или отсутствие клавиатуры он воспримет как ошибку. Если проверка клавиатуры
разрешена в BIOS Setup, то по этой ошибке POST будет дожидаться получения кода клавиши F1.
Вид разъемов клавиатур (со стороны задней панели) и назначение контактов приведены на рис. 3.1. Конструктивно возможны два варианта разъема — обычная 5-контактная розетка DIN или малогабаритная розетка mini-DIN (PS/2). На этот же разъем через плавкий предохранитель поступает напряжение питания клавиатуры +5 В. Электрически и логически интерфейс клавиатуры PS/2 повторяет AT, поэтому для согласования типа разъема применяют специальные переходники. Предпочтительнее использовать переходники, выполненные в виде мягкого кабеля с разъемами. Монолитный переходник, особенно с АТ-кдавиатуры на PS/2-разъем, хуже тем, что малейшее движение кабеля вызывает большой момент силы, выламывающий переходник из маленького гнезда PS/2.
Питание от разъема клавиатуры часто используется такими устройствами, как внешние накопители или адаптеры локальных сетей, подключаемыми к параллельному порту. Плавкий предохранитель, установленный на системной плате, может не выдержать броска тока, потребляемого этими устройствами. При этом откажется работать и клавиатура - ее индикаторы не мигнут при включении.
Программируемый микроконтроллер i8042 имеет встроенное ПО, которое хранится в масочном внутреннем ПЗУ и обеспечивает вырабатывание запроса прерывания по приему скан-кода от клавиатуры и отработку управляющих команд от ЦП. Кроме управления клавиатурой, через программно-управляемые и программно-читаемые линии внешних портов контроллера формируются сигналы управления вентилем Gate A20, аппаратного системного сброса, а также считываются сигналы от конфигурационных джамперов системной платы. Контроллер 18242В, кроме интерфейса кла-
виатуры, поддерживает аналогичный интерфейс дополнительного устройства, например PS/2-Mouse. Контроллер имеет два порта, доступ к которым осуществляется через команды контроллера.
Порт ввода, доступный по команде COh, используется для чтения состояния джамперов и ключа:
» Бит 7 — если 0, то клавиатура заблокирована ключом (KeyLock).
« Бит 6 — исходный видеорежим: 0=CGA, 1=MDA. s Бит 5 — системная перемычка: 0=замкнута. « Бит 4 - системное ОЗУ: 0=512 Кбайт и более, 1=256 Кбайт. * Бит 1 — вход данных дополнительного интерфейса. » Бит 0 — вход данных интерфейса клавиатуры.
Порт вывода, доступный для записи и чтения по командам 01 h и DOh соответственно, имеет следующее назначение бит:
я Бит 7 — последовательные данные клавиатуры. s Бит 6 — синхронизация клавиатуры.
я Бит 5 — запрос прерывания от дополнительного интерфейса (IRQ12).
« Бит 4 — запрос прерывания от клавиатуры (IRQ1). s Бит 3 — синхронизация дополнительного интерфейса.
« Бит 2 — последовательные данные дополнительного интерфейса.
ж Бит 1 — вентиль линии адреса А20 (Gate A20).
s Бит 0 — альтернативный сброс процессора (без формирования общего сигнала сброса).
Контроллер расположен в пространстве ввода/вывода по адресам 60h и 64h, причем по чтению скан-кода клавиатуры из порта 60h сохраняется совместимость с XT. Назначение регистров контроллера клавиатуры приведено в табл. 3.1. Регистр данных контроллера в режиме записи используется для подачи команд, относящихся к клавиатуре и собственно контроллеру. Признаком готовности контроллера является нулевое значение бита 1 регистра состояния (порт 064h).
Общие команды контроллера i8042:
«s DF — разрешить управление линией А20.
и DD — запретить управление линией А20.
« D1 — запись в порт вывода i8042.
» DO — чтение порта вывода i8042.
« СО — чтение порта ввода i8042.
^
ss АЕ — разрешение клавиатуры. ^
т AD — запрещение клавиатуры, а
» AC — чтение ОЗУ контроллера.
» АВ — тест синхронизации и данных. '» АА — внутренний тест контроллера. « 60 — запись в контроллер. ss 20 — чтение контроллера. Команды управления клавиатурой AT:
я FF — Reset — сброс и тест клавиатуры. » FE — Resend — повтор последней передачи.
» FB-FD — Set Key Types — установка автоповтора отдельных клавиш.
я F7-FA —Set All Keys — установка операции автоповтора клавиатуры.
я F6 — Set Default — сброс в начальное состояние и разрешение сканирования.
« F5 — Default Disable — сброс в начальное состояние и запрет сканирования.
a F4 — Enable KB — клавиатура ответит байтом подтверждения АСК и продолжит сканирование.
» F3 — Set Typematic Rate/Delay — задание задержки и частоты повтора кодов. Последующий байт данных имеет следующий формат:
Бит 7"0. Биты [6:5] — задержка, мс:
00-250, 01-500,10-750,11-1000. Биты [4:0]=00-lFh — скорость повторов, 1/с:
00h=30,0 05П-18.5 OAh°12,0 12h»6,0 01h=26,7 06h»17,l OCh=10,0 Uh-5,0 02h=24,0 07h=16,0 ODh-9,2 ^-4,0 03h=21,8 08h=15,0 OFh=8,0 lAh=3,0 04h=20,0 09h=13,3 10h=7,5 lFh-2,0
» F2 — Read ID Code — запрос на двухбайтный идентификатор.
8 ЕЕ — Echo — эхо-диагностика: возвращает ОЕЕЬ.
m ED — Set/Reset Mode Indicators — управление индикаторами клавиатуры. Последующий байт данных:
Бит 0: 1-включить Scroll Lock.
Бит 1: 1 "включить Num Lock.
Бит 2: 1-включить Caps Lock. » AD — запрет сканирования. ж АЕ — разрешение сканирования.
По нажатии клавиши ее скан-код попадает в регистр данных. По отпускании в регистр данных попадает сначала префикс отпускания, затем — скан код. В XT префикса нет, по отпускании передается скан-код с единицей в бите 7.
Из регистра данных контроллера кроме скан-кодов возможно получение ответов на команды, префикса кода отпускания клавиши (FO) или кодов особых случаев:
« FA — АСК — подтверждение приема команды. » АА — Test OK — внутренний тест прошел. » FD — Diagnostic Failure — ошибка внутреннего теста. «si ЕЕ — Echo Response — ответ на эхо-команду.
» 00, FF — Buffer Error — переполнение буфера или неидентифицированная клавиша.