- •Казанский государственный технический университет
- •1. Интерфейсные бис
- •1.1. Параллельный периферийный интерфейс
- •1.2. Последовательный периферийный интерфейс
- •Форматы управляющих слов
- •2. Работа по прерываниям
- •– Подтверждение прерывания. Для приема сигналов подтверждения прерывания от цп. При переходе в режим прерывания цп выдает два активных импульса .
- •Кроме регистров управляющих контроллером в схему бис пкп входят:
- •3. Прямой доступ к памяти
- •1. Для инициализации бис пкп цп вводит следующие ассемблерные команды:
- •Контроллер пдп к1810 вт37
- •Контрольные вопросы и задания
- •4. Программируемый таймер к1810ви54
- •Список литературы
- •Содержание
INT – запрос прерывания. Предназначен для выдачи в ЦП сигнала запроса прерывания.
– Подтверждение прерывания. Для приема сигналов подтверждения прерывания от цп. При переходе в режим прерывания цп выдает два активных импульса .
IR7-IR0 – запросы от ВУ. Для приема сигналов запросов от ВУ или от ведомых контроллеров прерываний.
CAS2-CAS0 – идентификатор ведомого контроллера. Используются при наличии в системе нескольких контроллеров прерываний (ведущего и ведомых). Эти выводы являются выходными для ведущего контролера и входными для ведомых.
/
- Вывод
выполняет две функции (вход-выход). Как
вход определяет, каким является
контроллер: ведущим (
/
=1)
или ведомым (
/
=0).
Как выход осуществляет запрещение
сигналом 0 всех подключенных к ШД МПС
устройств, когда данные передаются из
контроллера в ЦП.
Для управления контроллером предусмотрены 7 восьмибитовых программируемых регистра, которые разделены на две группы. Первую группу образуют регистры (ICW1- ICW4) – регистры приказов инициализации. Вторую группу – регистры (OCW1-OCW3) – регистры рабочих приказов. Загрузка регистров первой группы выполняется процедурой инициализации при включении МПС, и в процессе работы содержимое этих регистров не меняется. Рабочие приказы используются для динамического управления обработкой прерываний.
Обращение ЦП к регистрам контроллера прерываний организовано следующим образом: Регистры ICW1, OCW2, OCW3 имеют чётный адрес (при А0 = 0), а регистры ICW2, ICW3, ICW4, OCW1 имеют нечётный адрес (при А0 =1). При записи информации в регистры инициализации должен быть строгий порядок обращения к регистрам. Сначала нужно обратиться к регистру ICW1, а затем последовательно к регистрам ICW2, ICW3, ICW4. Чтобы определить к какому из регистров с чётным адресом обращается ЦП, контроллер анализирует значения битов D4 и D3 в посылаемом ЦП байте данных. Если D4=1, то данные заносятся в регистр ICW1. Если D4=0, то данные заносятся в регистр OCW2, если D3=0, либо в регистр OCW3, если D3=1.
Кроме регистров управляющих контроллером в схему бис пкп входят:
IRR – регистр запросов;
ШПр – шифратор приоритетов;
ISR - регистр обслуживаемых запросов.
Эти узлы предназначены для восприятия и управления очередностью обработки прерываний на входах запросов IR7-IR0 согласно заданному правилу приоритетов. Запрос по входу IRi фиксируется установкой в 1 i-го разряда регистра IRR. После этого установленный в 1 бит регистра IRR сравнивается с соответствующим битом регистра масок IMR (OCW1). Если бит маски содержит 0, запрос передается в ШПр, в противном же случае запрос блокируется. Когда запрос прерывания подается в ШПр, проверяется его приоритет. При поступлении нескольких запросов двоичный код номера запроса с наивысшим приоритетом появляется на выходе ШПр. Этот код сравнивается с номером самого приоритетного разряда с единичным значением в регистре ISR, где хранятся текущие обрабатываемые запросы. Если приоритет поступившего запроса оказывается более высоким, на выходе INT контроллера прерываний формируется сигнал 1.
Если
флаг IF=1,
т.е. прерывания разрешены, ЦП по завершению
текущей команды реализует затребованный
запрос на прерывание. ЦП возвращает в
контроллер прерываний два отрицательных
импульса по линии
.
Первый импульс
блокирует входы регистра IRR вплоть до
появления второго импульса
,
устанавливает бит регистра ISR
соответствующий входу запроса в 1 и
сбрасывает соответствующий бит регистра
IRR. По второму импульсу
контроллер передает по линиям D7-D0 в ЦП
код типа прерывания для данного запроса,
сформированный в регистре ICW2. Если бит
автоматического окончания прерывания
(AEOI) в ICW4 установлен в 1, то по окончании
второго импульса
сбрасывается бит ISR, который был установлен
первым импульсам
.
В противном случае бит ISR не сбрасывается
до выдачи в регистр OCW2 соответствующего
приказа окончания прерывания (приказа
EOI).
Форматы регистров инициализации и рабочих регистров показаны на рис. 2.3. Биты регистра ICW1 (управление БИС) определяются следующим образом.
Биты D7-D5, D2 – используются только в том случае, если МПС построена на базе МП К580.
Бит D4 всегда установлен в 1. Определяет, что данные, передаваемые ЦП по четному адресу, предназначены для регистра ICW1.
Бит D3 (LTIM) определяет режим запуска фронтом (LTIM=0) или уровнем (LTIM=1). При запуске фронтом i-й бит регистра IRR сбрасывается при установке соответствующего бита регистра ISR в 1. При запуске уровнем i-й бит регистра IRR не сбрасывается, пока вход запроса IRi=1. Это запрещает переход к обработке менее приоритетных прерываний, пока данное ВУ не снимет свой запрос.
Бит D1 (SNGL) показывает, каскадируется ли данный контроллер с другими контроллерами прерываний. Если в системе один контроллер, то SNGL=1.
Бит D0 (IC4) устанавливается в 1, если при инициализации используется приказ ICW4. В МПС с МП К1810 приказ ICW4 должен быть всегда, поэтому D0=1.
Регистр ICW2 (тип прерывания) предназначен для формирования параметра type соответствующего поступившему запросу. При инициализации в приказе ICW2 задается тип прерывания, присвоенный запросу IR0. При этом биты D2-D0 должны содержать нули, т.к. они определяют уровень запроса, т.е. номер входа запроса. При поступлении в контроллер прерываний первого импульса в биты D2-D0 регистра ICW2 записывается номер обслуживаемого запроса, поступившего с ШФ.
Информация в регистр ICW3 (управление ведомым) заносится только в том случае, если в МПС используется несколько контроллеров прерываний, один из которых является ведущим, остальные – ведомыми. Если в системе один контроллер (в регистре ICW1 бит SNGL=1), то ЦП приказ ICW3 не выводит. На рис.2.4. показаны связи при каскадировании ведущего и двух ведомых контроллеров между собой. Запрос на прерывание в ЦП по линии INT выдает только ведущий контроллер. Выход INT ведомого контроллера подается на один из входов IR ведущего контроллера.
Структура приказа ICW3 для ведущего контроллера и для ведомых контроллеров различна. Для ведущего контроллера бит i устанавливается в 1, если к его входу IRi подключен ведомый. Иначе этот бит должен быть сброшен, т.е. равен 0. Как показано на рис. 2.4., ведомые контроллеры подключены ко входам IR2 и IR6 ведущего. Поэтому для ведущего контроллера приказ ICW3 будет иметь вид <01000100>. Для ведомого контроллера три младших бита D2-D0 приказа ICW3 определяет код идентификации ведомого контроллера. Он должен совпадать с номером i-го входа (IRi) ведущего, к которому подключен
Рис. 2.4. Система прерываний с несколькими контроллерами ПКП
вход INT данного ведомого. В соответствии с соединениями на рис. 2.4 для одного ведомого контроллера приказ ICW3 будет иметь вид <00000010>, для другого ведомого - <00000110>.
При кодировании информации для регистра инициализации ICW4 (управление режимом) назначение битов следующее:
Биты D7-D5 всегда равны 0.
Бит D4 (SFNM) устанавливается в 1, если используется специальный вложенный режим, применяемый в МПС с несколькими контроллерами. Иначе SFNM=0. Процедура реализации специального вложенного режима рассмотрена в [2].
Бит D3 (BUF) определяет наличие буферов, подключаемых к ШД системного интерфейса МПС и одновременно способ использования вывода /
.
При BUF=1 вывод
/
используется для выдачи сигнала для
запрещения системных буферов на время
передачи данных из контроллера прерывания
в ЦП. Если BUF=0 (системные буфера
отсутствуют), то
/
– вход, на который следует подать 1. Все
это имеет смысл только для ведущего
контроллера при каскадировании, либо
в системах с одним контроллером. Для
ведомых контроллеров значение BUF
безразлично.Бит D2 (M/
).
Этот бит игнорируется, если BUF=0. Если
BUF=1, то в системах с одним контроллером
бит M/
=1,
а в системах, использующих каскадирование,
для ведущего контроллера M/
=1,
для ведомого - M/
=0.Бит D1 (AEOI) определяет автоматический сброс бита регистра ISR. Если AEOI=1, то в конце второго импульса сбрасывается бит ISR, который вызвал прерывание. Если AEOI=0, то для сброса бита ISR нужно в программе прерывания выдать приказ окончания прерывания EOI.
Бит D0 (
РM)
указывает на базовый МП системы, в
которой находится контроллер прерываний.
Для систем на базе МП К1810 состояние
PM=1.
Рассмотрим пример инициализации, т.е. загрузки данных в регистры приказов инициализации ICW1 - ICW4 (адреса портов контроллера прерываний 50H и 51H):
mov AL, 13H
out 50H, AL
mov AL, 18H
out 51H, AL
mov AL, 0DH
out 51H, AL
Первые две команды определяют запуск фронтом, наличие в системе одного контроллера прерываний и необходимость загрузки регистра ICW4. Следующие две команды задают 5 старших бит типа прерывания равными 00011, т.е. определяют, что тип прерывания для запроса по входу IR0 равен 18H. Приказ ICW3 не выводится, т.к. SNGL=1. Следовательно, последние две команды определяют загрузку в ICW4 байта 0DH. Эта величина сообщает следующую информацию: специальный вложенный режим не применяется; сигнал / используется для запрещения системных буферов; в системе используется один контроллер прерываний; для сброса бита ISR необходим приказ EOI; контроллер работает в системе на базе МП К1810.
Кроме приказов инициализации в контроллер заносятся рабочие приказы в регистры OCW1–OCW3. Приказ OCW1 применяется для маскирования запросов прерываний. Если бит маски, соответствующий запросу прерывания, содержит 1, то запрос по этому входу блокируется. Приказ OCW1 вводится по нечетному адресу контроллера (при A0=1).
Приказы OCW2 и OCW3 управляют режимами работы контроллера и обработкой концов прерываний. Рассмотрим назначение битов приказа OCW2. Биты D2-D0 (L2, L1, L0) определяют уровень IR, т.е. номер входа запроса от ВУ, биты D3 и D4 равны 0, бит D5 предназначен для задания приказов EOI, а биты D6 (SL) и D7 ( R ) управляют уровнями IR.
Если в регистре инициализации ICW4 бит D1 (AEOI)=0, это указывает на программный сброс бита ISR, вызвавшего прерывание. Тогда, в тексте программы прерывания необходимо выдать приказ EOI, выполняющий этот сброс, который реализуется посредством установки в 1 бита D5 в OCW2.
Когда выдается приказ OCW2, возможны четыре комбинации бита D7 (бит R - ротация) и бита D6 (бит SL – установка уровня), которые приведены в табл. 2.
Рассмотрим эти комбинации. При значении битов R и SL равными 0,0 устанавливается режим обычных приоритетов. В этом режиме запрос от ВУ, подключенного к выводу IR0, имеет наивысший приоритет. Далее следуют приоритеты запросов IR1, IR2 и т.д. Поэтому при одном установленном бите ISRn контроллер не реагирует на запросы IR7, …IR(n+1), но распознает незамаскированные запросы на выводах IR(n-1),…IR0. Запросы с меньшими приоритетами ожидают и обрабатываются по мере сброса битов ISRj с большими приоритетами. В МПС наиболее часто применяется режим обычных приоритетов. В этом случае для выдачи приказа EOI, в регистр OCW2 нужно занести байт в виде <00100000>. Но бит ISR можно сбросить явно, выдавая приказ OCW2, в котором биты R, SL и EOI содержат комбинацию 011, а поле L2-L0 идентифицирует номер сбрасываемого бита. Если, например, в OCW2 посылается байт <01100011>, сбрасывается бит ISR3.
Таблица 2
R |
SL |
Д Е Й С Т В И Я |
0 |
0 |
Режим обычных приоритетов |
0 |
1 |
Сбрасывает бит ISR, определяемый полем L2-L0 |
1 |
0 |
Циклически изменяет приоритеты влево на 1 позицию |
1 |
1 |
Назначает позиции, определенной полем L2-L0, низший приоритет с цикл. Изменением остальных приоритетов |
Приказ OCW2 может циклически изменять приоритеты путем сдвига приоритетов на одну позицию влево при R=1 и SL=0. Например:
IR0,
IR1,…….IR6,
IR7
IR1,
IR2,
……. IR7,
IR0.
Приказ OCW2 может изменять приоритеты, назначая низший приоритет любому из входов IR при R=1 и SL=1. Например, для назначения входу запроса IR4 низшего приоритета, надо выдать приказ OCW2=<11100100>. При этом получается следующий порядок приоритетов:
IR5, IR6, IR7, IR0, IR1, IR2, IR3, IR4.
Выдача процессором приказа OCW2 с EOI=0 имеет аналогичные последствия, но только без сброса бита регистра ISR.
Приказ OCW2 имеет единичное действие – в момент его поступления в контроллер. Возможность ротации позволяет динамически корректировать приоритеты ВУ в процессе работы системы без перекоммутации входов контроллера. Режим, установленный приказом OCW2 (порядок приоритетов), остается неизменным вплоть до получения от ЦП очередного приказа. Аналогично с приказами OCW3.
Рассмотрим назначение битов рабочего приказа OCW3. Некоторые биты приказа имеют постоянное значение. Это биты D7=0, D4=0 и D3=1.
Биты D6 (ESMM) и D5 (SMM) определяют режим специальной маски. Если ESMM=1 и SMM=1, то при IF=1 незамаскированные запросы прерываний обрабатываются в порядке их поступления, приоритеты игнорируются. Выдача приказа OCW3, в котором ESMM=1, а SMM=0 восстанавливает приоритетное упорядочивание согласно последнему приказу OCW2. Значение ESMM=0 запрещает режим специальной маски.
Бит D2 (P) – бит полинга (опроса). Этот режим используется при IF=0, когда прерывания запрещены. Но при этом запросы от ВУ фиксируются в регистре IRR. При установке в OCW3 значения бита P=0 контроллер переводится в режим опроса со стороны ЦП. В этом случае при выполнении команды IN AL, PORT, где PORT – четный адрес контроллера прерываний (A0=0), инициируемый командой сигнал на входе , передает в регистр AL процессора байт, формат которого приведен на рис. 2.5. При этом соответствующий бит регистра ISR устанавливается в 1 (аналогично действию первого импульса ). Значение бита I=1 показывает наличие запроса прерывания, требующего обработки, а поле <W2, W1, W0> дает уровень этого запроса, т.е. номер входа запроса. Пусть, например, приоритеты упорядочены как IR3, IR4, ….. IR7, IR0, IR1, IR2 и от ВУ поступили запросы на входы IR1 и IR4. Так как запрос IR4 имеет более высокий приоритет, то в ЦП будет введен байт с I=1 и значениями <W2, W1, W0> = <1, 0, 0>.
ЦП может прочитать содержимое регистра запросов IRR и регистра обслуживаемых прерываний ISR. Если бит P=0, то состояние битов D1 (RR) и D0 (RIS) указывает, какой из регистров IRR или ISR может прочитать ЦП по команде IN AL, PORT при A0=0. Если RR=1 и RIS=0, в AL заносится содержимое регистра IRR, а при RR=1 и RIS=1 – регистра ISR.
Рис. 2.5. Формат байта, передаваемого в ЦП в режиме опроса
Содержимое регистра маски OCW1 (IMR) можно прочитать в любой момент времени по команде IN AL, PORT при A0=1. Чтение ЦП информации из указанных регистров позволяет проводить текущий контроль состояния контроллера.
Контрольные вопросы и задания
