Лекции по Вычислительным машинам, системам и сетям   

2. Микропроцессорный комплект К1810

2.12. Программируемый таймер К1810ВИ54 (i8254)

Данная микросхема широко применяется в системах на основе МП фирмы Intel для организации временных задержек, организации службы системного времени и т.д.

Таймер содержит три независимых канала, соответственно канал 0, канал 1 и канал 2. Внутри каждого канала стоит шестнадцатиразрядный счетчик, работающий на вычитание. Счетчик можно программным образом настроить на счет в двоичной или двоично-десятичной системе счисления. Любой канал таймера можно запрограммировать на работу в одном из шести режимов, соответственно режим 0, режим 1, ..., режим 5.

При программировании канала в его регистр управляющего слова (РУС) передается настроечное слово (байт). Хотя у каждого канала свой РУС, все они имеют один системный адрес, и поэтому, с точки зрения программиста, внутри таймера один РУС. Таймер определяет, какому каналу предназначено настроечное слово по внутреннему содержимому этого слова.

Схема подключения таймера к СШ приведена на рис. 2.10.

Рис. 2.10

Информация на линиях А1 и А0 задает одно из четырех адресуемых устройства внутри таймера:

А1 = 0, А0 = 0 – канал 0; А1 = 0, А0 = 1 – канал 1;

А1 = 1, А0 = 0 – канал 2; А1 = 1, А0 = 1 – РУС.

CLK ‑ вход синхроимпульсов. На этот вход поступают импульсы, которые считает канал. Декремент счетчика происходит по заднему фронту импульсов на входе CLK.

GATE – управляющий вход. Если на этом входе единица, счетчик канала считает импульсы, приходящие на CLK, если ноль – не считает. В некоторых режимах снятие и подача единицы на входе GATE инициирует перезапуск счетчика.

OUT – выход канала. Вид сигнала на этом выходе зависит от режима, на который настроен канал.

Остальные входы/выходы таймера аналогичны одноименным входам/выходам адаптера ВВ55 (см. разд. 2.10). Формат настроечного слова канала приведен на рис. 2.11.

Рис. 2.11

Разряды D7, D6 задают номер канала, в который передается настроечное слово: D7 = 0, D6 = 0 – канал 0; D7 = 0, D6 = 1 – канал 1; D7 = 1, D6 = 0 – канал 2; D7 = 1, D6 = 1 – специальная команда (на практике используется редко).

Таймер связан с СШ восьмиразрядной шиной данных. В то же время формат счетчика канала – два байта. Поэтому имеются различные варианты загрузки счетчика и чтения его содержимого. Эти варианты задают разряды D5 и D4 настроечного слова:

D5 = 0, D4 = 0 – специальный режим «чтение на лету»;

D5 = 0, D4 = 1 – передается только старший байт;

D5 = 1, D4 = 0 – передается только младший байт;

D5 = 1, D4 = 1 – передаются оба байта (за две передачи, сначала младший, а потом старший).

Прочитать содержимое счетчика канала можно двумя способами. Первый способ требует остановки счета, для чего надо либо прекратить подачу импульсов на вход CLK, либо снять единицу со входа GATE. Второй способ не требует остановки счета и называется «чтение на лету». В этом случае в настроенный, работающий канал надо передать еще одно настроечное слово (рис. 2.12).

Рис. 2.12

Здесь, как и ранее, D7 и D6 задают номер канала, а звездочки означают безразличное значение. Получив такой приказ, канал автоматически фиксирует текущее значение счетчика в буфере, откуда его затем можно считать за одну или две передачи. Разряды D3 – D1 (см. рис. 2.11) задают режим, в котором будет работать канал (соответственно 000 – режим 0, …, 101 – режим 5). Разряд D0 задает систему счисления, в которой будет работать канал. При D0 = 0 задается двоичная, а при D0 = 1 – десятичная система счисления.

Приведем названия режимов и рассмотрим их смысл.

2.12.1.  Режим 0 ‑ программируемая задержка.

После загрузки управляющего слова в регистр режима канала на выходе ОUT устанавливается напряжение низкого уровня; загрузка счетчика не изменяет это состояние. Затем, если GATE = 1, начинается декремент счетчика (последователь-ное вычитание из него единицы). В момент, когда счетчик обнулится, на выходе OUT устанавливается напряжение высокого уровня. Высокий уровень напряжения на выходе OUT сохраняется до загрузки счетчика новым значением. Счет разрешен только при наличии сигнала высокого уровня на входе GATE. Низкий уровень этого сигнала или ниспадающий фронт запрещают счет.

Счет будет продолжен при условии восстановления уровня логической 1 на входе GATE. Перезагрузка счетчика в процессе счета приводит к следующему: загрузка младшего байта останавливает текущий счет, загрузка старшего байта запускает новый цикл счета. Минимально допустимое значение счетчика равно 2.

Режим 1 ‑ программируемый одновибратор. На выходе счетчика формируется отрицательный импульс длительностью t = N×T, где N ‑ число, загруженное в счетчик, T ‑ период тактовых импульсов. Низкий уровень (логический 0) на выходе OUT устанавливается со следующего такта после подачи на вход GATE сигнала высокого уровня ("счет разрешен"). Загрузка в счетчик нового числа не влияет на длительность текущего импульса, а учитывается при следующем запуске. Перезапуск счетчика производится нарастающим фронтом входа GATE (без перезагрузки счетчика). Минимальное допустимое значение N равно 1.

Режим 2 ‑ программируемый делитель (генератор) частоты. Таймера работает как делитель частоты F на N, где N ‑ число, загружаемое в счетчик. При этом из сигнала, поступающего на вход CLK микросхемы, на ее выходе OUT формируется сигнал с частотой F/N. Длительность уровня логической единицы для формируемого сигнала равна (N - 1)×T, а длительность уровня логического 0 равна T, где Т ‑ один период синхронизации счетчика по входу CLK. Каждый раз при достижении счетчиком единицы, на выходе OUT появляется отрицательный импульс длительностью один такт.

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

Режим 3 ‑ программируемый генератор меандра. В этом режиме программируемый интервальный таймер выполняет функции программируемого генератора частоты со скважностью 2. Период выходного сигнала t = N×T, при этом длительность положительного и отрицательного полупериодов равна T×N/2, если N ‑ четное число. При нечетном N положительный период (на выходе OUT установлен сигнал логической 1) равен T×(N+1)/2, а отрицательный (на выходе OUT установлен сигнал логического 0) ‑ T×(N - 1)/2. Перезагрузка счетчика в процессе счета новой величиной не оказывает влияния на текущий период. Изменен будет следующий период выходного сигнала. Низкий уровень сигнала на входе GATE запрещает счет, на выходе OUT устанавливается сигнал высокого уровня. Высокий уровень GATE разрешает счет, а нарастание его запускает счетчик с начального состояния N. Генератор меандра не работает при загрузке в счетчик числа N = 3.

Режим 4 ‑ генератор одиночного импульса (счетчик событий). По окончании отсчета числа N, загруженного в счетчик, на выходе OUT формируется сигнал 0 с длительностью, равной периоду T, а затем сигнал переходит в исходное состояние OUT = 1. Для повтора цикла необходима перезагрузка счетчика. Перезагрузка счетчика возможна только программным способом. Под программной перезагрузкой понимается загрузка нового значения константы пересчета N в счетчик с шины данных. Загрузка младшего байта не оказывает влияния на текущий счет, а загрузка старшего байта запускает новый цикл счета. Вход GATE имеет то же назначение , что и в режиме 0: при GATE = 0 счет запрещен, при GATE = 1 счет разрешен. Указанный режим может быть использован для формирования одиночного импульса, вырабатываемого через определенную задержку после перезагрузки счетчика. Минимальное допустимое значение N = 1.

Режим 5 ‑ генератор одиночного импульса (счетчик событий) с аппаратным перезапуском. Работа таймера в режиме 5 по выходному сигналу аналогична работе в режиме 4, а по действию сигнала GATE ‑ режиму 1, в котором, как у одновибратора, запуск счета выполняется передним фронтом сигнала GATE. Если счет не завершен до конца, то по переднему фронту сигнала GATE счет начинается сначала. Счетчик является перезапускаемым. Возможна перезагрузка счетчика новой величиной N во время счета, что не влияет на длительность текущего цикла, а новая загруженная величина N будет обработана в следующем цикле счета.

В любой IBM ‑ подобной ПЭВМ стоит микросхема тай-мера ВИ53. При этом внутренним устройствам таймера присвоены следующие системные адреса:

- канал 0 – 40h;

- канал 1 – 41h;

- канал 2 – 42h;

- РУС      ‑ 43h.

Канал 0 отведен для службы системного времени. На выходе этого канала формируются импульсы с частотой, примерно равной 18,2 Гц. Эти импульсы подаются на вход IR0 контроллера прерываний ВН59 и представляют собой запросы на прерывание от таймера.

Канал 1 используется для регенерации динамической памяти. Сигнал с выхода этого канала подается на вход DREQ0 контроллера прямого доступа к памяти ВТ37 и является запросом на прямой доступ к памяти.

Канал 2 предназначен для выработки звуковых сигналов. Его выход заведен на встроенный динамик. Выдачей выходного сигнала канала 2 на динамик управляют биты 1 и 0 порта 61h. Схема использования таймера в IBM - подобных ПЭВМ приведена на рис. 2.13.

Как видно из схемы, биты 1 и 0 порта 61h управляют выдачей частоты на динамик. Для настройки канала 2 надо выполнить две команды:

Рис. 2.13

 mov al,0b6h  ;канал 2 настраивается на предачу обоих ;байтов, на режим 3, на двоичный счет.

 out 43h,al

Запретить и разрешить звучание можно командами:

 in al,61h        ; запретить звучание;

 and al,0fch

 out al,61h

 in al,61h        ;  разрешить звучание.

 or al,3

 out 61h,al



*****

© 2009-2017 Банк лекций siblec.ru
Лекции для преподавателей и студентов. Формальные, технические, естественные, общественные, гуманитарные, и другие науки.