Из Википедии, бесплатной энциклопедии
  (Перенаправлено с Intel 8254 )
Перейти к навигации Перейти к поиску

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

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

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

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

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

История [ править ]

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

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

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

Варианты [ править ]

Существует военная версия Intel M8253 с температурным диапазоном от -55 ° C до + 125 ° C, которая также имеет допуск по мощности 5V ± 10%. [4]

Особенности [ править ]

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

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

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

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

Режим работы 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) Фиксируйте состояние и / или подсчитывайте для нескольких таймеров. Это позволяет выполнять несколько одновременных команд защелки с использованием растрового изображения. Кроме того, текущая конфигурация канала может быть считана в дополнение к счетчику.

При установке 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 и 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 году. [7] В наше время этот 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] требуется связь через порт ввода-вывода, программирование занимает несколько циклов, что непомерно дорого для ОС. Из-за этого апериодическая функциональность не используется на практике." [8]

См. Также [ править ]

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

Ссылки [ править ]

  1. ^ a b c "Интервальный таймер Intel 82C54 CHMOS Programme" (PDF) (таблица). Архивировано 7 мая 2016 года из оригинального (PDF) .
  2. ^ DA Godse; А. П. Годсе (2007). Продвинутые микропроцессоры . Технические публикации. п. 74. ISBN 978-81-89411-33-6.
  3. ^ http://pdf.datasheetcatalog.com/datasheet/Intel/mXvqwzr.pdf
  4. ^ Intel Corporation, "Focus Components: Military Intelligence: Timers, EPROMs, Leadless Chip Carriers", Solutions, март / апрель 1983 г., стр. 12.
  5. ^ «8254 / 82C54: Введение в программируемый интервальный таймер» . Корпорация Intel. Архивировано из оригинального 22 ноября 2016 года . Проверено 21 августа 2011 года .
  6. ^ "MSM 82c53 Datasheet" (PDF) .
  7. ^ «Рекомендации по обеспечению поддержки мультимедийного таймера» . 20 сентября 2002 . Проверено 13 октября 2010 года .
  8. ^ Рекомендации по поддержке мультимедийного таймера

Дальнейшее чтение [ править ]

  • Гиллуве, Фрэнк Ван (1997). Недокументированный ПК: Руководство программиста по вводу-выводу, процессорам и областям фиксированной памяти (второе, иллюстрированное издание). Эддисон-Уэсли. ISBN 978-0-201-47950-8.

Внешние ссылки [ править ]

  • 82C54 Лист данных
  • Обзор микросхемы Intel 8253 PIT
  • Полные спецификации Intel 8253
  • Программируемый интервальный таймер 8254 / 82C54: часто задаваемые вопросы
  • Программируемый интервальный таймер - OSDev Wiki