Курсовая работа: Моделирование процессора (операционного и управляющего автоматов) для выполнения набора машинных команд
Выборка команд из памяти производится следующим образом: адрес команды, содержащийся в программном счетчике адреса, записывается в регистр адреса, а затем выдается на адресные входы блока памяти, что сопровождается выдачей управляющим устройством сигнала чтения из памяти. Данные из памяти считываются в буферный регистр. После того, как выбранная из памяти команда попадает в буферный регистр, она выдается на внутрипроцессорную шину, откуда она записывается в регистр команд IR. На этом выборка команды заканчивается.
После окончания фазы извлечения команды начинается фаза интерпретации команды. В зависимости от команды эта фаза может представлять собой, например, извлечение из памяти константы, необходимой для выполнения команды или извлечение из памяти номера регистра. В конце этой фазы процессор готов к выполнению команды. На этом начинается фаза выполнения. Фаза извлечения данных из памяти присутствует у команды занесения данных в аккумулятор, в регистры общего назначения, а также при переходе на адрес.
3. Временные диаграммы, описывающие выполнение микроопераций для каждой команды
Пронумеруем операции процессора:
Код операции | Команда | ||
0 | 0 | 0 | Mov A,#d |
0 | 0 | 1 | Mov Rn,#d |
0 | 1 | 0 | ADD Rn, A |
1 | 0 | 0 | JBC bit, rel |
Временная диаграмма микроопераций выполнения команды MOV A, #d:
Временная диаграмма микроопераций выполнения команды MOV Rn, #d:
Временная диаграмма микроопераций выполнения команды AddA, Rn:
4. Содержательный алгоритм микропрограммы
Алгоритм выполнения команды в общем случае состоит из таких фаз:
1. Выборка команды из памяти по соответствующему адресу
2. Интерпретация команды (дешифрирование) и подача соответствующих управляющих сигналов
3. Загрузка данных
4. Выполнение команды
5. Подготовка к загрузке следующей команды
В случае с разрабатываемым процессором общий алгоритм выглядит следующим образом:
1. Запись значения программного счетчика в MAR (MemoryAddressRegister).
2. Передача содержимого MAR на адресные входы памяти.
3. Передача сигнала чтения и выбора микросхемы памяти.
4. Запись данных из памяти в MBR (MemoryBufferRegister).
5. Передача содержимого MBR на шину данных процессора и запись его в регистр команд IR (InstructionRegister).
6. Выбор из памяти команд необходимой команды
7. Увеличение значения программного счётчика
8. Запись значения программного счетчика в MAR (MemoryAddressRegister).
9. Выдача содержимого MAR на адресные входы памяти.
10. Выдача сигнала чтения и выбора микросхемы памяти.
11. Запись данных из памяти в MBR (MemoryBufferRegister).