АрхЭВМ_Лаб.раб2007_Часть2_Раб2_589 (1075204), страница 5
Текст из файла (страница 5)
П ервая микрокоманда подпрограммы опроса режима работы шаг/цикл записана в данной операционной системе по адресу ПЗУ IE1602(0001.1110)2.
Таблица 9.5
Микроинструкция NA формирует разряды А1 — А8 указанного адреса и в шестнадцатеричной системе счисления может быть записана как IE. Мультиплексор MS при управляющем коде СN=0002 формирует на выходе код логического нуля, соответствующего адресу А0. В данной команде не устанавливается режим исполнения программы (пошаговый или циклический), поэтому управляющему сигналу WS присваивается уровень логического нуля.
Микроинструкция F задает код выполняемой микрооперации для ЦПЭ. В данной команде используется инструкция CLRn ЦПЭ, по которой обнуляется регистр, номер которого указан в микрокоманде. Инструкция CLRn относится к 4-й F-группе (см. табл. 9.2), а регистр R6 кодируется 6-й R-группой. Поэтому микроинструкция представлена в микрокоманде кодом 48616, где первая цифра определяет код F-группы, записанный в восьмеричной системе счисления, а вторая цифра определяет код R-группы г шестнадцатеричной системе счисления. В ПЗУ микроинструкция записывается в двоичной системе счисления. В данной микрокоманде микроинструкция 48616 в двоичной системе счисления имеет вид 100 01102.
Микроинструкция СЕ задает режим возможного обращения к ОЗУ. В рассматриваемой микроЭВМ ОЗУ построено на микросхемах К561РУ2, для которых сигнал СЕ должен принимать нулевое значение в момент изменения кода адреса на входе ОЗУ. При нулевом сигнале СЕ выходные каскады ОЗУ устанавливаются в третье состояние.
В данной микрокоманде ОЗУ не используется, поэтому принято значение СЕ=0.
Микроинструкция С1, 2, состоящая из двух разрядов, формирует сигнал CI для ЦПЭ. В данной микрокоманде сигнал CI определяет сигнал СО (см. табл. 9.2), который в выполняемой команде не используется, поэтому микроинструкция C1, 2 может принимать произвольное значение. В данной микрокоманде принято C1, 2=112.
Микроинструкция RV, RK определяет блок, формирующий адрес следующей микрокоманды. Нулевой уровень сигнала RV (RK) устанавливает в активное состояние выходы БПП (RGK) соответственно. При единичных значениях сигналов RV и RK выходы БПП и RGK устанавливаются в третье состояние, при котором адрес следующей микрокоманды задается микроинструкцией NA исполняемой микрокоманды. В рассматриваемой команде адрес следующей микрокоманды задается микроинструкцией NA, поэтому микроинструкция RV, RK имеет значение 112.
Микроинструкция IOR, SR состоит из двух разрядов и используется для управления внешними устройствами, которые могут быть подключены к микроЭВМ. В лабораторном стенде в качестве внешнего устройства применяется схема управления звуковой сигнализацией. В данной команде внешние устройства не нужны, поэтому микроинструкция IOR, SR принимает значение 112.
Микроинструкция R/W задает режим работы ОЗУ чтение/запись. При R/W=1 ОЗУ работает в режиме записи, при R/W==0—в режиме считывания. В рассматриваемой команде ОЗУ не используется, поэтому микроинструкция R/W может принимать значение, при котором не меняется содержимое ОЗУ, т. е. R/W=0.
Микроинструкция INE (строб разрешения прерывания) используется для опроса БПП. При наличии запроса прерывания БПП формирует сигнал IA в моменты прихода управляющего сигнала INE. Поэтому микроинструкция INE=1 применяется только в подпрограммах опроса БПП и в рассматриваемой микрокоманде INE=0.
Микроинструкция К необходима для выбора типа выполняемой в ЦПЭ функции (арифметической или логической), маскирования исходных данных и формирования констант (см. табл. 9.2). Для выполнения инструкции CLR в ЦПЭ на всех разрядах ЦПЭ формируется код Ki=0. Так как по входам К ЦПЭ имеют активный инверсный (нулевой) уровень сигнала, необходимо в данной микроинструкции сформировать уровни логических единиц: K=F16=11112. При этом старший разряд К формирует. входной сигнал в 8-м разряде ЦПЭ, третий разряд К формирует сигнал в 7, 6 и 5-м разрядах ЦПЭ, второй разряд К—в 4, 3 и 2-м разрядах ЦПЭ и первый разряд К — в 1-м разряде ЦПЭ.
В качестве второго примера рассмотрим команду безусловного перехода GO TO. Команда состоит из двух байтов, в первом записан код команды, во втором — адрес n команды в ОЗУ, которой передается управление.
Для выполнения команды GO TO необходимо осуществить .считывание из ОЗУ второго байта команды и занести его в регистр R8 ЦПЭ, выполняющий функции программного счетчика PC. Информация в регистры ЦПЭ записывается через промежуточную запись информации в АС, поэтому при исполнении команды GO TO необходимо информацию, находящуюся в АС, на время исполнения команды записать в служебный регистр Т, а после выполнения команды восстановить содержимое АС.
Код команды определяет адрес первой микрокоманды, .следовательно, в соответствии с табл. 9.5 первую микрокоманду следует написать по адресу ОА1612 ПЗУ. В команде не используется установка режима исполнения программы (шаг/цикл), поэтому во всех микрокомандах принимается WS=0.
В микрокоманде I содержимое АС переписывается в служебный регистр Т. Для выполнения этой процедуры используется микроинструкция ЦПЭ SDA, относящаяся ко 2-й F-группе и к A16-й R-группе. В соответствии с выполняемой операцией микроинструкции F первой микрокоманды присваивается код 28A16.
В соответствии с табл. 9.2 по микроинструкции SDA выполняется процедура АС-1+ciat. Для того чтобы содержимое АС при переписывании не изменилось, необходимо входной переменной CI присвоить значение 1. В ЦПЭ это значение С1 соответствует нулевому логическому уровню сигнала, поэтому микроинструкция С1,2 выбирается такой, чтобы, обеспечить С1, равное логическому нулю. Микроинструкции присвоено значение С1,2==002.
Для выполнения микрооперации SDA необходимо по всем разрядам магистрали К сформировать единичный уровень сигнала. С учетом инверсного характера управления по магистрали К микроинструкции К присваивается значение K=016.
Во всех микрокомандах рассматриваемой команды адрес следующей микрокоманды формируется кодом NA и блоки БПП и RGK в формировании адресов не участвуют. В связи с этим микроинструкциям RV, RK, СРП присвоены значения RV, RK==ll2, INE=0. Внешние устройства в данной команде не используются, поэтому микроинструкция IOR=0 и SR=0.
В микрокоманде 1 информация ОЗУ не используется, поэтому принята микроинструкция СЕ=1, открывающая доступ к ОЗУ, а микроинструкция R/W=0 устанавливает режим считывания информации.
Адрес следующей микрокоманды формируется микроинструкциями NA и CN. В связи со значением NA=0016 разряды А1 — А8 следующей микрокоманды равны т. е. коду СN=0012 соответствует логическая единица на выходе MS.
Микрокоманда 2 формирует на адресной шине ОЗУ адрес второго байта команды GO TO, по которому записан адрес команды перехода.
Для этого применяется инструкция LMI, по которой выполняется процедура RnRA; Rn+CIRn. Для выполнения инструкции LMI необходимо во всех разрядах ЦПЭ сформировать значение К = 0. В качестве регистра Rn стоит программный счетчик PC(R8), в котором к моменту выполнения микрокоманды 2 содержится увеличенный на единицу адрес выполняемой команды в ОЗУ, совпадающий с адресом второго байта команды GO TO. Заметим, что в этой же микрокоманде осуществляется увеличение на единицу содержимого PC(R8), в результате чего формируется адрес следующей команды при естественном порядке следования команд. Для увеличения содержимого PC переменной CI присваивается единица микроинструкцией С1,2 =(11)2. Таким образом, инструкция LMI микрокоманды 2 будет выполнена при значениях микроинструкций F = (1,8)16; C1,2 = (11)2; K=(F)16.
Микроинструкции NA и CN задают адрес микрокоманды 3, в которой адреса А1 — А8 = (Ol)16; А0 = 0. После формирования адреса ОЗУ необходимо осуществить запись его содержимого в АС. Для выполнения этой процедуры следует учесть время формирования выходного сигнала ОЗУ. Для микросхем К561РУ2, на которых построено ОЗУ, время формирования выходного сигнала при считывании tз/сч<1,2 мкс для Uип = 5 В. Следовательно, считывание выходной информации можно осуществлять через время t > tз/сч после формирования сигнала СЕ = 1. Учитывая, что каждая микрокоманда выполняется за один период задающего генератора, в данной команде организованы “холостые” микрокоманды 3 и 4 для формирования задержки считывания сигнала из ОЗУ. Микрокоманда 5 записывает выходной код ОЗУ в АС. Для этого используется инструкция LCM ЦПЭ, по которой выполняется процедура МАС. Для этой процедуры задаются следующие значения микроинструкций: F=(7B)16; С1,2=(11)2, К=(F)16. Микроинструкции СЕ и R/W в микрокомандах 3, 4 и 5 соответствуют режиму считывания ОЗУ, так как СЕ = (1)2; R/W = 0.
В микрокоманде 6 содержимое АС переписывается в PC(R8). Для этого нужна инструкция SDR ЦПЭ, в соответствии с которой выполняется процедура AC—1+СIRn. Для того, чтобы не изменить содержимое АС, необходимо переменной CI присвоить значение CI = 1, что выполняется при С1,2=(00)2 (аналогично микроинструкции С 1,2 микрокоманды I). Инструкция SDR будет выполняться при следующих значениях микроинструкций: F = = (2)8(8)16; K=(0)16; С1,2==(00)2. ОЗУ в микрокоманде 6 не участвует, поэтому микроинструкции СЕ и R/W принимают значения, соответствующие режиму считывания.
Микрокоманда 7 восстанавливает содержимое. АС, которое на время выполнения команды было переписано в регистр Т. Микрокоманда 7 аналогична микрокоманде 2 и реализуется с помощью микроинструкций F=(0)8, (C)16; K== (F)16; C1,2=(11)2. Микроинструкция NA микрокоманды 7 совпадает с аналогичной микроинструкцией последних микрокоманд во всех командах: NA= (lE)16 — и адресует управление к системной программе опроса режима работы микроЭВМ.
Адрес следующей команды будет определяться кодом PC(R8), в который была записана новая информация в результате выполненной команды GO TO.
Рассмотрим трехбайтную команду условного перехода TZR2. Команда позволяет делать переход к команде, указанной во втором байте, если содержимое регистра R2=0. Если условие не соблюдается, то осуществляется переход к команде, адрес которой указан в третьем байте команды.
В микрокоманде 1 используется инструкция TZR2 ЦПЭ, по ней проверяют содержимое регистра R2 и формируют сигнал СО = CI Rn, который при R2 = 0 принимает значение С0 = 0, а при R20 — значение СО = 1. Для выполнения инструкции TZR2 в микрокоманде приняты следующие значения микроинструкций: F=(52)16; С1,2 =(11)2; K=(0)16.
Значение сигнала С0 используется в микрокоманде 1 для формирования условного перехода. Для этого микроинструкция CN = (011)2 формирует код, при котором выходной сигнал мультиплексора MS будет определяться сигналом СО, следовательно, сигнал СО определяет значение адреса АО следующей микрокоманды. Разряды А1—А8 следующей микрокоманды определяются кодом NA=(A1)16.
В зависимости от значения СО после микрокоманды 1 будет исполняться либо 2-я (при С0=0), либо 3-я микрокоманда (при С0=1).
В микрокоманде 2 применяется “холостая” инструкция NOP, по которой содержимое регистра переписывается без изменения в свой же регистр. Операция NOP выполняется при F = (6)8(C)16; К = (F)16. В регистре PC(R8) сохраняется адрес следующего за исполняемой командой кода.
В микрокоманде 3 содержимое счетчика команд увеличивается на единицу с помощью операции INR ЦПЭ, по которой содержимое Rn при С1 = 1 увеличивается на единицу: Rn+CIRn. Увеличение R8 на единицу выполняется при следующих значениях микроинструкций: F == (3)7(8)16; С1,2==(00)2; К = (F)16.
Микроинструкции NA и CN в микрокомандах 2 и 3 совпадают и определяют адрес команды GO TO; NA=(0A)16; CN= (001)2. Таким образом, в команде TZR2 используется как составная часть команда GO TO, а рассмотренные три команды подготавливают, исходя из результатов сравнения, значение кода программного счетчика PC перед входом в программу GO TO.
Рассмотрим команды, обеспечивающие обращение к стековой памяти CALL и RETURN. При выполнении команды CALL необходимо уменьшить на единицу содержимое указателя стека SP(R9) и по адресу, определяемому содержимым регистра R9, записать увеличенное на единицу содержимое PC(R8). Первая микрокоманда обеспечивает запись содержимого АС в регистр Т аналогично микрокоманде 1 команды GO TO.