Рассмотрим временные диаграммы работы процессора при различных машинных циклах.
Цикл М1 является основным циклом с которого начинается выполнение любой команды, поэтому временные процессы для него рассмотрим более подробно. Анализ процессов будем проводить по каждому машинному такту Т (рисунок 5).
На такте Т1 программный счетчик МП выдает на ША адрес ячейки памяти, из которой будет считываться код команды. При этом схема приращения адреса МП автоматически увеличивает на единицу значение числа, записанного в программном счетчике. Положительным фронтом тактового импульса Ф2 формируется сигнал “Синхро” и выдается слово состояния на ШД. Сигнал “Прием”, управляющий двунаправленным шинным формирователем (ШФ) шины данных (рисунок 6), на этом такте равен нулю, что позволяет слову состояния поступить на ШД процессора.
На такте Т2 слово состояния записывается в регистр. Положительным фронтом Ф2 заканчивается сигнал “Синхро” и формируется единичный сигнал “Прием”, позволяющий данным поступить на вход МП через ШФ.
На такте Т2 из сигнала “Прием” и седьмого разряда слова состояния (Д7) формируется сигнал на чтение данных из памяти (Чт. памяти), позволяющий данным поступать из памяти на ШД (см. рисунок 5 ). На этом же такте анализируется состояние сигналов “Готов” и “Захват”. При нулевом сигнале на входе “З.Зх” и единичном сигнале на входе “Готов” МП переходит к выполнению такта Т3.
Если к моменту появления отрицательного фронта Ф2 на такте Т2 сигнал на входе “Готов” будет иметь нулевой потенциал, то МП на такте Т3 переходит в режим ожидания. В этом режиме приостанавливается процесс обработки данных и формируется единичный сигнал на выходе “Ожидание”, подтверждающий это состояние. Время ожидания выражается целым числом тактов и может длиться бесконечно долго. На каждом такте в этом режиме при отрицательном фронте Ф2
будет проверяться состояние сигнала на входе “Готов”.Изменения в диаграммах работы МП в режимах “Захват”, “Останов” и “Прерывание” будут рассмотрены отдельно.
На такте Т3 в момент отрицательного фронта сигнала Ф1 производится запись данных во внутренний регистр кода команды. Положительным фронтом Ф2 снимается сигнал “Прием” на выходе МП и, следовательно, сигнал “Чт. памяти”.
На последующих тактах Т4 и Т5 . дешифратор кода команды расшифровывает код команды, определяет количество байтов в команде, формирует команды на внутренние пересылки данных и подготавливает МП к выполнению следующих машинных циклов.
Отличие машинных циклов чтения данных из памяти или внешнего устройства будет заключаться лишь в том, что МП будет воспринимать числа, полученные на такте Т3 по ШД не как код команды, а как данные. При приеме данных из внешнего устройства на ШУ формируется сигнал чтение устройства ввода-вывода (Чт.ВУ) из сигнала “Прием” и разряда Д6 регистра состояния. Этот сигнал позволяет именно ВУ выдать информацию на ШД процессора.
Процесс записи данных в память иллюстрируется на схеме, показанной на рисунке 7.
На такте Т1 содержимое регистра адреса МП выдается на ША, а на ШД выдается слово состояния.
На такте Т2 на ШД выдаются данные для записи в память.
На такте Т3 формируется сигнал “Запись”, по которому будет проходить запись данных в память или ВУ.
На протяжении всего машинного цикла записи данных в память сигнал “Прием” находится на нулевом уровне, что позволяет двунаправленному шинному формирователю работать в режиме выдачи данных на ШД МП.
Процесс записи данных во внешнее устройство аналогичен записи данных в память. Единственное отличие этого процесса заключается в том, что вместо сигнала “Зп.память” формируется сигнал “Зп.в ВУ”, т.е. в первом случае выполнялась сборка по “И” для сигналов “Запись” с МП и “Память” с РгСС, а во втором - сборка по “И” для сигналов “Запись” и “Вывод”.
Режим “Захват” используется для приостановки процесса управления работой всех периферийных устройств. При работе в этом режиме выходные магистрали МП переводятся в третье состояние и отключаются от магистралей внешних устройств, обеспечивая тем самим возможность обмена информацией по каналу прямого доступа к памяти.
Режим “Захват” инициируется подачей лог.1 на вход управления МП “З.Зх”. Переход МП в этот режим подтверждается путем выдачи сигнала лог.1 на выходе МП “П.Зх”. Состояние “Захват” будет длиться целое число машинных тактов
.Снятие сигнала “Захват”, т.е. появление лог.0 на входе “З.Зх” проверяется на каждом сигнале Ф2 и при его обнаружении МП перейдет к выполнению очередного машинного цикла начиная с такта Т1.
Режим ОСТАНОВ является результатом выполнения команды HALT. Находясь в этом режиме, магистрали МП БИС не отключаются от магистралей микро-ЭВМ, а процессор просто отмечает время, в течение которого он ничего не выполняет. Состояние микро-ЭВМ в этом режиме аналогично состоянию ОЖИДАНИЕ, за исключением того, что это состояние устанавливается программно.
Обычно режим ОСТАНОВ оканчивается тогда, когда ВУ выдают запрос на обслуживание. Одним из методов формирования запроса на обслуживание является подача запроса прерывания на вход З.Пр процессора.
Если сигналы прерывания не воспринимаются процессором (например, после выполнения команды DI), то остается один выход из состояния ОСТАНОВ - подача сигнала начальной установки на вход R процессора.
Специфика режима ОСТАНОВ заключается в том, что в этом состоянии МП может входить в режим ЗАХВАТ и выходить из него. В режиме ОСТАНОВ запрос на ЗАХВАТ не будет удовлетворяться, если запрос на прерывание был уже подан на вход З.Пр., но не было еще подтверждено его обслуживание. После подтверждения получения прерывания (уровень “0” на выходе П.Пр) микро-ЭВМ может войти в состояние ЗАХВАТ.
Внешние устройства выдают сигнал запроса прерывания асинхронно по отношению к работе МП путем подачи уровня “1” на вход З.Пр. Запрос может быть удовлетворен только в том случае, если МП находится в состоянии разрешения восприятия запросов прерывания.
МП автоматически устанавливается в состояние запрета запросов прерывания после выполнения начальной установки,
а также после начала обслуживания запроса прерывания. Управление состоянием восприятия запросов прерывания может осуществляться программно с помощью команд: EI - “Разрешение прерываний” и DI - “Запрет прерываний”.
Состояние восприятия запросов прерывания МП указывает на своем выходе Р.Пр. Если на этом выходе присутствует уровень “1”, то запросы прерывания могут быть восприняты, в противном случае (уровень “0” на выоде Р.Пр) запросы восприниматься не будут. Если запрос на прерывание принят, то начинается цикл обслуживания прерывания.
Машинный цикл прерывания, который начинается в такте Т1 в условиях разрешенного прерывания, в основных чертах повторяет машинный цикл выборки команды. В течение времени, определяемого единичным значением сигнала синхронизацина ШД выставляется слово состояния “Разрешение прерывания”.
На такте Т2 слово состояния записывается в регистр состояний и формируется единичный сигнал “Прием”, позволяющий поступление на ШД кода прерывания. Имеется два способа задания кода прерывания: с помощью команды RST (N) или команды CALL (
A1), (A2).Отличие машинного цикла прерывания от машинного цикла извлечения кода команды из памяти состоит в том, что содержимое программного счетчика не увеличивается, а запоминается, чтобы оно могло быть восстановлено после окончания программы прерывания и возврата к прерванному процессу (программе).
В такте Т3 по шине данных начальная команда программы прерывания RST, подготовленная периферийным устройством, помещается в регистр команд МП.
Получив команду на первом машинном цикле, МП на циклах М2 и М3 записывает в область памяти, отведенной под стек, текущее значение программного счетчика РС. Сохранение содержимого РС в стеке необходимо для возврата к прерванной программе после окончания выполнения подпрограммы обслуживания прерывания. Возврат из подпрограммы осуществляется командой RET, которая загружает содержимое двух верхних ячеек стека в РС.
В течение всего времени, пока входе R установлен уровень “1”, все операции в МП будут приостановлены. За это время обнуляются программный счетчик, триггер разрешения прерывания и внутренняя логика, связанная с формированием сигнала П.Зх. Следовательно, первая выполняемая команда будет считываться по адресу 0000.
После начала выполнения программы прерывания остаются отключенными. Для восстановления возможности восприятия запросов прерывания в программу необходимо включить команду EI.