
- •Обзор существующих микроконтроллеров.
- •Структура синтезируемого микроконтроллера.
- •Состав ассемблерных команд.
- •Характеристика регистров микроконтроллера.
- •Словесная характеристика ассемблерных команд.
- •Словесная характеристика состава команд позволяет рационально организовать формат команды при вертикальном микропрограммировании, выполнять как дешифрацию команд, так и адресную выборку операндов.
- •Микрокомандное управление.
- •Блок-схема функционирования управляющего автомата.
- •Формирование требований к реализации узлов*.
- •1.1. Узел: регистр счетчик команд, воздействия***:
- •1.2. Узел: память программ, воздействие***:
- •1.3. Узел: декодирование кода операции, воздействие:
- •1.4. Узел: регистр указатель стека, воздействия***:
- •1.5. Узел: регистр флагов, воздействия***:
- •1.6. Узел: анализа состояния отдельного флага, воздействия:
- •1.7. Узел: оперативная память, воздействие:
- •1.8. Узел: преобразователь кодов, воздействие:
- •1.9. Узел: параллельный порт в, воздействия:
- •Функциональная схема микроконтроллера.
- •Вариант задания: группа ____ № _____ .
Микрокомандное управление.
Наличие микрокомандного управления задает последовательность шагов, однозначно интерпретирующих исполнение каждой ассемблерной команды центральным процессорным элементом.
Используя таблицу вертикального кодирования для команд, исполняемых центральным процессорным элементом (см. табл. 2) и анализируя словесные характеристики исполняемых команд, требуется сформировать такую последовательность обращений к узлам центрального процессорного элемента (последовательность шагов), чтобы реализовать словесную характеристику каждой ассемблерной команды. Последовательность обращений всегда имеет несколько различных реализаций, и выбрать одну из них (или создать свою, уникальную) предстоит в данной работе.
Исполнение каждой ассемблерной команды можно представить ниже в виде последовательности шагов (микрокоманд).
Для команды: переход, если «равно» КОп – 1112, ДКОп – 11112:
инкрементировать РСчК;
извлечь код команды из памяти программ;
декодировать код команды (основной и дополнительный);
проанализировать состояния флага z:
если состояние флага z = 0, следовательно, передачи управления нет, готовится к исполнению следующая команда и выполняется переход на исполнение последней микрокоманды;
если состояние флага z = 1, следовательно, выполняется передача управления, и исполняются все следующие микрокоманды (кроме последней);
инкрементировать РСчК;
извлечь следующее слово памяти программ (константу перехода);
алгебраически суммировать текущее состояние РСчК и константы памяти программ;
загрузить новое число в РСчК – перейти к исполнению команды по ветвлению.
инкрементировать РСчК – перейти к исполнению следующей команды.
Для команды абсолютного вызова подпрограммы КОп – 1112, ДКОп – 00002:
инкрементировать РСчК;
извлечь код команды из памяти программ;
декодировать код команды (основной и дополнительный);
декрементировать РУС;
инкрементировать РСчК;
извлечь следующее слово памяти программ, определяющее младшую часть адреса абсолютного перехода (разряды
);
загрузить младший адрес абсолютного перехода в разряды 0…6 ДР;
инкрементировать РСчК;
извлечь следующее слово памяти программ, определяющее среднюю часть адреса абсолютного перехода (разряды
);
загрузить средний адрес абсолютного перехода в разряды 7…13 ДР;
инкрементировать РСчК;
извлечь следующее слово памяти программ, определяющее старшую часть адреса абсолютного перехода (разряды
);
загрузить старший адрес абсолютного перехода в разряды 14…15 ДР;
формировать адрес ОЗУ (по состоянию РУС);
инкремент РСчК;
загрузить содержимое РСчК в ячейку оперативной памяти;
загрузить содержимое ДР в РСчК – перейти к исполнению первой команды вызываемой подпрограммы.
Для команды сброс РОН КОп – 0012:
инкрементировать РСчК;
извлечь код команды из памяти программ;
декодировать код команды (основной);
формировать адрес РОНа, который необходимо обнулить (операнд источник);
читать данные из РОНа источника;
выполнить логическую операцию исключающее ИЛИ над РОНом;
изменить состояние РФ (в соответствии с результатом операции);
загрузить новое значение в РОН приемник (для данной команды операнд источник и операнд приемник один и тот же) – перейти к исполнению следующей команды.
Для команды сложение двух РОН с переносом КОп – 1112, ДКОп – 11002:
инкрементировать РСчК;
извлечь код команды из памяти программ;
декодировать код команды (основной и дополнительный);
инкрементировать РСчК;
извлечь код команды из памяти программ;
формировать адреса РОНов, участвующих в суммировании (операнды источники Rd, Rr);
читать данные из РОНов (Rd, Rr);
выполнить арифметическую операцию суммирования содержимого двух РОНов (Rd + Rr);
прибавить, к полученной сумме, содержимое флага перенос;
изменить состояние РФ, в соответствии с выполненным действием;
загрузить новое значение в РОН – перейти к исполнению следующей команды.
Для команды сложение двух РОН КОп – 1112, ДКОп – 01002:
инкрементировать РСчК;
извлечь код команды из памяти программ;
декодировать код команды (основной и дополнительный);
инкрементировать РСчК;
извлечь код команды из памяти программ;
формировать адреса РОНов, участвующих в суммировании (операнды источники Rd, Rr);
читать данные из РОНов (Rd, Rr);
выполнить арифметическую операцию суммирования содержимого двух РОНов (Rd + Rr);
изменить состояние РФ, в соответствии с выполненным действием;
загрузить новое значение в РОН – перейти к исполнению следующей команды.
Для команды перевод в дополнительный код РОН КОп – 0102:
инкрементировать РСчК;
извлечь код команды из памяти программ;
декодировать код команды (основной);
формировать адрес РОНа, участвующего в переводе (операнд источник Rd);
читать данные из РОНа источника;
выполнить арифметическую операцию вычитания содержимого РОН из нуля (0 - Rd);
изменить состояние РФ (в соответствии с результатом операции);
загрузить новое значение в РОН приемник (для данной команды операнд источник и операнд приемник один и тот же) – перейти к исполнению следующей команды.
Для команды декремент РОН КОп – 0112:
инкрементировать РСчК;
извлечь код команды из памяти программ;
декодировать код команды (основной);
формировать адрес РОНа, участвующего в декрементировании (операнд источник Rd);
читать данные из РОНа (Rd);
выполнить арифметическую операцию вычитание единицы из содержимого РОН (Rd - 1);
изменить состояние РФ (в соответствии с результатом операции);
загрузить новое значение в РОН приемник (для данной команды операнд источник и операнд приемник один и тот же) – перейти к исполнению следующей команды.
Для команды пересылки данных между двумя РОНами КОп – 1012:
инкрементировать РСчК;
извлечь код команды из памяти программ;
декодировать код команды (основной);
формировать адрес РОНа, откуда берутся данные (операнд источник Rr);
читать данные из РОНа (Rr);
инкрементировать РСчК;
извлечь код команды из памяти программ;
формировать адрес РОНа, для внесения данных (операнда приемника Rd);
загрузить новое значение в РОН приемник – перейти к исполнению следующей команды.
Для команды косвенного чтения данных в РОН из ОЗУ КОп – 1112, ДКОп – 11102:
инкрементировать РСчК;
извлечь код команды из памяти программ;
декодировать код команды (основной и дополнительный);
формировать адрес РОНа (адреса РОНов), с указанием ячейки ОЗУ (операнд источник косвенно указан индексом Z);
формировать адрес ячейки ОЗУ;
читать данные из ОЗУ;
инкрементировать РСчК;
извлечь код команды из памяти программ;
формировать адрес РОНа, для внесения данных (операнда приемника Rd);
загрузить новое значение в РОН приемник – перейти к исполнению следующей команды.
Для команды сохранение в стеке содержимого РОН КОп – 1002:
инкрементировать РСчК;
извлечь код команды из памяти программ;
декодировать код команды (основной);
декрементировать РУС;
формировать адрес РОНа, данные которого необходимо внести в стек (операнд источник Rr);
читать данные из РОНа (Rr);
формировать адрес ОЗУ (адрес содержится в РУС);
загрузить содержимое РОНа в ячейку памяти – перейти к исполнению следующей команды.
Для команды возврата из подпрограммы обработки прерывания КОп – 1112, ДКОп – 10002:
инкрементировать РСчК;
извлечь код команды из памяти программ;
декодировать код команды (основной и дополнительный);
формировать адрес ячейки памяти ОЗУ, которой содержится в РУС;
читать данные из ячейки оперативной памяти;
загрузить содержимое ячейки памяти в РСчК;
установить флаг I, регистра флагов;
инкрементировать РУС – перейти к исполнению следующей команды.
Для команды преобразование числа КОп – 1102:
инкрементировать РСчК;
извлечь код команды из памяти программ;
декодировать код команды (основной);
формировать адрес РОНа приемника (операнд приемник Rd);
загрузить число с выходов преобразователя кодов в РОН приемник;
изменить состояние РФ (в соответствии с результатом операции);
перейти к исполнению следующей команды.
Схемотехническая реализация центрального процессорного элемента с использованием микрокомандного управления позволяет создать временнýю последовательность сигналов жестко управляющих процессом исполнения каждой ассемблерной команды.