ЛР3. Ознакомление с командами и интерфейсом макета МП-589. Выполнение тестовых задач (1065587), страница 5
Текст из файла (страница 5)
Программа RD аналогична предыдущей, но отличается тем, что содержимое RA уменьшается на единицу (рис. 9.13, г).
Программа WI предназначена для загрузки ячейки ОЗУ с клавиатуры по адресу, установленному в RA, с последующим наращиванием адреса (рис. 9.13, д).
Программы циклического и пошагового исполнения рабочих программ (см. рис. 9.10) начинаются с установки триггера s устройства управления в “1” при циклическом исполнении и в “0” — при пошаговом.
Затем в рабочие регистры процессора переписывается информация из специальной области ОЗУ (рис. 9.14), которая была занесена туда из регистров после выполнения последней команды перед остановом. Таким образом восстанавливается состояние регистров. Эта операция необходима, так как системны" программы операционной системы используют те же регистры ЦПЭ, что и рабочая программа. Затем выполняется очередная команда, номер которой определяется содержимым программного счетчика PC (R8). После этого анализируется состояние триггера s, При единичном коде триггера s последовательно, исполняются всё команды программы, при нулевом коде после каждой команды происходит останов рабочей программы и информация из регистров ЦПЭ переписывается в ОЗУ для хранения, а системные команды операционной системы могут использовать регистры процессора. При выполнении очередной команды управление передается программе анализа сигналов клавиатуры. Для выполнения следующего шага рабочей программы необходимо нажать кнопку RS, после чего повторится описанная процедура.
Микропрограммирование. Выполнение программ в микроЭВМ с микропрограммным управлением может осуществляться либо в соответствии с последовательностью микрокоманд, записанной в ПЗУ в виде рабочей программы, либо в соответствии с последовательностью команд, записанных в виде рабочей программы в ОЗУ. Во втором случае в ПЗУ содержатся микрокоманды, обеспечивающие выполнение системы команд. Каждая команда имеет начальный адрес первой микрокоманды. Заканчиваются команды микрокомандами обращения к операционной системе.
М
икропрограммная реализация команд на ПЗУ позволяет изменять систему команд простой заменой ПЗУ с записанной новой системой команд без изменения остальных блоков микроЭВМ. Для каждого конкретного случая применения микроЭВМ разработчик имеет возможность использовать свою систему команд, наиболее полно соответствующую решаемой задаче [З].
Рассмотрим некоторые команды, реализованные в исследуемом лабораторном стенде. Команда 0R6 обеспечивает обнуление регистра R6 ЦПЭ. Команда состоит из одной микрокоманды (табл. 9.5). Адрес команды 0R6 соответствует коду этой команды, т. е. старшие разряды адреса (А1 — А8)16, образуют шестнадцатеричный код BD16. При входе в команды младшему разряду адреса АО присваивается код “1”. Микроинструкция NA участвует в формировании адреса следующей микрокоманды и задает код адреса, .разрядов (А1—А8) следующей микрокоманды. Адрес А0 задается выходным сигналом мультиплексора MS. Рассматриваемая команда состоит из одной микрокоманды, поэтому должна завершаться обращением к системной программе. Согласно рис. 9.10, выполнение любой команды завершается обращением к блоку системной . подпрограммы шаг/цикл, осуществляющему опрос режима работы микроЭВМ.
П ервая микрокоманда подпрограммы опроса режима работы шаг/цикл записана в данной операционной системе по адресу ПЗУ 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.