Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Интерфейс клавиатуры






Традиционная клавиатура PC представляет собой унифицированное устройство ввода со стандартным разъемом и последовательным интерфейсом связи с систем­ной платой. В настоящее время используются так называемые расширенные (enhanced) клавиатуры ATилн PS/2, имеющие более 100 клавиш. Они вытеснили первые 84-клавишные клавиатуры AT и тем более клавиатуры XT. По электри­ческому интерфейсу клавиатуры XT и AT совпадают, за исключением того, что двунаправленный интерфейс позволяет клавиатуре AT принимать команды от системной платы. Однако по логическому интерфейсу они несовместимы (клави­атура AT иногда имеет переключатель режима XT/AT). Клавиатура PS/2 отли­чается от AT только исполнением разъема, при необходимости можно использо­вать переходник.

Клавиатуры имеют внутренний микроконтроллер, способный определить факты нажатия и отпускания клавиш, при этом можно нажимать очередную клавишу, даже удерживая несколько ранее нажатых. При нажатии клавиши клавиатура передает идентифицирующий ее скан-код. При удержании клавиши в нажатом положении через некоторое время клавиатура начинает автоповтор передачи скан-кода нажатия этой клавиши. Задержка автоповтора (typematic delay) и скорость автоповтора (typematic rate) для клавиатур AT программируются. Расширенная клавиатура позволяет выбирать 1 из 3 наборов скан-кодов.

С распространением шины USB появились клавиатуры и с этим интерфейсом; они имеют и встроенный хаб, например для подключения мыши USB. Клавиатура USB питается от шины. Для клавиатуры USB требуется специальная поддержка со стороны BIOS; она имеется в современных системных платах.


8.1. Интерфейс клавиатуры. ___________________________________________ 311

8.1.1. Интерфейс клавиатуры AT и PS/2

Для подключения клавиатуры предназначен последовательный синхронный дву­направленный интерфейс, состоящий из двух обязательных сигналов KB-Data и KB-Clock. Обе линии на системной плате подтягиваются резисторами к шине +5 В. На обеих сторонах интерфейса выходные сигналы низкого уровня формируются выходами элементов с открытым коллектором (стоком), а состояние линий мо­жет быть прочитано через входные линии контроллеров. Вид разъемов (со сторо­ны задней панели) и назначение контактов приведены на рис. 8.1. Конструктивно возможны два варианта разъема — обычная 5-контактная розетка DIN (клавиату­ра AT) или малогабаритная розетка mini-DIN (PS/2). На этот же разъем через плавкий предохранитель поступает напряжение питания клавиатуры +5 В.

Рис. 8.1. Разъемы (вид со стороны контактов) подключения клавиатур: а — AT и б — PS/2

ВНИМАНИЕ---------------------------------------------------------------------------------

Питание от разъема клавиатуры часто используется такими устройствами, как внешние на­копители или адаптеры локальных сетей, подключаемыми к параллельному порту. Плавкий предохранитель, установленный на системной плате, может не выдержать броска тока, по­требляемого этими устройствами. При этом откажется работать и клавиатура — ее индикато­ры даже и не мигнут при включении.

Процессор общается с клавиатурой через контроллер интерфейса клавиатуры — микроконтроллер 8042 или программно-совместимый с ним, установленный на системной плате. Для обмена информацией в основном используется порт 60h, из которого принимаются скан-коды. О необходимости чтения скан-кода контрол­лер сигнализирует процессору через аппаратное прерывание IRQ1, сигнал которо­го вырабатывается по каждому событию клавиатуры (нажатию и отпусканию клавиши). Задание параметров автоповтора, выбор таблиц скан-кодов, управле­ние светодиодными индикаторами, а также управление режимом сканирования матрицы клавиш и запуск диагностического теста осуществляется командами, посылаемыми в этот же порт. Контроллер транслирует команды в посылки, на­правляемые к клавиатуре.

Работу двунаправленного интерфейса иллюстрирует рис. 8.2, а, где серым цветом помечены сигналы, формируемые контроллером, а черным — клавиатурой. В исход­ном состоянии обе линии «отпущены» выходными формирователями в состо­яние с высоким уровнем. Клавиатура может начать передачу данных в произволь-



312_________ Глава 8. Специализированные интерфейсы периферийных устройств

ный момент, когда интерфейс находится в покое. Клавиатура формирует старто­вый бит (низкий уровень) на линии KB-Data и первый импульс KB-Clock, что яв­ляется сигналом контроллеру о необходимости начала приема. После подъема KB-Clock она выводит 0-й бит данных на линию KB-Data, а затем и следующий им­пульс KB-Clock. Контроллер должен «защелкивать» принятый бит данных по спа­ду KB-Clock. Так передаются все 8 бит данных и бит паритета, дополняющий чис­ло единичных бит до нечетного. После синхроимпульса бита паритета контроллер клавиатуры должен сформировать импульс KB-Clock, подтверждающий прием байта (Ack). Если весь байт с битом паритета не будет получен контроллером за 2 мс, контроллер прекращает прием данного байта и фиксирует ошибку тайм-аута.

Рис. 8.2. Временные диаграммы интерфейса клавиатуры: а — прием посылки от клавиатуры,

б — передача команды в клавиатуру

Обратная передача — вывод команды контроллера в клавиатуру — происходит несколько сложнее (рис. 8.2, б). Из состояния покоя контроллер устанавливает низкий уровень KB-Clock на 250 мкс и формирует старт-бит (низкий уровень) — это сигнал клавиатуре на прием команды. На него клавиатура должна ответить серией из 11 импульсов KB-Clock. По спаду очередного синхроимпульса контрол­лер выставляет очередной бит данных, а клавиатура его «защелкивает» по фронту формируемого ею же синхроимпульса. После бита паритета (9-й импульс) и единич­ного стоп-бита (10-й) на 11-м импульсе клавиатура формирует нулевой бит под­тверждения (Ack). После этого контроллер формирует импульс KB-Clock (60 мкс), который является запросом на прием ответа клавиатуры. Контроллер ожидает окончания ответа на этот запрос не долее 20 мс и, если ответ не придет за это время, сформирует ошибку тайм-аута. Ошибка будет также в случае, если клавиатура не введет первый синхроимпульс за 15 мс от начала запроса или контроллер не примет данные, включая стоп-бит, за 2 мс с момента появления синхроимпульса бита 0.

На системной плате PC/XT контроллера 8042 не было, а интерфейс клавиатуры (однонаправленный) был реализован аппаратной логикой — регистром сдвига, параллельный выход которого подключается к входам порта А системного интер­фейса 18255. По приему байта от клавиатуры вырабатывается аппаратное прерыва­ние IRQ1, обработчик которого может прочитать принятый байт из порта 60h. С по­мощью бит 7 и 6 порта 61h возможны программная блокировка и сброс клавиатуры соответственно. Сброс клавиатуры XT осуществляется обнулением линии KB-Clock.


8.1. Интерфейс клавиатуры____________________________________________ 313

8.1.2. Контроллер интерфейса клавиатуры и мыши 8042/8242

Программируемый микроконтроллер клавиатуры 18042, КВС (keyboard controller), является посредником между клавиатурой, подключенной к нему по вышеописан­ному последовательному интерфейсу, и центральным процессором, с которым он связан через параллельный интерфейс. В микроконтроллере постоянно исполня­ется внутренняя микропрограмма, реагирующая на сигналы интерфейса клавиа­туры и команды, поступающие от процессора. Эта микропрограмма (КВС BIOS) хранится во внутреннем масочном ПЗУ контроллера; внешне она недоступна, и контроллер можно рассматривать как устройство с заданными свойствами. По­скольку логика работы контроллера реализована программой, его реакция на ко­манды процессора и сигналы интерфейса относительно медленная — время откли­ка измеряется десятками микросекунд. Помимо управления клавиатурой через программно-управляемые и программно-читаемые линии внешних портов кон­троллера формируются сигналы управления вентилем Gate A20, аппаратного си­стемного сброса, а также считываются сигналы от конфигурационных джамперов системной платы. Контроллер 18242, кроме интерфейса клавиатуры, поддержи­вает аналогичный интерфейс дополнительного устройства — PS/2-Mouse. При инициализации (по аппаратному сбросу) контроллер установится в режим PS/2 или AT, в зависимости от состояния определенного вывода микросхемы. В режи­ме AT контроллер не выполняет функции интерфейса мыши и игнорирует все команды, относящиеся к мыши. Режим выбирается соответствующей настройкой BIOS Setup.

Связь контроллера с центральным процессором обеспечивается через 8-битную шину данных. Контроллер выбирается сигналом CS# от дешифратора адреса, срабатывающего по адресам 0060h и 0064h; внутренние регистры контроллера выбираются линией SA2 системной шины адреса. Чтение и запись выполняет­ся по сигналам IORD* и IOWR#, генерируемых при выполнении процессором инструкций IN и OUT. Таким образом, контроллер располагается в пространстве ввода-вывода CPU по адресам 60h (регистр данных) и 64h (регистр состояния и команд), назначение регистров приведено в табл. 8.1. Из регистра данных счи­тываются данные, принимаемые по интерфейсам от клавиатуры и мыши, а также данные, возвращаемые контроллером в ответ на адресованные ему команды. Запись в регистр данных используется для подачи команд и данных, адресован­ных к клавиатуре и мыши, а также данных для команд, адресованных контролле­ру. В регистр команд записываются команды, адресованные контроллеру. Режим работы контроллера (разрешение работы интерфейсов клавиатуры и мыши и пре­рываний от них, трансляция скан-кодов и другие параметры) задается командным байтом, посылаемым в контроллер по специальной команде. Перед любой за­писью в контроллер необходимо убедиться в его готовности. Признаком го­товности/занятости контроллера является значение бита 1 регистра состояния (порт 064h).


314___________ Глава 8. Специализированные интерфейсы периферийных устройств

Таблица 8.1. Назначение регистров контроллера клавиатуры Порт, R/W Назначение

060 RW Порт данных 8042

064 R Регистр состояния 8042 (R/O): бит 7 — ошибка четности при последнем обмене

с клавиатурой; бит 6 — тайм-аут приемника/общий тайм-аут1; бит 5 — тайм-аут передатчика/выходной буфер интерфейса мыши полон (MouseJDBF)1; бит 4: 0 — клавиатура на замке; бит 3: 1 — последняя запись была командой, 0 — данными; бит 2: системный флаг, устанавливается в 0 по включении питания, в 1 — программно (что означает состояние завершения системного сброса Reset OK); бит 1: 1— входной буфер интерфейса клавиатуры полон, 0 — готовность к приему команды/данных; бит 0: 1— выходной буфер интерфейса клавиатуры полон (DBF)

064 W Регистр команд 8042

1 Второе назначение бита относится к контроллеру i8242B, имеющему дополнительный интерфейс для подключения PS/2-Mouse.

Контроллер имеет два внешних порта, с помощью которых и реализуются по­следовательные интерфейсы, а также управление вентилем GateA20, сигналом сброса процессора и чтением сигналов от джамперов системной платы и ключа блокировки клавиатуры. Эти порты не имеют непосредственного отображения в пространстве адресов ввода-вывода PC; доступ к ним осуществляется через ко­манды контроллера. Кроме этих портов контроллер имеет два специальных входа ТО и Т1, которые могут считываться его микропрограммой и использоваться в каче­стве источников его внутренних прерываний (это не прерывания CPU). Каждая из двунаправленных интерфейсных линий KB-Data, KB-Clock, MS-Data и MS-Clock реализуется битом порта вывода и битом ввода. В режиме PS/2 для чтения линий KB-Clock и MS-Clock используются входы ТО и Т1, в режиме AT вход Т1 использу­ется для линии KB-Data.

Порт ввода Р1 доступен по команде C0h; в режиме PS/2 имеет следующее назначе­ние бит:

♦ бит 7 — ключ блокировки клавиатуры (Keylock): 0 — клавиатура заблокирована;

♦ бит 6 — перемычка установки видеорежима: 0 — цветной (Color), 1 — моно­хромный (Mono);

♦ бит 5 — системная перемычка: 0 —замкнута;

♦ бит 4 — перемычка задания объема ОЗУ: 0 — 256 Кбайт, 1 — 512 Кбайт и более;

♦ биты 3, 2 — не используются;

♦ бит 1 — линия MS-Data;

♦ бит 0 — линия KB-Data.

В современных ПК используются только биты 0, 1 и 7; в режиме AT биты О и 1 не используются.

Порт вывода (Р2), доступный для записи и чтения по командам Dlh и D0h соответ­ственно, имеет следующее назначение бит:

♦ бит 7 — линия KB-Data;

♦ бит 6 — линия KB-Clk;


8.1. Интерфейс клавиатуры____________________________________________ 315

♦ бит 5 — запрос прерывания от дополнительного интерфейса (IRQ12), в режи­ме AT не используется;

♦ бит 4 — запрос прерывания от клавиатуры (IRQ1);

♦ бит 3 — линия MS-Clk, в режиме AT не используется;

♦ бит 2 — линия MS-Data, в режиме AT не используется;

♦ бит 1 — вентиль линии адреса А20 (Gate A20, см. п. 12.3): 0 — А20 обнулен, 1 — управляется выводом процессора;

♦ бит 0 — альтернативный сброс процессора (сигнала INIT, без формирования общего сигнала сброса).

Приняв посылку от клавиатуры, контроллер выполняет внутреннюю трансляцию скан-кода (если это не запрещено командным байтом) и устанавливает в регистре состояния OBF=1, что приводит к генерации запроса прерывания IRQ1 (если это не запрещено командным байтом). В ответ на это хост должен считать данные (транс­лированный скан-код, префиксы и т. п.) из порта данных (60h). Трансляция обес­печивает программную совместимость клавиатур XT и AT (см. ниже) по чтению скан-кодов из порта 60h. При получении посылки от мыши контроллер не выпол­няет никаких преобразований и устанавливает в регистре состояния Моusе_0ВF-1, что приводит к генерации запроса прерывания IRQ12 (если это не запрещено ко­мандным байтом). По этому сигналу данные от мыши должны быть считаны хос­том из того же порта 60h. To же самое происходит и при программной записи байта в выходной буфер клавиатуры (код D2h) или мыши (код D3h), с установ­кой соответствующих битов состояния и генерацией запросов IRQ1 или IRQ 12.

После получения команды, по которой контроллер должен возвращать данные, он устанавливает в регистре состояния OBF=1, что приводит к генерации запроса прерывания IRQ1 (если это не запрещено командным байтом). После этого дан­ные должны быть считаны из порта данных (по адресу 60h). Если команда возвра­щает несколько байтов данных, прерывание генерируется для каждого байта.

Взаимодействие с контроллером осуществляется подачей команд — записью в ре­гистр команд (по адресу 064h). Перед посылкой команды необходимо убедиться в готовности контроллера к ее приему — бит 1 порта 64h должен иметь нулевое значение. Подробно команды контроллера описаны в литературе [2, 8]. Контрол­леры клавиатуры различаются версиями встроенного ПО, поэтому замена кон­троллера другим, с отличающейся версией ПО (КВС BIOS), может оказаться проб­лематичной — микросхема BIOS системной платы должна знать особенности контроллера клавиатуры.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.