Структурная электрическая схема МПС (пояснения).
Рис. 2.5.3 Реализация микропроцессорной системы на БИС МПК К1804
УСА-устройство управления следующим адресом.
СУАМ-секция управления адресом микрокоманды.
Память МКПМ-память микрокоманды.
РгМК-регистр микрокоманд.
РгСС-регистр состояния.
Согласуем эту схему со схемой на рисунке 2.2
Структура учебной МПС детализирована до микропроцессорных БИС комплекта К1804 на рис. 2.5.3.
1) БМУ состоит из двух БИС – УСА и СУАМ. УСА, устройство управления следующим адресом, выполняет предварительную функцию, его марка К1804ВУЗ. УСА выполнено в виде ПЗУ на 32 слова по 8 разрядов в слове.
а) УСА получает на вход 5-разрядный адрес А4А3А2А1А0 и выдает слово Q0 … Q7. Адрес составляется из поля Р текущей МК и выбранного флага Ф: А4А3А2А1А0 = Р3Р2Р1Р0Ф. ПЗУ имеет выходной буфер.
2) Слово Q0 … Q7 и поле BR МК управляют секцией СУАМ (секция управления адресом команды), которая содержит входной буферный регистр для слова BR, счетчик адреса микрокоманд, СтМК, для реализации последовательных переходов, стек для организации переходов с возвратом, логическую схему выбора адреса и выходной буфер. Марка СУАМ К1804ВУ1.
3) Сформированный СУАМ адрес МК имеет длину 4 разряда и подается на регистр адреса памяти МКПМ. Эта память в учебной МПС выполнена на ОЗУ с целью упрощения процесса ввода МКПМ в систему; обычно память МКПМ выполняется на ПЗУ или репрограммируемом ЗУ.
4) Из памяти МКПМ считывается очередная МК, которая принимается на РгМК; поле ВР принимается в СУАМ для указания адреса, если он задан. Выбранная МК в течение текущего такта управляет работой системы такта.
5) Разряды Р1Р0 поля Р определяют выбор одного из флагов ЦПЭ, Z, F3, OVR,C4, в качестве решающего, Ф, при определении адреса следующей МК. На рис. 2.3 показано, что Ф формируется мультиплексором, на вход данных которого подаются флаги с регистра состояния, а на вход номера канала подаются Р1Р0.
Пример:
Пусть в поле Р текущей МК (находящейся в РгМК) имеется код 000. Это значит, что Р1Р0 = 00 и MS выделит флаг Ф = Z. Если Z = 0 (F ≠ 0), УСА получит на вход код А4А3А2А1А0 = 0000, этот код обеспечит передачу в выходной буфер СУАМ значения поля BR РгА МК := BR, а также занесение нового значения в счетчик адреса МК, СтМК := BR; таким образом, произойдет переход в МКПМ. Если Z = 1 (F = 0), УСА получит на вход код 0001, этот код обеспечит в СУАМ модификацию содержимого счетчика адреса МК, СтМК := СтМК + 1 и затем передачу со счетчика в выходной буфер СУАМ, РгАМК := СтМК, т.е. обеспечит последовательное продолжение, переход к следующей по порядку МК в МКПМ.
6) ЦПЭ МПК имеет следующий состав: АЛУ, локальную память из 16-ти РОН, блок регистра результата РгQ, блок местного управления. Блок местного управления получает на вход код микрокоманды I0 I1, … I8 и преобразует его в пространственно распределенные на шинах управления сигналы посредством дешифрации – шифрации. Сигналы по шинам управления поступают в АЛУ, обеспечивая выполнение в нем заданной в МК микрооперации, в память РОН, обеспечивая обращение к заданным в полях А, в РОН, в блок РгQ, обеспечивая считывание или запись в РгQ.
Примеры микропрограмм для учебной микропроцессорной системы
1) В таблице 2.7 показана МКПМ загрузки и чтения РОН.
а) МК0 (МК, записанная в нулевую ячейку памяти МКПМ) читает данное из поля Д (0100) и загружает (записывает) его в РОН1, заданный в поле В. В поле Р стоит код 0010, означающий переход к следующей по порядку МК. Поля, которые не используются данной МК (безразличны), не заполнены.
Примеры микропрограмм
Микропрограмма загрузки и чтения РОН
Указываем номер РОНа куда будут записаны данные. |
Не используется |
Команда 0010 - это переход к следующей команде без всякой работы |
011 – это операция RvS. |
Команда 001 (B:=F)- это значит, что полученный результат записывается в РОН. |
111 значит, что R=D, S=0, т.е. RvS=Dv0=D |
Простой последовательный переход, поэтому ничего не указано. |
Таблица 2.7
Адрес памяти МКПМ | BR | P* | приемник | источник | Коп АЛУ | РОН А | РОН В | D Примечание | |||
BR3 BR2 BR1 BR0 | P3P2P1P0 | MS2 | I8 I7 I6 | MS1 | I2 I1 I0 | C0 | I5 I4 I3 | A3 A2 A1 A0 | B3 B2 B1 B0 | D3D2D1D0 | |
0 0 1 0 | 0 1 1 | 1 1 1 | 0 1 1 | 0 0 0 1 | 0 1 0 0 загрузка РОН1 | ||||||
0 0 1 0 | 0 0 1 | 0 1 1 | 0 1 1 | 0 0 0 1 | Чтение РОН1 | ||||||
0 0 1 0 | 0 1 1 | 1 1 1 | 0 1 1 | 1 0 0 1 | 0 1 0 0 загрузка РОН9 | ||||||
0 0 1 0 | 0 0 1 | 0 1 1 | 0 1 1 | 1 0 0 1 | Чтение РОН9 |
Микропрограмма сдвиговых операций
0 0 1 0 | 0 1 1 | 1 1 1 | 0 1 1 | 0 0 0 0 | 0 0 1 0 загрузка РОН0 | ||||||
0 0 1 0 | 1 1 1 | 0 1 1 | 0 1 1 | 0 0 0 0 | Сдвиг РОН0 влево | ||||||
0 0 1 0 | 1 0 1 | 0 1 1 | 0 1 1 | 0 0 0 0 | Сдвиг РОН0 вправо | ||||||
0 0 1 0 | 0 0 0 | 0 1 0 | 1 0 0 | 0 0 0 0 | Очистка 0 | ||||||
0 0 1 0 | 1 1 0 | 0 1 1 | 0 1 1 | 0 0 0 0 | Циклич. сдвиг РОН0-Q влево | ||||||
0 0 1 0 | 1 0 0 | 0 1 1 | 0 1 1 | 0 0 0 0 | Циклич. сдвиг РОН0-Q вправо |
Микропрограмма арифметических операций
0 0 1 0 | 0 1 1 | 0 1 1 | 0 0 0 | 0 0 0 0 | РОН0=РОН0+1 | ||||||
0 0 1 0 | 0 1 1 | 0 1 1 | 0 0 1 | 0 0 0 0 | РОН0=РОН0-1 | ||||||
0 0 1 0 | 0 1 1 | 1 0 1 | 0 0 0 | 0 0 0 0 | 0 0 0 0 | 0 0 1 1 РОН0=РОН0+3 | |||||
0 0 1 0 | 0 1 1 | 1 1 1 | 0 1 1 | 0 0 0 1 | 0 1 0 1 РОН1=5 | ||||||
0 0 1 0 | 0 1 1 | 0 0 1 | 0 0 0 | 0 0 0 1 | 0 0 0 0 | РОН0=РОН0+РОН1 |
Следующей исполняется МК из следующей ячейки, т.е. MK1. Результатом F MK1 служит прочитанное содержимое P0HI; результат f передается на выходные шины ЦПЭ, Y: = F; таким образом, MKI производит чтение из P0HI, это позволяет проконтролировать предыдущую МКО, загружавшую P0HI.
МК2 загружает данное 0101 из поля Д в Р0Н9, МКЗ контролирует загрузку посредством чтения из Р0Н9 и выдачи результата на выходные шины ЦПЭ.
В МКПМ сдвиговых операций МК4 загружает из поля Д РОН 0. МК5 выполняет операцию R v S , причем источник В = 0, источник 5 = В, т.е. результат F равен содержимому РОН 0, указанному в поле В. Этот результат выдается, на выходные шины ЦПЭ Y. Одновременно, в силу того, что указан код приемника результата, равный III, при загрузке результата происходит его сдвиг влево на один разряд (В:= 2F - удвоение эквивалентно сдвигу влево на один разряд); тип сдвига- циклический, определен модификаторами операций сдвига MS1 и МS2 .
МК6 сдвигает циклически вправо содержимое РОН 0, это определенно кодом приемника 101, означающим при загрузке В: = F/2, что эквивалентно сдвигу вправо на один разряд. В МК7 КОП = 100, т.е. F=R• 5 , код источника равен 010, т.е. R=0, S= Q , следовательно, F = 0; код приемника результата равен 000, что означает загрузку Q: = F , т.е. Q : = 0, МК7 выполняет очистку регистра результата Q .
МК8 реализует циклический сдвиг пары регистров P0H0-Q влево. МК9 реализует циклический сдвиг пары регистров P0H0-Q вправо. Следующие МК реализуют арифметические операции. В MKI0 K0П АЛУ равен 000, т.е. F : = R + S+ С0 ; код историка равен 011, т.е. R = О, S = В ; С = I, В = 0000, следовательно, F : = 0 + РОН 0 + I; код приемника равен 011, т.е. В: = F . Это значит, результат равен содержимому РОН0 плюс I и результат загружается в РОН 0, т.е. MK10 выполняет операцию РОН 0: = РОН 0 + I.
МК11 имеет_К0П АЛУ = 001, т.е. F: = S- R + I + С 0 ; код источника 011 т.е. R =0, S = В , В = 0000, C0 = 0, следовательно, F : = РОН0 -0-1+0 = РОН 0 - I; код приемника равен 011, т.е. В: = F , следовательно, результат загружается в РОН 0: = РОН 0 - I.
Аналогично выполняются следующие МК, их содержание сформулировано в примечании.
В таблице 2.8 показаны МКПМ, реализующие переход к МКПМ
Примеры микропрограмм для МП К1804
Таблица 2.8
Переход к подмикропрограмме
Адрес памяти МКПМ | BR | P* | приемник | источник | Коп АЛУ | РОН А | РОН В | D Примечание | |||
BR3 BR2 BR1 BR0 | P3P2P1P0 | MS2 | I8 I7 I6 | MS1 | I2 I1 I0 | C0 | I5 I4 I3 | A3 A2 A1 A0 | B3 B2 B1 B0 | D3D2D1D0 | |
0 0 1 0 | К след. адресу | ||||||||||
0 0 1 0 | К след. адресу | ||||||||||
0 0 1 0 | К след. адресу | ||||||||||
3 | 1 1 0 0 | 0 1 0 1 | Переход к подпрограмме I2 | ||||||||
4 | |||||||||||
0 0 1 0 | К след. адресу | ||||||||||
0 0 1 0 | К след. адресу | ||||||||||
0 1 1 0 | Возврат |
Условные переходы
0 0 1 0 | 0 1 1 | 0 1 1 | 0 0 0 | 0 0 0 1 | К след. адресу РОН1:=РОН1+1 | ||||||
1 1 1 1 | 1 1 1 1 | 0 0 1 | к 15 если С4 | ||||||||
0 0 0 0 | 0 0 0 1 | 0 0 1 | Безусловный переход к 0 | ||||||||
0 0 1 0 | 0 0 1 | К след. адресу |
а) Здесь определяющее значение имеют поля P и BR, остальные поля не заполнены. МК0…МК2 образуют линейный участок МКПМ, в них поле Р имеет код 0010, что означает переход к следующей по порядку МК.
б) В МК3 поле З имеет код 0101, что означает переход к подМКПМ, адрес начала подМКПМ дан в поле BR и равен 1100. Поэтому МК3 выдает через СУАМ поле BR = 11002 = 1210 на РгА памяти МКПМ (см. рис. 2.5.3), текущее значение счетчика адреса МК передает в стек СУАМ, ST:=Ст МК, затем в Ст МК загружает поле BR, Ст МК:=BR.
в) Следующей будет исполняться МК12; у нее поле Р содержит код 0010, поэтому следующей будет исполняться МК13, затем МК14.
г) В МК14 поле Р содержит код 0110, что означает (см. табл. 2.6) возврат из подМКПМ. При исполнении МК14 СУАМ реализует СтМК:=ST, СтМК:=СтМК+1, РгАМК:=СтМК, т.е. на регистр адреса памяти МКПМ будет выдано число 4 – следующей будет выбрана из памяти МКПМ МК4, произойдет возврат из подМКПМ в точку, следует за точкой обращения к подМКПМ.
2. Далее в табл. 2.8 показана МКПМ с условным, а также безусловным переходом.
д) МК0 выполняет сложение РОН1:=РОН1+1; в зависимости от прежнего содержимого РОН1, при этом перенос из старшего разряда результата (С4) может быть равным 0 или 1.
е) Следующая МК1 реагирует на значение С4: в ее поле Р стоит код 1111, что означает переход на адрес МК из поля BR, если С4=1, и переход к следующей по порядку МК (МК2), если С4=0. Технически МК1 исполняется следующим образом (см. рис.2.3): разряды Р1Р0=11, поэтому MS выделяет из всех признаков результата, полученных в МК0 и сохраняемых в течение МК1 на регистре слова состояния РгСС, в качестве флага признак С4. Поле Р МК1 вместе с Ф передаются на вход УСА, оно выдает при Ф=1 коп (Q0 … Q7)0, принуждающий СУАМ реализовать последовательное продолжение – СтМК:=СтМК+1, РгА МК:=СтМК. В поле BR МК1 стоит 11112=1510, поэтому при С4=1 следующей будет исполняться МК15, при Ф=0 – МК2.
ж) МК2 реализует безусловный переход к МК0 (см. поля Р и BR МК2), т.е. к операции накопления суммы в РОН1.
з) МК15 имеет в своем поле Р код 0010, т.е. она передает управление следующей по порядку МК, но в данной МПС емкость памяти МКПМ ограничена 16 ячейками, старший адрес равен 15, поэтому счетчик адреса МК в такте МК15 переполнится