§7.5
Микропрограмно
УУ.
Микроасемблер
Am2910
В
този раздел
ще бъде
представена
пълната техническа
реализация
на
микропрограмно
управляващо
устройство,
проектирано
по зададена
блок-схема на
алгоритъм за
функциониране
на някакъв
автомат. При
проектиране
на
управляващото
устройство
тук не е необходимо
да бъде
известна
същността на
този автомат,
както и
същността на
неговата функция,
вложена в
операционната
му част. Онова
което е
необходимо
да се знае е
множеството
управляващи
сигнали
{ УСi,
i=1, 2, 3,
, ω },
множеството
оповестяващи
сигнали
{ Xj, j=1, 2, 3,
, J }
и
блок-схемата
на
алгоритъма,
от която се
вижда
последователността
на техния
ред, т.е. алгоритмичните
преходи.
Главните
положения в
структурната
теория на
микропрограмните
управляващи
автомати с
програмно
закрепена
логика
вече беше
изложена тук,
в началото на
глава 7.
Изложеното
по-долу тук
предполага,
че читателят
е запознат с
тази теория.
За
илюстрация
на темата ще
бъде
представена
реализация,
която се
основава на
интегралната
схема Am2910 на
фирмата AMD,
широко
известна и
описана в литературата,
имаща много
аналози. Въпреки
че тази
микропроцесорна
фамилия, под
номер Am29XX, е с
многогодишна
и
изключително
успешна
история, с
която
читателят би
могъл да се
запознае, тя
е избрана тук
за представяне
на този
пример, с
което искаме
да покажем,
че
концепцията
на нейната
логическа
структура е
много
показателна,
е непреходна
и по тези
причини може
да бъде
използвана
под всякакви
форми и
реализации
сега и в бъдеще.
Структурата
на фамилията
се характеризира
още с това, че
има
разрядно-модулна
организация,
нещо от което
съвременните
проектанти
могат да
практикуват
само върху
специализирана
апаратна
елементна
база.
Интегралната
схема Am2910 е
предназначена
да реализира
схемата за
формиране на
адреса за преход
към
следващата
микрокоманда
(СФАП). Нейната
логическа
структура е
показана на
фигура 7.4.2 в
предходния
раздел. СФАП
е само един
от
елементите в
структурата
на микропрограмното
управляващо
устройство
със смесени
методи на
адресиране
на микрокомандите.
Останалите
два основни
елемента в
устройството
са
микропрограмната
памет (МПП) и регистъра
на
микрокомандата
(РгМК), както е
показано на
фигура 7.4.2.
Интегралната
схема Am2910 има
следните
входове и
изходи (виж
фигура 7.5.2):
1.
Дванадесет
на брой
изходни адресни
линии (Y0,Y1,Y2,
,Y9,Y10,Y11),
които са
буферирани и
могат да
бъдат изключвани,
т.е. да бъдат
привеждани в трето
състояние.
Третото
състояние на
изходните
адресни
линии се
управлява
чрез сигнал по
входа not(OE), (output enable).
2.
Три на брой
изходни
линии на алтернативни
разрешаващи
сигнали,
използвани
при работа с
външни за
схемата устройства.
Сигналите са
следните:
·
сигнал not(PE), (programm enable) -
(разрешение
за адрес от
програмата).
Използва се
за разрешаване
достъпа на
адреса, който
се съдържа в
адресното
поле на
текущата
микрокоманда,
т.е. в Рг.МК.
Обикновено
това е адрес
за преход в условни
микрокоманди;
·
сигнал not(VE), (vector enable) -
(разрешение
за подаване
на векторен
адрес).
Векторен
адрес е адрес,
използван в
система,
реализираща
прекъсване.
Реализира се
в смисъла на
начален (стартов)
адрес на
определена
микропрограмна
процедура,
задействаща
се по външен
сигнал
(събитие).
Говорим, че
векторният
адрес се подава
от външен за
микрокомандата
източник,
най-често
памет;
·
сигнал not(ME), (map enable) -
(разрешение
за подаване
на начален
адрес). Адресът
за преход се
подава от
външен за микрокомандата
източник,
най-често
памет. В случая
адресът се
разбира като
начален (стартов)
за дадена
микропрограма,
ако такива
има няколко в
микропрограмната
памет. Има се
предвид
многофункционално
УУ.
3.
Една
изходна
линия на
сигнала not(FL), (full),
оповестяващ
за препълване
на стека.
4.
Дванадесет
входни линии
(D0,D1,D2,
,D9,D10,D11). Тези
линии се
наричат даннови,
тъй като
освен адрес
за преход, по
тях се
подават данни,
които могат
да се
записват във
вътрешния 12
битов
регистър/брояч.
Обикновено
това е число
начална
стойност на
брояча, използван
за
организиране
на цикли.
5.
Четири
входни линии за
микрокомандния
код (I0,I1,I2,I3).
Четири
битовият код
определя 16
различни микрокоманди,
които
формират
микроасемблерния
език на
схемата.
Алгоритмичните
преходи,
които
реализират
тези
микрокоманди,
са
представени
по-долу чрез
таблица 7.5.1.
6.
Четири
входни линии
на служебните
сигнали,
които са
предназначени
за
управление
на вътрешното
състояние на
схемата.
Сигналите са
следните:
· сигнал not(CCE), (condition code enable) -
(разрешение
за проверка
на кода на
условието);
· сигнал not(OE), (output enable) -
(разрешение
на изходните
адресни
линии);
· сигнал not(RLD), (register load) -
(разрешение
за запис в
регистъра/брояч);
· сигнал CI, (counter increment) - (+1
към
съдържанието
на
микропрограмния
брояч).
7.
Вход за кода
на условието not(CC), (condition code).
Избраното за
проверка условие,
което
постъпва на
този вход, се
намира в
предварителна
дизюнктивна
логическа връзка
със
стойността,
постъпваща
по входа not(CCE).
Окончателната
логическа
стойност на
кода на
условието КУ,
която
определя
алгоритмичния
преход и
източника в
логическата
структура на
схемата на
адрес за
преход, се
определя
така: КУ=
not(CCE)Θnot(CC).
Следователно,
ако по входа not(CCE)
постъпва
единица, то
КУ=1 винаги
и независимо
какво
постъпва по
входа not(CC). В този
случай всяка
микрокоманда
за условен
преход ще
реализира
само прехода
TRUE, т.е. ще
работи като
микрокоманда
за
безусловен
преход.
8.
Вход за
тактов
сигнал Т.
Схемата за
формиране на
адреса за
преход Am2910,
както и
регистърът на
микрокомандата,
записват
подаваната им
на вход
информация
на всеки
такт, по предния
фронт на
тактовите
импулси
(виж фигура 7.5.2). В този
смисъл
управляващото
устройство реализира
концепциите
на синхронния
метод за
управление,
а основния
двигател на
превключванията
е тактовият
генератор.
Всички
управляващи сигнали
имат
продължителност
равна на
периода на
тактовата
честота, ако
не са
стробирани.
Таблица 7.5.1. Микроасемблер
Am2910.
Код 16 |
Мнемо- |
Наименование
на прехода |
Брояч до опер. |
КУ=FALSE |
КУ=TRUE |
Брояч |
Разре-шение |
||
ника |
Y
|
Стек |
Y
|
Стек |
|||||
0 |
JZ |
Безусловен
преход към
нулев адрес |
(
) |
0 |
Нули-ране |
0 |
Нули-ране |
(
) |
|
1 |
CJS |
Условен
преход към
подпрограма |
(
) |
МПБр. |
(
) |
D |
Запис |
(
) |
|
2 |
JMAP |
Безусловен
преход по
външен
(начален)
адрес |
(
) |
D |
(
) |
D |
(
) |
(
) |
|
3 |
CJP |
Условен
преход по
адрес от
микрокомандата |
(
) |
МПБр. |
(
) |
D |
(
) |
(
) |
|
4 |
PUSH |
Безусловен
преход към
следващия
по ред адрес |
(
) |
МПБр. |
Запис |
МПБр. |
Запис |
Запис ако
КУ=1 |
|
5 |
JSRP |
Условен
преход към
една от две
подпрограми |
(
) |
Рг.А/ Брояч |
Запис |
D |
Запис |
(
) |
|
6 |
CJV |
Условен
преход по
външен
(начален)
адрес (вектор) |
(
) |
МПБр. |
(
) |
D |
(
) |
(
) |
|
7 |
JRP |
Условен
преход по
адрес от
регистъра/брояч
или от
микрокомандата |
(
) |
Рг.А/ Брояч |
(
) |
D |
(
) |
(
) |
|
8 |
RECT |
Затваряне
на цикъл по
вътрешното
условие за
край по
адрес от
стека и
автоматична
модификация
на брояча |
(Бр.)Ή0 (Бр.)=0 |
Стек МПБр. |
(
) Изхв. |
Стек МПБр. |
(
) Изхв. |
-1 (
) |
|
9 |
RPCT |
Затваряне
на цикъл по
вътрешното
условие за
край по адрес
от
микрокомандата
и
автоматична
модификация
на брояча |
(Бр.)Ή0 (Бр.)=0 |
D
МПБр. |
(
) (
) |
D
МПБр. |
(
) (
) |
-1 (
) |
|
A |
CRTN |
Условно
връщане от
подпрограма |
(
) |
МПБр. |
(
) |
Стек |
Изхв. |
(
) |
|
B |
CJPP |
Условен
преход по
адрес от
микрокомандата
с
изхвърляне
от стека |
(
) |
МПБр. |
(
) |
D |
Изхв. |
(
) |
|
C |
LDCT |
Безусловен
преход към
следващия
по ред адрес
с условно
зареждане
на брояча |
(
) |
МПБр. |
(
) |
МПБр. |
(
) |
Запис ако
КУ=1 |
|
D |
LOOP |
Затваряне
на цикъл по
външно
условие за
край на
адрес от
стека |
(
) |
Стек |
(
) |
МПБр. |
Изхв. |
(
) |
|
E
|
CONT |
Безусловен
преход към
следващия
по ред адрес |
(
) |
МПБр. |
(
) |
МПБр. |
(
) |
(
) |
|
F |
TWB |
Условен
преход в три
направления
и комплексно
условие |
(Бр.)Ή0 (Бр.)=0 |
Стек D |
(
) Изхв. |
МПБр. МПБр. |
Изхв. Изхв. |
-1 (
) |
|
Източници на адреса на следващата микрокоманда могат да бъдат:
·
D -
(входна
даннова
шина), какво
постъпва на
входа D зависи
от
разрешаващите
сигнали not(PE), not(VE) или not(ME);
·
Стек -
(запомнящо
устройство с
последователен
достъп тип LIFO,
имащо обем от
5 клетки с
дължина 12[b]).
Стекът е от
тип винаги
готов за
четене,
което
означава, че
като адрес
излиза съдържанието
на върховата
клетка;
·
Рг.А/Брояч -
(12-битов
регистър/изваждащ
брояч с
паралелен
вход). Този
възел с памет
може да се
използва от
програмиста
при
реализиране на
различни
алгоритмични
структури, в
това число и
като
регистър,
временно
съхраняващ
някакъв
адрес за
преход;
В таблицата
са направени
следните
означения:
· (
) -
означава, че
съдържанието
на даденият
възел се
съхранява
без
изменение по
време на текущата
(поредната)
микрокоманда;
· (Бр.)=0? -
вътрешно
условие за
преход.
Предназначено
е да се
използва
като условие
край на цикъл
от вида с
предварително
известен
брой повторения.
Формира се
като признак
EQ от дешифратор,
включен към
12-битовия
изход на брояча,
т.е. EQ=1 ако (Бр.)=0.
Така с едно
зареждане на
начална
стойност в
този брояч
могат да се
организират
максимум 4096
повторения;
· Запис -
запис на
съдържанието
на
микропрограмния
брояч в
стека.
Записът се
предхожда от
модификация
на стековия
указател с +1.
При
препълване
на стека се
формира
признакът FL=1.
Този запис
може да
бъде условен
или
безусловен. В
случай, че записът
се извършва
когато
стекът е
препълнен,
стековият
указател не
се
модифицира, така
че при това
записаното
във
върховата клетка
се изтрива от
новопостъпващите
данни. Стековият
указател не
се
модифицира
и при
микрокоманда
PUSH, която
извършва
запис на
съдържанието
на адресното
си поле във
вътрешния
Рг.А/Брояч. Това
прави
микрокомандата
особено
опасна за
употреба във
вътрешността
на подпрограма,
ако не се
вземат мерки
за изменение
на стековия
указател. За
стека може да
се каже, че
той е от тип винаги
готов за
четене.
· Изхв. -
изхвърляне
на адреса от
стека поради
това, че той е
загубил
актуалност.
Изхвърлянето
всъщност е
модификация
на съдържанието
на стековия
указател с 1,
СУ:=(СУ)-1. При
обикновено
четене от
стека не се
извършва
модификация
на стековия
указател, така
върховата
клетка от
стека може да
се чете
многократно.
· -1 -
модифициране
съдържанието
на брояча, т.е.
изваждане на
единица:
Бр:=(Бр)-1.
Алгоритмичните
преходи,
които
реализират
отделните
микрокоманди
се тълкуват
по следния
начин:
0.
Микрокоманда
JZΊ0000.
Тази
микрокоманда
е за
безусловен
преход със
скок. Където
и да се
срещне в
микропрограмата
тя води до
безусловен
преход към
адрес нула (000).
Удобна е за
реализиране
на
алгоритмичния
блок край,
който по
същество се
отъждествява
с блока начало.
Обикновено
микрокоманда
JZ се
използува
като последна
по действие
в
микропрограмата.
Микрокомандният
код от четири
нули води до
нулиране на
всички
логически
възли с памет
във
вътрешната
структура на
СФАП и
превключване
на основния
мултиплексор
към изходите
на
микропрограмния
брояч (виж
фигура 7.4.2). Тъй
като
неговото
съдържание е
нула, на изход
излиза
адресът нула.
Получава се
така, че при
завършване
изпълнението
на функцията
на автомата,
преходът в
изходно
състояние
води към
адрес нула.
От това следва,
че
микропрограмата
ще бъде
разположена
в адресното
пространство
от начален адрес
нула. Това
води до
сравнително
лесно реализиране
на функцията
на сигнала Reset.
В
логическата
схема от
фигура 7.5.2 този
сигнал е
подаден на
входовете за
нулиране на
регистъра на
микрокомандата.
1.
Микрокоманда
CJSΊ0001.
Микрокомандата
е за условен
преход към микроподпрограма.
Условието,
което се
проверява е
външно.
Адресът за
преход (начален
за
мироподпрограмата)
се взема от
адресната
част на
микрокомандата.
Във всички случаи
на употреба
на тази
микрокоманда
инкрементирането
на
микропрограмния
брояч е
задължително,
тъй като
неговото
съдържание
се фиксира в
стека като
адрес за
връщане. Адресът
за връщане се
записва в
нова клетка
на стека,
което
означава, че
преди записа
стековият
указател се
модифицира с
+1.
2.
Микрокоманда
JMAPΊ0010.
Микрокомандата
е за
безусловен
преход. Адресът
за преход се
подава по
данновия
вход D,
но неговият
източник е
онзи, който
се разрешава
от сигнала not(ME). Този
разрешаващ
сигнал е
функция на
микрокомандния
код (0010). В
случая се
предполага,
че външният
източник
подава
начален
адрес на микропрограмна
единица,
различна от
текущата,
която се
съдържа в
адресното пространство
на
микропрограмната
памет. В този
смисъл, ако
управляващото
устройство е
многофункционално
и в МПП са
записани много
микропрограми,
описваната
микрокоманда
е удобна за
употреба в
качеството
си на изход от
системната
част и преход
към
съответното
приложение
(функция). Ако
тази
микрокоманда
има място в
микропрограмата,
данновата
шина се
превръща в
даннова магистрала.
От това
следва, че
регистърът
на микрокомандата,
в участъка на
адреса за
преход, следва
да притежава
буферирани
изходи, които
трябва да се
управляват
от сигнала not(PE). Така
когато се яви
сигналът not(ME), ще отпадне
сигналът not(PE).
3.
Микрокоманда
CJPΊ0011.
Микрокомандата
е за условен
преход по външно
условие.
Адресът за
преход се
взема от
адресната
част на
микрокомандата.
В случай, че
се забрани
проверката
на кода на
външното
условие чрез
подаване на
единица на вход
not(CCE),
микрокомандата
ще бъде
заставена да
изпълнява
безусловен
преход със
скок.
4.
Микрокоманда
PUSHΊ0100.
Микрокомандата
е за
безусловен
преход към
следващия по
ред адрес.
Освен
алгоритмичният
преход микрокомандата
изпълнява
условен
запис във вътрешния
регистър/брояч
на данни,
които пристигат
по входната
даннова шина
от микрокомандата.
Условието,
при което се
извършва
този запис, е
външно.
Извършва се
още запис
(безусловен)
на
съдържанието
на
микропрограмния
брояч във
върховата
клетка на
стека, текущо
адресирана
от стековия
указател.
Последният не се
модифицира.
Всичко това
прави тази
микрокоманда
удобна за
непосредствена
подготовка
на цикли от
вида с
предварително
известен
брой
повторения.
Адресът,
който се
запомня в
стека може да
се
интерпретира
като входна
точка на
цикъла и да
се използува
от
микрокоманда
RECT за
неговата
реализация.
Механизмът
за реализация
на
алгоритмичната
структура
цикъл на тези
две
микрокоманди
е особено
ценен, тъй
като той
прави микропрограмите
преместваеми.
5.
Микрокоманда
JSRPΊ0101.
Микрокомандата
е за условен
преход към една
от две
възможни
микроподпрограми.
Условието за
преход е
външно.
Адресът за преход
по клона FALSE се
взема от
вътрешния
регистър, а
този по клона
TRUE се взема от
микрокомандата.
Независимо
към коя от
двете
подпрограми
се извършва
конкретно
преход,
адресът за
връщане
(съдържанието
на
микропрограмния
брояч) се
записва в
стека. Началният
адрес на
подпрограмата
в клона FALSE следва
да бъде
записан във
вътрешния
регистър
предварително.
6.
Микрокоманда
CJVΊ0110.
Микрокомандата
е за условен
преход по външно
условие. При
осъществяване
на клона TRUE, адресът
за преход
постъпва в
СФАП по
входната
даннова шина.
Източникът
на този адрес
е външен, ето
защо тази
микрокоманда
генерира
разрешаващият
сигнал . В този
смисъл,
относно
използуването
на микрокомандата
тук, важат
съображенията,
изказани за
микрокоманда
JMAP. Естественото
предназначение
на микрокомандата
е за
реализация
на
алгоритмичен
преход при
сигнал за външно
прекъсване.
Външният
адрес за
преход може
да се интерпретира
като начален
адрес на
микропрограмната
процедура осъществяване
на
прекъсването
.
7.
Микрокоманда
JRPΊ0111.
Микрокомандата
е за условен
преход по външно
условие. При
неизпълнение
на проверяваното
условие
адресът за
преход се
взема от
вътрешния
регистър/брояч,
където би
следвало да
бъде записан
предварително.
При изпълнение
на условието
адресът за
преход се
взема от
микрокомандата.
8.
Микрокоманда
RECTΊ1000.
Микрокомандата
е за условен
преход. Условието,
което се
проверява е
вътрешно за
СФАП.
Проверява се
дали
съдържанието
на брояча е
станало
равно на
нула. Ако
условието,
което се
проверява, не
е изпълнено,
т.е. (Бр.)Ή0,
управлението
се предава по
адрес, който
се прочита от
върховата
клетка на
стека. Този
адрес е
входна точка
в цикъла, т.е.
той е адрес
на първата
микрокоманда
от тялото на
цикъла. Освен
проверка на
условието за
край на
цикъла,
микрокомандата
автоматично
модифицира
съдържанието
на брояча:
Бр.:=(Бр.)-1. Тъй
като
условният преход,
който
реализира
тази
микрокоманда,
стои след
тялото на
цикъла,
началната
стойност на
брояча е с
единица
по-малка от
необходимия
брой
повторения.
Ако
условието (Бр.)=0?
е изпълнено,
управлението
се предава на
микрокомандата
в следващия
по ред адрес.
Този изход от
цикъла се
нарича нормален.
Изход от
цикъла може
да настъпи и преждевременно,
т.е. не по
силата на
условието за
край на цикъла.
И в двата
случая на
изход от
цикъла,
входната
точка губи
своята актуалност,
ето защо
адресът за
преход, който
се съхранява
във
върховата
клетка на
стека следва
да бъде изхвърлен
като вече
ненужен. Ето
защо, когато
микрокомандата
RECT
осъществява
изход от
цикъла, тя
модифицира
указателя на
стека: СУ:=(СУ)-1.
9.
Микрокоманда
RPCTΊ1001.
Микрокомандата
е за условен
преход по вътрешното
условие.
Използва се
за организиране
на цикли от
вида с
предварително
известен
брой
повторения.
При
изпълнение
на условието
се излиза от
цикъла, т.е.
управлението
се предава на
микрокомандата
от следващия
адрес. За
разлика от
предидущата
микрокоманда,
при
неизпълнение
на условието
за край на
цикъла,
управлението
се предава на
адрес, който
се взема от
адресната
част на
микрокомандата.
Този адрес е
пряк и следователно
употребата
на тази
микрокоманда
прави
микропрограмата
непреместваема.
Освен
проверката
на условието
за преход микрокомандата
модифицира
съдържанието
на брояча:
Бр.:=(Бр.)-1.
Стековият
указател и
съдържанието
на стека не
се променят -
те не се използват.
10. Микрокоманда
CRTNΊ1010.
Това е
единствената
микрокомандата
за връщане от
микроподпрограма.
Алгоритмичният
преход
връщане от
подпрограма
микрокомандата
реализира
като условен
преход. Условието,
което се
проверява, е
външно. Ако то
е FALSE се извършва
преход към
следващия по
ред адрес.
Ако е TRUE
преходът е от
тип връщане.
Преходът
връщане е по
адрес, който
се извлича от
върховата
клетка на
стека. След
прехода
адресът за
връщане в
стека губи
своята актуалност,
ето защо
приключването
на микрокомандата
предизвиква
модифициране
на стековия
указател
СУ:=(СУ)-1, което
се интерпретира
като изхвърляне
на адреса от
стека.
11. Микрокоманда
CJPPΊ1011.
Микрокомандата
е за условен
преход по външно
условие. Ако
условието за
преход не е
изпълнено се
извършва
преход към
следващия по
ред адрес.
Ако условието
е изпълнено
(КУ=TRUE), адресът
за преход се
взема от
микрокомандата.
В този случай
микрокомандата
изпълнява
още
изхвърляне на
съдържанието
на върховата
клетка на стека,
като
модифицира
стековия
указател: СУ:=(СУ)-1.
Това
действие
прави
микрокомандата
удобна за
реализиране
на преждевременно
излизане от
цикъл, чиято
входна точка
е записана в
стека (става
дума за цикъл
от вида с
предварително
известен
брой
повторения).
Може да се
използва по
аналогичен
начин и за
преждевременно
връщане от
микроподпрограма.
12. Микрокоманда
LDCTΊ1100.
Микрокомандата
е за
безусловен
преход към
следващия по
ред адрес.
Едновременно
с това
извършва
запис във
вътрешния
регистър, но
при
изпълнено
външно
условие.
Записваното
число пристига
по данновата
шина от
адресната
част на микрокомандата.
13. Микрокоманда
LOOPΊ1101.
Микрокомандата
е за условен
преход по външно
условие.
Адресът за
преход, в
случай на неизпълнено
условие (КУ=FALSE),
се взема от
върховата
клетка на
стека. Ако
проверяваното
условие е
изпълнено
(КУ=TRUE), се
осъществява
преход към
следващия по
ред адрес.
Едновременно
с това се
извършва изхвърляне
от стека на
загубилия
актуалност
адрес на входната
точка на
цикъла. Тези
микрооперации
правят
микрокомандата
удобна за
реализация
на цикли с
предварително
неизвестен
брой повторения.
Употребата
на тази
микрокоманда
прави алгоритмичната
структура
цикъл, както
и самата
микропрограмата,
преместваема,
т.е. независима
от адреса на
входната
точка на цикъла.
Разбира се,
за да е
възможно това,
адресът на
входната
точка трябва
да попадне в
стека
автоматично,
в резултат
например на
микрокоманда
PUSH.
14. Микрокоманда
CONTΊ1110.
Микрокомандата
е за
безусловен
преход на следващия
по ред адрес.
Адресът се
взема от микропрограмния
брояч, в
който по
всеки преден
фронт на
тактовите
импулси се
формира, чрез
външното
програмно
управлявано
инкрементиране,
следващият
адрес: МПБр.:=(МПБр.)+CI=(MПБр.)+1.
15. Микрокоманда
TWBΊ1111.
Микрокомандата
е за условен
преход. Условието
за преход е комплексно
формира се
едновременно
от
вътрешното и
външното условия.
Така става
възможен
алгоритмичен
преход с три
разклонения.
Източниците
на адрес за
преход са
три, а
възможните
при
преходите
ситуации са
четири:
· Ако
(Бр.)Ή0 и
външното
условие е FALSE,
то адресът за
преход се
подава от
върховата
клетка на
стека. Едновременно
с това
съдържанието
на брояча се
намалява с
единица. Тези
действия са
удобни за
реализация
на цикъл.
· Ако
броячът се
нулира (Бр.)=0, но
външното
условие
продължава
да е FALSE,
адресът за
преход се подава
от
микрокомандата
по входната
даннова шина.
Едновременно
с това
адресът от
стека се изхвърля,
т.е. извършва
се
модификация
на стековия указател:
СУ:=(СУ)-1.
· Ако
външното
условие е TRUE, а
броячът все
още не се е
нулирал (Бр.)Ή0, адресът за
преход се подава
от
микропрограмния
брояч, т.е.
управлението
се предава на
следващата
по ред микрокоманда.
Едновременно
с това
съдържанието
на вътрешния
брояч се
намалява с
единица
Бр.:=(Бр.)-1, а
адресът във
върховата
клетка на
стека се изхвърля.
· Ако
външното
условие е TRUE,
но броячът се
е нулирал (Бр.)=0,
адресът за преход
пак се подава
от
микропрограмния
брояч.
Едновременно
с това
адресът в
стека се изхвърля,
но
съдържанието
на вътрешния
брояч не се изменя.
Функцията,
която ще
реализира
управляващото
устройство
от фигура 7.5.2, е
представена
чрез
блок-схемата
от фигура 7.5.1. Това което
може да се
види
непосредствено
от нея е,
· че
управлението
се постига
чрез десет на
брой
управляващи
сигнала;
· че
алгоритъмът
зависи от
седем на брой
оповестяващи
сигнала;
· че
в алгоритъма
е употребена
микроподпрограма,
чийто обем е
известен и
той е 80 клетки.
Констатациите,
които могат
да се
направят от
блок-схемата,
се използват
за определяне
на
техническите
параметри на
логическата
схема на
управляващото
устройство.
Така
например
дължината на
мирокомандата
се формира от
дължините на
следните
полета в
нейната
структура:
1.
Микрокоманден
код с
дължина от 4
бита;
2.
Адресно/данново
поле с
дължина 12
бита.
Дължината,
която е
приета в схемата
от фигура VIII.2, е 12[b], но тя
може да бъде
оптимизирана,
ако бъдат
отчетени
реалните
нужди. Това
тук не е
направено с
чисто учебни
мотиви, ето
защо
адресното пространство
е
реализирано
в пълния си
обем от 4К. За
целта са
употребени EPROM
схемите 2732, имащи
организацията
(4Кх8).
3.
Поле
на кода за
избор на
условие.
Дължината на
това поле
първоначално
не е известна.
Тя се
определя по
формулата
,
където с v
е означен
броят на
оповестяващите
сигнали,
подлежащи на
проверка.
Като се има
предвид, че в
дадената
блок-схема те
са 7, става
ясно, че е
необходим
8-входов мултиплексор
и като такъв
е избран този
в интегралната
схема 74151. Кодът
за
управление
на този
мултиплексор
е 3 разряден.
Подключването
на
оповестяващите
сигнали към
съответните
входове на
мултиплексора
е показано
чрез
принципната
логическа
схема -
фигура 7.5.2.
4.
Поле
на
служебните
разряди.
Както вече
беше
пояснено,
служебните
разряди са 4
на брой. Тук
обаче е
отказано
програмното
управление
на входа not(OE) в
СФАП, където
той е
определен с
логическа
константа
нула чрез
включване на
маса (виж
фигура 7.5.2).
Отказването
от програмно
управление
на този вход
води до
намаляване
на дължината на
полето за
служебни
разряди в
микрокомандата
с един бит.
Мотивите за
отказ се
състоят в
това, че няма
друг
източник на
адрес към
микропрограмната
памет освен
СФАП.
5.
Операционна
част на
микрокомандата.
Дължината на
това поле
зависи от
метода за
кодиране на
управляващите
сигнали. В
представения
пример е
избран
метода на хоризонталното
кодиране.
Така
дължината на
полето се
определя на 10
бита по един
за всеки
отделен
управляващ
сигнал.
Oкончателно
дължината на
микрокомандата
се формира
като сума от
дължините на
отделните
полета:
4+12+3+3+10 = 32[b]
Тази
дължина на
регистъра на
микрокомандата
се постига
чрез четири
интегрални схеми
74273, с общо
управление.
Текстът
на
микропрограмата,
който реализира
дадената
блок-схема е
представен в
таблица 7.5.2.
Фиг. 7.5.1. Блок-схема
на
алгоритъма
Във
фоновите
полета около
блоковете на
горната
блок-схема са
показани
адресите на
реализиращите
ги
микрокоманди
в
микропрограмата,
представена
чрез таблица 7.5.2, според
разпределението
на адресното
пространство.
Фиг. 7.5.2. Принципна
логическа
схема на УУ
Както
беше казано
вече,
микропрограмната
памет е
реализирана с
интегралната
схема EPROM 2732. Тази
схема има 24
извода, чието
разпределение
е показано на
долната
рисунка:
където се виждат:
·
12 адресни
изхода (от А0
до А11);
·
8 даннови
линии (в режим
на четени те
са изходни);
·
2 захранващи
извода GND и +5[v];
·
1 разрешаващ
интегралната
схема вход с
инверсно
управление - not(OE).
При not(OE)=1 данновите
линии са
поставени в
състояние NZ
(висок
импеданс
трето
логическо състояние);
·
1 входна
линия СС за
допълнително
захранващо
напрежение PD/PP
(Power Down / Power Program), на
която в режим
на четене
следва да се
подава 0[v].
В
показаната
принципна
схема се има
предвид, че
паметта
работи само в
режим на
четене (СС=0),
ето защо
данновите
изходи са постоянно
разрешени (not(OE)=0) и
съответният
извод е
подключен
към маса.
На
следващата
времедиаграма
са представени
типичните
закъснения
при работа на
паметта в
режим на
четене. Тези
закъснения
следва да се
имат предвид
при
определяне
на максималната
честота на
тактовия
генератор
(или още
продължителността
на тактовия
период Clock).
Останалите
интегрални
схеми
включени в принципната
схема (фигура
VIII.2) не
споменаваме, тъй
като ги
приемаме за
известни и
добре познати
на читателя.
Таблица 7.5.2
Текст на
микропрограмата
Адрес |
МКК |
Апр/D |
КИ |
|
CI |
|
{ УСi } |
Коментар
|
00 |
CJP |
01 |
110 |
0 |
0 |
1 |
0000000000 |
Условен
преход.
Микрокомандата
реализира
блока за
очакване на
сигнала
ПУСК. |
01 |
CONT
|
** |
* |
* |
1 |
1 |
1010000100 |
Безусловен
преход.
Издават се
управля-ващите
сигнали УС1,
УС3 и УС8. |
02 |
CONT |
** |
* |
* |
1 |
1 |
0001100000 |
Безусловен
преход.
Издават се
управля-ващите
сигнали УС4 и
УС5. |
03 |
CONT |
** |
* |
* |
1 |
1 |
0000000000 |
Безусловен
преход.
Празен такт |
04 |
CJP |
0E
|
000 |
0 |
1 |
1 |
0100010001 |
Условен
преход по
условие X1 с
издаване на
управляващите
сигнали УС2,
УС6 и УС10. |
05 |
CJP |
0A
|
100 |
0 |
1 |
1 |
0000000000 |
Условен
преход по
условие X5 без
издаване на
управляващи
сигнали. |
06 |
CONT
|
** |
* |
* |
1 |
1 |
0100000110 |
Безусловен
преход.
Издават се
управля--ващите
сигнали УС2,
УС8 и УС9. |
07 |
CONT |
** |
* |
* |
1 |
1 |
0011001000 |
Безусловен
преход.
Издават се
управля--ващите
сигнали УС3,
УС4 и УС7. |
08 |
CONT |
** |
* |
* |
1 |
1 |
0000000011 |
Безусловен
преход.
Издават се
управля--ващите
сигнали УС9 и
УС10. |
09 |
CONT
|
** |
* |
* |
1 |
1 |
0000111000 |
Безусловен
преход.
Издават се
управля-ващите
сигнали УС5,
УС6 и УС7. |
0A
|
CONT
|
** |
* |
* |
1 |
1 |
1010000100 |
Безусловен
преход.
Издават се
управля-ващите
сигнали УС1,
УС3 и УС8. |
0B |
CJP |
0D
|
101 |
0 |
1 |
1 |
0100010001 |
Условен преход
по условие Х6.
Издават се
сигналите
УС2, УС6 и УС10. |
0C |
CJP |
01 |
* |
1 |
* |
1 |
0000000000 |
Безусловен
преход със
скок. |
0D |
JZ
|
** |
* |
* |
* |
1 |
0000000000 |
Безусловен
преход на
адрес 00h с
ресетиране
на СФАП (в
изходно състояние
и очакване
на нов ПУСК) |
0E |
CJP |
10 |
001 |
0 |
1 |
1 |
0000000000 |
Условен
преход по
условие X2 без
издаване на
управляващи
сигнали. |
0F |
CJP |
01 |
* |
1 |
* |
1 |
0000000000 |
Безусловен
преход със
скок. |
10 |
CJS |
1A |
* |
1 |
1 |
1 |
0000000000 |
Безусловен
преход към
подпрограма
с начален
адрес 1Ah. В
стека се
записва адресът
за връщане 11h. |
11 |
CJP |
18 |
010 |
0 |
1 |
1 |
0000001010 |
Условен
преход по
условие X3 с
издаване на
управляващите
сигнали УС7 и
УС9. |
12 |
CJP |
09 |
011 |
0 |
1 |
1 |
0000000000 |
Условен
преход по
условие X4 без
издаване на
управляващи
сигнали. |
13 |
PUSH |
63 |
* |
1 |
1 |
0 |
0010100000 |
Безусловен
преход на
следващия
по ред адрес
с
безусловен
запис на
начал-ната
стойност 99=63h в
брояча и
запис на
входната
точка на
цикъла 14h в
стека. Издават
се УС3 и УС5. |
14 |
CONT |
** |
* |
* |
1 |
1 |
0000000001 |
Безусловен
преход.
Издава се
управляващия
сигнал УС10. |
15 |
CONT |
** |
* |
* |
1 |
1 |
0000000000 |
Безусловен
преход . |
16 |
RECT |
** |
* |
* |
1 |
1 |
1010101010 |
Условен
преход по
вътрешното
условие (Бр)=0?.
Адресът за
преход 14h се
взема от
стека.
Издават се
сигналите УС1,
УС3, УС5, УС7 и УС9. |
17 |
CJP |
0B |
* |
1 |
* |
1 |
0000000000 |
Безусловен
преход със
скок |
18 |
CJP |
01 |
100 |
0 |
1 |
1 |
0000000000 |
Условен
преход по
условие X5 без
издаване на
управляващи
сигнали. |
19 |
CJP |
13 |
* |
1 |
* |
1 |
0000000000 |
Безусловен
преход със
скок към
микро-команда
PUSH - адрес 13h. |
Забележка:
попълването
със звезда (*) на
някои полета
в
микропрограмата
означава, че
тяхното
съдържание е без
значение за
нейното
изпълнение.
На практика
обаче в тези
полета на
микрокомандите,
т.е. съдържанието
на клетките в
микропрограмната
памет, не
може да бъде
звездички.
Следователно
тези полета
се попълват с
нули или
единици. Кои
стойности ще
бъдат
избрани
зависи от съображенията
на
програмиста.
Обикновено
това са
съображения
за висока
надеждност,
за
шумоустойчивост
или
съображения
за ниска
консумация
на енергия.
Изпълнението
на микропрограмата
може да се
проследи
логически по
блок-схемата,
но определен
интерес представлява
проследяването
на изпълнението
чрез
времедиаграми.
По-долу това
е направено
за отделни
участъци от
микропрограмата,
оценени като
достатъчно
интересни.
Представената
на фигура VIII.3
времедиаграма
изразява превключванията
в различни
точки на логическата
структура на
СФАП и УУ. За
по-лесно изучаване
на
времедиаграмите
читателят следва
да работи с
логическата
структура на
МПУУ, която е
представена
на фигура 7.4.2 в
предходния
раздел.
На
първата ос са
изобразени
тактовите
импулси.
Изработваният
от СФАП адрес
и моментът на
появата му
върху
адресната
шина Y
е показан на
втората ос.
Съдържанието
на регистъра
на
микрокомандата
РгМК
(третата ос)
се изменя по
всеки преден
фронт на
тактовите
импулси.
Микропрограмният
брояч е
реализиран с
разпределена
логика
(отделно
суматор,
отделно
регистър), ето
защо е
показан чрез
две оси:
четвърта ос
(показва
изхода на
микропрограмния
суматор МП.Сум.),
и пета ос
(показва
съдържанието
на
микропрограмния
брояч МП.Бр.).
Прочетеното
от
микропрограмната
памет МПП
съдържание
на подавания
адрес се
появява със
съответното
закъснение
от преходен процес,
както е
показано на
шеста ос чрез
ХХХ.
Фиг. 7.5.3. Времедиаграма
за
изпълнение
на
микропрограмата
при преход
към
микроподпрограмата
На
седмата ос е
показан
разрешаващият
сигнал за
запис в стека
(активна
нула), който
се генерира
при поява в
структурата
на СФАП на
микрокомандния
код CJS.
На деветата
ос е показан
моментът в
който се
модифицира
стековия
указател с +1 и
неговото
съдържание
от i става i+1.
Записът на
съдържанието
на
микропрограмния
брояч в
отворената
клетка на
стека се извършва
от предния
фронт на
следващия
тактов
импулс.
Състоянието
на тази
клетка от стека
е изобразено
на осма ос
(първоначално
свободна,
след това
заета с
шестнадесетичния
адрес 11h). На
последната
десета ос е
изобразена
стойността
на
проверяваното
условие Х2, която
оправдава
съответно
извършения
адресен
преход от
микрокоманда
CJP към адрес 10h,
както е
показано на
времедиаграмата.
На
фигура 7.5.4 е
представена
времедиаграмата
при
изпълнение
на
микропрограмата
в участъка,
включващ
микрокоманда
CJP, която
проверява
условие X4,
когато то не
е изпълнено,
т.е. когато X4=0.
Лъжата
отвежда
изпълнението
на
алгоритъма
към входната
точка на
цикъла с
предварително
известен
брой повторения,
който се
задава от
микрокоманда
PUSH.
Микрокомандата
PUSH
следва да
бъде
последната в
блока за
подготовка
на цикъла,
тъй като тя
съвместява
няколко
микрооперации
- задава
начална
стойност на
брояча (99=63h),
фиксира
входната
точка на
цикъла в
стека (адресът
от
микропрограмния
брояч 14h) и в
същото време
издава
необходимите
управляващи
сигнали (УС3 и
УС5). Записът
на данни във
вътрешния
регистър/брояч
при тази микрокоманда
е условен (по
външно
условие), ето
защо за да се
избегне това
условие, по
това време се
подава
сигналът not(CCE)=1. На
времедиаграмата
са показани
още стойностите
на
вътрешните
сигнали,
управляващи
стека.
Фиг. 7.5.4. Времедиаграма
за
изпълнение
на микропрограмата
при влизане в
цикъла по
вътрешното
условие.
Въпроси
и задачи:
1.
Каква е
основната
теоретична
структура на
реализирания
автомат на
Мур или на
Мили? Каква е
възможността
всяка от тези
структури да
се реализира
в чист вид и
има ли
възможност
да се смесят
двете
структури?
Какви са
възможностите
за
стробиране
на
управляващите
сигнали?
2.
Микропрограмата
от таблица 7.5.2 съдържа
полета, чието
съдържание е
без значение
за нейната
работа. Това
е отбелязано
в полетата чрез
символ (*).
Какви
съображения
бихте изтъкнали
при
конкретизиране
на тези
стойности,
защото в
реални
условия там
следва да има
логическа
стойност?
3.
Разгледайте
възможностите
за оптимизиране
на адресната
част на
микрокомандата.
За целта
оценете
реално необходимия
обем за МПП.
Посочете
възможностите
за физическо
реализиране
на паметта в
адресното
пространство.
В каква
връзка се
намира
дължината на
адресното
поле в микрокомандата
със
стойността
на данните,
които могат
да се
поставят в
същото поле?
4.
Разгледайте
възможностите
за
оптимизиране
на полето за
служебни
разряди.
5.
Оценете
предложената
реализация в
смисъла на
критерия
бързодействие.
Постига ли реализацията
скоростните
възможности
на алгоритъма?
Колко са
въведените
допълнително
празни
тактове? На
кои микрокоманди
точно се
дължат те?
Има ли
комплексни
условия,
които водят
до такива
празни тактове?
Изследвайте
възможностите
ускоряване
на
проверката
на
комплексните
условия?
Изисква ли
това
допълнителни
апаратни
разходи?
6.
Разгледайте
възможностите
за оптимизиране
на
операционната
част на
микрокомандата.
Сравнете
възможностите
на всички
методи за
кодиране на
управляващите
сигнали. Направете
това в
смисъла на
критерия
бързодействие
и в смисъла
на критерия
обем на апаратните
разходи.
7.
Направете
времедиаграми
за различни
тактове от
изпълнението
на микропрограмата.
8.
Разгледайте
възможностите
за реализация
на онази част
от
алгоритъма
за управление
на автомата,
която го
удържа в
изходно състояние
в случаи,
когато
автоматът е
многофункционален.
9.
Анализирайте
сигнала ПУСК.
Той е
асинхронен и
с
неопределена
продължителност.
Какви
изисквания
към този
сигнал бихте
могли да
формулирате,
като имате предвид
изложените
апаратна и
програмна реализации?
Какви
логически
схеми бихте
предложили
за
отстраняване
на
нелогическите
стойности и
смущения от
страна на
механичните
елементи, с
чиято помощ
се
реализират
обикновено
сигналите ПУСК
и Reset?
10.
Коментирайте
възможностите
за реализация
на функцията Reset.
Сигналът е
също
асинхронен и
с неопределена
продължителност.
Какви
изисквания към
този сигнал
бихте могли
да
формулирате,
като имате
предвид
изложените
апаратна и
програмна
реализации?
Посочете
други възможности
за
реализация
на същата
функция на
сигнала.
Анализирайте
и сравнете
отделните
възможности?
Можете ли да
посочите реални
условия, в
които една
или друга
реализация
би могла да
бъде
предпочетена?
11.
Изложете
ограниченията,
които налага
структурата
на схемата Am2910
при
реализиране
на алгоритмичната
структура
цикъл от вида
с предварително
известен
брой
повторения.
12.
Коментирайте
възможностите
на схемата Am2910
за
реализация
на алгоритмични
структури с
вложени
цикли.
13.
Изложете
ограниченията,
които налага
структурата
и
функционирането
на вътрешния стек.
Следващият
раздел е:
http://www.tyanev.com/home.php?s=401&lang=bg&mid=18&mod=1&b=12