- •Содержание
- •Введение
- •1 Цель курсового проектирования
- •2 Задание на курсовое проектирование
- •3 Разработка структурной схемы вычислительного устройства
- •4 Выбор системы команд и определение форматов команд вычислительного устройства
- •5 Разработка алгоритма командного цикла вычислительного устройства
- •5.1 Алгоритм выборки команды
- •5.2 Алгоритм перехода к подпрограмме прерывания
- •5.3 Алгоритм формирования операндов для арифметико-логического устройства
- •5.4 Алгоритм выполнения команд передачи управления
- •5.5 Алгоритм вызова подпрограммы
- •5.6 Алгоритм возврата из подпрограммы
- •5.7 Алгоритмы операций со стеком
- •5.8 Алгоритмы выполнения операций с ву
- •5.9 Алгоритмы системных операций
- •5.10 Алгоритм выполнения операции записи в озу
- •5.11 Алгоритм выполнения операции чтения из озу
- •6 Разработка алгоритмов выполнения арифметических и логических операций
- •6.1 Алгоритм выполнения операций сложения и вычитания
- •6.2 Алгоритм выполнения логических операций
- •6.3 Алгоритм выполнения операции умножения
- •6.4 Алгоритм выполнения операции деления
- •7 Проектирование операционного автомата устройства выполнения команд
- •8 Проектирование операционного автомата арифметико-логического устройства
- •9 Проектирование устройств управления процессора и алу двухступенчатой организации процесса управления
- •9.1. Проектирование управляющего автомата устройства управления процессора
- •9.2. Проектирование управляющего автомата устройства управления алу
- •10 Пример кодирования пзу мк мпа алу для реализации микропрограммы операций сложения и вычитания
- •11 Разработка функциональной схемы процессора
- •Заключение
- •Список использованной литературы
- •Приложение
5 Разработка алгоритма командного цикла вычислительного устройства
Действия, требуемые для выборки или извлечения из основной памяти и выполнения команды, называются циклом команды. В общем случае цикл команды включает в себя несколько этапов:
– выборку команды;
– формирование адреса следующей команды;
– декодирование команды;
– вычисление адресов операндов;
– выборку операндов;
– исполнение операции;
– запись результата.
На основе содержательной таблицы 3 команд проектируем блок – схему обобщенного алгоритма командного цикла представленную на рисунке 4.
Рисунок 4 – Блок-схема обобщенного алгоритма командного цикла
5.1 Алгоритм выборки команды
Алгоритм выборки команды, показанный на рисунке приложения 1.1 функционирует следующим образом. Вначале происходит обнуление регистра i. В данной операции он будет выполнять роль счётчика 8-битовых групп для регистра команды RgI и изменяться от 0 до 4. После этого на шину адреса (ША) выставляется значение программного счётчика (PC). Затем на шину данных выбираются очередные 8 бит команды (находящейся в ОЗУ), адресуемые содержимым шины адреса. Эти 8 бит копируются с шины данных в регистр RgI, начиная с младших разрядов. Далее производится переход к следующей 8-битовой группе и увеличивается на единицу содержимое программного счётчика. Выборка команды заканчивается, когда все четыре 8-битовые группы пройдены, т.е. i=4.
5.2 Алгоритм перехода к подпрограмме прерывания
Команда перехода к подпрограмме прерывания выполняется в следующем порядке (рисунок приложения 2.1). Команда выполняется, если установлен флаг IF и в регистре прерываний RgZ присутствует номер прерывания. Первоначально необходимо сохранить в стеке содержимое программного счётчика. Для этого выставляем содержимое программного счетчика на ШД, уменьшаем на 1 содержимое указателя стека SP, выставляем его на шину адреса. Так как у нас разрядность ША равна 11, а ОЗУ 8-разрядное, записать в стек за один раз мы можем только 8 бит программного счетчика. Для записи оставшихся бит РС опять уменьшаем SP на 1 и выставляем его на ША, по полученному адресу записываем оставшиеся 3 бита РС.
После этого необходимо передать управление по адресу обработчика требуемого прерывания. Для этого на шину адреса следует выставить номер прерывания из регистра RgZ; на шину данных выбрать адрес обработчика прерываний. Так как адрес обработчика 11-разрядный, а ОЗУ 8-разрядное, то адрес обработчика будет храниться в двух соседних ячейках памяти, и выборку будем проводить в два этапа, считывая сначала 8 бит из ячейки с адресом из регистра RgZ, а потом еще 3 бита из соседней ячейки. Биты последовательно считываем в регистр адреса, т.е. формируем в нем адрес обработчика прерывания. В самом конце алгоритма копируем этот адрес в РС.
Кроме того, мы сохраняем в стеке содержимое регистра флагов RgF, для чего опять уменьшаем содержимое стека на 1, выставляем его на ША и по полученному адресу записываем в стек содержимое регистра флагов, а потом сбрасываем флаг прерывания IF.
5.3 Алгоритм формирования операндов для арифметико-логического устройства
Формирование операндов в данном алгоритме происходит следующим образом (рисунок приложения 3.1). Сначала определяем тип формата команды. Если тип «аккумулятор – ячейка оперативной памяти», то одним операндом всегда будет поле ячейки памяти S. Далее определяем тип адресации этого операнда. Если адресация прямая адрес ячейки ОЗУ берётся из кода команды и выставляется на шину адреса. При косвенной адресации из кода команды на шину адреса выставляется адрес, по которому из ОЗУ выбирается ячейка и начинается считывание из нее нужного адреса. Считывание проходит в два этапа, так как нужный нам адрес будет храниться в двух соседних ячейках памяти. Этот адрес передаем на ШД через регистр данных(РгД). Сначала младшие 8 битов с ШД записываем в RgBuf. И передаем их в регистр адреса (РгА). Далее записываем в RgBuf старшие 3 бита и передаем их в РгД. Из регистра адреса адрес передается на шину адреса. При относительной адресации на шину адреса выставляется сумма значений адресов из кода команды и регистра базы B. Затем производится выборка 16-ти бит из ОЗУ.
Данные, выставленные на ШД, будут являться вторым операндом. Их копируем в регистр РВ. Первым операндом будет являться значение, хранимое в аккумуляторе. Копируем содержимое аккумулятора в регистр РА.
Для типа команды «регистр – регистр» сначала из кода команды номер регистра, в котором хранится адрес операнда. Этот номер выставляем на ША, далее на ШД записываем адрес, хранящийся в этом регистре. Оттуда отправляем его в РгД, затем в RgBuff и, наконец, в регистр адреса. Это процедура происходит в два этапа, т.к. РгД и RgBuff 8-ми разрядные, а РгА 10-ти. Определяем тип адресации. При косвенной адресации из ОЗУ по адресу хранимому на ША считываем адрес ячейки памяти, в которой хранится операнд. Считывание адреса происходит в 2 этапа, сначала считываются младшие 8 бит, затем старшие 3. Адрес с шины даны передаем через буферный регистр в регистр адреса аналогичным образом в два этапа. При относительной адресации в регистр адреса выставляется сумма значений адресов из регистра адреса и регистра базы B. Затем производится выборка 16-ти бит из ОЗУ. Данные, выставленные на ШД, будут являться первым операндом. Их копируем в регистр РА. Данные для регистра РВ получаем аналогичным способом.
В результате, у нас в регистрах РА и РВ находятся нужные нам операнды. Так как по заданию адресность равна 2, данные на обработку из этих регистров в АЛУ поступают одновременно. Далее выполняем над ними в АЛУ требуемую операцию, и результат записываем в аккумулятор А, для формата команды AS и для RR результат запишем в регистр Р.