Intel 8042
Intel 8042 — это однокристальный 8-битный микроконтроллер, разработанный корпорацией Intel и выпускавшийся с начала 1980-х годов. Относится к семейству микроконтроллеров MCS-48 (8048). Наибольшую известность получил как основной контроллер клавиатуры в архитектуре IBM PC/AT и совместимых с ней компьютерах, где выполнял функции интерфейса между клавиатурой и центральным процессором, а также управлял линией сброса (Reset) и линией A20 Gate.
История и происхождение
Микроконтроллер Intel 8042 был представлен Intel в 1980 году как модификация более раннего Intel 8048, с увеличенным объёмом встроенной памяти и расширенными возможностями ввода-вывода. Изначально он предназначался для различных встраиваемых применений, включая бытовую технику, промышленные контроллеры и периферийные устройства.
Переломным моментом в истории 8042 стало его использование компанией IBM в персональном компьютере IBM PC/AT (модель 5170), выпущенном в 1984 году. В этой системе микроконтроллер выполнял две ключевые функции: обслуживал клавиатурный интерфейс и управлял системными сигналами, связанными с адресацией памяти и сбросом процессора. Успех архитектуры IBM PC/AT сделал 8042 де-факто стандартом для совместимых компьютеров на протяжении более двух десятилетий. Впоследствии, с появлением материнских плат на чипсетах Super I/O и южных мостах, функции 8042 были эмулированы программно или интегрированы в другие микросхемы, однако вплоть до середины 2000-х годов многие материнские платы содержали отдельный микроконтроллер 8042 или его клон (например, 8042A или 8042AH).
Архитектура и технические характеристики
Intel 8042 построен на базе архитектуры MCS-48 и представляет собой законченную вычислительную систему на одном кристалле.
Основные параметры
- Разрядность: 8 бит.
- Тактовая частота: от 1 до 12 МГц (в зависимости от версии, например, 8042A — до 12 МГц).
- Внутренняя память программ: 2 Кбайт масочного ПЗУ (ROM), встроенного в кристалл.
- Внутренняя память данных: 128 байт статического ОЗУ (RAM).
- Регистры: аккумулятор (A), регистр состояния (PSW), два банка регистров общего назначения (R0–R7), указатель стека (SP).
- Порты ввода-вывода: три 8-битных порта (Port 1, Port 2, Port 3), часть выводов которых может использоваться для специальных функций (например, прерывания, тактирование).
- Таймер/счётчик: один 8-битный программируемый таймер с предделителем.
- Система прерываний: два внешних прерывания (INT и T0) и одно внутреннее от таймера.
- Напряжение питания: +5 В.
- Корпус: 40-выводной DIP (Dual In-line Package) или 44-выводной PLCC (Plastic Leaded Chip Carrier).
Система команд
8042 использует систему команд MCS-48, включающую около 90 инструкций. Большинство команд имеют длину 1 или 2 байта и выполняются за один или два машинных цикла (2,5–5 мкс при тактовой частоте 6 МГц). Поддерживаются операции пересылки данных, арифметические (сложение, вычитание), логические (И, ИЛИ, исключающее ИЛИ, сдвиги), переходы (условные и безусловные), вызов подпрограмм, работа с портами ввода-вывода и таймером.
Применение в IBM PC-совместимых компьютерах
Основная историческая роль Intel 8042 — выполнение функций контроллера клавиатуры (Keyboard Controller, KBC) в системах, совместимых с IBM PC/AT. Микроконтроллер подключался к шине ISA (или её аналогам) и взаимодействовал с клавиатурой через интерфейс PS/2 (или более ранний 5-контактный DIN).
Функции контроллера клавиатуры
- Приём данных от клавиатуры: 8042 получает скан-коды (make/break codes) от клавиатуры по последовательному интерфейсу, проверяет их на чётность и помещает в свой внутренний буфер (обычно 16 байт).
- Передача данных процессору: через порт 0x60 (порт данных) или 0x64 (порт состояния) центральный процессор (CPU) может читать скан-коды, записывать команды и считывать статус контроллера.
- Управление клавиатурой: 8042 может отправлять команды на клавиатуру (например, сброс, установка частоты повтора, включение/отключение светодиодов Caps Lock, Num Lock, Scroll Lock).
- Эмуляция интерфейса PS/2: 8042 реализует протокол обмена, совместимый с мышами и другими устройствами, подключаемыми через порт PS/2.
Управление системными сигналами
Помимо работы с клавиатурой, микроконтроллер 8042 в IBM PC/AT выполнял две критически важные системные функции:
- Управление линией A20 Gate: для обеспечения обратной совместимости с программным обеспечением, написанным для 16-битного процессора 8086, в 80286 и более поздних процессорах была введена адресная линия A20. Если она была отключена (замаскирована), процессор не мог обращаться к памяти выше 1 Мбайт. 8042 управлял состоянием этой линии (включение/отключение) через свой порт 0x92 (бит 1) или через специальные команды. Это позволяло операционным системам (например, Windows 95, Linux) переключаться между реальным и защищённым режимами.
- Управление линией сброса (Reset): 8042 мог инициировать аппаратный сброс центрального процессора, подавая сигнал на его вывод RESET. Это использовалось, например, для перехода из защищённого режима обратно в реальный режим (через сброс процессора с последующим перезапуском загрузчика).
Программный интерфейс (BIOS)
Взаимодействие с 8042 в IBM PC-совместимых компьютерах осуществлялось через прерывание INT 16h (сервисы клавиатуры BIOS) и прямое программирование портов 0x60 и 0x64. BIOS материнской платы содержал драйвер для 8042, который обрабатывал прерывания от клавиатуры (IRQ1) и управлял буфером скан-кодов.
Другие применения
Хотя 8042 наиболее известен как контроллер клавиатуры, он также использовался в ряде других устройств:
- Встраиваемые системы: в промышленных контроллерах, измерительных приборах, игровых автоматах.
- Периферийные устройства: в некоторых моделях принтеров, сканеров и модемов.
- Бытовая электроника: в микроволновых печах, стиральных машинах, пультах дистанционного управления (в качестве основного управляющего чипа).
Клоны и эмуляция
В связи с широкой распространённостью архитектуры IBM PC/AT, было выпущено множество клонов Intel 8042, как лицензионных (например, NEC 8042, AMD 8042), так и нелицензионных. Кроме того, многие производители чипсетов (например, Intel, VIA, SiS, ALi) интегрировали функциональность 8042 в состав своих микросхем Super I/O или южных мостов. В современных компьютерах (начиная с середины 2000-х годов) физический микроконтроллер 8042, как правило, отсутствует — его логика эмулируется программно в прошивке UEFI/BIOS или встроена в чипсет (например, в Intel PCH — Platform Controller Hub). Однако для обеспечения совместимости со старым программным обеспечением (например, MS-DOS, Windows 9x) эмуляция 8042 сохраняет все основные функции, включая управление линией A20 и портами 0x60/0x64.
Интересные факты
- Микроконтроллер 8042 в IBM PC/AT работал на частоте 6 МГц, что было значительно ниже тактовой частоты центрального процессора (6–20 МГц).
- Программное обеспечение 8042 (прошивка) хранилось в масочном ПЗУ и не могло быть изменено пользователем. Ошибки в прошивке могли приводить к нестабильной работе клавиатуры или системы в целом.
- В некоторых системах (например, IBM PS/2) использовался более сложный контроллер 8042A, поддерживающий работу с мышью и имеющий расширенный набор команд.
- Из-за своей роли в управлении линией A20, 8042 стал известен как «A20 Gate controller». Проблемы с эмуляцией этой функции в некоторых ранних чипсетах приводили к ошибкам при загрузке операционных систем, таких как Linux.
- В современных компьютерах, несмотря на эмуляцию, адресное пространство портов 0x60 и 0x64 зарезервировано для обратной совместимости, и любое обращение к ним перехватывается эмулятором 8042.
Источники
- Intel Corporation. MCS-48 Microcontroller User’s Manual. 1980.
- IBM Corporation. IBM Personal Computer AT Technical Reference. 1984.
- Shanley, Tom. ISA System Architecture. MindShare, 1995.
- Anderson, Don; Shanley, Tom. Pentium Processor System Architecture. MindShare, 1995.
- Messmer, Hans-Peter. The Indispensable PC Hardware Book. Addison-Wesley, 2002.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →