§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