Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 3000544.doc
Скачиваний:
26
Добавлен:
30.04.2022
Размер:
14.75 Mб
Скачать

10.1.2. Таймер на системной плате ibm pc

В IBM PC тактовая частота всех каналов таймера равна 1.19318 Мгц, т. е. период тактовых импульсов 0.84 мксек. Каналы таймера имеют следующее назначение. Входы GATE нулевого и первого каналов всегда имеют высокий уровень и следовательно, счет всегда разрешен.

Нулевой канал предназначен для работы системных часов. Его выход подключен к нулевому входу контроллера прерываний (IRQ0). При начальной загрузке BIOS инициализирует этот канал для работы в режиме 3 со счетчиком 0 (т. е. 65536 тактов на период). Поэтому частота прерываний для системных часов равна 1.19Мгц/65536=18.2Гц и прерывание IRQ0 с вектором INT 8 происходит с этой частотой, т. е. каждые 55мсек.

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

Второй канал таймера используется для генерации звука. Для этого используется режим 3 с подходящим начальным значением счетчика. Значение счетчика вычисляется по формуле N=1193181/f=1234DDh/f, где f- требуемая частота звука. В схему звукогенератора входит логический элемент «И» и выходной регистр (РВ) программируемого параллельного интерфейса (ППИ), имеющего базовый адрес 60h. BIOS инициализирует порт 61h на вывод информации при загрузке системы. Нулевой бит этого порта поступает на вход GATE второго канала таймера, разрешая его работу. Выход второго канала таймера поступает на один из входов элемента “И”, другой вход которого подключен к первому биту порта РВ, разрешая прохождение звукового сигнала. Таким образом, управление генерацией звука осуществляется 0 и 1 битами регистра с адресом 61h.

10.2. Программируемый контроллер прерываний

Большое значение для микропроцессорных систем, работающих в реальном масштабе времени, имеет обеспечение экстренного обслуживания внешних устройств по их запросам. По принятию запроса процессор прерывает выполнение своей программы и переходит на программу обслуживания ВУ, пославшего запрос. Для организации системы прерываний от различных устройств предназначены БИС программируемых контроллеров прерываний. Задача контроллеров состоит в приеме запросов прерывания от ВУ, сравнении их приоритетов, посылки в процессор запроса на прерывание и информации о месте расположения соответствующей программы обслуживания.

В ЭВМ на базе процессоров INTEL*86 используется система векторных прерываний. Система векторных прерываний наиболее эффективно реализуется с помощью специальной БИС Intel 8259А (отечественный аналог КР580ВН59А) или ее модификаций. Заметим, что микросхема 8259 (КР580ВН59) может быть использована только совместно с процессором Intel 8080 (КР580ИК80А) из-за отличий в протоколе обмена. Для управления аппаратными прерываниями в PC на базе процессоров INTEL*86 используется микросхема программируемого контроллера прерываний Intel 8259А или она входят в состав специализированной БИС наряду с другими контроллерами. Так как контроллер 8259 хорошо описан в технической литературе, рассмотрим архитектуру и принцип действия контроллера 8259А.

Микросхема выполняется по n-МОП технологии, совместима по уровням с ТТЛ-схемами, размещается в 28-выводном корпусе и имеет единственный источник питания +5в. На основе ПКП формируется 8-уровневая приоритетная система прерывания. Для расширения числа уровней прерывания до 64 несколько ПКП соединяются каскадно.

Структурная схема, поясняющая логику работы ПКП, приведена на рисунке 10.3. Схема управления чтением/записью осуществляет прием команд от микропроцессора и передачу ему информации о состоянии контроллера. Обмен с микропроцессором ведется через 8-разрядный буфер данных. Схема управляется входами CS (выбор кристалла), RD (чтение), WR (запись), A0 (нулевой разряд адреса). В состав блока входят не показанные на рисунке регистры управляющих слов, содержимое которых определяет режим работы контроллера.

Запросы на прерывание от внешних устройств (в том числе и от таймера) поступают на входы IR0-IR7 и запоминаются в регистре запросов IRR (Interrupt Request Register) путем установки соответствующего бита. Регистр обслуживания ISR (In Service Register) содержит все запросы, которые в данное время находятся в стадии обработки. Регистр маски IMR (Interrupt Mask Register) используется для маскирования отдельных уровней (входов) прерываний. Запрет некоторого уровня соответствует единице в соответствующем разряде IMR.

Приоритетная логика выбирает разрешенный запрос на прерывание с наивысшим приоритетом из числа поступивших и сравнивает его с текущим приоритетом запросов, находящихся на обслуживании. Если приоритет поступившего разрешенного запроса на прерывание превышает приоритет запроса, находящегося на обслуживании, ПКП генерирует сигнал INT. Если флаг разрешения прерывания IF регистра признаков процессора установлен (прерывания разрешены), микропроцессор подтверждает прием запроса INT генерацией строба INTA. Под воздействием строба INTA запрос с высшим приоритетом из IRR фиксируется в соответствующем разряде ISR. Принятый к обслуживанию IRR-бит сбрасывается и прием нового запроса разрешается. После получения второго сигнала подтверждения от процессора по линии INTA , ПКП передает в шину данных 8-битовый номер прерывания (вектор). По вектору процессор определяет положение программы обработки прерывания в оперативной памяти машины.

Установленный в ISR бит остается в состоянии 1 до окончания процедуры обслуживания. В конце процедуры в ПКП должна быть передана специальная команда окончания прерывания EOI, которая сбрасывает соответствующий ISR-бит.

До тех пор, пока некоторый ISR-бит установлен, все запросы с равным или меньшим приоритетом игнорируются. В то же время запросы с более высоким приоритетом приводят к генерации сигнала INT, инициируя вложенные прерывания МП.

Каскадное соединение нескольких БИС типа ВН59 позволяет довести число приоритетных уровней до 64. В данном случае одна БИС действует как ведущая ( , низкий уровень), а другие как ведомые ( ).

В каскадном режиме генерация сигнала требования прерывания INT возлагается на ведущую БИС, а генерация вектора прерывания - на ведомую.

При подключении ведомых контроллеров их выходы требования прерывания INT соединяются, каждый со своим, входом запроса на прерывание IR* ведущего контроллера, а одноименные выходы каскадирования CAS всех контроллеров соединяются, образуя шину. Каждой ведомой БИС присваивается идентификационный код, соответствующий номеру линии запроса на прерывание ведущей БИС, к которой она подключена. При появлении запроса на входе ведомого ПКП, он вырабатывает сигнал INT, поступающий на вход запроса прерывания IR* ведущего, который и вырабатывает сигнал INT, поступающий на процессор через шину управления.

Когда процессор возвращает сигнал INTA, ведущий контроллер не только устанавливает бит в ISR и сбрасывает бит в IRR, но и выдает на шину CAS номер уровня прерывания, к которому подключен пославший запрос ведомый. Вместо генерации вектора ведущая БИС посылает по трехразрядной шине CAS номер уровня, принятого к обслуживанию на второй строб INTA. Этот номер сравнивается компараторами ведомых БИС с присвоенными им номерами. В результате выбирается один из них. Выбранная БИС отвечает на второй строб INTA генерацией своего вектора в шине данных.