Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Lektsii_mikroprotsessory

.pdf
Скачиваний:
14
Добавлен:
22.06.2019
Размер:
895.94 Кб
Скачать

31

должен быть адресом начала подпрограммы обслуживания прерывания. Система команд процессора 8080 предоставляет два возможных варианта таких команд:

Однобайтная команда RST n, где n – трѐхразрядный номер от 0 до 7 в составе кода команды, однозначно определяющий адрес начала подпрограммы. Команда предписывает процессору адрес для подпрограммы определить умножением числа n на 8.

Трѐхбайтная команда CALL Adr, которая адрес начала подпрограммы Adr содержит в своѐм составе вторым и третьим байтами.

Если выбранный в машинном цикле прерывания код оказался кодом команды CALL Adr, то процессор выполнит ещѐ два аналогичных машинных цикла прерывания для приѐма остальных байт команды. Когда же вся команда выбрана, процессор никак не изменяет счѐтчик команд, а сразу приступает к выполнению команды.

Управление прямым доступом

Логика управления прямым доступом предназначена для предоставления возможности внешнему устройству, отключать процессор от управления системной шиной, брать это управление на себя. И получать доступ к устройствам этой шины для обмена данными с ними, т.е. выполнять захват шины.

Логика содержит в своем составе триггер разрешения захвата, который устанавливается с приходом сигнала HOLD и сбрасывается с исчезновением сигнала HOLD или после сброса процессора.

На установку внешнего сигнала требования прямого доступа (HOLD) логика реагирует приостановкой выполнения текущей команды, отключением от системной шины и выдачей сигнала HLDA (предоставление прямого доступа). А при снятии сигнала HOLD схема обеспечивает продолжение выполнение микропроцессором приостановленной команды.

Анализ готовности

Во втором такте каждого машинного цикла логика анализа готовности проверяет состояние входного сигнала READY. И при обнаружении его пассивного уровня, она переводит процессор в состояние ожидания.

Таким образом, логика анализа готовности позволяет затянуть по времени машинный цикл до прихода в процессор входного сигнала READY от устройства шины, с которым выполняется обмен (см. рис. 2.12). Это необходимо для обеспечения асинхронного режима обмена процессора с устройствами разного быстродействия. Выходной сигнал WAIT логикой этой схемы формируется в противофазе с сигналом READY. Сигналом WAIT микропроцессор указывает на свое пребывание в состоянии ожидания готовности устройства шины, к которому процессор обратился.

 

32

 

 

 

WAIT

 

 

 

READY

 

 

Микропроцессор

MRD

 

 

8080

 

 

 

 

 

 

(8)

 

 

(8)

 

Шина данных

 

D0..7

микро-ЭВМ

 

 

 

Пребывание процессора в

 

 

состоянии ожидания

 

 

Готовность снята

WAIT

 

 

памятью после

 

 

 

 

 

обращения к ней

 

 

 

процессора

READY

 

Готовность

 

 

 

 

 

восстановлена

 

 

 

памятью после

MRD

 

 

установки байта

 

 

 

на шину данных

Строб чтения

D0..7

 

 

 

 

 

процессором

 

 

 

памяти

 

Байт читаемый

 

 

 

Задержка, зависимая от

 

из ячейки

 

 

 

 

быстродействия памяти

 

 

Рис. 2.12. Анализ готовности при чтении памяти.

Сброс в исходное состояние

Схема управления сбросом процессора воспринимает внешний сигнал RESET и выполняет установку MП в исходное состояние. Под исходным со-

стоянием понимается следующее состояние:

очищены регистры программного счѐтчика PC, и указателя стека SP; сброшен триггер разрешения прерывания.

Фактически это означает что, сразу после рестарта поведение процессора будет характеризоваться следующими моментами:

интерпретацию команд процессор начнѐт с той команды, которая помещена в ячейке с адресом 0;

положение стека будет не определено, так как адрес 0 – это адрес команды;

33

на прерывания процессор реагировать не будет.

Исходя из этого, для настройки процессора на требуемый вариант поведения программисту необходимо сделать следующее.

Расположить по адресу 0 команду безусловного перехода на место старта управляющей программы, чтобы она автоматически запускалась после рестарта микро-ЭВМ.

В начале управляющей программы специальными командами определить вершину стека в подходящем для стека месте памяти данных (ОЗУ).

Если требуются прерывания процессора, специальной командой EI установить триггер разрешения прерываний, то есть разрешить процессору реагировать на запросы прерываний.

Состояния микропроцессора

Процессор в каждый такт своей работы может пребывать в одном из четырѐх возможных состояний.

Выполнение программы

Процессор занимается интерпретацией команд. Он читает из памяти, дешифрирует и выполняет последовательности команд программ. Это основное рабочее состояние процессора. В нѐм он окажется сразу после старта при следующем состоянии входных управляющих сигналов:

наличие готовности или активен сигнал READY = 1;

отсутствие захвата или пассивен сигнал HOLD = 0; снят сигнал сброса RESET = 0.

Вывести процессор из состояния выполнения программы можно двумя принципиально разными путями:

воздействием на процессор внешним сигналом (аппаратно); воздействием на процессор командой (программно).

Более детально, имеется всего три способа:

снятие сигнала READY (готовность) состояние ожидания; подаче сигнала HOLD (захват) состояние захвата; выполнение команды HLT (останов)состояние останова.

Ожидание

Состояние ожидания возникает когда при выполнении процессором обращения к устройству шины исчезает его входной сигнал READY (готовность). Это естественное состояние для асинхронного режима взаимодействия процессора с устройствами шина меньшего быстродействия (см. рис.

1.14).

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

34

Выход из состояния ожидания возможен при восстановлении активного уровня сигнала READY (готовность). Когда это произойдет, процессор продолжит прерванный машинный цикл.

Захват

Состояние захват возникает, когда при выполнении процессором машинного цикла и при наличии сигнала готовности на входе READY, устанавливается сигнал захвата на входе HOLD. Оно необходимо, чтобы обеспечить возможность прямого (без участия процессора) доступа к памяти со стороны интерфейса, инициировавшего захват.

В этом состоянии сформируется активный уровень на выходе HLDA. Процессор физически отключится (раскоммутируется) от шины, то есть переведет свои сигналы шины в высокоимпедансное состояние.

Выход из состояния захвата – после снятия внешнего сигнала HOLD (захват).

Останов

Состояние останов возникает при выполнении процессором команды HLT (код – 76h). Это состояние позволяет наилучшим образом "привязать" процессор к внешним событиям, реагируя на них максимально быстро и ничего не делая в интервалах между ними.

В состоянии останова процессор установит активный уровень на выходе WAIT, а свои линии адреса и данных отключит от шины (переведѐт в высокоимпедансное состояние).

Вывести процессор из состояния останова можно одним из трѐх вариантов внешнего воздействия:

подав активный уровень на вход RESET выполнение программы адреса 0;

подав активный уровень на вход HOLD переход в состояние захвата, а после снятия сигнала захвата – возврат в состояние останова;

подав активный уровень на вход INT при условии предварительно установленного разрешения прерывания процессор начнѐт машинный цикл прерывания при останове.

Типовые машинные циклы

В первом такте каждого машинного цикла процессор выводит слово состояние PSW (Processor Status Word). Это слово содержит характеристики начавшегося машинного цикла. Его биты будут интерпретированы системным контроллером и преобразованы в сигналы управления обменом в данном машинном цикле. Процессор 8080 может формировать только десять комбинаций битов слова состояния в соответствии с десятью типами возможных машинных циклов. Формат слова состояния процессора представлен в табл. 2.3, а типовые машинные циклы – в табл. 2.4.

35

Таблица 2.3

 

 

Формат слова состояния PSW

№ бита

Обозн.

Назначение

0

INTA

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

1

W / O

Запись в память или вывод в регистр интерфейса

 

 

2

STACK

Обращение к стеку

3

HLTA

Подтверждение останова

4

OUT

Вывод в порт (регистр интерфейса)

5

M1

М1 – прием из памяти первого байта команды

6

INP

Ввод из порта (регистра интерфейса)

7

MEMR

Чтение из памяти

Таблица 2.4 Типы машинных циклов значения слова состояния PSW процессора 8080

 

 

 

 

7

 

6

 

5

 

4

 

3

 

2

 

1

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

MEMR

 

INP

 

M1

 

OUT

 

HLTA

 

STACK

 

 

 

 

INTA

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Тип

 

 

 

 

 

 

 

 

W / O

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Выбор команды

 

 

1

 

0

 

1

 

0

 

0

 

0

 

1

 

0

 

 

Чтение памяти

 

 

1

 

0

 

0

 

0

 

0

 

0

 

1

 

0

 

 

Запись в память

 

 

0

 

0

 

0

 

0

 

0

 

0

 

0

 

0

 

 

Чтение стека

 

 

1

 

0

 

0

 

0

 

0

 

1

 

1

 

0

 

 

Запись в стек

 

 

0

 

0

 

0

 

0

 

0

 

1

 

0

 

0

 

 

Ввод из порта

 

 

0

 

1

 

0

 

0

 

0

 

0

 

1

 

0

 

 

Вывод в порт

 

 

0

 

0

 

0

 

1

 

0

 

0

 

0

 

0

 

 

Прерывание

 

 

0

 

0

 

1

 

0

 

0

 

0

 

1

 

1

 

 

Останов

 

 

1

 

0

 

0

 

0

 

1

 

0

 

1

 

0

 

 

Прер-е из ост-ва

 

 

0

 

0

 

1

 

0

 

1

 

0

 

1

 

1

 

Рассмотрим далее типовые машинные по их временным диаграммам.

M1 – приѐм первого байта команды

Сэтого машинного цикла начинается интерпретация каждой команды.

Впервом такте цикла М1 (рис. 2.13) процессор формирует:

адрес на линиях адреса, извлеченный из счѐтчика команд; байт состояния PSW на линиях данных – А2H.

С начала второго такта процессор формирует сигнал SYNC для стробирования приема байта состояния PSW в системный контроллер. Затем, по фронту CLK2, процессор выдает сигнал DBIN. А системный контроллер, де-

шифрировав байт PSW, установит активный уровень сигнала MRD (строб чтение памяти). Этот сигнал инициирует адресованную ячейку к выдаче на линии данных своего содержимого. Интервал времени между моментом по-

явления MRD и установкой данных чтения зависит от быстродействия памяти. С помощью соответствующей логики формирования сигнала READY,

 

 

36

 

 

можно обеспечить снятие сигнала READY на период указанного временного

интервала (подстроится под медленнодействующую память). Снятие сигнала

READY приводит к переводу процессора в состояние ожидания.

T1

T2

Такты ожидания (Tw)

T3

T4

CLK1

 

 

 

 

CLK2

 

 

 

 

Неопределѐнное состояние

Неопределѐнное состояние

A0..15

Адрес команды из программного счѐтчика PC

 

D0..7

PSW=A2h

 

Команда

 

SYNC

 

Память подключила

Процессор принял

 

ячейку на шину

команду в IR и снял DBIN

 

 

 

 

выставила байт

 

 

DBIN

Приѐм байта

Дешифрация PSW

 

PSW

 

 

Обращение к

MRD

 

памяти программ

 

 

READY

 

 

 

Память снимает

Память отключила

 

ячейку от шины

WAIT

READY до

 

 

установки байта

 

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

Рис. 2.13. Временные диаграммы сигналов машинного цикла M1.

Если быстродействие памяти ниже быстродействия процессора, то после второго такта, будут выполнятся такты ожидания до восстановления READY. Если быстродействие памяти не ниже чем у процессора, то без ожидания сразу после второго такта последует третий.

Третий такт начинается когда читаемые данные установлены и сигнал READY равен 1. В этом такте процессор примет данные с линии D0..7 и отправит их в регистр команд. Затем снимет свой сигнал DBIN со входа сис-

37

темного контроллера, а последний в ответ снимет свой сигнал MRD с линии управления шины.

В четвѐртом такте процессор снимает адрес команды с шины адреса. Еѐ состояние становится неопределѐнным.

Чтение памяти

В этом машинном цикле процессор выполняет чтение из памяти байта, не являющегося первым байтом команды, т. е. этот байт может быть:

вторым или третьим байтом команды (например, при чтении команд

LXI B,0150h; STA 0B00h и т. п.);

байтом данных, читаемым при выполнении команды (например, ко-

манда LDAX D).

Временные диаграммы этого машинного цикла представлены на рис. 2.14 для случая с быстродействующей памятью, когда такты ожидания неактуальны. Эти диаграммы отличаются от представленных для цикла M1 отсутствием четвѐртого такта и неопределѐнного состояния шины адреса. Следующим тактом после третьего адрес сразу обновляется адресом актуальным в новом машинном цикле, поскольку это и есть начало нового машинного цикла.

Чтение стека

В этом машинном цикле процессор выполняет чтение памяти, адрес которой содержится в регистре SP. Временные диаграммы не отличаются от тех, что в рассмотренном выше машинном цикле чтения памяти (рис. 2.14).

Считанный из стека байт процессор помещает, в зависимости от выполняемой команды:

врабочий регистр (команды POP B; POP D и т. п.);

врегистр АЛУ (команда POP PSW);

впрограммный счѐтчик (команда RET).

 

 

 

38

 

 

 

 

 

Начало следующего

 

 

 

 

машинного цикла

 

T1

T2

T3

T1

CLK1

 

 

 

 

CLK2

 

 

 

 

 

 

 

 

Адрес следующего байта

A0..15

 

Адрес ячейки памяти

 

D0..7

PSW = 82h

 

Байт из ячейки

PSW

 

 

 

Память подключила ячейку к

SYNC

Приѐм PSW

 

шине и выставила байт

DBIN

Дешифрация PSW

 

 

Процессор принял

 

 

байт и снял DBIN

 

 

 

 

 

 

 

MRD

 

 

 

 

 

 

 

 

Память отключила

 

 

Обращение к памяти

ячейку от шины

Рис. 2.14. Временные диаграммы сигналов машинного цикла чтения памяти.

Ввод из порта интерфейса внешнего устройства

Этим машинным циклом процессор выполняет команду IN Port – ввод байта данных из регистра интерфейса (порта Port) внешнего устройства в аккумулятор. По формату IN Port – двухбайтная команда. Port в составе команды – второй еѐ байт, который является адресом регистра интерфейса. Вспомним, что адреса регистров интерфейсов – однобайтные, в отличие от адресов памяти.

Временные диаграммы данного машинного цикла приведены на рис. 2.15. Однобайтный адрес порта, выставляемый в первом такте на линии адреса будет дублироваться как в старшие 8 разрядов адресной шины (A8..15) так и в младшие 8 разрядов (A0..7). Поэтому логика дешифрации адреса может быть построена, на выбор разработчика, либо на старшей, либо на младшей частях адресной шины. Ввод из порта аналогичен чтению из памяти. От-

личие состоит в том, что в при вводе из порта вместо сигнала MRD, системный контроллер сформирует для стробирования ввода сигнал IORD .

 

 

 

39

 

 

 

 

 

Начало следующего

 

 

 

 

машинного цикла

 

T1

T2

T3

T1

CLK1

 

 

 

 

CLK2

 

 

 

 

Адрес 2-го байта команды IN port

 

 

Адрес следующей команды

A0..7

Адрес порта, взятый из принятой команды

 

(A8..15)

 

 

 

 

 

D0..7

PSW = 42h

 

Байт из порта

PSW = A2h

 

 

 

Интерфейс подключил регистр

SYNC

Приѐм PSW

 

на шину выставил байт

DBIN

Дешифрация PSW

 

 

Процессор принял байт в A

 

 

и снял DBIN

 

 

 

 

 

 

 

IORD

 

 

 

 

 

 

Обращение к регистрам

Интерфейс отключил

 

 

регистр от шины

 

 

 

интерфейсов

 

 

 

 

Рис. 2. 15. Временные диаграммы сигналов машинного цикла ввод из порта.

Запись в память

Процессор записывает байт данных в ячейку памяти при выполнении команд, предписывающих ему это действие. Например, STA 0B00h; STAX B, SHLD 0B00h и т. п. Отличаются команды лишь способом адресации записываемого байта. Он может быть прямым, либо косвенно-регистровым.

Временные диаграммы машинного цикла запись в память представлены на рис. 2.16.

В первом такте процессор формирует:

Адрес на линии адреса. Этот адрес, в зависимости от метода адресации, извлекается или из регистровой пары (например, команда STAX B), или из байтов принятой команды (например, STA 0B00h).

Байт состояния PSW – 00h.

С начала второго такта вырабатывается сигнал SYNC, стробирующий приѐм байта состояния в системный контроллер. По фронту CLK2 процессор снимает с шины данных байт PSW, а вместо него устанавливает записываемый байт.

 

 

 

40

 

С началом третьего такта процессор формирует сигнал WR для своего

системного контроллера. А последний в ответ дешифрирует PSW и выраба-

тывает сигнал MWR . Этот сигнал инициирует память на приѐм байта с линий

данных в ячейку, адрес которой установлен на линиях адреса. По завершении

такта процессор снимает сигнал WR , системный контроллер убирает MWR и

ячейка памяти отключается от шины. Байт был записан.

 

 

 

 

 

Начало следующего

 

 

 

 

машинного цикла

 

T1

T2

T3

T1

CLK1

 

 

 

 

CLK2

 

 

 

 

 

 

 

Адрес следующего байта

A0..15

 

Адрес ячейки памяти

 

D0..7

 

PSW = 00h

Записываемый в ячейку байт

PSW

 

 

 

Память подключила ячейку

SYNC

Приѐм PSW

 

к шине и приняла байт

WR

Процессор выставил байт на шину

 

 

 

 

Процессор убрал

 

 

 

 

 

 

 

 

строб записи

MWR

 

Дешифрация PSW

 

 

 

 

Обращение к памяти

Память отключила

 

 

 

ячейку от шины

 

 

 

 

Рис. 2.16. Временные диаграммы машинного цикла запись в память.

Запись в стек

В этом машинном цикле процессор выполняет запись в память, адрес которой содержится в регистре SP. Временные диаграммы не отличаются от тех, что в рассмотренном выше машинном цикле запись в память ( рис. 2.16).

Исходный записываемый байт извлекается процессором, в зависимости от выполняемой команды:

из рабочего регистра(команды PUSH B; PUSH D и т.п.); из регистра АЛУ (команда PUSH PSW);

из программного счѐтчика (команды вызова подпрограмм CALL 0890; RST 1).