Интел 8253
Эта статья нуждается в дополнительных цитатах для проверки . ( май 2024 г. ) |
Intel 8253 и 8254 — это программируемые интервальные таймеры (PIT), которые выполняют функции синхронизации и подсчета с помощью трех 16-битных счетчиков. [1]
Семейство 825x в первую очередь было разработано для Intel 8080/8085 процессоров , но позже использовалось в x86-совместимых системах. Чипы 825x или эквивалентная схема, встроенная в более крупную микросхему, встречаются во всех IBM PC-совместимых и советских компьютерах, таких как Vector-06C .
В компьютерах, совместимых с ПК, каналу таймера 0 назначено IRQ -0 (аппаратное прерывание с наивысшим приоритетом). Канал таймера 1 назначен на обновление DRAM (по крайней мере, в ранних моделях до 80386). Канал таймера 2 назначен на динамик ПК .
Вариант Intel 82c54 (c для логики CMOS ) обрабатывает тактовые сигналы с частотой до 10 МГц. [1]
История
[ редактировать ]8253 описан в публикации Intel «Каталог данных компонентов» 1980 года. 8254, описанный как надстройка 8253 с более высокими номинальными тактовыми частотами, имеет «предварительные» данные в «Каталоге данных компонентов» Intel 1982 года.
8254 реализован в HMOS и имеет команду «Read Back», недоступную в 8253, и позволяет чередовать чтение и запись одного и того же счетчика. [2]
Совместимость с современными ПК, при использовании процессоров SoC или южного моста, обычно реализует полную совместимость с 8254 для обратной совместимости и совместимости. [3] Команда обратного чтения является важной функцией ввода-вывода для взаимодействия с многоядерными процессорами и графическими процессорами.
Варианты
[ редактировать ]Существует военная версия Intel M8253 с температурным диапазоном от -55 °C до +125 °C, которая также имеет допуск по мощности ±10% 5 В. [4] Доступная версия CMOS 82C53 была передана на аутсорсинг компании Oki Electronic Industry Co., Ltd. [5] Доступная версия корпуса Intel 82C54 была в 28-контактном PLCC образца первого квартала 1986 года. [6]
Функции
[ редактировать ]Таймер имеет три счетчика с номерами от 0 до 2. [7] Каждый канал может быть запрограммирован на работу в одном из шести режимов. После программирования каналы работают независимо. [1]
Каждый счетчик имеет два входных контакта — «CLK» ( тактовый вход) и «GATE» — и один контакт «OUT» для вывода данных. Три счетчика представляют собой 16-битные счетчики обратного счета, независимые друг от друга, и могут легко считываться процессором . [8]
- Буфер шины данных содержит логику для буферизации шины данных между микропроцессором и внутренними регистрами. Он имеет 8 входных контактов, обычно обозначаемых как D7..D0, где D7 — старший разряд .
- Логика чтения/записи имеет 5 контактов, которые перечислены ниже. « X » означает, что X является активным низким сигналом.
- RD : сигнал чтения
- WR : сигнал записи
- CS : сигнал выбора чипа
- A0, A1: адресные строки
Режим работы PIT изменяется путем установки вышеуказанных аппаратных сигналов. Например, для записи в регистр управляющего слова необходимо установить CS =0, RD =1, WR =0, A1=A0=1.
- Регистр управляющего слова содержит запрограммированную информацию, которая будет отправлена (микропроцессором ) на устройство. Он определяет, как логически работает каждый канал PIT. Каждый доступ к этим портам занимает около 1 мкс.
Для инициализации счетчиков микропроцессор должен записать в этот регистр управляющее слово (CW). Это можно сделать, установив правильные значения для выводов блока логики чтения/записи, а затем отправив управляющее слово в блок буфера данных/шины.
Регистр управляющего слова содержит 8 бит, обозначенных D7..D0 (D7 — старший бит ). Декодирование довольно сложное. Большинство значений задают параметры для одного из трех счетчиков:
- Два старших бита (если не 11) выбирают регистр счетчика, к которому применяется команда.
- Следующие два бита (если не 00) выбирают формат, который будет использоваться для последующего доступа к чтению/записи регистра счетчика. Обычно для этого параметра устанавливается режим, в котором доступ чередуется между наименее значимыми и наиболее значимыми байтами. Одно из различий между 8253 и 8254 заключается в том, что у первого был один внутренний бит, который влиял как на чтение, так и на запись, поэтому, если формат был установлен на 2-байтовый, чтение lsbyte привело бы к тому, что последующая запись была бы направлена в мсбайт. В 8254 для чтения и записи использовались отдельные биты.
- Следующие три бита определяют режим, в котором будет работать счетчик.
- Младший бит определяет, будет ли счетчик работать в двоичном или BCD формате . (Подсчет BCD почти никогда не используется и может быть неправильно реализован в эмуляторах или южных мостах.)
Однако есть еще две формы:
- Зафиксируйте счетчик для данного таймера. При следующем чтении вместо возврата значения счетчика в момент чтения будет возвращено значение счетчика в момент команды фиксации. После завершения чтения последующие операции чтения вернут текущий счетчик. При использовании команды latch режим и статус BCD не изменяются.
- (только 8254) Фиксирует состояние и/или счетчик для нескольких таймеров. Это позволяет выполнять несколько одновременных команд фиксации с использованием растрового изображения. Кроме того, в дополнение к счетчику можно считывать текущую конфигурацию канала.
Бит №/имя | Краткое описание | |||||||
---|---|---|---|---|---|---|---|---|
D7 СК1 |
Д6 СК2 |
Д5 RW1 |
Д4 RW0 |
Д3 М2 |
Д2 М1 |
Д1 М0 |
Д0 двоично-десятичный код | |
0 | 0 | формат | режим | двоично-десятичный код | Установить режим счетчика 0 | |||
0 | 1 | формат | режим | двоично-десятичный код | Установить режим счетчика 1 | |||
1 | 0 | формат | режим | двоично-десятичный код | Установить режим счетчика 2 (на порту 42h) | |||
1 | 1 | считать | статус | С2 | С1 | С0 | х | Команда обратного чтения (только 8254) |
прилавок | 0 | 0 | — х — | Значение счетчика фиксации. При следующем чтении счетчика будет прочитан снимок значения. | ||||
прилавок | 0 | 1 | режим | двоично-десятичный код | Чтение/запись только младшего байта значения счетчика | |||
прилавок | 1 | 0 | режим | двоично-десятичный код | Чтение/запись только старшего байта значения счетчика | |||
прилавок | 1 | 1 | режим | двоично-десятичный код | 2×Чтение/2×Запись младшего байта, затем старшего байта значения счетчика | |||
прилавок | формат | 0 | 0 | 0 | двоично-десятичный код | Режим 0: Прерывание по счетчику терминалов | ||
прилавок | формат | 0 | 0 | 1 | двоично-десятичный код | Режим 1: Аппаратный перезапуск однократного действия | ||
прилавок | формат | х | 1 | 0 | двоично-десятичный код | Режим 2: Генератор ставок | ||
прилавок | формат | х | 1 | 1 | двоично-десятичный код | Режим 3: прямоугольная волна | ||
прилавок | формат | 1 | 0 | 0 | двоично-десятичный код | Режим 4: Стробоскоп, запускаемый программным обеспечением | ||
прилавок | формат | 1 | 0 | 1 | двоично-десятичный код | Режим 5: стробоскопический сигнал с аппаратным запуском (с возможностью повторного запуска) | ||
прилавок | формат | режим | 0 | Счетчик — 16-битный двоичный счетчик (0–65535). | ||||
прилавок | формат | режим | 1 | Счетчик представляет собой 4-значный двоично-десятичный счетчик (0–9999). | ||||
1 | 1 | считать | статус | С2 | С1 | С0 | х | Команда обратного чтения (только 8254) |
1 | 1 | 0 | 0 | С2 | С1 | С0 | х | При следующем чтении выбранных счетчиков будет считано зафиксированное состояние, а затем произведен подсчет. |
1 | 1 | 0 | 1 | С2 | С1 | С0 | х | При следующем чтении выбранных счетчиков будет считан зафиксированный счетчик. |
1 | 1 | 1 | 0 | С2 | С1 | С0 | х | При следующем чтении выбранных счетчиков будет считано зафиксированное состояние. |
1 | 1 | 1 | 1 | С2 | С1 | С0 | х | Ничего не делать (ничего не фиксировать ни на одном, ни на всех счетчиках) |
1 | 1 | считать | статус | 0 | 0 | 0 | х | Ничего не делать (количество блокировок и/или состояние счетчиков отсутствуют) |
1 | 1 | считать | статус | 1 | С1 | С0 | х | Команда обратного чтения применяется к счетчику 2. |
1 | 1 | считать | статус | С2 | 1 | С0 | х | Команда обратного чтения применяется к счетчику 1. |
1 | 1 | считать | статус | С2 | С1 | 1 | х | Команда обратного чтения применяется к счетчику 0. |
При установке PIT микропроцессор сначала отправляет в PIT управляющее сообщение, затем сообщение подсчета. Процесс подсчета начнется после того, как PIT получит эти сообщения и, в некоторых случаях, если он обнаружит нарастающий фронт входного сигнала GATE. Формат байта состояния. Бит 7 позволяет программному обеспечению отслеживать текущее состояние вывода OUT. Бит 6 указывает, когда счетчик можно прочитать; когда этот бит равен 1, счетный элемент еще не загружен и не может быть прочитан процессором. Биты с 5 по 0 совпадают с последними битами, записанными в регистр управления.
Бит №/имя | Краткое описание | |||||||
---|---|---|---|---|---|---|---|---|
D7 Выход Статус |
Д6 нулевой считать |
Д5 RW1 |
Д4 RW0 |
Д3 М2 |
Д2 М1 |
Д1 М0 |
Д0 двоично-десятичный код | |
0 | Выходной вывод – 0. | |||||||
1 | Выходной контакт – 1. | |||||||
0 | Счетчик можно прочитать | |||||||
1 | Счетчик устанавливается | |||||||
формат | режим | двоично-десятичный код | Биты режима счетчика, определенные для регистра управляющего слова. |
Режимы работы
[ редактировать ]Биты 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 немедленно устанавливает высокий уровень 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): Стробоскоп, запускаемый программным обеспечением
[ редактировать ]После загрузки управляющего слова и COUNT выходной сигнал будет оставаться высоким до тех пор, пока счетчик не достигнет нуля. Затем счетчик будет генерировать низкий импульс в течение 1 тактового цикла (строб) – после этого выходной сигнал снова станет высоким.
Низкий уровень GATE приостанавливает отсчет, который возобновляется, когда GATE снова становится высоким.
Режим 5 (101): Стробоскоп с аппаратным запуском
[ редактировать ]Этот режим аналогичен режиму 4. Однако процесс счета запускается входом GATE.
После получения управляющего слова и COUNT выходной сигнал будет установлен на высокий уровень. Как только устройство обнаружит нарастающий фронт на входе GATE, оно начнет отсчет. Когда счетчик достигнет 0, выходной сигнал станет низким на один тактовый цикл, после чего он снова станет высоким, чтобы повторить цикл при следующем нарастающем фронте сигнала GATE.
Программирование IBM ПК
[ редактировать ]8253 использовался в компьютерах, совместимых с IBM PC, с момента их появления в 1981 году. [9] В наше время этот PIT не входит в состав ПК x86 как отдельный чип. чипсета материнской платы Скорее, его функциональность включена в состав южного моста . В современном наборе микросхем это изменение может проявиться в виде заметно более быстрого доступа к регистрам PIT в x86 адресном пространстве ввода-вывода .
Все компьютеры, совместимые с ПК, работают с PIT с тактовой частотой 105/88 = 1,193· 18 МГц. 1 ⁄ 3 частоты NTSC цветовой синхронизации , которая получается в результате деления системной тактовой частоты (14,31818 МГц) на 12. Это пережиток самых первых ПК CGA – они получали все необходимые частоты из одного кристалла кварца , и чтобы сделать возможным вывод ТВ, этот генератор должен был работать на частоте, кратной частоте цветовой поднесущей NTSC. Эта частота, разделенная на 2 16 (самый большой делитель, на который способен 8253) создает прерывание таймера ≈18,2 Гц, используемое в MS-DOS и связанных с ним операционных системах.
В оригинальных компьютерах IBM счетчик 0 использовался для генерации прерывания хронометража. Счетчик 1 используется для запуска обновления памяти DRAM . Счетчик 2 используется для генерации тональных сигналов через динамик ПК .
Новые материнские платы включают дополнительные счетчики через интерфейс расширенной конфигурации и питания (ACPI), счетчик на локальном расширенном программируемом контроллере прерываний и высокоточный таймер событий . Сам ЦП также обеспечивает функцию счетчика меток времени .
На ПК адрес таймера 0 (чип) находится на порте 40h..43h, а второй таймер 1 (чип) — на порте 50h..53h.
На компьютерах x86 многие BIOS видеокарт и системные BIOS перепрограммируют второй счетчик для собственного использования. Перепрограммирование обычно происходит во время изменения видеорежима, когда может выполняться видеоBIOS, а также во время изменения режима управления системой и состояния энергосбережения, когда может выполняться системный BIOS. Это предотвращает любое серьезное альтернативное использование второго счетчика таймера во многих системах x86.
Как указано выше, канал 0 реализован как счетчик. Обычно начальное значение счетчика устанавливается путем отправки байтов в регистры порта управления, а затем порта ввода-вывода данных (значение 36h отправляется в порт 43h, затем младший байт в порт 40h и снова порт 40h для старшего байта). . Счетчик производит обратный отсчет до нуля, а затем отправляет аппаратное прерывание (IRQ 0, INT 8) в ЦП . Затем счетчик сбрасывается до исходного значения и начинает обратный отсчет снова. Максимально возможная частота прерываний составляет чуть больше половины мегагерца. Самая медленная возможная частота, которая также обычно используется компьютерами под управлением MS-DOS или совместимыми операционными системами, составляет около 18,2 Гц. В этих операционных системах реального режима BIOS накапливает количество полученных вызовов INT 8 по адресу 0040:006c реального режима, который может быть прочитан программой.
прочитав порт ввода-вывода По мере обратного отсчета таймера его значение также можно прочитать напрямую, дважды : сначала для младшего байта, а затем для старшего байта. Однако в свободно работающих приложениях-счетчиках, таких как ПК x86, необходимо сначала записать в регистр управления команду фиксации нужного канала, чтобы оба считываемых байта принадлежали одному и тому же значению.
Согласно документу Microsoft от 2002 года, «поскольку чтение и запись на это оборудование [8254] требуют связи через порт ввода-вывода, программирование занимает несколько циклов, что непомерно дорого для ОС. По этой причине апериодическая функциональность не используется». на практике." [10]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Перейти обратно: а б с «Программный интервальный таймер Intel 82C54 CHMOS» (PDF) (технические данные). Архивировано из оригинала (PDF) 3 июня 2015 года . Проверено 26 ноября 2012 г.
- ^ Дипали А. Годзе; Атул П. Годзе (2007). Усовершенствованные микропроцессоры . Технические публикации. п. 74. ИСБН 978-81-89411-33-6 .
- ^ «Интел» (PDF) . pdf.datasheetcatalog.com .
- ^ Корпорация Intel, «Фокусные компоненты: военная разведка: таймеры, EPROM, безвыводные носители чипов», Solutions, март/апрель 1983 г., стр. 12.
- ^ Корпорация Intel, «NewsBit: Intel лицензирует Oki на версии CMOS нескольких продуктов», Solutions, июль/август 1984 г., стр. 1.
- ^ Эшборн, Джим; «Усовершенствованная упаковка: небольшое дело имеет большое значение», корпорация Intel, Solutions, январь/февраль 1986 г., стр. 2
- ^ «8254/82C54: Знакомство с программируемым интервальным таймером» . Корпорация Интел. Архивировано из оригинала 22 ноября 2016 года . Проверено 21 августа 2011 г.
- ^ «Техническое описание MSM 82c53» (PDF) .
- ^ «Рекомендации по обеспечению поддержки мультимедийного таймера» . Майкрософт . 20 сентября 2002 года . Проверено 13 октября 2010 г.
- ^ Рекомендации по обеспечению поддержки мультимедийного таймера
Дальнейшее чтение
[ редактировать ]- Гиллуве, Фрэнк Ван (1997). Недокументированный ПК: Руководство программиста по вводу-выводу, процессорам и постоянным областям памяти (второе, иллюстрированное издание). Аддисон-Уэсли. ISBN 978-0-201-47950-8 .
- Корпорация Intel, «Программируемый интервальный таймер 8253», Руководство пользователя микрокомпьютерных систем Intel 8080, сентябрь 1975 г., стр. 5-169 с сайта bitsaver.org в формате PDF.
Внешние ссылки
[ редактировать ]- 82C54 Технический паспорт
- Обзор чипа Intel 8253 PIT. Архивировано 29 сентября 2011 г. на Wayback Machine.
- Полные технические описания Intel 8253. Архивировано 20 февраля 2012 г. на Wayback Machine.
- Часто задаваемые вопросы по программируемому интервальному таймеру 8254/82C54
- Программируемый интервальный таймер – OSDev Wiki