русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Структура синтезируемого микроконтроллера.


Дата добавления: 2014-11-27; просмотров: 904; Нарушение авторских прав


 



 


оооооооооооооооо

Рис. 2 Лицевая панель генератора слова


В этом случае при работе генератора на входе комбинационной схемы будут возникать все возможные комбинации двоичных сигналов, соответствующие десятичным числам от 0 до 7. Для того чтобы в циклическом режиме (Cycle) или режиме пачки кодов (Burst) на выходе генератора возникали только внесенные данные, рекомендуется установить начальное (Initial = 0000) и конечное

(Final = 0007) значение адреса данных. Для получения десятичного числа, на выходе генератора рекомендуется

подключить семисегментный

цифровой индикатор.

 

 

3. Для создания комбинационной схемы рекомендуется использовать логический преобразователь ( Рис. 3 ),



Рис. 3 Лицевая панель логического преобразователя

 

предназначенный для получения таблицы состояний комбинационной схемы, для преобразования таблицы истинности в логическую функцию и наоборот, а также для преобразования логической функции в схему устройства на логических элементах. Предварительно необходимо записать логическую функцию комбинационной схемы в совершенной нормальной дизъюнктивной форме. Логическое отрицание переменной вводится одновременным нажатием клавиш Shift и стрелка вправо. Если функция задается в табличной форме, то на рабочей панели логического преобразователя необходимо возбудить любые три соседних входа, например, ABC или FGH. После появления таблицы сочетаний входных аргументов в колонке откликов необходимо проставить значения функции.

3. Перейти от табличной формы к аналитической, нажав на панели преобразователя клавишу:

 

 

 

5. Перейти от аналитической формы к реализации схемы на элементах И, ИЛИ, НЕ, для чего нажать на панели логического преобразователя клавишу:



 

6. Подать на входы схемы сигналы от генератора логических сигналов,

выход схемы соединить с индикатором, включить схему и убедиться в правильном ее функционировании.

7. Минимизировать логическое выражение, нажав клавишу

 

При этом по умолчанию схема формируется с использованием только двухвходовых логических элементов. Корректировка количества входов возможна после двойного щелчка левой кнопкой мыши на изображении элемента.

8. Продемонстрировать работу схемы преподавателю и ответить на контрольные вопросы.

Пример: Лампочка загорится, если нажать только две левые или только две правые кнопки из трех. Получить аналитическое выражение и реализовать его на логических элементах:

А-И,ИЛИ,НЕ;

Б- двухвходовых И-НЕ;

В-_элементах И-НЕ с произвольным числом входов.

 

Решение : После входа в программу EWB,нажатием левой клавиши мыши на иконку New, приступаем к решению задачи.

Выполнив действия по пункту 2 получим изображение настроенного генератора.

 

Вызываем изображение панели логического преобразователя и производим его настройку. Для этого возбуждаем входы : А ,В и С, щелкнув последовательно по этим входам левой клавишей мыши . На экране прибора появится таблица сочетаний входных аргументов из восьми строк. Переводим курсор мыши на первую строку таблицы в колонке OUT и программируем выходной сигнал из расчета 1-лампочка горит, 0- не горит. На вторую и последующие строки таблицы курсор переходит автоматически. Выполняем пункт 4 и в нижнем окне прибора получаем аналитическое выражение функции.


После выполнения пункта 5 логический генератор синтезирует схему в базисе И, ИЛИ, НЕ. Для выполнения пункта 6 необходимо нацелить курсор мыши на кружок выходной клеммы генератора слов и добиться его затемнения. Не сбивая положения курсора, нажать на левую кнопку мыши и удерживая ее нажатой плавно перевести

 

курсор на одну из входных клемм синтезированной схемы. В момент появления в месте соединения точки осторожно отпустить кнопку мыши. Оснастить схему индикаторами, соединить их со схемой.

В процессе выполнения пункта 7, получим схему, реализованную на двухвходовых элементах И-НЕ,

 

а после корректировки числа входов некоторых элементов схема примет следующий вид

Контрольные вопросы и задания

1. Почему элементы И-НЕ и ИЛИ-НЕ считаются универсальными ?

2. Реализуйте задачу с использованием только двухвходовых или
трехвходовых элементов ИЛИ-НЕ.

3. Реализуйте задачу с использованием мультиплексора.

4. Назовите основные признаки комбинационного устройства.

Литература:

1. Карлащук В.И. Электронная лаборатория на IBM PC. Программа
EWB и ее применение. ООО Издательство ' Солон- Р '.Москва.
2000.

2. Кучумов А.И. Электроника и схемотехника: Учебное пособие.-М.;
Гелиос АРВ, 2002.- 304 с; ил.

 

Структура синтезируемого микроконтроллера.

Используя первоначальное техническое задание и его функции, требуется определить, как элементы структуры синтезируемого микроконтроллера, при помощи которых его схемотехническая реализация наиболее полно отображает изложенные требования, так и количество выводов корпуса, обеспечивающих прием и передачу внешних сигналов. Следует отметить, что кроме функций указанных в техническом задании, необходимо обеспечить и собственные потребности синтезируемого микроконтроллера. Структура внешних выводов микроконтроллера приведена в табл. 1.

Таблица 1.

Внешние выводы микроконтроллера и их характеристики.

Функция Обозначение Тип вывода К-во
Положительный вход источника питания VCC питание
Общий вывод GND питание
Вход внешнего тактового генератора XTAL1 вход
Выход внешнего тактового генератора XTAL2 выход
Вход сброса микроконтроллера RESET вход
Ввод импульсов – параллельный порт PAØ…PA11 вход
Ввод номера группы – параллельный порт PBØ…PB4 вход
Вывод параметров измерений – последо-вательный периферийный интерфейс SPIØ…SPI3 вход/выход
Всего выводов

Как показано в табл. 1, для схемотехнической реализации микроконтроллера потребуется 26 внешних выводов, следовательно, такую реализацию может обеспечить корпус DIP-28, при этом остается два незадействованных внешних вывода.

Анализируя первоначальное техническое задание и его функции, требуется определить при помощи каких узлов микроконтроллера можно реализовать все изложенные задачи, при этом следует обратить внимание на формирование уникальных команд (уникальные команды реализуют функцию, которая встречается только в данном техническом задании). Структура функциональных узлов микроконтроллера приведена в табл. 2. Обоснование выбора каждого узла в синтезируемом микроконтроллере приводится разработчиком самостоятельно.

Таблица 2.

Состав функциональных узлов микроконтроллера.

Функция Узел Примечание
Измерение длительности входящих импульсов таймер наличие предделителя
Вычисление параметров входящих импульсов процессор наличие уникальных команд
Передача параметров измерений последовательный периферийный интерфейс стандартный
Управление работой микроконтроллера процессор  
Прием входящих импульсов порт А 12 разрядов
порт В 5 разрядов
Вывод микроконтроллера в исходное состояние сброс поддержка корректности работы
Контроль последовательности обработки прерываний поддержка корректности работы
Контроль зацикливания программы сторожевой таймер поддержка корректности работы

Примечание. Таблицы 1 и 2 не повторяются.

Аналогично существующим микроконтроллерам, используя данные табл. 1 и 2 формируется структурная схема для синтезируемого микроконтроллера, как показано на рис. 1.

 

 

 
 

 

 


На рис. 1 штрихпунктирной линией обведена синтезируемая часть микроконтроллера. Прямые линии, пересекающие штрихпунктирную, отображают внешние сигналы. Структурная схема отображает общие взаимосвязи узлов микроконтроллера.

Структурная схема синтезируемого микроконтроллеранаглядно отображает все узлы и взаимосвязи между ними.

3. Состав ассемблерных команд.

Состав команд – это команды, которые исполняются центральным процессорным элементом микроконтроллера и не могут изменяться при его эксплуатации т.к. все они жёстко запрограммированы на стадии проектирования.

Состав исполняемых команд определяется доминирующей специализацией синтезируемого микроконтроллера и содержит как стандартные, так и уникальные (реализуемые только в данном микроконтроллере) команды. Для реализации исполнения программы обработки измеряемых и вычисляемых параметров входящих импульсных последовательностей разработчик самостоятельно формирует и поясняет потребность каждой команды входящей в состав команд.

Пусть, для выполнения ТЗ, достаточно приведенного ниже состава ассемблерных команд, где указаны их название и мнемоническое обозначение: (разработчику самостоятельно требуется сформировать полный состав ассемблерных команд):

1. Переход по условию, если «равно» (ветвление) – BREQ k;

2. Абсолютный вызов подпрограммы – CALL K;

3. Сброс содержимого РОН – CLR Rd;

4. Сложение содержимого двух РОН с переносом – ADC Rd, Rr;

5. Сложение содержимого двух РОН – ADD Rd, Rr;

6. Перевод в дополнительный код содержимого РОН – NEG Rd;

7. Декремент содержимого РОН – DEC Rd;

8. Пересылка содержимого между двумя РОНами – MOV Rd, Rr;

9. Косвенное чтение содержимого ячейки памяти ОЗУ в РОН – LD Rd, Z;

10. Сохранение в стеке содержимого регистра – PUSH Rr;

11. Возврат из подпрограммы обработки прерываний – RET I;

12. Преобразование числа представленного кодом «два из пяти» в двоичное число кода 4-2-1, а также внесение преобразованного двоичного числа в РОН – FUN1 Rd, PORTB.

Примечание. Во всех примерах методических указаний соблюдается нумерация команд в соответствии со списочным составом.

На основании состава команд синтезируемого микроконтроллера, можно сформировать группы:

° логических команд – сброс РОНа (3);

° арифметических команд – сложение двух РОН с переносом (4), сложение двух РОН (5), перевод РОНа в дополнительный код (6), декремент РОНа (7);

° команд передачи управления – переход по условию (состоянию флага) (1), абсолютный вызов подпрограммы (2), возврат из подпрограммы обработки прерываний (11);

° команд пересылки данных – между двумя любыми РОНами (8), косвенное чтение данных в РОН из ячейки памяти ОЗУ (9), сохранение в стеке содержимого регистра (10);

° уникальных команд – преобразования кода (12).

В общем случае, по составу, команды синтезируемого микроконтроллера, можно разбить на группы: арифметические, логические, пересылки данных, передачи управления, специальные, операции с битами, сдвига, управления системой, уникальные.

Использование состава командпозволяет оптимизировать управляющий блок центрального процессорного элемента при его схемотехнической реализации.

4. Характеристика регистров микроконтроллера.

Используя общие характеристики микроконтроллера, приведенные в техническом задании, целесообразно привести сводную таблицу, характеризующую количество двоичных разрядов каждого из регистров микроконтроллера. Количество разрядов однозначно определяется функцией регистра и структурой запоминающего или периферийного устройства, с которым связан данный регистр:

Ø регистр счетчик команд (РСчК) – указывает на физический адрес ячейки памяти, где хранится исполняемая команда, следовательно, РСчК связан с областью памяти программ и его разрядность определяется количеством адресуемых ячеек памяти программ (ПЗУ);

Ø регистр указатель стека (РУС) – указывает на физический адрес ячейки памяти, где временно дублируются данные любого из регистров, следовательно, РУС связан с областью памяти данных и его разрядность определяется количеством адресуемых ячеек оперативной памяти для хранения данных (ОЗУ);

Ø регистр флагов (РФ) – содержит признаки выполнения операции, следовательно, его разрядность определяется количеством использующихся флагов (I, T, H, S, V, N, Z, C, ошибка кода);

Ø регистр общего назначения (РОН) – содержит произвольные данные, следовательно, его разрядность определяется разрядностью памяти данных либо техническим заданием;

Ø дополнительный регистр (ДР) – дублирует данные регистра на время выполнения ассемблерной команды исполнительным устройством, следовательно, его разрядность должна быть равной или превышать разрядность копируемого регистра, при этом дополнительный регистр недоступен программисту (по необходимости, может быть несколько дополнительных регистров различной разрядности);

Ø специальный регистр (СР) – содержит данные о состояниях внутренних узлов и/или устройств микроконтроллера, следовательно, его разрядность должна обеспечивать функционирование этих узлов и/или устройств (рекомендуется разрядность специальных регистров приравнивать разрядности РОНов, по необходимости, может быть несколько специальных регистров).

Схемотехническая реализация регистров микроконтроллера основывается на их разрядности, разрядность задаётся объемом памяти устройств, которыми они управляют (РСчК и РУС) либо исполняемыми функциями (прочие регистры).

В соответствии с приведенным выше ТЗ, разрядная сетка регистров синтезируемого микроконтроллера приведена в табл. 3.

Таблица 3.

Количество двоичных разрядов регистров микроконтроллера.

Название регистра РСчК РУС РОНы РФ ДР1 ДР2 СР1 СР2
Количество разрядов Не менее 8

Примечание. ДР1 – дублирует данные любого из регистров, ДР2 –только РФ, ДР3 – сдвоенного РОНа, функции специальных регистров будут определены ниже.

 

 


Кодирование ассемблерных команд возможно только при единой структуре формата для всех команд синтезируемого микроконтроллера.

Ассемблерная команда представляет собой код, определяющий как последовательность действий управляющего блока микроконтроллера, так и характеристику операндов, задающих типы узлов операционного блока, которые участвуют при исполнении данной команды. Ассемблерная команда содержит также в явной или в неявной форме информацию о том, где расположены операнды, участвующие при выполнении данной команды, куда поместить результат после выполнения команды и каким будет адрес следующей исполняемой команды.

Структурно, в общем случае, код ассемблерной команды, состоит из двух частей:

ü операционной–основной, всегда присутствующей в коде команды и отображающей код операции (КОп), при этом КОп в неявной форме задает вид исполняемой команды (арифметическая; безусловный переход; логическая; сдвига, прочие и т.д.);

ü адресной–дополняющей операционную и содержащей либо характеристики расположения операндов, до и после исполнения команды (их адреса или имена), либо характеристику адреса следующей команды (константу, указывающую на переход).

И операционная, и адресная части ассемблерной команды состоят из нескольких полей, количество которых определяется характеристиками микроконтроллера.

Взаимное расположение операционной и адресной частей в команде определяет структуру команды. Команды с одинаковым количеством однотипных операндов удобно группировать в однородные структуры.

Структура кода ассемблерной команды с разметкой номеров разрядов (бит) определяющих границы отдельных полей команды называется форматом команды, при этом однородные команды обладают идентичным форматом. Такая организация формата команд называется вертикальным микропрограммированием,иполучила наибольшее распространение. Одно из достоинств вертикального микропрограммирования – возможность создания кодов различного формата, как операционной, так и адресной частей, при этом, не задавая явно ни вид операции, ни операнды, участвующие в ней.

Количество разрядов операционной части формата команд определяется, в общем случае, количеством кодов команд и при этом может содержать один или более вариантов расширенного кодирования операций, где совместно с КОп используется дополнительный код операции (ДКОп).

Адресная часть формата команды разбивается на части, количество которых равно количеству операндов требующихся для выполнения данной команды. В общем случае, к операндам можно отнести имена регистров, адреса ячеек памяти, цифровые константы, имеющие смысл числа для математических вычислений, или определяющие адрес перехода. Количество разрядов операционной части определяется составом ассемблерных команд, которые исполняются центральным процессорным элементом синтезируемого микроконтроллера.

В зависимости от соотношения разрядности кода команды, количества РОНов, глубины переходов по условию, разрядности памяти программ формат команды может содержать как одно слово, так и два, и три, и более слов.

Используя структуру кода вертикального микропрограммирования можно создать следующие форматы ассемблерных команд:

Ø безадресные – содержащие только КОп – используются для выполнения операций, где однозначно указана последовательность действий, пример приведен на рис. 2,а;

Ø безадресные с константой – содержащие КОп и константу, причем константа характеризует изменение состояния микроконтроллера – используются для выполнения операций, где прерывается линейное выполнение программы; изменяется состояние периферийного устройства, пример приведен на рис. 2,б;

Ø одноадресные – содержащие КОп и характеристику одного операнда – используются для выполнения операций, где выполняется действие над указанным операндом и тот же операнд изменяется в результате выполненного действия, пример приведен на рис. 3;

Ø двухадресные – содержащие КОп и характеристику двух операндов – используются для выполнения операций, где выполняется совместное действие над двумя указанными операндами, причем результат выполненного действия помещается в операнд приемник, пример приведен на рис. 4;

Ø трехадресные – содержащие КОп и характеристику трех операндов – используются для выполнения операций, где выполняется совместное действие над тремя указанными операндами, причем результат выполненного действия помещается в операнд приемник;

 

№ слова Биты формата безадресной ассемблерной команды.
6 5 4 3 2 1 0
ДКОп КОп

 

№ слова Биты формата безадресной ассемблерной команды.
6 5 4 3 2 1 0
ДКОп КОп
Константа перехода

 

 
 

 


№ слова Биты формата безадресной ассемблерной команды.
6 5 4 3 2 1 0
Rd КОп

 

 

 
 

 

 


№ слова Биты формата безадресной ассемблерной команды.
6 5 4 3 2 1 0
Rr КОп
Rd резерв

 

 

В тех случаях, когда количество разрядов в одном слове недостаточно для требуемого вертикального кодирования, создается структура команды в два, три адреса или больше, в зависимости от разрядностей: формата команды, операндов, памяти.

Безадресные и одноадресные команды, как правило, состоят из одного слова, независимо от разрядностей формата команды и операндов.

Наиболее рационально использовать для двухадресных команд формат кода состоящего из одного слова, что достигается ограничениями на использование РОНов или ограничением их количества.

Формат трехадресной команды аналогичен формату двухадресной, причем для трехадресной команды отсутствует резерв (см. рис. 4).

Для удобства создания кодов ассемблерных команд необходимо предварительно сформировать пронумерованные характеристики всех исполняемых команд, с учетом структуры каждой из них, а затем создать таблицы, содержащие однородные форматы команд.

Схемотехническая реализация центрального процессорного элемента, при вертикальном кодировании формата ассемблерных команд, позволяет эффективно выполнять как дешифрацию команд, так и адресную выборку операндов.

1. Словесная характеристика ассемблерных команд.

Словесная характеристика содержит указания на операнды участвующие при исполнении команды.

Перед формированием словесной характеристики ассемблерных команд, целесообразно выполнить предварительный совместный анализ разрядности кода команды, состава команд разбитого на группы, количества РОНов и разрядности памяти.

По техническому заданию: разрядность кода команды 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. Для обеспечения преобразования числа специальный узел микроконтроллера – преобразователь кодов. На вход преобразователя кодов поступает число с выходов регистра порта В, а на выходах формируется стандартное двоичное число, поэтому, требуется использовать структуру ассемблерной команды, состоящую из одного слова, где три разряда составляют КОп, а оставшиеся четыре – номер РОНа, в который вносится двоичное число.

Словесная характеристика состава команд позволяет рационально организовать формат команды при вертикальном микропрограммировании, выполнять как дешифрацию команд, так и адресную выборку операндов.

2. Таблица кодирования команд.

Таблица кодирования команд является завершением аналитической разработки формата вертикального микропрограммирования всех команд.

Анализируя словесные характеристики исполняемых команд, на основании вертикального кодирования и структуры их формата, можно сделать вывод, что команды, приведенные в ТЗ подразделяются на:

® безадресные– возврат из подпрограммы обработки прерываний (11);

® безадресные с константой– переход по условию (1), абсолютный вызов подпрограммы (2);

® одноадресные– сброс содержимого РОНа (3), перевод в дополнительный код содержимого РОНа (6), декремент содержимого РОНа (7), сохранение в стеке содержимого регистра (10); функция преобразования кода (12);

® двухадресные– сложение содержимого двух РОН с переносом (4), сложение содержимого двух РОН (5), пересылка данных между двумя РОНами (8), косвенное чтение данных в РОН из ячейки памяти данных (9).

Обобщив краткие словесные характеристики исполняемых команд, формируется таблица их вертикального кодирования, исполняемая центральным процессорным элементом, как показано в табл. 4.


Таблица 4.

Кодирование всех ассемблерных команд.

Мнемоническое обозначение команды Код коман-ды Слов Формат ассемблерной команды.
коли-чество номер 6 5 4 3 2 1 0
CLR Rd; NEG Rd; DEC Rd. ** Rd КОп – 1, 2, 3
CLR R11; (обнулить регистр 11) 59h
CLR R1; (обнулить регистр 1) 09h
NEG R7; (перевод в доп. код рег. 7) 3Ah
NEG R9; (перевод в доп. код рег. 9) 4Ah
DEC R8; (уменьшить на 1 регистр 8) 43h
DEC R12; (уменьшить на 1 регистр 12) 63h
PUSH Rr; ** Rr КОп – 4
PUSH R7; (внести в стек регистр 7) 3Ch
PUSH R1; (внести в стек регистр 1) 0Ch
MOV Rd, Rr; ** Rr КОп – 5
Rd резерв
MOV R13, R5; (данные регистра 5 внести в регистр 13) 6D,28h
*(0) *(0) *(0)
FUN1 Rd, PORTB; ** Rd КОп – 6
FUN1 R5, PORTB; (в регистр 5 вносится двоичный код с выходов ПК) 2Eh
BREQ k; ** ДКОп – 15 КОп – 7
Константа перехода – k
BREQ 117; (переход на минус 53 слова, при установленном флаге Z ) 7F,75h
LD Rd, Z; ** [Z] ДКОп – 2 КОп – 7
Rd резерв
LDR5, Z; (данные ячейки памяти адр. которой указан в рег.Z внести в рег. 5) 77,28h
*(0) *(0) *(0)
CALL K ** ДКОп – 0 КОп – 7
Константы абсолютного вызова подпрограммы – k (три слова)
CALL 5DF5h; (переход по абсолютному адресу вызываемой подпрограммы 5DF5h) 07, 5DF5h
*(0) *(0) *(0) *(0) *(0)
ADC Rd, Rr; ADD Rd, Rr; ** ДКОп – 12, 4 КОп – 7
Rd Rr
ADC R8, R5; (сложение с учетом переноса, содержимого регистров 8 и 5) 67,45h
ADD R10, R7; (сложение содержимого регистров 10 и 7) 27,57h
RET I ** ДКОп – 8 КОп – 7
RET I; (возврат из прерывания) 47h

Примечания к таблице 2. ** –выделены коды без указания конкретных регистров; . - выделены ключевые поля дополнительного кода; - выделены определяющие поля дополнительного кода.

3. Микрокомандное управление.

Наличие микрокомандного управления задает последовательность шагов, однозначно интерпретирующих исполнение каждой ассемблерной команды центральным процессорным элементом.

Используя таблицу вертикального кодирования для команд, исполняемых центральным процессорным элементом (см. табл. 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);

Ì загрузить число с выходов преобразователя кодов в РОН приемник;

Ì изменить состояние РФ (в соответствии с результатом операции);

Ì перейти к исполнению следующей команды.

Схемотехническая реализация центрального процессорного элементас использованием микрокомандного управления позволяет создать временнýю последовательность сигналов жестко управляющих процессом исполнения каждой ассемблерной команды.

4. Блок-схема функционирования управляющего автомата.

Возможность последовательных вычислений в центральном процессорном элементе микроконтроллера обеспечивается при помощи двух типов блоков: управляющего и операционного. Такой подход позволяет упорядочить математическое описание работы синтезируемого узла и упростить его схемотехническую реализацию.

Управляющий блок предназначен для формирования распределенной во времени последовательности сигналов управления (vi) операционным блоком. Сигналы управления задают требуемую последовательность микроопераций, уникальную для ассемблерной команды каждого вида. Каждая микрооперация выполняется за один период частоты тактового генератора (за один импульс синхронизации) и приводится в действие одним из управляющих сигналов vi. Для управления независимыми узлами операционного блока один и тот же управляющий сигнал в один и тот же момент времени может поступать параллельно к нескольким узлам.

Последовательность формируемых управляющих сигналов определяется внешними сигналами кода операции (zi), поступающими в управляющий блок извне, а также внутренними сигналами операционного блока (ui), которые зависят как от операндов, так и от промежуточных результатов преобразований.

Последовательность микроопераций, обеспечивающая выполнение ассемблерной операции каждого вида центральным процессорным элементом микроконтроллера (например, операции инверсия содержимого регистра; операции декремент содержимого регистра; операции сложения содержимого двух регистров; и др.), называется микропрограммой ассемблерной операции.

Функции, которые выполняет управляющий блок, определяют тип его реализации – конечный автомат, блок-схема которого приведена на рис. 5.

Операционный блок. Последовательность сигналов управления (vi), для операционного блока является синхронизирующей или разрешающей и определяет момент времени срабатывания каждого из его узлов. Каждый узел операционного блока выполняет микрооперацию, следовательно, полное исполнение ассемблерной операции требует жестко указанной последовательности срабатываний узлов, т.е. последовательности микроопераций. К микрооперациям относятся: формирование сигнала управления для чтения данных из регистра участвующего в ассемблерной операции; разрешение исполнения логической операции (возможно только после передачи на входы исполнительного узла всех операндов); загрузка результата ассемблерной операции в оперативную память; и другие.

Завершение выполнения микрооперации, по необходимости, может отображаться в управляющем блоке совокупностью результирующих сигналов (wi).

Функции, которые выполняет операционный блок,определяют тип его реализации: коммутаторы, регистры, счетчики, сумматоры и иные узлы, производящие прием, обработку, хранение и передачу операндов ассемблерной операции под воздействием разнесенных во времени сигналов управления.

Схемотехническая реализация центрального процессорного элементавыполняется на базе управляющего автомата, следовательно, для его реализации требуется определить последовательность управляющих воздействий на функциональные узлы микроконтроллера при микрокомандном управлении исполнением ассемблерной команды.


 

 

 

 
 

 

 


Выполняя совместный анализ микрокомандного управления и блок-схемы (см. рис. 5) можно представить несколько реализаций управляющих автоматов в зависимости от количества ассемблерных команд, которыми они управляют, как показано в табл. 5.

Таблица 5.

Реализации управляющих автоматов.

Характеристика реализации управляющего автомата Количество
управляющих автоматов вершин триггеров дешифраторов
Отдельный, для каждой ассемблерной команды 7…16 11 х 4 + 3 = 47
Один, в соответствии с блок-схемой (см. рис. 5)
Один, по рациональной блок-схеме 1 (преобразователь кодов)

Как показано в табл. 5, приведенная на рис. 5 блок схема является подробной, но содержит значительную избыточность, следовательно, разработчикам предлагается рационализировать приведенную на рис. 5 блок-схему.

Синтез принципиальной схемы управляющего автомата выполняется по стандартной методике и не вызывает затруднений после начертания графа переключений, пример которого приведён на рис. 5.

 

 


Формирование функциональной схемы возможно на основании известных функций её узлов, следовательно, необходимо определить требования к узлам, используя для этого совокупность микрокоманд.

1. Формирование требований к реализации узлов*.

Используя последовательность микрокоманд, при выполнении каждой ассемблерной команды, необходимо выбрать те воздействия, которые относятся к одному и тому же узлу. На основании сведенных в группы однотипных воздействий формируются требования к каждому узлу**. Разработчику самостоятельно сформировать требования к узлам, в т.ч. и к узлам, разработанным самостоятельно и не приведенным в настоящем методическом указании, для реализации микроконтроллера по предложенному ему заданию.

1.1. Узел: регистр счетчик команд, воздействия***:

Ö инкрементирование;

Ö загрузка нового числа после суммирования текущего значения РСчК и константы;

Ö загрузка содержимого ячейки оперативной памяти;

Ö загрузка содержимого произвольного РОНа;

Ö загрузка содержимого ДР (памяти программ);

Ö загрузка содержимого текущего значения РСчК в ячейку оперативной памяти;

Ö загрузка содержимого текущего значения РСчК в ячейку регистровой памяти.

Анализируя совокупность воздействий можно выделить три группы сигналов:

] воздействующих на внутренние состояния РСчК (входящие воздействия):

ü по первому входу – инкрементирует содержимое РСчК – сигнал поступает из УА;

ü по второму входу – выполняет параллельную загрузку РСчК – сигнал поступает из УА;

] определяющих направления передачи числа с выходов РСчК на:

ü адресные входы памяти программ;

ü информационные входы оперативной памяти;

ü информационные входы регистровой памяти;

] определяющих направление передачи числа из других узлов на информационные входы РСчК:

ü с выходов ДР (при вызове подпрограммы);

ü с выходов сумматора;

ü с выходов оперативной памяти;

ü с выходов регистровой памяти.

: Требования к реализации: суммирующий счетчик с возможностями параллельной загрузки и сброса.

1.2. Узел: память программ, воздействие***:

Ö извлечение кода команды из памяти программ.

Анализируя воздействие можно выделить сигналы определяющие:

] ячейку памяти программ (входящие воздействия) к которой производится обращение – сигнал поступает из РСчК.

] направление передачи числа с выходов памяти программ, к другим узлам:

ü к входам узла, декодирующего код операции;

ü к входам узла, формирующего обращения к операндам и константам.

: Требования к реализации: энергонезависимая, статическая с произвольной выборкой.

1.3. Узел: декодирование кода операции, воздействие:

Ö декодирование основного кода операции;

Ö декодирование дополнительного кода операции.

Анализируя воздействие можно выделить сигнал:

] определяющий преобразование КОп – сигнал поступает из памяти программ.

] направление передачи числа с выходов узла декодирующего код операции, к другим узлам:

ü на входы узла, управляющий автомат;

: Требования к реализации:дешифратор и/или преобразователь кодов.

1.4. Узел: регистр указатель стека, воздействия***:

Ö декрементирование;

Ö инкрементирование;

Ö загрузка нового числа.

Анализируя совокупность воздействий можно выделить три группы сигналов:

] воздействующих на внутренние состояния РУС (входящие воздействия):

ü по первому входу – инкрементирует содержимое РУС – сигнал поступает из УА;

ü по второму входу –декрементирует содержимое РУС – сигнал поступает из УА;

ü по третьему входу – выполняет параллельную загрузку РУС – сигнал поступает из УА;

] определяющих направление передачи числа с выходов РУС на:

ü информационные входы регистровой памяти;

ü информационные входы оперативной памяти;

] определяющих направление передачи числа из других узлов на информационные входы РУС:

ü с выходов оперативной памяти;

ü с выходов регистровой памяти.

: Требования к реализации: счетчик с переменным модулем счета (суммирующий и вычитающий) и возможностью параллельной загрузки.

1.5. Узел: регистр флагов, воздействия***:

Ö изменение состояния требуемых флагов в соответствии с результатом операции;

Ö установка (сброс) флага, указанного в КОп.

Анализируя совокупность воздействий можно выделить три группы сигналов:

] воздействующих на внутренние состояния РФ (входящие воздействия):

ü по первому входу – вносит признак результата выполнения текущей операции – сигнал поступает из УА;

ü по второму входу – выполняет принудительную установку (сброс) флага, указанного в КОп – сигнал поступает из УА;

] определяющих направление передачи числа с выходов РФ на:

ü информационные входы регистровой памяти;

ü информационные входы оперативной памяти;

] определяющих направление передачи числа из других узлов на информационные входы РФ:

ü с выходов регистровой памяти;

ü с выходов оперативной памяти.

: Требования к реализации: совокупность отдельных триггеров обладающих возможностями: установки, сброса, параллельной загрузки, блокировки изменения состояния.

1.6. Узел: анализа состояния отдельного флага, воздействия:

Ö сравнение состояния флага, указанного в КОп и в РФ.

Анализируя воздействие можно указать, что данный узел является пассивным, поэтому его состояние определяется только совокупностью существующих сигналов:

þ указанных



<== предыдущая лекция | следующая лекция ==>
Word Generator | Функциональная схема микроконтроллера.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.055 сек.