- •«Разработка процессора»
- •Гопта е. А.
- •1. Постановка задачи
- •2. Разработка формата команд, кодировки команд
- •3. Разработка структурной схемы процессора:
- •4. Разработка блока алу:
- •5. Разработка блока рон:
- •6. Разработка управляющего устройства уу.
- •7. Формат микрокоманд
- •Оценка размера памяти микропрограмм.
- •Формат микрокоманд:
- •Загрузка и декодирование.
- •Команда nor rd, Imm8.
- •Команда inc rd.
- •Команда st rd, Imm8, rs.
Оценка размера памяти микропрограмм.
Для каждого микрокода необходимо выделить 8 слов. Всего процессов будет выполнять 13 команд. Следовательно для данного процессора необходимо 8*13=104 слов. В начале выполнения команд необходимо произвести загрузку и декодирование команды, а потом еще и инкремент командного счетчика(PC). Для этого необходимо еще 3 слова. Итого 107 слов.
Тогда адрес перехода (JMPADDR) может быть 7-разрядным (10710=11010112), тогда длина микрокоманды равна 27 бит.
Организация памяти микропрограмм 107x27.
Формат микрокоманд:
|
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
|
|
A M U X |
|
|
|
B M U X |
|
|
|
C M U X |
|
|
W R |
|
|
|
|
|
|
|
|
|
|
|
|
|
A |
B |
C |
RD |
ALU |
COND |
JMPADDR | ||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ||||
Загрузка и декодирование.
Адрес 0. Загрузка следующей команды в регистр ir, продолжение со следующей микрокоманды.
IR← SET (PC, PC);
Адрес 1. Декодировать полученную команду.
DECODE
Инкремент РС.
Адрес 106. Прибавить к командному счетчику 1. Продолжить с адреса 0.
PC← INC PC
A=110; B=101; C=110;
AMUX=BMUX=CMUX=1;
WR=RD=0;
ALU=001;
COND=JImm;
JMPADDR=0;
Команда ADD rd, rs.
Начальный адрес в памяти микропрограмм 0001000b = 8d.
Адрес 8. Сложить регистр rd и регистр rs, продолжить с адреса 106.
RD ← ADD (RD, RS); GOTO 106
A=*; B=*; C=*;
AMUX=BMUX=CMUX=0;
WR=RD=0;
ALU=001;
COND=JImm;
JMPADDR=1101010;
Команда ADD rd, Imm8.
Начальный адрес в памяти микропрограмм 0010000b = 16d.
Адрес 16. Сложить регистр rd и младший байт регистра ir, продолжить с адреса 106.
RD ← ADD (RD, IR); GOTO 106
A=*; B=111; C=111;
AMUX=0; BMUX=CMUX=1;
WR=RD=0;
ALU=001;
COND=JImm;
JMPADDR=1101010;
Команда NOR rd, rs.
Начальный адрес в памяти микропрограмм 0011000b = 24d.
Адрес 24. В temp0 поместить rd, продолжить со следующей микрокоманды.
temp0 ← SET (RD, IR)
A=*; B=111; C=100;
AMUX=0; BMUX=CMUX=1;
WR=RD=0;
ALU=000;
COND=NEXT;
Адрес 25. Поместить в temp0 результат NAND над rd и temp0 ( инвертированный rd), продолжить со следующей микрокоманды.
temp0 ← NAND (RD, temp0)
A=*; B=100; C=100;
AMUX=0; BMUX=CMUX=1;
WR=RD=0;
ALU=100;
COND=NEXT;
Адрес 26. В temp1 поместить rs, продолжить со следующей микрокоманды.
temp1 ← SET (IR, RS)
A=111; B=*; C=101;
AMUX=1; BMUX=0; CMUX=1;
WR=RD=0;
ALU=000;
COND=NEXT;
Адрес 27. Поместить в temp1 результат NAND над temp1 и rs ( инвертированный rs), продолжить со следующей микрокоманды.
temp1← NAND (temp1, RS1)
A=101; B=*; C=101;
AMUX=1; BMUX=0; CMUX=1;
WR=RD=0;
ALU=100;
COND=NEXT;
Адрес 28. Поместить в temp0 результат NAND над temp0 и temp1, продолжить со след. микрокоманды.
temp0← NAND (temp0, temp1)
A=100; B=101; C=101;
AMUX=BMUX=CMUX=1;
WR=RD=0;
ALU=100;
COND=NEXT;
Адрес 29. Поместить в rd результат инвертирования temp0, продолжить с адреса 106
RD ← NAND (temp0, temp0); GOTO 106
A=100; B=100; C=*;
AMUX=1; BMUX=1; CMUX=0;
WR=RD=0;
ALU=100;
COND=JImm;
JMPADDR=1101010;
