
- •Обзор существующих микроконтроллеров.
- •Структура синтезируемого микроконтроллера.
- •Состав ассемблерных команд.
- •Характеристика регистров микроконтроллера.
- •Словесная характеристика ассемблерных команд.
- •Словесная характеристика состава команд позволяет рационально организовать формат команды при вертикальном микропрограммировании, выполнять как дешифрацию команд, так и адресную выборку операндов.
- •Микрокомандное управление.
- •Блок-схема функционирования управляющего автомата.
- •Формирование требований к реализации узлов*.
- •1.1. Узел: регистр счетчик команд, воздействия***:
- •1.2. Узел: память программ, воздействие***:
- •1.3. Узел: декодирование кода операции, воздействие:
- •1.4. Узел: регистр указатель стека, воздействия***:
- •1.5. Узел: регистр флагов, воздействия***:
- •1.6. Узел: анализа состояния отдельного флага, воздействия:
- •1.7. Узел: оперативная память, воздействие:
- •1.8. Узел: преобразователь кодов, воздействие:
- •1.9. Узел: параллельный порт в, воздействия:
- •Функциональная схема микроконтроллера.
- •Вариант задания: группа ____ № _____ .
Словесная характеристика ассемблерных команд.
Словесная характеристика содержит указания на операнды участвующие при исполнении команды.
Перед формированием словесной характеристики ассемблерных команд, целесообразно выполнить предварительный совместный анализ разрядности кода команды, состава команд разбитого на группы, количества РОНов и разрядности памяти.
По техническому заданию: разрядность кода команды 7 бит, состав – 12 команд. Состав команд разбит на 5 групп, следовательно, при кодировании операционной части по группам требуется три двоичных разряда, а при кодировании по составу – четыре. Выбирается кодирование операционной части по группам (тремя двоичными разрядами). При кодировании операционной части тремя двоичными разрядами, неизбежно использование расширенного кодирования кода операции, которое целесообразно использовать для команд передачи управления, т.к. при разрядности кода команды в 7 бит неизбежна потребность в одном или более дополнительных словах задающих константу, изменяющую содержимое РСчК.
По техническому заданию: разрядность кода команды 7 бит, количество РОНов – 20, следовательно, при кодировании операционной части тремя разрядами для кодирования адресной части остается четыре двоичных разряда. Для адресации 20 РОНов требуется пять двоичных разрядов, следовательно, все коды команд должны содержать два слова, причем во втором слове используется только один бит из семи поэтому, сократив количество РОНов до 16 можно исключить второе слово из каждой команды.
По техническому заданию: разрядность кода команды 7 бит, объем памяти программ – 64 кслова. Для адресации всего объема памяти требуется 16 двоичных разрядов, поэтому, при 7ми разрядном коде команды требуется три дополнительных слова, представляющих произвольный абсолютный адрес.
По техническому заданию: разрядность кода команды 7 бит, переход по условию – 64 слова. Для адресации перехода на 64 слова с учетом знака требуется 7 двоичных разрядов, поэтому, при 7ми разрядном коде команды требуется одно дополнительное слово представляющее смещение для условного перехода.
Словесная характеристика исполняемых команд приведена по техническому заданию с учетом совместного анализа, а также с указанием математического отображения операции (при его существовании), кроме того, словесная характеристика подробно указывает, как на месторасположение операндов, так и на структуру команд (с учетом организации памяти).
1. Переход если «равно» – BREQ k – выполняется по состоянию флага z = 1, при этом величина изменения числа в РСчК задается константой со знаком k. Для обеспечения перехода в диапазоне 64 слова из области памяти программ требуется использовать структуру ассемблерной команды, состоящую из двух слов, где первое слово содержит расширенный КОп, а второе – диапазон перехода.
2. Абсолютный вызов подпрограммы – CALL K – выполняется по произвольному адресу, указанному константой без знака k, которая вносится в РСчК. Для обеспечения вызова подпрограммы из произвольного адреса памяти программ в диапазоне 64 кслова требуется использовать структуру ассемблерной команды, состоящую из четырех слов, где первое слово содержит расширенный КОп, а оставшиеся – абсолютный адрес вызываемой подпрограммы.
3. Сброс РОН – Rd = Rd Rd – выполняется для произвольного РОНа. Для обеспечения обнуления РОНа используется логическая операция исключающее или для одного и того же регистра, поэтому, требуется использовать структуру ассемблерной команды, состоящую из одного слова, где три разряда составляют КОп, а оставшиеся четыре – номер РОНа который требуется обнулить. (Сброс РОНа можно выполнить и другим способом).
4. Сложение двух РОНов с переносом – Rd = Rd + Rr + C – выполняется для произвольных РОНов, при этом результат операции вносится в РОН указанный в характеристике поля Rd. Реализация данной операции требует использовать структуру ассемблерной команды, состоящую из двух слов, где первое слово содержит расширенный КОп, а второе двухадресную структуру, определяющую участвующие РОНы, при этом вносятся ограничения на РОНы участвующие в качестве операндов источников.
5. Сложение двух РОНов – Rd = Rd + Rr – идентично предыдущей команде, кроме дополнительного кода операции.
6. Перевод в дополнительный код РОНа – Rd = 00H – Rd – выполняется для произвольного РОНа. Для обеспечения перевода в дополнительный код содержимого произвольного РОНа используется арифметическая операция вычитания содержимого РОНа из нуля, поэтому, требуется использовать структуру ассемблерной команды, состоящую из одного слова, где три разряда составляют КОп, а оставшиеся четыре – номер РОНа, содержимое которого переводится в дополнительный код.
7. Декремент РОНа – Rd = Rd - 1 – выполняется для произвольного РОНа. Для обеспечения декремента содержимого произвольного РОНа используется арифметическая операция вычитания единицы из содержимого РОНа, поэтому, требуется использовать структуру ассемблерной команды, состоящую из одного слова, где три разряда составляют КОп, а оставшиеся четыре – номер РОНа, содержимое которого уменьшается на единицу.
8. Пересылка данных между двумя РОНами – Rd = Rr – выполняется для произвольных РОНов. Результат операции сводится к внесению содержимого РОНа указанного характеристикой поля Rr по адресу РОНа указанного в характеристике поля Rd. Реализация данной операции требует использовать структуру ассемблерной команды, состоящую из двух слов, где три разряда первого слова составляет КОп, а оставшиеся четыре – характеристику РОНа источника, второе слово составляет одноадресную структуру, определяющую РОН приемник, при этом три разряда идентичных КОпу остаются в резерве.
9. Косвенное чтение данных в РОН из ячейки памяти данных – Rd = [Z] – выполняется для группы специализированных РОНов. Результат операции сводится к внесению содержимого из ячейки памяти данных, адрес которой содержится в группе регистров [Z] указанного характеристикой поля Z по адресу РОНа указанного в характеристике поля Rd. Реализация данной операции требует использовать структуру ассемблерной команды, состоящую из двух слов, где пять разрядов первого слова содержит КОп, а оставшиеся два – характеристику группы регистров [Z] источника, второе слово составляет одноадресную структуру, определяющую РОН приемник, при этом три разряда идентичных КОпу остаются в резерве.
10. Сохранение в стеке содержимого регистра – PUSH Rr – выполняется для произвольного РОНа. Результат операции сводится к внесению содержимого РОНа, адрес которого содержится в характеристике поля Rr в стек. Реализация данной операции требует использовать структуру ассемблерной команды, состоящую из одного слова, где три разряда составляют КОп, а оставшиеся четыре – номер РОНа, содержимое которого вносится в стек.
11. Возврат из подпрограммы обработки прерываний – RET I – выполняется по произвольному адресу, указанному в стеке, который вносится в РСчК. Для обеспечения возврата из подпрограммы используется структура ассемблерной команды, состоящая из одного слова, которое содержит расширенный КОп.
12. Преобразование числа – FUN1 Rd, PORTB – выполняется для произвольного РОНа. Результат преобразования вносится в РОН указанный в характеристике поля Rd. Для обеспечения преобразования числа специальный узел микроконтроллера – преобразователь кодов. На вход преобразователя кодов поступает число с выходов регистра порта В, а на выходах формируется стандартное двоичное число, поэтому, требуется использовать структуру ассемблерной команды, состоящую из одного слова, где три разряда составляют КОп, а оставшиеся четыре – номер РОНа, в который вносится двоичное число.