Intel 8253 - Intel 8253

Intel C8253
Программируемый интервальный таймер Intel 8253. У Intel 8254 такая же распиновка.

В Intel 8253 и 8254 являются программируемые интервальные таймеры (питы), которые выполняют временные и подсчета функций с помощью трех 16-битовых счетчиков.

825x семья была в первую очередь предназначена для Intel 8080 / 8085 -processors, но позже были использованы в x86 совместимых систем. Чипы 825x или эквивалентная схема, встроенная в более крупный чип, встречаются во всех совместимых IBM PC и в советских компьютерах, таких как Vector-06C .

В устройствах, совместимых с ПК, каналу таймера 0 назначается IRQ -0 (аппаратное прерывание с наивысшим приоритетом). Канал таймера 1 назначен на обновление DRAM (по крайней мере, в ранних моделях до 80386). Канал таймера 2 назначается динамику ПК .

Вариант Intel 82c54 (c для логики CMOS ) обрабатывает тактовые сигналы с частотой до 10 МГц.

История

8253 описан в публикации Intel "Component Data Catalog" 1980 года. 8254, описанный как расширенный набор 8253 с более высокими тактовыми частотами, имеет "предварительные" данные в "Каталоге данных компонентов" Intel 1982 года.

8254 реализован в HMOS и имеет команду «Обратное чтение», недоступную на 8253, и позволяет чередовать чтение и запись одного и того же счетчика.

Совместимость с современными ПК при использовании процессоров SoC или южного моста обычно обеспечивает полную совместимость с 8254 для обратной совместимости и взаимодействия. Команда Read Back является важной функцией ввода-вывода для взаимодействия с многоядерными процессорами и графическими процессорами.

Варианты

Существует военная версия Intel M8253 с температурным диапазоном от -55 ° C до + 125 ° C, которая также имеет допуск по мощности 5V ± 10%. Доступная версия 82C53 CMOS была передана Oki Electronic Industry Co., Ltd .

Функции

Блок-схема Intel 8253

Таймер имеет три счетчика, пронумерованных от 0 до 2. Каждый канал может быть запрограммирован на работу в одном из шести режимов. После программирования каналы работают независимо.

Каждый счетчик имеет два входных контакта - «CLK» ( вход часов ) и «GATE» - и один контакт «OUT» для вывода данных. Три счетчика являются 16-битными счетчиками с обратным счетом, независимыми друг от друга и легко считываемые ЦП .

  • Буфер шины данных содержит логику для буферизации шины данных между микропроцессором и внутренними регистрами. Он имеет 8 входных булавки, как правило , помечены как D7..D0, где Д7 является MSB .
  • Логика чтения / записи имеет 5 контактов, которые перечислены ниже. « X » означает, что X - активный низкий сигнал.

Режим работы PIT изменяется установкой вышеупомянутых аппаратных сигналов. Например, для записи в регистр управляющего слова необходимо установить CS = 0, RD = 1, WR = 0, A1 = A0 = 1.

  • Регистр контрольного слова содержит запрограммированную информацию, которая будет отправлена ​​( микропроцессором ) на устройство. Он определяет, как логически работает каждый канал PIT. Каждый доступ к этим портам занимает около 1 мкс.

Для инициализации счетчиков микропроцессор должен записать в этот регистр управляющее слово (CW). Это можно сделать, установив правильные значения для выводов блока логики чтения / записи, а затем отправив управляющее слово в блок буфера данных / шины.

Регистр управления слово содержит 8 бит, обозначенный D7..D0 (Д7 является СЗБ ). Расшифровка несколько сложная. Большинство значений задают параметры для одного из трех счетчиков:

  • Два старших бита (если не 11) выбирают регистр счетчика, к которому применяется команда.
  • Следующие два бита (если не 00) выбирают формат, который будет использоваться для последующего доступа чтения / записи к регистру счетчика. Обычно это режим, в котором доступ чередуется между наименее значимыми и наиболее значимыми байтами. Одно различие между 8253 и 8254 заключается в том, что у первого был один внутренний бит, который влиял как на чтение, так и на запись, поэтому, если формат был установлен на 2-байтовый, чтение lsbyte привело бы к тому, что следующая запись будет направлена ​​в msbyte. 8254 использовал отдельные биты для чтения и записи.
  • Следующие три бита выбирают режим, в котором будет работать счетчик.
  • Младший значащий бит определяет, будет ли счетчик работать в двоичном или двоично-десятичном формате . (Подсчет BCD почти никогда не используется и может быть неправильно реализован в эмуляторах или южных мостах.)

Однако есть две другие формы:

  • Заблокируйте счетчик для данного таймера. При следующем чтении вместо значения счетчика в момент чтения будет возвращено значение счетчика в момент команды защелки. После завершения чтения последующие чтения вернут текущий счетчик. Когда используется команда защелки, режим и статус BCD не меняются.
  • (Только 8254) Зафиксируйте состояние и / или счет для нескольких таймеров. Это позволяет выполнять несколько одновременных команд защелки с использованием растрового изображения. Кроме того, текущая конфигурация канала может быть считана в дополнение к счетчику.
Управляющее слово 8253/8254
Бит № / Имя Краткое описание
D7
SC1
D6
SC2
D5
RW1
D4
RW0
D3
M2
D2
M1
D1
M0
D0
BCD
0 0 формат Режим BCD Установить режим счетчика 0
0 1 формат Режим BCD Установить режим счетчика 1
1 0 формат Режим BCD Установить режим счетчика 2 (порт 42h)
1 1 считать статус C2 C1 C0 Икс Команда обратного чтения (только 8254)
прилавок 0 0 - Икс - Значение счетчика защелки. При следующем чтении счетчика будет прочитан снимок значения.
прилавок 0 1 Режим BCD Чтение / запись только младшего байта значения счетчика
прилавок 1 0 Режим BCD Чтение / запись только старшего байта значения счетчика
прилавок 1 1 Режим BCD 2 × Чтение / 2 × Запись младшего байта, затем старшего байта значения счетчика
прилавок формат 0 0 0 BCD Режим 0: прерывание по счетчику терминала
прилавок формат 0 0 1 BCD Режим 1: однократный запуск с аппаратным запуском
прилавок формат Икс 1 0 BCD Режим 2: генератор скорости
прилавок формат Икс 1 1 BCD Режим 3: прямоугольная волна
прилавок формат 1 0 0 BCD Режим 4: программный строб
прилавок формат 1 0 1 BCD Режим 5: Аппаратный запуск строба (перезапуск)
прилавок формат Режим 0 Счетчик - это 16-битный двоичный счетчик (0–65535).
прилавок формат Режим 1 Счетчик - это четырехзначный десятичный счетчик с двоичным кодом (0–9999).
1 1 считать статус C2 C1 C0 Икс Команда обратного чтения (только 8254)
1 1 0 0 C2 C1 C0 Икс При следующем чтении выбранных счетчиков будет прочитан статус фиксации, затем будет подсчитано
1 1 0 1 C2 C1 C0 Икс При следующем чтении выбранных счетчиков будет считываться счетчик с защелкой.
1 1 1 0 C2 C1 C0 Икс При следующем чтении выбранных счетчиков будет считан статус фиксации.
1 1 1 1 C2 C1 C0 Икс Ничего не делать (ничего не фиксировать на одном или всех счетчиках)
1 1 считать статус 0 0 0 Икс Ничего не делать (количество защелок и / или статус без счетчиков)
1 1 считать статус 1 C1 C0 Икс Команда обратного чтения применяется к счетчику 2
1 1 считать статус C2 1 C0 Икс Команда обратного чтения применяется к счетчику 1
1 1 считать статус C2 C1 1 Икс Команда обратного чтения применяется к счетчику 0

При установке PIT микропроцессор сначала отправляет управляющее сообщение, а затем сообщение счетчика в PIT. Процесс подсчета начнется после того, как PIT получит эти сообщения, и, в некоторых случаях, если он обнаружит нарастающий фронт входного сигнала GATE. Формат байта состояния. Бит 7 позволяет программному обеспечению отслеживать текущее состояние вывода OUT. Бит 6 указывает, когда счет может быть прочитан; когда этот бит равен 1, счетный элемент еще не загружен и не может быть считан процессором. Биты с 5 по 0 совпадают с последними битами, записанными в регистр управления.

8254 слово состояния
Бит № / Имя Краткое описание
Состояние
выхода D7
D6
нулевой
счет
D5
RW1
D4
RW0
D3
M2
D2
M1
D1
M0
D0
BCD
0 Выходной контакт равен 0
1 Вывод 1
0 Счетчик можно прочитать
1 Счетчик устанавливается
формат Режим BCD Биты режима счетчика, как определено для регистра управляющего слова

Режимы работы

Биты D3, D2 и D1 управляющего слова устанавливают режим работы таймера. Всего есть 6 режимов; для режимов 2 и 3 бит D3 игнорируется, поэтому отсутствующие режимы 6 и 7 являются псевдонимами для режимов 2 и 3.

Все режимы чувствительны к входу GATE, при этом высокий уровень GATE вызывает нормальную работу, но эффекты низкого уровня GATE зависят от режима:

  • Режимы 0 и 4: подсчет приостанавливается, пока GATE низкий, и возобновляется, когда GATE высокий.
  • Режимы 1 и 5: нарастающий фронт GATE начинает отсчет. GATE может перейти на низкий уровень, не влияя на счет, но другой нарастающий фронт перезапустит счет с начала.
  • Режимы 2 и 3: GATE low немедленно принудительно устанавливает высокий уровень OUT (не дожидаясь тактового импульса) и сбрасывает счетчик (на следующем заднем фронте тактового сигнала). Когда GATE снова становится высоким, счет начинается сначала.

Режим 0 (000): Прерывание по счетчику клемм

Режим 0 используется для генерации точной временной задержки под управлением программного обеспечения. В этом режиме счетчик начнет отсчет от загруженного в него начального значения COUNT, вплоть до 0. Скорость счета равна входной тактовой частоте.

На выводе OUT устанавливается низкий уровень после записи контрольного слова, и отсчет начинается через один такт после программирования COUNT. OUT остается на низком уровне до тех пор, пока счетчик не достигнет 0, после чего OUT будет установлен на высоком уровне до тех пор, пока счетчик не будет перезагружен или пока не будет записано командное слово. Счетчик возвращается к 0xFFFFвнутреннему и продолжает считать, но вывод OUT больше никогда не меняется. Для нормального счета сигнал Gate должен оставаться активным на высоком уровне. Если Gate становится низким, счет приостанавливается и возобновляется, когда он снова становится высоким.

Первый байт нового счетчика при загрузке в регистр счетчика останавливает предыдущий счет.

Режим 1 (001): программируемый однократный снимок

В этом режиме 8253 может использоваться как моностабильный мультивибратор . Вход GATE используется как вход триггера.

OUT изначально будет высоким. OUT перейдет на низкий уровень тактового импульса после запуска одноразового импульса и останется на низком уровне до тех пор, пока счетчик не достигнет нуля. Затем OUT станет высоким и останется высоким до импульса CLK после следующего триггера.

После записи контрольного слова и начального счета счетчик включается. Триггер приводит к загрузке счетчика и установке низкого уровня OUT для следующего импульса CLK, таким образом, запускается одноразовый импульс. Первоначальный счет N приведет к одноразовому импульсу длительностью N CLK циклов.

Одноразовый запуск можно перезапустить, поэтому OUT будет оставаться на низком уровне для N импульсов CLK после любого запуска. Одноразовый импульс можно повторить, не перезаписывая тот же счетчик в счетчике. GATE не влияет на OUT. Если новый счетчик записывается в счетчик во время однократного импульса, текущий однократный импульс не изменяется, если счетчик не запускается повторно. В этом случае в счетчик загружается новый счетчик, и импульс единичного импульса продолжается, пока не истечет новый счет.

Режим 2 (X10): генератор скорости

В этом режиме устройство действует как счетчик деления на n, который обычно используется для генерации прерывания часов реального времени.

Как и в других режимах, процесс подсчета запускает следующий тактовый цикл после отправки COUNT. OUT будет оставаться на высоком уровне до тех пор, пока счетчик не достигнет 1, и станет низким на один тактовый импульс. В следующем цикле счетчик перезагружается, OUT снова становится высоким, и весь процесс повторяется.

Время между высокими импульсами зависит от предварительно установленного значения в регистре счетчика и рассчитывается по следующей формуле:

Значение для загрузки в счетчик =

Обратите внимание, что значения в регистре COUNT варьируются от до 1; регистр никогда не достигает нуля.

Режим 3 (X11): генератор прямоугольных сигналов

Этот режим аналогичен режиму 2. Однако длительность высоких и низких тактовых импульсов на выходе будет отличаться от режима 2.

Предположим , что число загружено в счетчик (сообщение COUNT), выход будет высоким для счетчиков и низким для счетчиков. Таким образом, период будет считаться , и если он нечетный, дополнительный полупериод будет потрачен с высоким уровнем OUT.

Режим 4 (100): запускаемый программный строб

После загрузки командного слова и счетчика выход будет оставаться высоким, пока счетчик не достигнет нуля. Затем счетчик будет генерировать низкий импульс в течение 1 тактового цикла (строб) - после этого выход снова станет высоким.

GATE low приостанавливает отсчет, который возобновляется, когда GATE снова становится высоким.

Режим 5 (101): Строб с аппаратным запуском

Этот режим аналогичен режиму 4. Однако процесс счета запускается входом GATE.

После получения контрольного слова и COUNT на выходе будет установлен высокий уровень. Как только устройство обнаружит нарастающий фронт на входе GATE, оно начнет отсчет. Когда счетчик достигнет 0, на выходе будет низкий уровень на один тактовый цикл - после этого он снова станет высоким, чтобы повторить цикл на следующем нарастающем фронте GATE.

Советы и подсказки по программированию IBM PC

8253 использовался в IBM PC-совместимых устройствах с момента их появления в 1981 году. В наше время этот PIT не входит в состав ПК x86 как отдельный чип. Скорее, его функциональность входит в состав южного моста чипсета материнской платы . В современном наборе микросхем это изменение может проявляться в виде заметно более быстрого доступа к регистрам PIT в адресном пространстве ввода-вывода x86 .

Все совместимые ПК управлять PIT при тактовой частоте 105/88 = 1,193 18  МГц, 1 / 3 NTSC ColorBurst частоты. Эта частота, разделенная на 2 16 (самый большой делитель, на который способен 8253), дает прерывание таймера ≈18,2 Гц, используемое в MS-DOS и связанных операционных системах.

В исходных компьютерах IBM PC счетчик 0 используется для генерации прерывания хронометража . Счетчик 1 (A1 = 0, A0 = 1) используется для запуска обновления памяти DRAM . Последний счетчик (A1 = 1, A0 = 0) используется для генерации тонов через динамик ПК .

Новые материнские платы включают дополнительные счетчики через интерфейс расширенной конфигурации и питания (ACPI), счетчик на расширенном локальном программируемом контроллере прерываний ( локальный APIC ) и таймер событий высокой точности . Сам ЦП также предоставляет возможность счетчика отметок времени (TSC).

На ПК адрес timer0 (чип) находится в порту 40h..43h, а второй timer1 (чип) находится в 50h..53h.

На компьютерах x86 BIOS многих видеокарт и системный BIOS перепрограммируют второй счетчик для собственного использования. Перепрограммирование обычно происходит во время изменений видеорежима, когда может быть запущена видео BIOS, и во время изменения режима управления системой и состояния энергосбережения, когда может быть запущена системная BIOS. Это предотвращает любые серьезные альтернативные варианты использования второго счетчика таймера во многих системах x86.

Таймер, который используется системой на компьютерах x86, - это канал 0, и его часы отсчитывают теоретическое значение 1193181,8181 ... Гц , то есть одну треть от частоты цветовой поднесущей NTSC , которая получается из деления системных часов (14,31818 МГц. ) на 12. Это пережиток самых первых ПК CGA - они получали все необходимые частоты из единственного кварцевого кристалла , и для обеспечения возможности вывода на ТВ этот генератор должен был работать на частоте, кратной частоте цветовой поднесущей NTSC.

Как указано выше, канал 0 реализован как счетчик. Обычно начальное значение счетчика устанавливается путем отправки байтов в Control, затем регистры порта ввода-вывода данных (значение 36h отправляется на порт 43h, затем младший байт на порт 40h и снова порт 40h для старшего байта) . Счетчик подсчитывает вниз до нуля, а затем посылает аппаратное прерывание (IRQ 0, INT 8) к CPU . Затем счетчик сбрасывается до исходного значения и снова начинает обратный отсчет. Максимально возможная частота прерывания составляет чуть более половины мегагерца. Наименьшая возможная частота, которая также обычно используется компьютерами под управлением MS-DOS или совместимых операционных систем, составляет около 18,2 Гц. В этих операционных системах реального режима BIOS накапливает количество вызовов INT 8, которые он получает по адресу 0040: 006c реального режима, который может быть прочитан программой.

По мере обратного отсчета таймера его значение также можно прочитать напрямую, дважды прочитав его порт ввода-вывода , сначала для младшего байта, а затем для старшего байта. Однако в автономных приложениях счетчика, таких как ПК x86, необходимо сначала записать команду защелки для желаемого канала в регистр управления, чтобы оба считанных байта принадлежали одному и тому же значению.

Согласно документу Microsoft 2002 года, «поскольку для чтения и записи на это оборудование [8254] требуется связь через порт ввода-вывода, программирование занимает несколько циклов, что непомерно дорого для ОС. Из-за этого апериодическая функциональность не используется на практике."

Смотрите также

  • LAPIC предоставляет программируемый таймер
  • HPET

Рекомендации

дальнейшее чтение

Внешние ссылки