Микропрограммный УА с принудительной адресацией
Структура УА с принудительной адресацией приведена на рис. 7.
Рис. 7. Структура УА с принудительной адресацией
На рис.7: MS1 – мультиплексор входных сигналов, MS2 – мультиплексор адреса микрокоманды, РАМК – регистр адреса микрокоманды, МПЗУ – ROM микропрограмм из рис. 6, РМК – регистр микрокоманд.
Разрядность MS2 и РАМК равна адресности ROM n=]log2k[, где k – кол-во микрокоманд автомата. Например, если у нас 13 микрокоманд, то для них надо 13 ячеек ПЗУ, для адресации которых требуется n=]log213[=4 разряда адреса.
Разрядность ПЗУ и РМК равна кол-ву всех сигналов, которое должна выдавать ROM
Формат РМК идентичен формату микрокоманды: A0 и A1 – адрес следующей МК в ПЗУ, по которому перейдёт автомат, если выбранный управляющий сигнал равен 0 или 1 соответственно. Nx – код входного сигнала, проверяемого в текущей МК, ОЧ – операционная часть, содержит все выходные сигналы автомата.
ДШМО – дешифратор микрооперации. Его назначение – уменьшить разрядность ПЗУ и РАМК, в том случае, если все или часть входных сигналов Y являются унитарными и их можно закодировать таким образом, чтобы разрядность поля ОЧ была меньше кол-ва выходных сигналов. В общем случае он не нужен.
В реальности регистр РМК можно исключить, т.к. ПЗУ не меняют состояния своих выходов при неизменности адреса. Т.е., пока содержимое РАМК неизменно, то и на выходах ПЗУ будет неизменная информация.
Целесообразность использования ДШМО на практике зависит и от разрядности реальных ПЗУ, из которых будет строиться МПЗУ автомата.
Так, например, если мы будем использовать 8-разрядные ПЗУ, то, понятно, что конечная разрядность МПЗУ будет кратна 8 битам. Поэтому, если, допустим, на все поля в сумме без доп. кодирования Y понадобится 15 разрядов, а с кодированием 12, то доп. кодирование каких-то Yi и введение дешифратора не приведёт к уменьшению конечного МПЗУ (и на 15 и на 12 сигналов надо 2 8-битных микросхемы ПЗУ), а дополнительный дешифратор только усложнит схему и, возможно, снизит её быстродействие. Но, если в распоряжении есть и 8 и 4-разрядные ПЗУ (8+4=12), то в случае с 12-разрядной МК мы можем применить не две 8-битные микросхемы, а одну 8 и одну 4 битную, то вариант с ДШ может оказаться выгоднее.
Также, следует отметить, что промышленность не выпускает регистров с двумя входными шинами (РАМК на рис. 7). Поэтому, при необходимости такой узел м.б. заменён многоразрядным мультиплексором с двух направлений и обычным одновходовым регистром.
Рассмотрим подробно работу микропрограммного автомата с принудительной адресацией.
Работа автомата начинается с занесения в регистр адреса микрокоманд (РАМК) кода операции (по сути стартового адреса микрокоманды). В простейшем случае вместо занесения адреса можно использовать вход сброса регистра.
На время исполнения микрокоманда из RAM копируется в регистр микрокоманд РМК.
Далее мультиплексор MS1 передаёт на свой выход значение входного сигнала Xi, указанного полем Nx микрокоманды.
По сигналу с MS1 мультиплексор MS2 выбирает один из двух адресов A0/А1 и передаёт его на вход РАМК.
После этого всё повторяется.
Отметим, что на первый (с номером 0) вход мультиплексора MS1 заведен постоянный лог. 0. Это даёт возможность реализации МК с безусловным переходом по адресу A0 в тех МК, где не нужно проверять никакие входные сигналы. Вместо лог. 0 можно использовать лог. 1. Это повлияет только на то, что адресом перехода будет считаться содержимое поля A1, а не A0.
Наличие MS1 обусловливает следующую особенность автомата – любая МК может проверять (учитывать) только один сигнал Xi. Это обстоятельство относится к любым автоматам с микропрограммным управлением (не только с принудительной адресацией). Поэтому, если в какой-либо МК необходимо проверять несколько Xi, то такая МК разбивается на несколько, проверяющих требуемые Xi в произвольном порядке.
В ряде случаев, если входных сигналов не очень много, то, в принципе, можно заменить мультиплексор MS1 простой схемой совпадения кодов, а в МК вместо Nx записывать требуемое сочетание Xi.
В качестве примера рассмотрим микропрограммную реализацию того же автомата, который мы рассматривали для моделей Мили и Мура.
Напомним его ТИ:
Сост. | x1 | x2 | y1 | y2 | y3 | y4 |
Сначала нам необходимо закодировать входные сигналы автомата x1, x2 и постоянный лог. 0 на нулевом входе мультиплексора MS1:
Вход | Поле Nx микрокоманды |
0 (лог. 0) | |
1 (x1) | |
2 (x2) |
Микропрограмма (МП) автомата будет иметь вид:
Адрес МК (состояние) | A0 | A1 | Nx (Xi) | Y={y1,y2,y3,y4} |
0000 (сост. 0а) | 01 (x1) | |||
0001 (сост. 0б) | 10 (x2) | |||
0010 (сост. 1а) | 01 (x1) | |||
0011 (сост. 1б) | 10 (x2) | |||
0100 (сост. 2а) | 01 (x1) | |||
0101 (сост. 2б) | 10 (x2) | |||
0110 (сост. 3а) | 01 (x1) | |||
0111 (сост. 3б) | 10 (x2) | |||
1000 (сост. 4а) | 01 (x1) | |||
1001 (сост. 4б) | 10 (x2) | |||
1010 (сост. 5а) | 01 (x1) | |||
1011 (сост. 5б) | 10 (x2) |
Таким образом, требуемая адресность ПЗУ равна 4 (4-разрядный адрес), а его разрядность равна 4+4+2+4 = 14. Ёмкость ПЗУ составит 16 ячеек, из которых мы займём 12.
Отметим следующие особенности:
1. Кол-во состояний автомата удвоилось, т.к. микропрограммные автоматы описываемой архитектуры не могут реагировать в одном состоянии сразу на несколько входных сигналов. Но, если бы мы имели в ТИ автомата следующую строку:
Сост. | x1 | x2 | y1 | y2 | y3 | y4 |
* |
то при разработке МП мы могли бы обойтись одним состоянием:
1010 (сост. 5) | 10 (x2) |
2. Сигнал лог. 0 (Nx==0) нам здесь не понадобился. Для иллюстрации его использования представим себе, что в ТИ есть такая строка:
Сост. | x1 | X2 | y1 | y2 | y3 | y4 |
* | * | |||||
* |
Т.е. из состояния 6 мы всегда переходим в состояние 7.
В этом случае в МП мы можем написать:
Адрес МК (состояние) | A0 | A1 | Nx (Xi) | Y={y1,y2,y3,y4} |
1100 (сост. 6) | 00 (лог. 0) | |||
1101 (сост. 7) | 01 (x1) |
Как видно, в состоянии 6 автомат не будет проверять никакие Xi, а просто перейдёт из него в состояние 7.
3. Таблица МП представляет собой так называемую «прошивку» автомата, она полностью описывает содержимое ROM автомата: 1-й столбец – адрес МК в ПЗУ, 4 остальных – сами МК (содержимое ПЗУ). Она на 100% задаёт его алгоритм работы.
Из практического примера виден один общий недостаток МП автоматов – из-за невозможности проверить несколько Xi одновременно, кол-во состояний (микрокоманд) МП автомата всегда больше кол-ва состояний эквивалентного автомата Мура (или Мили). Соответственно, и его быстродействие ниже – тем дольше, чем больше входных сигналов нужно обработать в одном состоянии эквивалентного автомата с жёсткой логикой.
Но т.к. современные микросхемы ПЗУ имеют достаточно большие ёмкости, то этот недостаток несущественен на фоне огромного преимущества, заключающегося в том, что если нам понадобится как-то изменить алгоритм функционирования автомата, то нам достаточно «подправить» микропрограмму и перепрошить (изменить содержимое) ПЗУ. Аналогичная задача для автоматов с жёсткой логикой потребует повторного полного цикла разработки схемы автомата «с нуля».