计算机组成原理课程设计完整版.docx

上传人:b****6 文档编号:5258562 上传时间:2022-12-14 格式:DOCX 页数:39 大小:493.15KB
下载 相关 举报
计算机组成原理课程设计完整版.docx_第1页
第1页 / 共39页
计算机组成原理课程设计完整版.docx_第2页
第2页 / 共39页
计算机组成原理课程设计完整版.docx_第3页
第3页 / 共39页
计算机组成原理课程设计完整版.docx_第4页
第4页 / 共39页
计算机组成原理课程设计完整版.docx_第5页
第5页 / 共39页
点击查看更多>>
下载资源
资源描述

计算机组成原理课程设计完整版.docx

《计算机组成原理课程设计完整版.docx》由会员分享,可在线阅读,更多相关《计算机组成原理课程设计完整版.docx(39页珍藏版)》请在冰豆网上搜索。

计算机组成原理课程设计完整版.docx

计算机组成原理课程设计完整版

1需求分析

1.1课程设计目的

本课程设计是计算机科学与技术专业重要的实践性教学环节之一,是在学生学习完《计算机组成原理》课程后进行的一次全面的综合设计。

目的是通过一个完整的8位指令系统结构(ISA)的设计和实现,加深对计算机组成原理课程内容的理解,建立起整机系统的概念,掌握计算机设计的基本方法,培养学生科学的工作作风和分析、解决实际问题的工作能力。

1.2课程设计内容及要求

基于TDN-CM++计算机组成原理实验教学系统,设计和实现一个8位指令系统结构(ISA),通过调试和运行,使设计的计算机系统能够完成指定的功能。

设计过程中要求考虑到以下各方面的问题:

(1)指令系统风格(寄存器-寄存器,寄存器-存储器,存储器-存储器);

(2)数据类型(无符号数,有符号数,整型,浮点型);

(3)存储器划分(指令,数据);

(4)寻址方式(立即数寻址,寄存器寻址,直接寻址等);

(5)指令格式(单字节,双字节,多字节);

(6)指令功能类别(算术/逻辑运算,存储器访问,寄存器操作,程序流控制,输入/输出)。

要求学生综合运用计算机组成原理、数字逻辑和汇编语言等相关课程的知识,理解和熟悉计算机系统的组成原理,掌握计算机主要功能部件的工作原理和设计方法,掌握指令系统结构设计的一般方法,掌握并运用微程序设计(Microprogramming)思想,在设计过程中能够发现、分析和解决各种问题,自行设计自己的指令系统结构(ISA)。

 

1.3TDN-CM++计算机组成原理实验教学系统特点

TDN-CM++计算机组成原理实验教学系统,由西安唐都科教仪器公司生产,具备支持开放式实验教学方法的结构特点。

实验采用负逻辑模式,即灯亮为“0”,灯灭为“1”。

系统采用部件单元式结构,包括运算器、存储器、控制器、信号及时序控制、内总线、外总线、外围接口及输入输出设备、大规模可编程逻辑器件等计算机功能部件的单元电路。

系统所具有的软硬件结构对用户的实验设计具有完全的开放性,其数据线、地址线、控制线都是由用户来实施连接,系统中的运算器结构、控制器结构及微程序指令的格式及定义均可由用户根据教学需要来灵活改变或重新设计。

1.4微指令格式分析

微指令格式如下表:

表1-1微代码定义

每个字段的具体含义如下:

(1)字段24~19控制运算器的控制端,通过改变S3~CN来决定对数据进行何种算术或逻辑运算。

本设计中全部为正逻辑运算。

(2)字段18为控制对主存W/R的开关

A9

A8

WE

说明

0

1

0

对主存进行对操作

0

1

1

对主存进行写操作

(3)字段17、16控制24译码器的输出端,对Y0、Y1、Y2进行选择。

(4)字段15~7为A、B、C三个开关控制端。

A字段

 

B字段

12

11

10

开关

说明

0

0

1

RS-B

寄存器R0、R1、R2的输出开关

0

1

0

RD-B

寄存器R0、R1、R2的输出开关

0

1

1

RI-B

寄存器R0、R1、R2的输出开关

1

0

1

ALU-B

运算器ALU的输出开关

1

1

0

PC-B

PC计数器的输出开关

1

0

0

299-B

本设计中不涉及

0

0

1

NULL

空操作

C字段

(5)字段6~1为该条微程序的八位二进制后继地址,其决定顺序执行哪条微程序。

 

1.5指令译码电路分析

指令译码原理工作图如下:

图1.1指令译码原理图

P

(1)~P(4)为低电平有效,当选用时该信号为零;I7~I2表示机器指令前六位;SE5~SE1表示能够强置改变入口地址的后五位。

根据上图得出指令译码器的逻辑表达式如下:

拟定机器指令通过上式即可算出每条子程序的入口地址。

1.6寄存器译码电路分析

寄存器译码原理图如下:

图1.2寄存器译码原理图

寄存器的输入、输出不仅决定于输入、输出开关,还与机器指令的后四位(即I3~I0)有关,由其决定哪个寄存器被选中。

1.6.1寄存器的输入

LDRi为寄存器的输入开关,且为低电平有效(即LDRi=0),I1、I0对寄存器进行选择,决定数据进入哪个寄存器。

1.6.2寄存器的输出

RS-B、RD-B、RI-B为寄存器的输出开关,且为低电平有效。

I3~I0对寄存器进行选择,决定从哪个寄存器输出指令。

R0-B

RS-B

RI-B

I3

I2

I1

I0

R0-B

0

1

1

X

X

0

0

1

0

1

0

0

X

X

R1-B

0

1

1

X

X

0

1

1

0

1

0

1

X

X

R2-B

0

1

1

X

X

1

0

1

0

1

1

0

X

X

1

1

0

X

X

X

X

1.7时序分析

T1、T2、T3、T4为节拍控制端,本设计用了T4节拍控制端,当指令通过译码器P

(1)时,P

(1)对操作码进行测试,通过节拍脉冲T4的控制,以便识别所要求的操作。

图1.3时序信号图

TS1时进行微程序控制器控制,TS2时进行微指令寄存器控制,TS时控制LDIR、LDAR,TS4时对P

(1)、P

(2)、P(3)、P(4)、AR、LOPC、LDRi、LDDR1、LDDR2进行控制。

2总体设计

2.1数据格式和机器指令描述

2.1.1数据格式

本设计中所有需要处理的数据全部采用定点无符号整数表示,8个bit位,格式如下:

7

6

5

4

3

2

1

0

数值

数据的范围是0~28,即0~255。

2.1.2机器指令描述

机器指令描述见下表:

表2-1机器指令描述

指令

类别

指令名称

指令格式

助记符

寻址方式

说明

输入指令

7

6

5

4

3

2

1

0

OP

R2

INR2

寄存器寻址

IN→R2

 

输出指令

OUTAddr

直接寻址

[Addr]→LED-B

 

访

取数指令

LDAaddr,R0

直接寻址

[addr]→R0

存数指令

STAR0,addr

直接寻址

R0→[addr]

寄存器访问类指令

寄存器间传送指令

MOVR2,R0

寄存器寻址

R2→R0

无条件转移

JMPaddr

立即寻址

Addr→PC

停机指令

STP

程序到此处终止

算术加法指令

ADDR0,Addr,R0

直接寻址

R0+[Addr]→R0

逻辑与运算指令

ANDRs,Addr,Rd

直接寻址

R0*[Addr]→R0

2.2机器指令设计

2.2.1控制台指令

PC计数器在用清零开关CLR清零后,通过控制台开始进行机器指令的读写和执行,此处将00Q的后继地址设为10(即001000)。

此时只有P(4)有效,即P(4)=0,P

(1)=P

(2)=P(3)=1。

强置改变有一个特点,当SEi为1时无效,不能改变;只有SEi为0时,才能对该位上的数进行改变;但只能由0变成1,而不能逆转。

(1)强置写指令

当进行机器指令写入时,将SWB,SWA置成01状态,通过指令译码器的逻辑表达式即可算出入口地址。

SE5=1

SE4=1

SE3=1

SE2=1

SE1=0

SE5~SE2均无效,只有SE1有效,即可得出001000改变为001001,即强置写的入口地址为11。

(2)强制写指令

当进行机器指令写入时,将SWB,SWA置成00状态,通过指令译码器的逻辑表达式即可算出入口地址。

SE5=1

SE4=1

SE3=1

SE2=1

SE1=1

SE5~SE1均无效,不能对001000进行改变,即强置写的入口地址为10。

(3)程序执行指令

当进行机器指令写入时,将SWB,SWA置成11状态,通过指令译码器的逻辑表达式即可算出入口地址。

SE5=1

SE4=1

SE3=1

SE2=0

SE1=0

SE5~SE3均无效,SE2和SE1有效,即可得出001000改变为001011,即强置写的入口地址为13。

2.2.2运行微程序机器指令

PC计数器在用清零开关CLR清零后,通过控制台进入机器指令执行状态,然后开始运行微程序。

此时只有P

(1)有效,即P

(1)=0,P

(2)=P(3)=P(4)=1,且SWB,SWA仍为11。

此处将运行P

(1)的上一步微指令的后继地址设为20(即010000),应用指令译码器的逻辑表达式对其进行改变得出微程序入口地址。

由于决定入口地址的只有机器指令的前四位(即I7~I4),则通过拟定其先得出入口地址,并检验拟定的前四位是否合理,如下表所示。

表2-2机器指令前四位

 

根据寄存器译码分析可以得出机器指令的后四位。

指令名称

指令后四位

说明

IN

0010

“INPUTDEVICE”→R0

ADD

0000

R0+[Addr]→R0

STA

R0→Addr

LDA

[Addr]→R0

AND

R0*[Addr]→R0

MOV

1000

R2→R0

OUT

0000

指令执行时不涉及寄存器的访问

JMP

STP

通过以上可得出完整的机器指令,如下表所示。

表2-3机器指令码

助记符

机器指令码

说明

INR2

00000010

IN→R2

ADDR0,Addr,R0

00010000

R0+[Addr]→R0

xxxxxxxx

STAR0,addr

00100000

R0→[addr]

xxxxxxxx

LDAaddr,R0

00110000

[addr]→R0

xxxxxxxx

ANDRs,Addr,Rd

01000000

R0*[Addr]→R0

xxxxxxxx

MOVR2,R0

01011000

R2→R0

OUTAddr

01110000

[Addr]→LED-B

xxxxxxxx

JMPaddr

10000000

Addr→PC

xxxxxxxx

STP

10010000

程序到此处终止

 

3详细设计

3.1控制台微程序流程的详细设计

3.1.1公操作

对机器进行总清零CLR1-0-1。

选中P(4),通过译码形成入口地址。

3.1.2强置写

形成入口地址后,执行写操作。

1.

(1)打开PC-B将数据送到总线上;

(2)打开LDAR将数据从总线流到AR中;

(3)打开LDPC,让自动加1的数据进入PC中。

2.

(1)打开SW-B将数据送到总线上,

(2)打开LDDR1将数据从总线流到DR1中。

3.

S3S2S1S0MCN

WE

A9A8

A

B

C

000001

1

01

000

101

000

F=A

WE

CE

NULL

ALU-B

NULL

(1)打开ALU-B将数据送到总线上,其间DR1中的数据

相当于在ALU中做F=A的运算;

3.1.3强置读

形成入口地址后,执行写操作。

1.

(1)打开PC-B将数据送到总线上;

(2)打开LDAR将数据从总线流到AR中;

(3)打开LDPC,让自动加1的数据进入PC中。

2.

S3S2S1S0MCN

WE

A9A8

A

B

C

000000

0

01

010

000

000

NULL

WE

CE

LDDR1

NULL

 

(1)打开CE、WE置成00状态,将数据从主存送到总线;

(2)打开LDDR1将数据从总线流到DR1中。

3.

S3S2S1S0MCN

WE

A9A8

A

B

C

000001

1

10

000

101

000

F=A

NULL

LED-B

NULL

ALU-B

NULL

 

(1)打开ALU-B将数据送到总线上,其间DR1中的数据

相当于在ALU中做F=A的运算;

(2)打开LED-B,数据从总线流到输出单元,在数码管

上显示出来,完成数据读操作。

3.1.4执行程序

形成入口地址后,开始执行程序。

所有都为空操作,只是要通过后继地址转入到运行微程

序的流程中。

3.1.5控制台流程图

综合以上所有操作,即可得出控制台的总流程图。

图3.1控制台流程

3.2运行微程序流程的详细设计

3.2.1公操作

从控制台强制执行流程,开始运行微程序。

对运行微程序来说,所有的子流程都要运行取指的公操作,然后才能进行各自的操作。

1.

S3S2S1S0MCN

WE

A9A8

A

B

C

000000

0

11

110

110

110

NULL

LDAR

PC-B

LDPC

(1)打开PC-B,将PC中的数据(指令操作码地址)送到

总线上;

(2)打开LDAR将数据从总线流到AR中;

(3)打开LDPC,让自动加1的数据进入PC中。

2.

S3S2S1S0MCN

WE

A9A8

A

B

C

000000

0

01

100

000

001

NULL

WE

CE

LDIR

NULL

P

(1)

2.

(1)打开CE、WE置成00状态,对主存进行读操作,访问AR中保存地址的地址单元中指令;

(2)打开LDIR,将主存中被访问的地址单元中指令送到IR;

(3)选中P

(1),根据刚保存到IR中的指令,通过指令译码器,形成执行该指令的微程序入口地址。

3.2.2IN指令操作

完成公操作后,根据形成的入口地址运行IN指令操作。

S3S2S1S0MCN

WE

A9A8

A

B

C

000000

0

00

001

000

000

NULL

SW-B

LDRi

NULL

(1)打开SW-B,将“INPUTDEVICE”中输入的数据流

到总线上;

(2)打开LDRi,根据IN指令的后两位决定让数据从总

线上进入到目的寄存器R2中。

3.2.3MOV指令操作

完成公操作后,根据形成的入口地址运行MOV指令操作。

(1)打开RS-B,根据MOV指令的I3、I2打开原始寄

存器R2输出门让其中保存的数据,流到总线上;

(2)打开LDRi,根据指令的后两位打开目的寄存器R0

输入门,让数据从总线上进入到R0中。

3.2.4ADD指令操作

完成公操作后,根据形成的入口微地址运行ADD指令操作。

1.

S3S2S1S0MCN

WE

A9A8

A

B

C

000000

0

11

110

110

110

NULL

LDAR

PC-B

LDPC

(1)打开PC-B,将PC中的数据(指令地址码

地址)送到总线上;

(2)打开LDAR将数据从总线流到AR中;

(3)打开LDPC,让自动加1的数据进入PC中。

S3S2S1S0MCN

WE

A9A8

A

B

C

000000

0

01

110

000

000

NULL

WE

CE

LDAR

NULL

2.

(1)打开CE、WE置成00状态,将数据(指令

地址码)从主存送到总线上;

(2)打开LDAR将数据从总线流到AR中。

3.

S3S2S1S0MCN

WE

A9A8

A

B

C

000000

0

01

011

000

000

NULL

WE

CE

LDDR2

NULL

(1)打开CE、WE置成00状态,根据AR中保存

的指令地址码,在主存相同地址单元中,读出

其中保存的操作数,并放置到总线上;

(2)打开LDDR2将数据从总线流到DR2中。

4.

S3S2S1S0MCN

WE

A9A8

A

B

C

000000

0

11

010

001

000

NULL

LDDR1

RS-B

NULL

 

(1)打开RS-B,根据MOV指令的I3、I2决定打开

哪个原始寄存Rs输出门让其中保存的操作

数,流到总线上;

(2)打开LDDR1,让操作数经由总线进入到DR1中

5.

S3S2S1S0MCN

WE

A9A8

A

B

C

100101

0

11

001

101

000

F=A+B

NULL

LDRi

ALU-B

NULL

 

(1)将ALU的控制端S3~CN置成F=A+B,对两数进行运算,打开ALU-B将运算结果送到总线上;

(2)打开LDRi,根据指令的后两位打开目的寄存器R0的输入门,让数据从总线上进入R0中。

3.2.5AND指令操作

完成公操作后,根据形成的入口地址运行AND指令操作。

1.

(1)打开PC-B,将PC中的数据(指令地址码

地址)送到总线上;

(2)打开LDAR将数据从总线流到AR中;

(3)打开LDPC,让自动加1的数据进入PC中。

2.

打开CE、WE置成00状态,将数据(指令

地址码)从主存送到总线上;

3.

S3S2S1S0MCN

WE

A9A8

A

B

C

000000

0

01

011

000

000

NULL

WE

CE

LDDR2

NULL

 

(1)打开CE、WE置成00状态,根据AR中保存的指令地址码,在主存相同地址单元中,读出其中保存的操作数,并放置到总线上;

(2)打开LDDR2将数据从总线流到DR2中。

4.

S3S2S1S0MCN

WE

A9A8

A

B

C

000000

0

11

010

001

000

NULL

LDDR1

RS-B

NULL

 

(1)打开RS-B,根据MOV指令的I3、I2决定打开哪个原始寄存器Rs输出门让其中保存的操作数,流到总线上;

(2)打开LDDR1,让操作数经由总线进入到DR1

中。

5.

S3S2S1S0MCN

WE

A9A8

A

B

C

101110

0

11

001

101

000

F=A·B

NULL

LDRi

ALU-B

NULL

(1)将ALU的控制端S3~CN置成F=A·B,对两数进行运算,打开ALU-B将运算结果送到总线上;

(2)打开LDRi,根据指令的后两位打开目的寄存器R0的输入门,让数据从总线上进入Rd中。

3.2.6STA指令操作

完成完成公操作后,根据形成的入口地址运行STA指令操作。

S3S2S1S0MCN

WE

A9A8

A

B

C

000000

0

11

110

110

110

NULL

LDAR

PC-B

LDPC

1.

(1)打开PC-B,将PC中的数据(指令地址码地

址)送到总线上;

(2)打开LDAR将数据从总线流到AR中;

(3)打开LDPC,让自动加1的数据进入PC中。

2.

(1)打开CE、WE置成00状态,将数据(指令地

址码)从主存送到总线上;

(2)打开LDAR将数据从总线流到AR中。

S3S2S1S0MCN

WE

A9A8

A

B

C

000000

0

01

000

001

000

NULL

WE

CE

NULL

RS-B

NULL

3.

(1)打开RS-B,根据指令的I3、I2决定打开哪个原始寄存器Rs输出门让其中保存的数据,流到总线上;

(2)打开CE、WE置成01状态,根据AR中保存的指令地址码,让总线上的数据流到主存相应地址单元中,完成数据写操作。

3.2.7LDA指令操作

完成公操作后,根据形成的入口地址运行LDA指令操作。

S3S2S1S0MCN

WE

A9A8

A

B

C

000000

0

11

110

110

110

NULL

LDAR

PC-B

LDPC

1.

(1)打开PC-B,将PC中的数据(指令地址码地址)

送到总线上;

(2)打开LDAR将数据从总线流到AR中;

(3)打开LDPC,让自动加1的数据进入PC中。

2.

(1)打开CE、WE置成00状态,将数据(指令地址

码)从主存送到总线上;

(2)打开LDAR将数据从总线流到AR中。

3.

S3S2S1S0MCN

WE

A9A8

A

B

C

000000

0

01

001

000

000

NULL

WE

CE

LDRi

NULL

 

(1)将该地址下的数据存入R0中。

3.2.8OUT指令操作

完成公操作后,根据形成的入口地址运行OUT指令操作。

S3S2S1S0MCN

WE

A9A8

A

B

C

000000

1

10

000

001

000

NULL

NULL

LED-B

NULL

RS-B

NULL

打开LED-B,结果从总线流到输出单元,在数码管

上显示出来,完成数据读操作。

 

3.2.9JMP指令操作

完成公操作后,根据形成的入口地址运行JMP指令操作。

1

(1)打开PC-B,将PC中的数据(指令地址码地

址)送到总线上;

(2)打开LDAR将数据从总线流到AR中;

(3)打开LDPC,让自动加1的数据进入PC中。

2.

S3S2S1S0MCN

WE

A9A8

A

B

C

00

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 育儿理论经验

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1