Сделай Сам Свою Работу на 5

Контроллер интерфейса клавиатуры и мыши 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 системной платы должна знать особенности контроллера клавиатуры.

 








Не нашли, что искали? Воспользуйтесь поиском по сайту:



©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.