计算机组成原理 课程设计报告——求1至20之和

一、课程设计目的

1. 融会贯通所学知识,设计和调试一台模型计算机;

2. 进一步掌握计算机组成的基本原理,建立整机概念;

3. 学习设计和调试计算机的步骤和方法。培养综合实践及独立分析、解决问题的能力;培养工程设计和研究能力。

二、课程设计设备

1. 硬件:PC机;

2. 软件:Windows操作系统,dsvlab1.0仿真软件。

三、课程设计要求

1. 独立思考,独立设计,独立调试;

2. 按照要求完成课程设计作品,作品能正常运行;

3. 撰写课程设计报告,设计报告要求层次清楚、整洁规范、不得互相抄袭。

四、课程设计任务

1.设计一台模型机,要求模型机的指令集如下图所示:

指令

符号

功能说明

算数逻辑命令

加法

ADD M

A+(M)→A

减法

SUB M

A-(M)→A

比较

CMP M

A-(M)

加1

INC

A+1→A

清零

CLA

0→A

访存指令

取数

LDA M

(M)→A

存数

STA M

A→M

无条件跳转

JMP M

无条件跳转至M

相等则跳转

BEQ M

相等则跳转至M

I/O指令

输入

IN

SW→A

其中:M表示存储单元地址,(M)表示M存储单元中的内容,A表示累加寄存器。

2.编写程序,求S=1+2+3+…+N,0<N<20,N从数据开关输入,S存入存储器,并在模型机上运行此程序。

3.调试成功后,整理出设计文档,包括:电路总框图、微程序控制器电路图、微指令格式表、微程序代码表、指令代码表。

五、设计思路

本实验基于简单系统,对其作出适当的调整和修改。简单模型操作系统指令位数与样本系统有所差异,所以本实验针对实际情况对部分指令作了适当的位数调整。简单模型机中的微指令长度为24位,正好用3片EPROM2716来存放,如果指令长度增加,3片EPROM2716就放不下,所以用4片EPROM2716。此模型的算术逻辑运算指令比上次多了6条指令,只有满足比较结果相等的条件才能实现此操作。需要做的工作有:

1.增加一片D型触发器74LS75作为状态条件寄存器,用于保存74LS81的A=B输出引脚的值。

2.在微指令格式中增加一个判别测试位P(2)和一个标志影响位LDSC.LDSC位高电平有效,只有此位为1的微指令才会影响状态条件寄存器的值。

3.修改微地址形成电路,在电路中使用P(2)来进行判别测试,并根据状态条件寄存器的值形成正确的跳转地址。

4.通过总线将微程序控制器同运算器、存储器等联机,组成一台计算机,用微程序控制器控制模型机数据通路,运行由十条机器指令组成的简单程序。

六、实验内容与步骤

1. 模型机数据通路总体设计。根据指令集的功能要求设计模型机的数据通路,画出对应的模型机电路图。

 

  <图1 数据通路总框图>

 

<图2 模型机电路图>

2. 微程序控制器设计,请在下面画出微程序控制器详细电路图,并标出各种信号。

 

<图3 微程序控制器电路图>

3. 微指令格式设计,请将微指令格式填入表1中。

表1  微指令格式

13

12

11

10

9

8

7

6

5

4

3

2

1

0

控制信号

LDPC

LDAR

LDSC

/ALU-B

/PC-B

/SW-B

/R0-B

P(2)

P(1)

μA4

μA3

μA2

μA1

μA0

27

26

25

24

23

22

21

20

19

18

17

16

15

14

控制信号

S3

S2

S1

S0

M

/CN

/CE

WE

/LOAD

LDR0

LDDR1

LDDR2

LDIR

4. 微指令格式设计,请完成微指令流程图。

<图4 微指令流程图>

5. 存储器中需要存储的代码

表2 存储器存储的代码

00000000001101000000011101001010

00000000001100000010011010000010

00000000001101000011010110000011

00000000001001000100011110110000

00000000001001001001011110000101

00000000001101010000011100000110

00000100101101100000001110000010

00000000001001001001011110001000

00000000001101010000011100001001

00000011000101100000001110000010

00000000001001001001011110011110

00000000001101010000011100001100

00000011000101000000001110000010

00000000000101100000001110000010

00000000001001100001011110000010

00000000001001000001011001101011

00000000001101100000011010000010

00000000001101000011010110000100

00000000001101000011010110000111

00000000001101000011010110001010

00000000001101010000011100001101

00000001100101100000001110000010

00000000001101000011010110001110

00000000001101000011010110001111

00000000001101000011010110011011

00000000001101000000011110000001

00000000001011000000011100000010

00000000001000000010011110000010

00000000

00010000

00001111

00100000

00001111

00110000

00001111

01000000

01010000

01100000

00001111

01110000

00001111

10000000

00000000

00001011

6. 微程序代码设计,请将微程序代码填入表3中,设计明细如图5所示。

表3 微程序二进制代码表

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

S3

S2

S1

S0

M

WE

/CE

/Cn

/LOAD

LDR0

LDDR1

LDDR2

LDIR

LDPC

LDAR

LDSC

R0-B

PC-B

SW-B

ALU-B

P(2)

P(1)

uA4

uA3

uA2

uA1

uA0

00

0

0

0

0

0

0

1

1

1

0

0

0

0

0

0

0

1

1

1

1

0

0

0

0

0

0

1

01

0

0

0

0

0

0

1

1

1

0

0

0

0

1

0

0

1

1

0

1

0

0

0

0

0

1

0

02

0

0

0

0

0

0

1

1

1

0

0

0

0

1

1

0

1

0

1

1

0

0

0

0

0

1

1

03

0

0

0

0

0

0

0

1

1

0

0

0

1

0

0

0

1

1

1

1

0

1

1

0

0

0

0

04

0

0

0

0

0

0

0

1

1

0

0

1

0

0

1

0

1

1

1

1

0

0

0

0

1

0

1

05

0

0

0

0

0

0

1

1

1

0

1

0

0

0

0

0

0

1

1

1

0

0

0

0

1

1

0

06

1

0

0

1

0

0

1

1

1

1

0

0

0

0

0

0

1

1

1

0

0

0

0

0

0

1

0

07

0

0

0

0

0

0

0

1

1

0

0

1

0

0

1

0

1

1

1

1

0

0

0

1

0

0

0

10

0

0

0

0

0

0

1

1

1

0

1

0

0

0

0

0

0

1

1

1

0

0

0

1

0

0

1

11

0

1

1

0

0

0

1

0

1

1

0

0

0

0

0

0

1

1

1

0

0

0

0

0

0

1

0

12

0

0

0

0

0

0

0

1

1

0

0

1

0

0

1

0

1

1

1

1

0

0

0

1

0

1

1

13

0

0

0

0

0

0

1

1

1

0

1

0

0

0

0

0

0

1

1

1

0

0

0

1

1

0

0

14

0

1

1

0

0

0

1

0

1

0

0

0

0

0

0

0

1

1

1

0

0

0

0

0

0

1

0

15

0

0

0

0

0

0

1

0

1

1

0

0

0

0

0

0

1

1

1

0

0

0

0

0

0

1

0

16

0

0

0

0

0

0

0

1

1

1

0

0

0

0

1

0

1

1

1

1

0

0

0

0

0

1

0

17

0

0

0

0

0

0

0

1

1

0

0

0

0

0

1

0

1

1

1

1

0

0

1

1

0

1

0

20

0

0

0

0

0

0

1

1

1

1

0

0

0

0

0

0

1

1

0

1

0

0

0

0

0

1

0

21

0

0

0

0

0

0

1

1

1

0

0

0

0

1

1

0

1

0

1

1

0

0

0

0

1

0

0

22

0

0

0

0

0

0

1

1

1

0

0

0

0

1

1

0

1

0

1

1

0

0

0

0

1

1

1

23

0

0

0

0

0

0

1

1

1

0

0

0

0

1

1

0

1

0

1

1

0

0

0

1

0

1

0

24

0

0

0

0

0

0

1

1

1

0

1

0

0

0

0

0

0

1

1

1

0

0

0

1

1

0

1

25

0

0

1

1

0

0

1

0

1

1

0

0

0

0

0

0

1

1

1

0

0

0

0

0

0

1

0

26

0

0

0

0

0

0

1

1

1

0

0

0

0

1

1

0

1

0

1

1

0

0

0

1

1

1

0

27

0

0

0

0

0

0

1

1

1

0

0

0

0

1

1

0

1

0

1

1

0

0

0

1

1

1

1

30

0

0

0

0

0

0

1

1

1

0

0

0

0

1

1

0

1

0

1

1

0

0

1

1

0

1

1

31

0

0

0

0

0

0

1

1

1

0

0

0

0

0

0

0

1

1

1

1

0

0

0

0

0

0

1

32

0

0

0

0

0

1

0

1

1

0

0

0

0

0

0

0

0

1

1

1

0

0

0

0

0

1

0

33

0

0

0

0

0

0

0

1

0

0

0

0

0

1

0

0

1

1

1

1

0

0

0

0

0

1

0

6

5

4

3

2

1

0

地址

P(2)

P(1)

uA4

uA3

uA2

uA1

uA0

00

0

1

0

0

0

0

1

01

0

0

0

0

0

1

0

02

0

0

0

0

0

1

1

03

0

0

1

0

0

0

0

04

0

0

0

0

1

0

1

05

0

0

0

0

1

1

0

06

0

0

0

0

0

1

0

07

0

0

0

1

0

0

0

10

0

0

0

1

0

0

1

11

0

0

0

0

0

1

0

12

0

0

0

1

0

1

1

13

0

0

0

1

1

0

0

14

0

0

0

0

0

1

0

15

0

0

0

0

0

1

0

16

0

0

0

0

0

1

0

17

0

0

1

1

0

1

0

20

0

0

0

0

0

1

0

21

0

0

0

0

1

0

0

22

0

0

0

0

1

1

1

23

0

0

0

1

0

1

0

24

0

0

0

1

1

0

1

25

0

0

0

0

0

1

0

26

0

0

0

1

1

1

0

27

0

0

0

1

1

1

1

30

0

0

1

1

0

1

1

31

0

0

0

0

0

0

1

32

0

0

0

0

0

1

0

33

0

0

0

0

0

1

0

     

          

<图5 微指令设计明细>

00

Do nothing(next 01)

01

输入PC进行初始化(next 02)

02

PC->BUS->AR  PC+1(next 03)

03

AR=0  RAM选中输出0000(IN)-->IR-->P?->20    (next 20)
AR=1  RAM选中输出0001(ADD)-->IR-->P?->21   (next 21)
AR=3  RAM选中输出0010(SUB)-->IR-->P?->22(next 22)
AR=5  RAM选中输出0011(CMP)-->IR-->P?->23(next 23)
AR=7  RAM选中输出0100(INC)-->IR-->P?->24(next 24)
AR=10  RAM选中输出0101(CLA)-->IR-->P?->25(next 25)
AR=11 RAM选中输出0110(LDA)-->IR-->P?->26(next 26)
AR=13 RAM选中输出0111(STA)-->IR-->P?->27(next 27)
AR=15 RAM选中输出1000(JMP)-->IR-->P?->30(next 30)
AR=17 RAM选中输出1001(BENQ)-->IR-->P?->31(next 31)

04

AR=2  RAM选中输出ADDR 17(IN)-->AR  RAM-->DR2(1011) (next 05)

05

R0-->BUS-->DR1(next 06)

06

A+B-->BUS-->R0(next 02)

07

AR=4  RAM选中输出ADDR 17(IN)-->AR  RAM-->DR2(1011)  (next 10)

10

R0-->BUS-->DR1(next 11)

11

A-B-->BUS-->R0(next 02)

12

AR=6 RAM选中输出ADDR 17(IN)-->AR  RAM-->DR2(1011) (next 13)

13

R0-->BUS-->DR1(next 14)

14

A CMP B-->BUS(next 02)

15

A+1-->BUS-->R0(next 02)

16

AR=12  RAM选中输出ADDR 17(IN)-->AR  RAM-->R0(1011) (next 02)

17

AR=14  RAM选中输出ADDR 17(IN)-->AR(next 32)

20

SW->R0 (next 02)

21

PC->BUS->AR  PC+1(next 04)

22

PC->BUS->AR  PC+1(next 07)

23

PC->BUS->AR  PC+1(next 12)

24

R0-->BUS-->DR1(next 15)

25

CLA 0 ->BUS->R0(next 02)

26

PC->BUS->AR  PC+1(next 16)

27

PC->BUS->AR  PC+1(next 17)

30

PC->BUS->AR  PC+1(next 33)

31

Do nothing(next 01)

32

R0-->BUS-->RAM(next 02)

33

AR=16  RAM选中输出ADDR 000(IN)-->BUS-->PC(000) (next 02

7. 微程序代码设计,请将微程序代码填入表4中。

表4  机器指令表

序号

指令格式

指令二进制代码

长度(bit)

1

IN

00000000

8bit

2

ADD

00010000

16bit

3

STA

01110000

16bit

4

JMP

10000000

16bit

5

SUB

00100000

16bit

6

CMP

00110000

16bit

7

INC

01000000

8bit

8

CLA

01010000

8bit

9

LDA

01100000

16bit

10

BEQ

10010000

16bit

8. 程序设计,编写程序,求S=1+2+3+…+N,0<N<20,N从数据开关输入,S存入存储器,并在模型机上运行此程序,填入表5中。

表5 内存中的程序与数据

内存地址

内容

含义

0

0

IN N

1

100000

STA N

2

11011

3

1110000

CLA

4

100000

STA S

5

11100

 

6

100000

STA count

7

11101

 

10

1100000

IN

11

100000

STA count

12

11101

 

13

10000

ADD S

14

11100

 

15

100000

STA S

16

11100

 

17

10000000

LDA count

20

11101

 

22

11011

 

23

10010000

BEQ

24

10111

 

25

110000

JMP→10

26

1000

 

27

10000000

LDA S

30

11100

 

31

110000

JMP

32

11001

 

33

 

存放N

34

 

存放S

35

 

存放count

36

 

 

37

 

 

9. 按照以上设计修改电路,修改RAM内容,修改微程序存储区内容,在模型机上运行程序,观察运行过程和结果,如果有错,找到并改正错误,一直到正确为止。注意电路的初始化过程和输入地址、数据的时机。

七、课程设计总结

1.心得体会

计算机组成原理实验课即将结束,通过多次实验,了解了计算机内部的结构,规模电路的构造,让我的眼界大开。

仍记得第一次计算机实验课时,对各种模块的功能都不懂,原本是每天都要面对的工具,却不知它的内部结构,通过二进制01就可以实现如此之多的功能,这些外行可以不懂,但我们作为计算机科学与技术专业的学生,不能不懂,也要去深入了解计算机的工作原理。通过学习《计算机组成原理》,了解了计算机基本的五大部件,运算器、控制器、存储器、输入设备、输出设备。而这次实验这次课程设计我获益良多,平时我们能见到的都是计算机的外部结构,在计算机组成原理的学习中,逐步对计算机的内部结构有了一些了解,但始终都停留在理论阶段。而在本次实验,让我们自己设计设计一台模型机,包含算数逻辑命令、访存指令、I/O指令,让我对运算器的内部结构有了更深的了解,并且对计算机组成原理也有了更深层次的理解,同时这次课程设计还锻炼了我的实验动手能力,也培养了我的认真负责的科学态度。

由于本次实验需要设计的地方过多,原理也比较复杂,老师很细心地一步一步的讲每个部件的做法,从简单到复杂,从容易到困难,初步把模型机完成。通过这次实验,更清楚意识到每个部件都对计算机都息息相关,了解计算机的基本组成和基本原理,构建整体意识,为以后设计芯片电路打下了一定的基础。

设计微程序模型机的过程中无疑会遇到很多问题,例如接线的过程,这是一个需要耐心,细心的环节,一是要在过程中不断测试集成电路接线的可行性,二是要在接线时尽量避免线路的重合。再者就是对指令译码的原理理解必须透彻,不能够在原模型机的基础上扩展指令数量,只能对现有的指令进行改进。

总的来说,这几次实验让我在计算机组成原理有了更深层次的认识,自己也收获良多,感谢周老师对本人的大力协助,让我和我的组员们能高效地解决遇到的问题。时间有限,只能做一个模型机实验,但是通过软件做电路,在以后的日子也可以自己做一下后面的实验,让自己的知识储备更加丰富。

2.经验教训

这次课程设计要求连线仔细认真,不能有半点错误,在刚做这个实验的时候,我就由于粗心没有正确的设置手动开关SW-BALU-B,导致存入的数据不正确

我在连线过程中也自己总结出了避免出错的方法,就是在接线图上将已经连接好的部分作上记号,连接完后再检查一遍各个分区的条数是否和实验接线图上的一样,如果一样就可以进行下面的实验步骤,就算出错了,改起来也容易多了。

3.注意事项

1.实验数据应尽可能多,不要重复。

2.连线的时候一定要细心,清楚该线要连到哪个接口,要实现什么功能。

3.要在了解的基础上理清思路,再做设计。

  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值