Синтезирование процессора

Автор работы: Пользователь скрыл имя, 13 Июня 2014 в 23:44, отчет по практике

Краткое описание

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

Содержание

Постановка задачи
Форматы команд и их кодировка
Формат регистра команд
Регистры
Структурная схема процессора
Схема РОН
Формат микрокоманд
Микрокод
Кодировка микрокода
Примеры выполнения команд
Примеры программ
Схема управляющего устройства
Схема управления переходом
Схема формирования адреса микрокоманды
Управляющие сигналы и регистры процессора
Определение производительности
Выводы по проделанной работе

Вложенные файлы: 1 файл

vs.docx

— 578.23 Кб (Скачать файл)

А, В, С - номер регистра для осуществления чтения (В, С) или записи (А).

AMUX, BMUX, CMUX - бит, показывающий откуда брать номер регистра:

0 - из регистра IR,

1 - из регистра MIR.

RD - чтение из ОЗУ. При этом адрес памяти берется с шины В, а результат подается на шину С. 
WR - запись в ОЗУ. При этом адрес памяти берется с шины В, а данные - с шины А.

ALU - код операции АЛУ:

Код операции

Операция

00

INC

01

ADD

10

SHL

11

OR


 

COND - условие для определения адреса следующей выполняемой микрокоманды:

COND

Операция

Комментарий

00

JMP

Безусловный переход

01

JNZ

Переход, если !=0

10

JIR

Переход, если выставлен бит непосредственной адресации

11

DECODE

Декодирование команды, address=[КОР]011


JMP ADR - адрес в памяти микропрограмм, куда осуществляется переход.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Микрокод

Команда

Адрес

Микрокоманда

Комментарий

десятичный

двоичный

IF

0

000000

MOVR IR,[PC]; JMP 1

Загрузка команды в IR

ID

1

000001

DECODE

Декодирование команды

 

LD

3

000011

IF IR[7] THEN JMP 5

переход, если выставлен флаг непосредственной адресации

4

000100

MOVR Rd,[Rs]; JMP 63

чтение из памяти

5

000101

temp0=IR[8..15]; JMP 6

запись 8 старших байтов из IR в регистр

6

000110

MOVR Rd,temp0; JMP 63

чтение из памяти

 

ST

11

001011

IF IR[7] THEN JMP 13

переход, если выставлен флаг непосредственной адресации

12

001100

MOVM [Rd],Rs; JMP 63

запись в память

13

001101

temp0=IR[8..15]; JMP 14

запись 8 старших байтов из IR в регистр

14

001110

MOVM temp0,Rs; JMP 63

запись в память

 

ADD

19

010011

IF IR[7] THEN JMP 21

переход, если выставлен флаг непосредственной адресации

20

010100

Rd=ADD (Rd),Rs; JMP 63

сложение

21

010101

temp0=IR[8..15]; JMP 22

запись 8 старших байтов из IR в регистр

22

010110

Rd=ADD Rd,temp0; JMP 63

сложение

 

JNZ

27

011011

temp0=IR[8..15]; JNZ 29

запись 8 старших байтов из IR в регистр

28

011100

JMP 63

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

29

011101

PC=temp0; JMP 0

переход по флагу Zerro

 

INC

35

100011

Rd=INC Rd; JMP 63

инкремент

 

OR

43

101011

IF IR [7] THEN JMP 45

переход, если выставлен флаг непосредственной адресации

44

101100

Rd=OR Rd,Rs; JMP 63

операции ИЛИ

45

101101

temp0=IR[8..15]; JMP 46

запись 8 старших байтов из IR в регистр

46

101110

Rd=OR Rd,temp0; JMP 63

операции ИЛИ

 

SHL

51

110011

Rd=ADD Rd,Rd; JMP 63

сдвиг влево

 

JMP

59

111011

temp0=IR[8..15]; JMP 60

запись 8 старших байтов из IR в регистр

60

111100

PC=temp0; JMP 0

безусловный переход

 
 

63

111111

PC=ADD PC, temp1; JMP 0

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

 

Кодировка микрокоманд

Команда

Адрес

MEM

A

A

M

U

X

B

B

M

U

X

C

C

M

U

X

RD

WR

ALU

COND

JMP ADR

IF

0

1

000

0

110

1

111

1

1

0

00

00

000001

ID

1

0

000

0

000

0

000

0

0

0

00

11

000000

LD

3

0

000

0

000

0

000

0

0

0

00

10

000101

4

0

000

0

000

0

000

0

1

0

00

00

111111

5

0

000

0

100

0

100

1

0

0

00

00

000110

6

0

000

0

000

1

000

0

1

0

00

00

111111

ST

11

0

000

0

000

0

000

0

0

0

00

10

001100

12

0

000

0

000

0

000

0

0

1

00

00

111111

13

0

000

0

100

0

100

1

0

0

00

00

001110

14

0

000

0

000

1

000

0

0

1

00

00

111111

ADD

19

0

000

0

000

0

000

0

0

0

00

10

010101

20

0

000

0

000

0

000

0

0

0

10

00

111111

21

1

000

0

100

0

100

1

0

0

00

00

010110

22

0

100

0

000

1

000

0

0

0

10

00

111111

JNZ

27

1

000

0

100

0

100

1

0

0

00

10

011101

28

0

000

0

000

0

000

0

0

0

00

00

111111

29

0

100

1

110

0

110

1

0

0

00

00

000000

INC

35

0

000

0

000

0

000

0

0

0

11

00

111111

OR

43

0

000

0

000

0

000

0

0

0

00

10

101101

44

0

000

0

000

0

000

0

0

0

01

00

111111

45

1

000

0

100

0

100

1

0

0

00

10

101110

46

0

000

0

000

1

000

0

0

0

01

00

111111

SHL

51

0

000

0

000

0

000

0

0

0

10

00

111111

JMP

59

1

000

0

100

0

100

1

0

0

00

00

111100

60

0

100

1

110

0

110

1

0

0

00

00

000000

 

63

0

110

1

110

1

110

1

0

0

10

00

000000


 

Примеры выполнения команд

Команда

Адрес МК

Микрокоманда

LD Rd,[Rs]

0

IF

1

DECODE

3

IF IR[7] THEN JMP 5

4

MOVR Rd,[Rs], JMP 63

63

PC=ADD(PC,temp1); JMP 0

Количество тактов равно 5

LD Rd,Adr

0

IF

1

DECODE

3

IF IR[7] THEN JMP

5

temp0=IR[8..15]; JMP 6

6

MOVR Rd,temp0; JMP 63

63

PC=ADD(PC,temp1); JMP 0

Количество тактов равно 6

ST (Rd),Rs

0

IF

1

DECODE

11

IF IR[7] THEN JMP

12

MOVM [Rd],Rs; JMP 63

63

PC=ADD(PC,temp1); JMP 0

Количество тактов равно 5

ST Adr,Rs

0

IF

1

DECODE

11

IF IR[7] THEN JMP

13

temp0=IR[8..15]; JMP 6

14

MOVM temp0,Rs; JMP 63

63

PC=ADD(PC,temp1); JMP 0

Количество тактов равно 6

ADD (Rd),Rs

0

IF

1

DECODE

19

IF IR[7] THEN JMP

20

Rd=ADD [Rd],Rs; JMP 63

63

PC=ADD(PC,temp1); JMP 0

Количество тактов равно 5

ADD Rd,Const

0

IF

1

DECODE

19

IF IR[7] THEN JMP

21

temp0=IR[8..15]; JMP 6

22

Rd=ADD Rd,temp0; JMP 63

63

PC=ADD(PC,temp1); JMP 0

Количество тактов равно 6

JNZ ADR (есть переход)

0

IF

1

DECODE

27

temp0=IR[8..15]; JMP 6

29

PC=temp0; JMP 0

 

Количество тактов равно 4

JNZ ADR (нет перехода)

0

IF

1

DECODE

27

temp0=IR[8..15]; JMP 6

28

JMP 63

63

PC=ADD(PC,temp1); JMP 0

Количество тактов равно 5

INC Rd

0

IF

1

DECODE

35

Rd=INC Rd; JMP 63

63

PC=ADD(PC,temp1); JMP 0

Количество тактов равно 4

OR Rd,Rs

0

IF

1

DECODE

43

IF IR[7] THEN JMP

44

Rd=OR Rd,Rs; JMP 63

63

PC=ADD(PC,temp1); JMP 0

Количество тактов равно 5

OR Rd,Const

0

IF

1

DECODE

43

IF IR[7] THEN JMP

45

temp0=IR[8..15]; JMP 6

46

Rd=OR Rd,temp0; JMP 63

63

PC=ADD(PC,temp1); JMP 0

Количество тактов равно 6

SHL Rd

0

IF

1

DECODE

51

Rd=ADD Rd,Rd; LMP 63

63

PC=ADD(PC,temp1); JMP 0

Количество тактов равно 4

JMP ADR

0

IF

1

DECODE

59

temp0=IR[8..15]; JMP 63

60

PC=temp0; JMP 0

Количество тактов равно 4


 

 

 

Примеры программ

Команда

№ такта

адрес МК

Рег А

Рег В

Рег С

Рег D

temp0

temp1

PC

LD A,6

1

0

-

-

-

-

-

1

0

2

1

-

-

-

-

-

1

0

3

3

-

-

-

-

-

1

0

4

5

-

-

-

-

6

1

0

5

6

6

-

-

-

6

1

0

б

63

6

-

-

-

6

1

1

LD B,7

7

0

6

-

-

-

6

1

1

8

1

6

-

-

-

6

1

1

9

3

6

-

-

-

-

1

1

10

5

6

-

-

-

7

1

1

11

6

6

7

-

-

7

1

1

12

63

6

7

-

-

7

1

2

ADD A,B

13

0

6

7

-

-

7

1

2

14

1

6

7

-

-

7

1

2

15

19

6

7

-

-

7

1

2

16

20

13

7

-

-

7

1

2

17

63

13

7

-

-

7

1

3

SHL A

18

0

13

7

-

-

7

1

3

19

1

13

7

-

-

7

1

3

20

35

6

7

-

-

7

1

3

21

63

6

7

-

-

7

1

4


 

 

Схема управляющего устройства

 

 

 

 

 

 

 

 

 

 

 

 

Схема управления переходом

 

Схема формирования адреса следующей микрокоманды

 

COND

Куда переходим

00

JMP

безусловный переход

01

JNZ

переход ели не 0

10

JC

переход если CF=1

11

DECODE

декодирование команды, Address=[KOP]011


 

 

Управляющие сигналы и регистры

Сигнал/Регистр

Комментарий

Счетчик адреса МК

Адрес следующей микрокоманды (6-ти битный)

MIR

25 битный регистр микрокоманд

Cond

Сигнал, определяющий какой адрес будет подан со схемы формирования адреса МК

AMUX

Селектор регистрового мультиплексора шины А

BMUX

Селектор регистрового мультиплексора шины В

CMUX

Селектор регистрового мультиплексора шины С

IR

16-ти битный регистр команд

PC

8-ми битный программный счетчик

ZeroFlag

Флаг нуля

IR[7]

Сигнал непосредственной адресации

JZ/JNZ

Сигнал наличия/отсутствия перехода по нулю

JMP ADR

Адрес следующей микрокоманды

КОП

Код операции, загруженной из памяти в IR

KOПALU

Код операции АЛУ

RD

Сигнал чтения информации из памяти

WR

Сигнал записи информации в память

MEM

Сигнал подачи на шину А непосредственного значения из IR

MEM+RD

Сигнал чтения команды из памяти

Информация о работе Синтезирование процессора