Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции / Приложения / AppIntel8080.doc
Скачиваний:
59
Добавлен:
20.06.2014
Размер:
441.86 Кб
Скачать

Формат байта состояния и типы машинного цикла процессора i8080

Разрядам байта состояния, выдаваемого по линиям данных в первом такте каждого машинного цикла, соответствуют следующие сигналы:

D7 — MR, Memory Read — чтение памяти;

D6 — INP, Input — ввод;

D5 — M1 — цикл М1, прием первого байта команды;

D4 — OUT, Output — вывод;

D3 — HLTA, Halt Available — подтверждение останова;

D2 — STACK — стек;

D1 — WO#, Write-Output — запись-вывод;

D0 — INTA, Interrupt Available — подтверждение прерывания.

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

Таблица 1. Соответствие типов машинного цикла

конкретным значениям байта состояния

Тип машинного

цикла

Байт состояния

D7

MR

D6

INP

D5

M1

D4

OUT

D3 HLTA

D2

STACK

D1

WO#

D0

INTA

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

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

Здесь можно отметить, что ограничение на количество выводов корпуса процессора является весьма существенным. Поэтому имеет место своеобразное уплотнение сигналов — одному выводу может соответствовать более одного сигнала. В процессоре i8080 таким примером являются выводы данных. В процессоре i8085 — мультиплексированная шина адреса-данных, а для сигналов состояния сделаны отдельные выводы.

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

Например, чаще всего стек занимает часть основной оперативной памяти системы. Однако можно под стек выделить отдельное физическое оперативное запоминающее устройство, сигналы обращения к которому можно формировать, объединяя сигнал STACK байта состояния с сигналами RC и TR# в соответствии с логическими функциями:

.

,

где

— сигнал чтения микросхемы памяти стека;

— сигнал записи микросхемы памяти стека.

Назначение выводов процессора i8085

С программно-функциональной точки зрения процессоры i8080 и i8085 очень похожи. Однако по множеству выводов они различаются более существенно. Сравнение их по этому признаку дает очень интересную и важную информацию.

Процессор i8085 также был выпущен в корпусе DIP-40 (рис.).

Рис. Выводы процессора i8085

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

  • шина данных объединена с младшей половиной адресной шины. Для того чтобы информировать окружение о типе информации, находящейся в данный момент на этой шине, введен выходной сигнал ALE (STB), разрешение захвата адреса;

  • сделаны отдельные выводы для сигналов состояния, определяющих тип машинного цикла (IO/M# (ввод-вывод, память), S1, S0):

001 — запись;

010 — чтение;

101 — вывод;

110 — ввод;

011 — чтение КОП;

111 — подтверждение запроса на прерывание;

200 — останов;

2XX — ожидание;

2XX — сброс;

прим. 2 — третье состояние, X — любое значение.

  • сделаны выводы для ввода-вывода последовательных данных: вход SID и выход SOD;

  • добавлены четыре входа запросов прерывания: TRAP (запрос немаскированного прерывания), RST7.5, RST6.5, RST5.5 (приведены по порядку убывания приоритета). В отличие от входа INTR, запросы, принимаемые по этим входам, не требуют приема процессором команды вызова подпрограммы по шине данных. Вызов подпрограммы происходит по фиксированным адресам: 24H, 3CH, 34H, 2CH соответственно;

  • сделан отдельный вывод подтверждения запроса прерывания INTA#;

  • введен выходной сигнал RESET OUT, информирующий окружение об окончании сброса процессора;

  • из выводов питания остались только два: Vcc (+5В) и Vss (земля);

  • убраны выходы подтверждения состояния ожидания WI и разрешения прерывания INTE.

ФУНКЦИОНИРОВАНИЕ ПРОЦЕССОРА i8080

Последовательность действий процессора при выполнении программы

Цикл "извлечь — выполнить"

Процессор в течение своего функционирования постоянно выполняет следующий цикл: чтение команды, ее дешифрацию и выполнение. Об этом цикле известный программист, один из создателей АЛГОЛа Алан Перлис (Alan Perlis, 1922-1990) говорил: "Иногда я думаю, что единственным универсальным понятием в компьютерной области является цикл "извлечь — выполнить" (fetch-execute cycle)".

Источники команд в ЭВМ

Команды программы в соответствии с принципами архитектуры фон Неймана процессор читает из памяти команд. Однако из этого правила могут быть исключения. Например, процессор i8080 при обработке аппаратного прерывания для перехода к подпрограмме обработчика обязательно должен прочитать и выполнить команду вызова подпрограммы CALL или RST. В памяти команд ее быть не может, потому что аппаратное прерывание — асинхронное событие. Поэтому на шину данных для последующего чтения ее процессором команду вызова подпрограммы должны выставить контроллер прерываний или сформировать аппаратная логика.

Интерпретация информации, принимаемой процессором

Процессор, принимая информацию по шине данных, интерпретирует ее определенным образом. Варианты здесь следующие:

  1. Код операции команды.

  2. Операнд.

  3. Адрес операнда (ячейки памяти, порта ввода-вывода).

Последовательность выполнения команды непосредственной передачи данных

Рассмотрим сказанное на примере команды непосредственной передачи данных в аккумулятор процессора i8080 MVI A, data. Последовательность выполнения команды MVI A, data процессором такова:

  1. Байт состояния цикла M1 выдается на шину данных. Адрес первого байта команды (Аddr) — кода операции (Opcode) — передается из счетчика команд — регистра IP (PC) — через буфер адреса (ABuf) на шину адреса (ABus):

.

  1. Дешифратор адреса (DC) декодирует адрес (старшую часть адресных линий) — на определенном выходе дешифратора (O, Output) появляется 0, который подается на вход CS# микросхемы памяти (MEM, Memory):

.

  1. Активизируется выход RC процессора (CPU), активный уровень сигнала RC подается на вход R/W# микросхемы памяти:

.

  1. Счетчик команд инкрементируется: [IP]=[IP]+1 (Addr++) — теперь в IP содержится значение Addr+1.

  2. Память из ячейки с указанным адресом Addr выдает КОП команды (Opcode) на шину данных (DBus):

.

  1. КОП с шины данных через буфер данных и внутреннюю шину поступает в регистр команд (IR):

.

  1. КОП, находящийся в регистре команд, декодируется дешифратором команд.

  2. Байт состояния цикла чтения памяти выдается на шину данных. Адрес второго байта команды (Аddr+1) — непосредственных данных (data) — передается из счетчика команд через буфер адреса на шину адреса:

  1. Дешифратор адреса декодирует адрес (старшую часть адресных линий) — на определенном выходе дешифратора (O, Output) появляется 0, который подается на вход CS# микросхемы памяти (MEM, Memory):

.

  1. Активизируется выход RC процессора (CPU), активный уровень сигнала RC подается на вход R/W# микросхемы памяти:

.

  1. Счетчик команд инкрементируется: [IP]=[IP]+1 (Addr++) — теперь в IP содержится значение Addr+2.

  2. Память из ячейки с адресом Addr+1 выдает непосредственные данные (data) на шину данных (DBus):

.

  1. Непосредственные данные с шины данных через буфер данных и внутреннюю шину поступают в аккумулятор (A):

Временная диаграмма выполнения команды MVI r, data

Во времени последовательность действий процессора при выполнении команд иллюстрируют временные диаграммы. На рис. приведена временная диаграмма выполнения команды MVI r, data.

Рис. Временная диаграмма выполнения команды MVI r, data

Машинный такт, машинный цикл, цикл команды

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

Временной интервал выполнения команды называется циклом команды. Цикл команды состоит из машинных циклов, а машинных цикл из тактов. Цикл команды процессора i8080 может содержать от одного до пяти машинных циклов, а машинный цикл — от трех до пяти машинных тактов.

Команда MVI r, data выполняется за два машинных цикла или семь машинных тактов. Коротко это записывается так — 2-7.

Машинный такт — это наименьший временной интервал системы, один период тактовой частоты.

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

У процессора i8080 машинные циклы, относящиеся к одной команде, следуют друг за другом и соответствуют действиям, выполняемым АЛУ, устройством управления и другими внутренними элементами процессора.

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

С появлением кэша и конвейера независимость исполнительной части от интерфейсной еще более увеличилась. Последовательность действий процессора по обмену информацией со своим окружением стала называться транзакцией.

Последовательность действий процессора i8080 в пределах машинного цикла

Вначале каждого машинного цикла процессор вырабатывает сигнал синхронизации, который выдается через выход SYN. В такте T1 процессор выдает на шину адреса адрес ячейки памяти (порта ввода-вывода), к которой производится обращение. Источником адреса могут быть регистры PC, HL, SP, BC, DE, WZ. В этом же такте на шину данных выдается байт состояния, который может быть защелкнут во внешнем регистре по сигналу SYN. В такте T2 анализируется состояние сигнала на входе RDY и сигнала подтверждения останова. В зависимости от состояния этих сигналов МП переходит в состояние ожидания, останова или к выполнению такта Т3. В такте Т3 процессор принимает (передает) информацию по шине данных, анализирует состояние сигнала на входе HLD и если этот сигнал в состоянии высокого уровня, то по окончании такта Т3 процессор переходит в состояние захвата. В зависимости от кода операции выполняемой команды и типа машинный цикл завершается после выполнения такта Т3, Т4 или Т5. В цикле M1 в такте Т3 с приходом С1 КОП с шины данных поступает в регистр команд, в Т4 процессор дешифрует КОП, определяет местоположение операндов и соответственно необходимость для выполнения команды дополнительных циклов. Если операнды расположены во внутренних регистрах процессора, то команда выполняется в такте Т4 или тактах Т4 и Т5. В конце машинного цикла снова анализируется состояние сигнала на входе HLD. При низком уровне сигнала проверяется, окончено ли выполнение команды. Если команда не закончена, то процессор выполняет следующий машинный цикл. Если команда окончена, то проверяется состояние сигнала на входе INT. Если сигнал на этом входе высокого уровня и прерывания разрешены, то процессор переходит к выполнению машинного цикла прерывания. Иначе выполняется первый машинный цикл новой команды.

При выполнении цикла прерывания процессор выдает на шину данных в такте Т1 байт состояния с активным сигналом в бите D0 (INTA), который используется контроллером прерываний для выдачи на шину данных команды вызова подпрограммы обслуживания прерывания.

Правила определения числа циклов и тактов в команде

Можно сформулировать следующие правила, касающиеся числа циклов и тактов в команде.

Правило 1. Количество циклов в команде определяется числом обращений к памяти или внешним устройствам по шине данных. Это число в свою очередь определяется логикой команды и зависит от способа адресации.

Из этого правила, как обычно, есть исключения. Для процессора i8080 это команда сложения с удвоенной точностью — DAD rp. Она выполняется за 3 цикла или 10 тактов.

Правило 2. Число циклов в команде не может быть меньше числа байтов в команде.

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

Правило 3 (только для процессора i8080). Первый машинный цикл команды (М1) выполняется за четыре такта, остальные дополнительные циклы — за три такта.

Исключения:

  1. Команды передачи данных MOV r, r — 1-5.

  2. Арифметические команды: INR r, INX rp, DCR r, DCX rp — 1-5.

  3. Команды передачи управления:

    1. CALL addr, Ccnd addr — 5-17, 3/5-11/17 (М1 — 5 тактов).

    2. Rcnd — 1/3-5/11 (М1 — 5 тактов).

    3. RST n — 3-11 (М1 — 5 тактов).

    4. PCHL — 1-5.

  4. Команды стека, ввода-вывода и машинного управления:

    1. PUSH rp — 3-11 (М1 — 5 тактов).

    2. XTHL — 5-18 (М5 — 5 тактов, в Т4 и Т5 содержимое WZ пересылается в HL).

    3. SPHL — 1-5.

Соседние файлы в папке Приложения