
- •Глава 1. Сборка процессора 8
- •Глава 2. Дешифратор и устройство управления 16
- •Глава 3. Реализация алгоритма 17
- •Глава 1. Сборка процессора.
- •– Архитектура команд
- •1.1.3 Команды 1 типа.
- •Проектирование шины и памяти озу.
- •1.3.1 Работа Алу
- •1.4.1 Регистры специального назначения
- •1.4.2 Регистры общего назначения
- •Глава 2. Выбор типа процессора и устроство управления с дешифратором.
- •2.1 Выбор типа процессора.
- •2.2 Устроство управления и дешифратор.
- •Глава 3. Реализация алгоритма.
- •3.1 Изменение процессора.
- •3.2 Решение задачи.
1.1.3 Команды 1 типа.
Это алгебраические и логические команды в АЛУ, которые производят операции над 2 числами – А и Б. Именно они по большей части отвечают за выполнение алгоритмов. Всего их 16 штук.
Команда |
Мнемокод |
Номер |
Вывод числа А |
MOV A |
0 |
Вывод числа Б |
MOV B |
1 |
Или |
OR |
2 |
И |
AND |
3 |
И не |
AND NOT |
4 |
Или не |
OR NOT |
5 |
Сложение |
ADD |
6 |
Вычитание |
SUB |
7 |
Умножение |
UMN |
8 |
Деление |
DEL |
9 |
Сумматор битов А |
SUM A |
a |
Сумматор битов Б |
SUM B |
b |
Инверсия числа А |
INV A |
c |
Инверсия числа Б |
INV B |
d |
Логический сдвиг разряда вправо числа А на 1 разряд |
LOG A |
e |
Логический сдвиг разряда вправо числа Б на 1 разряд |
LOG B |
f |
Вот они в АЛУ
Итого получается, что нам необходимо 4 бита данных для команд АЛУ и так как я соединил дешифратор команд и устройство управления, то для остальных 7 команд понадобиться еще 3 бита. Итого 7 бит на команды.
После того, как мы поняли какие команды выполняются в процессоре, мы можешь определить разрядность шины данных и количество битов в памяти в ОЗУ.
Проектирование шины и памяти озу.
Мы уже определили количество бит на команды. Сколько нам понадобиться бит данных для адреса? 2 в степени 7 дает уже число 128, а значит волноваться о размере числа не стоит. Тогда сколько нам нужно ячеек для записи команд и данных в ОЗУ для выполнения несложных алгоритмов? С учетом того, что архитектура Фон Неймона позволяет хранить и данные и команды в одной ячейке, а с помощью наших команд получиться сделать циклы и перезаписывать уже занятые ячейки, я остановился на 4 битах. В большем количестве, как мне кажется, нет необходимости.
Итого 11 бит данных на шину:
1.3 АЛУ.
1.3.1 Работа Алу
АЛУ как следует из названия предназначен для арифметических и логических операций, в общий вид: подаются два 16 битных числа, необходимая команда(тип операции) и выводит 16 битное значение. Так как при некоторых операциях возможны переполнения, деление на 0 и др. необходимо так же выводить флаги – переполнения, является ли число нулем и тд.
Также я решил вывести сравнение чисел А и Б, чтобы лучше понимать, что будет происходить в АЛУ.
Из acc out(аккумулятор) поддается число А. Число Б подается из ОЗУ.
Команды в АЛУ поступают через тоннель instruction. Флаги выводятся с разных боков. Команды уже были представлены выше, поэтому покажу, как я создал флаги.
1.3.2 Флаги АЛУ
Zeroflag (флаг, если число равно нулю) просто инвертирует выходное число и если какой то бит информации был не 0, то тушит контакт флага.
Overflow - (флаг переполнения) для него в команде сложения и умножения уже есть необходимые выходы, поэтому просто выводим их и с помощью элемента ИЛИ соединяем в нужный флаг.
Del 0 - (флаг деления на ноль) выполняется, если на элемент И из компаратора после сравнение номера команды с номером деления подается единица и если число Б равно нулю.
Флаги сравнение активируются обычным компаратором, сравнивающим число А и Б
1.4 Набор регистров.
Регистры делятся на специальные и общие.