Вспомогательные микросхемы: программируемый таймер Intel 8254 Довольно часто требуется устройство формирования временных интервалов для процессора и внешних устройств, подсчёта внешних событий и ввода показаний в процессор, а также генерации внешней синхронизации, которую может программировать процессор. Такое устройство называется программируемым интервальным таймером/счётчиком событий. Некоторыми областями применения такого устройства являются: прерывание операционной системы с разделением времени через равномерные интервалы, чтобы она осуществляла переключение программ; вывод точных временных сигналов с программируемыми периодами в устройство вывода, например, для генерации звука; измерение временной задержки между внешними событиями; подсчёт числа внешних событий и ввод показаний в компьютер; прерывание процессора после появления запрограммированного числа внешних событий. Таким интервальным таймером/счётчиком является микросхема Intel 8254. В нём имеются три одинаковые независимые схемы, называемые каналами. Каждая схема имеет 8-битный регистр управления и состояния и 16-битные регистры счётчика,1 счётного элемента2 и выходной защёлки.3 Процессору доступны регистры управления и состояния и выходная защёлка каждого канала таймера. Кроме того, процессор может устанавливать значение регистра счётчика каждого канала. 16-битные регистры могут считываться и устанавливаться только побайтно. Взаимодействие ЦП и таймера осуществляется через микросхему интерфейса с периферией. Каждый счётчик работает следующим образом. При установке процессором регистра счётчика его значение немедленно загружается в счётный элемент и при каждом импульсе генератора синхронизации уменьшается на 1. При считывании процессором выходной защёлки в неё загружается текущее значение счётного элемента; однако, через регистр управления можно запросить и старое значение защёлки. Буферизация содержимого счётного элемента позволяет в любой момент ввести его в процессор, не нарушая работы счётчика. Счётчик может работать в двоичной (от 65535 до 0) или в двоично-десятичной (от 9999 до 0) системе. Работа в двоично-десятичной системе используется в безтерминальных системах для непосредственного вывода значения счётчика на индикатор. Каждый канал имеет вход ворот и выход, обычно подключаемый к одному из входов запросов прерываний контроллера прерываний. Наличие или отсутствие сигнала на входе ворот определяет, будет ли декрементироваться значение счётного элемента при новом импульсе синхронизации. Каждый канал может работать в одном из пяти режимов; режим определяет поведение счётчика при достижении счётным элементом 0. Возможные действия включают: выдачу сигнала на выход канала, причём отсчёт начинается немедленно; выдачу сигнала на выход канала, причём отсчёт начинается с открытия ворот; выдачу импульса на выход канала с перезагрузкой счётного элемента, открытие ворот перезагружает счётный элемент; выдачу прямоугольного сигнала на выход канала с перезагрузкой счётного элемента, открытие ворот перезагружает счётный элемент; выдачу импульса на выход канала, причём отсчёт начинается немедленно; выдачу импульса на выход канала, открытие ворот перезагружает счётный элемент. Во всех компьютерах IBM PC/XT/AT и совместимых с ними на вход синхронизации таймера подаётся частота 1,193 Мгц. Как несложно видеть, максимальный интервал времени, который может засечь таймер, составляет 65536 тактов синхронизации, т.е. примерно 55 мс. Для засечения больших интервалов времени в этих компьютерах применяется обработчик прерывания от 0-го канала таймера, обновляющий часы реального времени 18,2 раз в секунду (т.е. через каждые 55 мс). 1-й канал таймера применяется для регенерации памяти, а 2-ой – для генерации звука. Ворота 0-го и 1-го канала в этих компьютерах всегда открыты, а 2-го – открываются для генерации звука и закрываются для его прекращения.
|