Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OEVM / Орг.ЭВМ КП / ОЭВМ КП Методичкие указания.doc
Скачиваний:
38
Добавлен:
10.04.2015
Размер:
1.7 Mб
Скачать
      1. Генератор тактовых импульсов и схема сброса

Для работы МП на его вход CLK2 необходимо подать сигнал тактовой частоты 16МГц., который формирует микросхема тактового генератора. В его качестве может быть использован ряд микросхем. УГО используемой для этой цели типовой микросхемы VXO-61 приведено на рисунке 9, а назначение её выводов описано в таблице 6.

Рисунок 9 - УГО микросхемы тактового генератора VXO-61

Таблица 6 - Назначение выводов микросхемы VXO-61

№ вывода

Обозначение вывода

Назначение вывода

14

VDD

Напряжение питания +5В

1

Vcontrol

Напряжение управления

8

Output

Тактовый сигнал

7

GND

Общий

Для обеспечения автоматического формирования сигнала “Сброс” при включении питания или при нажатии кнопки SA1 “Сброс”, ко входу RESET МП подключается схема формирования сигнала “Сброс” (см. рисунок 10). При подаче питающего напряжения “+5В”, конденсатор C1 начинают заряжаться через резистор R1, при этом некоторое время после включения питания напряжение на конденсаторе остается меньше 0,3В, что равносильно подаче напряжения логического “0” на вход инвертора (ЛН1). Время заряда конденсаторов определяет длительность формируемого импульса. Диод VD1 служит для ускоренной разрядки конденсатора при отключении питания, что обеспечивает формирование сигналаRESET, подаваемого на вход МП, при кратковременном пропадании питания.

Рисунок 10 - Схема формирования сигнала “Сброс”

    1. Реализация подсистемы прерываний

Система векторных прерываний может быть построена различными способами, однако в настоящее время наиболее часто она реализуется с помощью БИС ПКП I8259A. Микросхема выполнена по n-МОП технологии и размещается в 28-выводном корпусе. Она совместима с ТТЛ-схемами. Для работы БИС требуется единственный источник питания +5В.

На основе одного ПКП I8259Aформируется 8-уровневая приоритетная система векторных прерываний для МП типаI82386. Несколько контроллеров могут соединяться каскадно для расширения числа прерывания до 64. ПКП обеспечивает работу в нескольких режимах, позволяя оптимизировать логику работы системы прерываний согласно требованиям, предъявляемым к МПС. УГО ПКП приведено на рисунке 11.

Рисунок 11 – УГО программируемого контроллера прерываний I8259A

Назначение выводов микросхемы I8259Aприведено в таблице 7.

Таблица 7- Назначение выводов микросхемы I8259A

Вывод

Обозначение

Тип вывода

Функциональное назначение вывода

11,10,9,8,7,6,5,4

D0-D7

Входы-выходы

Канал данных

27

A0

Вход

Адрес 0-го разряда

18-25

IRQ0- IRQ7

Вход

Запрос прерывания

1

CS

Вход

Выбор микросхемы

2

WR

Вход

Запись информации

3

RD

Вход

Чтение информации

26

INTA

Вход

Подтверждение прерывания

16

MS/SV

Вход

Выбор ведомой микросхемы

12,13,15

CAS0-CAS2

Входы-выходы

Шина каскадирования

17

INT

Выход

Прерывание

14

GND

-

Общий

28

UCC

-

Напряжение питания

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

Приоритетная логика выбирает разрешённый запрос на прерывание с наивысшим приоритетом из числа поступивших и сравнивает его с текущим приоритетом запросов, находящихся на обслуживании. При превышении последнего ПКП генерирует сигнал INT. Микропроцессор подтверждает приём запроса INT (при разрешённом восприятии прерываний) генерацией кода шинного цикла подтверждения прерывания на выходах М/IO#, D/C#, W/R#, в результате чего СК вырабатывает сигнал подтверждения прерывания INTA#, поступающий на ПКП. Под воздействием сигнала запрос с высшим приоритетом из IRR фиксируется в соответствующем разряде ISR. Принятый к обслуживанию IRR-бит сбрасывается, и приём нового запроса разрешается.

При работе совместно с процессором I82386SX ПКП должен выдавать на процессор номер вектора прерывания n, для чего на него подаётся ещё один сигнал INTA#, по которому МП считывает с шины данных значение вектора прерывания n.

Отличительной особенностью БИС типа I8259A является её программируемость. Программирование осуществляется двумя типами управляющих слов: командами инициализации ICW(Initialization Command Word) и управления OCW (Operation Command Word). Четыре команды инициализации ICW1-ICW4 загружаются перед началом работы и служат для установки БИС в исходное состояние. Для программирования одиночного ПКП достаточно только две команды инициализации ICW1 и ICW2. Команды управления OCW1-OCW3 могут быть переданы в ПКП в любое время после выполнения инициализации. Они предназначены для оперативного управления работой контроллера и в рамках данного курсового проекта не рассматриваются.

При значениях разряда А0=0 ША и четвертого разряда ШД D4=1 входной байт интерпретируется как ICW1 (см. рисунок 12). Разряд S определяет наличие одного или нескольких ПКП в системе. Остальные разряды при работе в МПС с процессорами, начиная с i8086, могут принимать любые значения.

Рисунок 12 – Формат управляющего слова ICW1

Формат управляющего слова ICW2 приведен на рисунке 13. При работе с процессорами начиная сi8086 и выше разрядыD7-D3 определяют старшие биты номера прерыванияnдля каждого входаIRQПКП. Младшие 3 бита номера прерывания определяются номером входаIRQ, на который поступил запрос прерываний.

Рисунок 13 – Формат управляющего слова ICW2

Набор действий процессора после появления сигнала INTR на его входе и выдачи сигнала INTA заключается в определении источника прерывания и вызова соответствующей программы обработки.

Обработка прерываний (как внешних, так и внутренних) в реальном режиме микропроцессора производится в три этапа:

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

  2. Переход к выполнению и выполнение программы обработки прерываний.

  3. Возврат управления прерванной программе.

Первый этап должен обеспечить временное прекращение выполнения текущей программы таким образом, чтобы потом прерванная программа продолжила свою работу так, как будто никакого прерывания не было. Разделяемыми между программами (подпрограммами) ресурсами являются регистры микропроцессора, в том числе регистр флагов, поэтому их содержимое нужно сохранять. Обязательными для сохранения являются регистры cs,ipиflags\eflags, поэтому они при возникновении прерывания сохраняются микропроцессором автоматически. Параcs:ipсодержит адрес команды, с которой необходимо начать выполнение после возврата из программы обслуживания прерывания, аflags\eflags- состояние флагов после выполнения последней команды прерванной программы в момент передачи управления программе обработки прерывания. Сохранение содержимого остальных регистров должно обеспечиваться программистом в начале программы обработки прерывания до их использования. Наиболее удобным местом хранения содержимого регистров является стек. В конце первого этапа микропроцессор после включения в стек регистровflags,csиipсбрасывает бит флага прерыванийIFв регистреflags(но при этом в стек записывается предыдущее содержимое регистраflagsс еще установленнымIF). Тем самым предотвращаются возможность возникновения вложенных прерываний по входуINTRи порча регистров исходной программы вследствие неконтролируемых действий со стороны программы обработки вложенного прерывания. После того как необходимые действия по сохранению контекста завершены, обработчик аппаратного прерывания может разрешить вложенные прерывания командойsti.

В реальном режиме микропроцессора допускается до 256 источников прерываний. Количество источников прерываний ограничено размером таблицы векторов прерываний. Эта таблица выступает связующим звеном между источником прерывания и процедурой обработки. Данная таблица располагается в памяти, начиная с адреса 0. Каждый элемент таблицы векторов прерываний занимает 4 байта и имеет следующую структуру:

  • 1-е слово элемента таблицы - значение смещения начала процедуры обработки прерывания (n) от начала кодового сегмента;

  • 2-е слово элемента таблицы - значение базового адреса сегмента, в котором находится процедура обработки прерывания.

Таким образом, полный размер таблицы векторов прерываний 4 * 256 = = 1024 байт. Поэтому, при выполнении второго этапа обработки прерывания, процессор должен выполнить следующие действия:

    1. По номеру источника прерывания путем умножения на 4 определить смещение (адрес) в таблице векторов прерываний.

    2. Поместить первые два байта по вычисленному адресу в регистр ip.

    3. Поместить вторые два байта по вычисленному адресу в регистр cs.

    4. Передать управление по адресу, определяемому парой cs:ip.

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

По окончании выполнения подпрограммы обработки прерывания необходимо восстановление контекста прерванной программы. Так же, как и на этапе 1, на данном последнем этапе есть действия, выполняемые микропроцессором автоматически, и действия, задаваемые программистом. Основная задача на этапе 3 - привести стек в состояние, в котором он был сразу после передачи управления данной процедуре. Для этого программист указывает необходимые действия по восстановлению регистров и очистке стека. Этот участок кода необходимо защитить от возможности искажения содержимого регистров (в результате появления аппаратного прерывания) с помощью команды cli. Последние команды в процедуре обработки прерывания - sti и iret, при обработке которых микропроцессор выполняет следующие действия:

sti - разрешить аппаратные прерывания по входу INTR;

iret - извлечь последовательно три слова из стека и поместить их, соответственно, в регистры ip, cs и flags.

В результате этапа 3 управление возвращается очередной команде прерванной программы, которая должна была выполниться, если бы прерывания не было. Аппаратные прерывания могут быть инициированы программно командой микропроцессора int n, гдеn - номер аппаратного прерывания в соответствии с таблицей векторов прерываний. При этом микропроцессор также сбрасывает флагIF, но не вырабатывает сигналINTA.

Запрос прерывания (в соответствии с требованиями ТЗ на КП) должен происходить после нажатия кнопки КН2. Для предотвращения дребезга контакта кнопки необходимо применить схему, показанную на рисунке 14.

Рисунок 14 – Схема подавления дребезга контактов и снятия сигнала IRQIпосле формирования сигналаINTA#

При нажатой кнопке S2 на прямом выходе триггера формируется высокий уровень сигналаIRQi. Для его снятия после появления сигналаINTA# можно использоватьD- триггер, устанавливаемый в состояния логической 1 нарастающим фронтом сигналаIRQIи сбрасываемый низким уровнемINTA#.

Соседние файлы в папке Орг.ЭВМ КП