stringtranslate.com

Интел 8253

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

Intel 8253 и 8254 — это программируемые интервальные таймеры (PIT), которые выполняют функции отсчета времени и подсчета с использованием трех 16-битных счетчиков. [1]

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

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

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

История

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

8254 реализован в HMOS и имеет команду «Read Back», отсутствующую в 8253, и позволяет чередовать чтение и запись одного и того же счетчика. [2]

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

Варианты

Существует военная версия Intel M8253 с диапазоном температур от -55 °C до +125 °C, которая также имеет допуск питания ±10% 5 В. [4] Доступная версия 82C53 CMOS была передана на аутсорсинг Oki Electronic Industry Co., Ltd. [ 5] Доступная версия корпуса Intel 82C54 была в 28-контактном PLCC образца в первом квартале 1986 года. [6]

Функции

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

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

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

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

Для инициализации счетчиков микропроцессор должен записать управляющее слово (CW) в этот регистр. Это можно сделать, установив соответствующие значения для выводов блока Read/Write Logic, а затем отправив управляющее слово в блок Data/Bus Buffer.

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

Однако существуют еще две формы:

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

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

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

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

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

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

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

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

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

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

OUT изначально будет высоким. OUT перейдет в низкий уровень при импульсе Clock после триггера, чтобы начать одноразовый импульс, и будет оставаться низким, пока счетчик не достигнет нуля. Затем 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): программно-управляемый стробоскоп

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

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

Режим 5 (101): Аппаратно-управляемый стробоскоп

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

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

Программирование для IBM PC

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

Все совместимые с ПК устройства работают с PIT на тактовой частоте 105/88 = 1,193 18  МГц, что составляет 13 частоты цветовой синхронизации NTSC , которая получается путем деления системной частоты (14,31818 МГц) на 12. Это пережиток самых первых ПК CGA — они получали все необходимые частоты из одного кварцевого кристалла , и для того, чтобы сделать возможным вывод на ТВ, этот генератор должен был работать на частоте, кратной частоте цветовой поднесущей NTSC. Эта частота, деленная на 2 16 (наибольший делитель, на который способен 8253), создает прерывание таймера ≈18,2 Гц, используемое в MS-DOS и связанных операционных системах.

В оригинальных IBM PC счетчик 0 используется для генерации прерывания отсчета времени. Счетчик 1 используется для запуска обновления памяти DRAM . Счетчик 2 используется для генерации тонов через динамик ПК .

Более новые материнские платы включают дополнительные счетчики через интерфейс Advanced Configuration and Power (ACPI), счетчик на локальном усовершенствованном программируемом контроллере прерываний и высокоточный таймер событий . Сам процессор также предоставляет функцию счетчика отметок времени .

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

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

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

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

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

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

Ссылки

  1. ^ abc "Intel 82C54 CHMOS Programmabe Interval Timer" (PDF) (техническое описание). Архивировано из оригинала (PDF) 3 июня 2015 г. Получено 26 ноября 2012 г.
  2. ^ Дипали А. Годзе; Атул П. Годзе (2007). Современные микропроцессоры . Технические публикации. стр. 74. ISBN 978-81-89411-33-6.
  3. ^ "Intel" (PDF) . pdf.datasheetcatalog.com .
  4. Корпорация Intel, «Компоненты Focus: Военная разведка: Таймеры, СППЗУ, Безвыводные носители микросхем», Solutions, март/апрель 1983 г., стр. 12.
  5. Корпорация Intel, «NewsBit: Intel лицензирует Oki на версию CMOS нескольких продуктов», Solutions, июль/август 1984 г., стр. 1.
  6. ^ Эшборн, Джим; «Усовершенствованная упаковка: немного значит много», Intel Corporation, Solutions, январь/февраль 1986 г., стр. 2
  7. ^ "8254/82C54: Введение в программируемый интервальный таймер". Intel Corporation. Архивировано из оригинала 22 ноября 2016 года . Получено 21 августа 2011 года .
  8. ^ "MSM 82c53 Datasheet" (PDF) . Архивировано из оригинала (PDF) 6 декабря 2014 года . Получено 26 ноября 2012 года .
  9. ^ «Руководство по обеспечению поддержки таймера мультимедиа». Microsoft . 20 сентября 2002 г. Получено 13 октября 2010 г.
  10. ^ Рекомендации по обеспечению поддержки таймера мультимедиа

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

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