计算机组成原理课程设计任务书.docx
《计算机组成原理课程设计任务书.docx》由会员分享,可在线阅读,更多相关《计算机组成原理课程设计任务书.docx(15页珍藏版)》请在冰豆网上搜索。
![计算机组成原理课程设计任务书.docx](https://file1.bdocx.com/fileroot1/2023-1/10/539c4f44-a457-40ae-9f8d-a8096d47ef35/539c4f44-a457-40ae-9f8d-a8096d47ef351.gif)
计算机组成原理课程设计任务书
课程设计任务书
题目
专业、班级学号姓名
主要内容、基本要求、主要参考资料等:
完成期限:
指导教师签名:
课程负责人签名:
年月日
目录
第一章程序设计概述
1.1课程设计的教学目的
1.2课程设计任务和基本要求
第二章指定应用项目的设计实现
3.1设计任务
3.2任务分析及解决方案
3.3设计原理
3.4应用项目设计实现操作步骤
第三章收获、体会和建议
参考文献
第一章程序设计概述
1.1课程设计的教学目的
本课程设计的教学目的是在掌握计算机系统组成及内部工作机制、理解计算机各功能部件工作原理的基础上,深入掌握信息流和控制信息流的流动过程,进一步加深计算机系统各模块间相互关系的认识和整机的概念,培养开发和调试计算机的技能。
再设计实践中提高应用所学专业知识分析问题和解决问题的能力。
1.2课程设计任务和基本要求
本课程设计以TDN-CM++计算机组成原理教学实验系统为平台设计完成。
1.按给定的数据格式和指令系统,理解为程序控制器的设计原理。
2.设计给定机器指令系统遗迹微程序流程图,安慰指令格式写出微程序的微指令代码
3.连接逻辑电路,完成启动、测试、编程、校验和运行,并观测运行过程及结果。
4.将微程序控制器模块与运算器模块、存储器模块联机,组成一台模拟计算机。
5.用微程序控制器控制模型机的数据通路。
6.通过在模型机上运行由机器指令组成的简单程序,掌握机器指令与微指令的关系,建立计算机的整机概念,掌握计算机的控制机制。
7.按指定应用项目进行汇编指令格式及功能设计,并设计相应的机器指令代码,按照模型及数据通路设计实现机器指令功能的微程序。
在PC机上编辑机器指令和微程序,装载代码到TDN-CM++实验系统并运行,实现应用要求。
第二章指定应用项目的设计实现
3.1课程设计任务
从输入设备中读取数据X并将其存入以K为直接地址的内存单元,计算2X加X减1并将结果存入以N为间接地址的内存单元。
3.2课程设计思想及任务分析
在进行这一次设计之前当我们看见我们的题目的时候,我们联系到了最后的一次实验的机器运行的过程联系这次的的要求我们先明确的这次设计的大体过程,画大体图—汇编程序—流程图—微指令代码—检查,然后我们进行了下一步骤,观察题目在进行这一次的设计之时首先我们看见了在读取与储存时的两种不同的寻址方式,想到了这两种的不同,具体表示在流程图上面就是间接寻址要通过地址先找地址再找数据所以要分两次,然后我们又看了看我们的运算所需要的过程,对照书本的49页的代码,我们决定了将2X通过一次X加X算术运算来实现,由于X的给予只需要做运算即可,非运算书上有,加法运算书上有,减1运算书上面也有,于是我们就决定在预算过程过程中通过4次来实现,所以我们想到了先计算X加X然后在将2X求非再加X最后减1的运算流程,于是一个初步的构想于是就这样形成了,在写汇编程序时候我们也是忠实的按照这个构想来写的,由于设计不慎急于求成,将2x操作与非操作搞到一起了,虽然这样可以实现,但是在别的程序员阅读是会产生很大的不便,经过老师的讲解,我们迅速的从新改变了整体的思路,然后迅速修改,由于需要修改多条伪指令的编号我们决定大体不变,删除错的或者讲错的变为正确的,这样导致了我们的微指令并不是那么的连续,这样是一个程序上面的瑕疵吧,好在不影响运行与阅读。
设计顺序大致如下:
先画出了程序的流程,然后写出了汇编程序,并且写出了机器指令,其次我们完成了总体的流程图,然后根据流程图写出了微指令以及微指令代码,将机器指令代码与微指令代码写成了一个txt文档用机器录入,运行程序,对照程序上面显示的图与我们画的流程图进行对照,检查来判断这次试验的成功与否。
到此我们这一次的设计过程到这里就结束了,我们充分的参与并且体会了设计一个程序的每一次的收获,充分的体会了其中的设计的快乐与痛苦,对我们的专业只是也有很大的提升。
3.3设计原理
在部件试验中,我们是人为用二进制开关来模拟一些控制信号来完成数据通路的控制。
而在本课程设计中,数据通路的控制将由微程序控制器来完成,即一条机器指令对应一个微程序。
本设计的规定项目采用五条机器指令:
IN(输入)、MOV(将最终计算结果存入间接地址中)、ADD(二进制加法)、NOT(给2X取非)、STA(将X存入直接地址中)、DEC(减1)、OUT(输出)、HLT(保持执行结束状态,不再执行操作),其指令格式如下表1(前四位是操作码):
指令助记符
操作码
地址码
功能说明
IN
00000000
00000000
“INPUTDEVICE”->R0
ADD
00100000
01000000
00000011
00000110
(DR1)+(DR2)->R0
NOT
00110000
00000101
DR1->R0
STA
00110000
00000101
R0->RAM
DEC
01010000
00001000
R0-1->R0
MOV
01100000
00001001
R0->RAM,RAM->RAM
OUT
01000000
00000111
RAM->LED
HLT
01010000
00001001
停机
IN为单字长指令,含义是将输入设备输入的数据放入R0中
ADD为双字长指令,其含义是根据指令提供的地址将内存中的数取出放入DR2,与DR1中的数相加,结果放在R0。
NOT为单字长指令,含义是将R0的内容取非后放入R0。
STA为双字长指令,第二个字是要存放的地址,含义是将R0中的内容存储到第二字为地址的内存单元中。
DEC是单字长指令,含义是R0的内容减1后放入R0
MOV是双字长指令,第二字是要存放的间接地址,含义是将R0中的内容存储到第二字为间接地址的内存单元中。
OUT为双字长指令,含义是根据指令提供的地址,将内存中的数据取出由数码管进行显示。
HLT为空转指令,保持执行结束状态,并不在执行任何操作。
本设计的机器指令如下:
地址(二进制)
内容(二进制)
助记符
注释
00000000
00000000
INR0
“INPUTDEVIECE”->R0
00000001
00010000
STAR0,[0FH]
R0->[0FH]
00000010
00001111
00000011
00100000
ADD[0FH],R0
R0+[0FH]->R0
00000100
00001111
00000101
00110000
NOTR0
R0->R0
00000110
01000000
ADD[0FH],R0
R0+[0FH]->R0
00000111
00001111
00001000
01010000
DECR0
R0-1->R0
00001001
01100000
MOVR0,[[10H]]
R0->[[10H]]
00001010
00010000
00001011
01110000
OUT[[10H]]
[[10H]]->LED
00001100
00010000
00001101
10000000
HLT
停止
00001110
00001111
00000001
00010000
00010001
00010001
结果
为了向RAM中装入程序和数据,检查写入是否正确,并能启动程序执行,
还设计了三个控制台操作微程序:
存储器读操作(KRD):
拨动总清开关CLR后,当控制台开关SWB、SWA置
为“00”时,按START微动开关,可对RAM进行连续手动读操作。
存储器写操作(KWE):
拨动总清开关CLR后,当控制台开关SWB、SWA置
为“01”时,按START微动开关,可对RAM进行连续手动写入。
启动程序:
拨动总清开关CLR后,当控制台开关SWB、SWA置为“11”
时,按START微动开关,即可转入到第01号“取指”微指令,启动程序运行。
上述三条控制台指令用两个开关SWB、SWA的状态来设置,其定义如表2:
SWB
SWA
控制台指令
0
0
读内存(KRD)
0
1
写内存(KRD)
0
1
启动程序(RP)
按照如下规定的格式,用联机软件在CMPP中建立将机器指令及微指令的二进制代码编辑成十六进制的*.txt类型文件。
(微指令格式中的微指令代码为将表中的24位微代码按从左到右费城三个八位,将此三个八位二进制代码转换为相应的十六进制数即可),并用联机软件的转储功能将该式文件装载到试验系统中。
机器指令代码
机器指令格式说明:
$PXXXX
十六进制地址
微指令代码
微指令格式说明:
$MXXXXXXXX
十六进制地址
启动程序:
当控制台开关SWB、SWA置为“11”时,按START微动开关,即可转入到第01号“取指”微指令,启动程序运行。
根据以上要求设计数据通路框图如图2所示:
图2数据通路框图
微指令格式如表3所示:
24
23
22
21
20
19
18
17
16
151413
121110
987
6
5
4
3
2
1
S3
S2
S1
S0
M
Cn
WE
A9
A8
A
B
C
μA5
μA4
μA3
μA2
μA1
μA0
按照数据通路可画出机器指令的微程序流程图如图2所示。
当拟定“取指”微指令时,该微指令的判别测试字段为P
(1)测试。
由于“取指”微指令是所有微程序都使用的公用微指令,因此P
(1)的测试结果出现多路分支。
本实验中共出现8路分支,分别对应8种机器指令。
占用8个固定的微地址单元。
微程序流程图
根据流程图写出所有微指令代码
微指令代码
微地址
S3S2S1S0MCNWEA9A8
A
B
C
μ1μ2μ3μ4μ5μ6
00
000000011
000
000
000
010000
01
000000011
110
110
110
000010
02
000000001
100
000
001
100000
03
000000001
110
000
000
000100
04
000000101
000
001
000
000001
05
000000001
110
000
000
000110
06
000000001
011
000
000
000111
07
000000011
010
001
000
001111
10
000000001
110
000
000
001100
11
000000001
110
000
000
001101
12
000000001
010
000
000
001011
13
000001110
000
101
000
000001
14
000000101
000
001
000
000001
15
000000001
110
000
000
001010
17
100101011
001
101
000
000001
20
000000011
110
110
110
010010
21
000000001
110
110
110
010100
22
000000001
010
000
000
010111
23
000000011
000
000
000
000001
24
000000000
010
000
000
011000
26
000010011
001
101
000
000001
27
000001110
000
101
000
010000
30
000001101
000
101
000
010001
31
000000001
110
000
000
011010
32
000000001
011
000
000
011011
33
000000011
010
000
000
011100
34
100101011
001
101
000
000001
36
111101011
001
101
000
000001
37
000000001
110
000
000
001000
40
000000000
001
000
000
000001
41
000000011
110
110
110
000011
42
000000011
110
110
110
000101
43
000000011
010
001
000
010110
44
000000011
110
110
110
011001
45
000000011
010
001
000
011110
46
000000011
110
110
110
011111
47
000000011
110
110
110
001001
50
000000011
000
000
000
101000
指令寄存器(IR)用来保存当前正在执行的一条指令。
当执行一条指令时,先把它从内存取到缓冲寄存器中,然后再传送至指令寄存器。
指令划分为操作码和地址码字段,由二进制数构成。
为了执行任何给定的指令,必须对操作码进行测试[P
(1)],通过节拍脉冲T4的控制以便识别所要求的操作。
“指令寄存器”(实验板上标有“INSDECODE”的芯片)根据指令中的操作码译码结果强置微控器单元的微地址,使下一条微指令指向相应得微程序首地址。
本系统使用两种外部设备,一种是二进制代码开关,它作为输入设备(INPUTDEVICE);另一种是数码管,它作为输出设备(OUPUTDEVICE)。
例如:
输入时,二进制开关数据直接经过三态门送到总线上,只要开关状态不变,输入的信息也不变。
输出时,将输出的数据送到数据总线BUS上,当写信号(W/R)有效时,将数据打入输出锁存器,并在数码管显示。
2.4课程设计实现步骤
3.4.1按照图1接线图连接线路。
3.4.2联机写入程序(微指令),按照实验要求的规定格式,将机器指令及微指令二进制代码表编辑成十六进制的文件。
机器指令
$P0000
$P0110
$P020F
$P0320
$P040F
$P0530
$P0640
$P070F
$P0850
$P0960
$P0A10
$P0B70
$P0C10
$P0D80
$P0F01
$P1011
$P1100
微指令
$M00018110
$M0101ED82
$M0200C060
$M0300E004
$M04028201
$M0500E006
$M0600B007
$M0701A20F
$M0800E00C
$M0900E00A
$M0A00A00B
$M0B070A01
$M0C028201
$M0D00E00A
$M0F959A01
$M1001ED92
$M1100ED94
$M1200A017
$M13018001
$M14002018
$M16099A01
$M17070A10
$M18068A11
$M1900E01A
$M1A00B01B
$M1B01A21C
$M1C959A01
$M1EF59A01
$M1F00E008
$M20001001
$M2101ED83
$M2201ED85
$M2301A216
$M2401ED99
$M2501A21E
$M2601ED7F
$M2701ED89
$M28018028
3.4.3联机运行
联机运行程序时,进入软件界面,装载机器指令及微指令后,选择[运行]→[通路图]→[复杂模型机]功能菜单打开相应的动态数据通路图,按相应功能键即可联机运行、监控、调试程序。
3.5实验设计结果与分析
在经过运行之后可以得出以下结果:
输入数值X=00000001(01H)
直接地址K=00001111(0FH)
中间结果2X=11111101(FDH)
间接地址N=00010000(10H)
间接地址所指直接地址00010001(11H)
最终结果2X加X减1=11111101(FDH)
经检验,输出结果与计算结果相符,证明实验设计正确
3.6实验设计小结
本次实验大体上分为三步。
首先,是连接电路。
其次,装载课程设计指导书上设计的程序并测试运行,通过观察运行情况和数据在总线上的流动,了解各功能部件的工作原理和工作机制以及流程图各指令的含义。
最后,自己设计程序并装载运行并检验运行结果。
对于自己要设计的程序首先根据题目要求写出它的汇编格式,再根据这个汇编格式写出机器指令并设计出微程序流程图。
最后根据所设计的微程序流程图写出其微指令代码。
这些工作完成后把所设计的机器指令和微程序代码改写成指定的格式装载到实验系统上运行,观察运行过程和设计目的是否一致。
如果不一致,要进行适当的修改直到一致为止。
经过多次修改,最终实现设计要求。
通过这次实验设计是我加深了对机器指令和微指令的理解和计算机计算流程的了解。
第三章收获体会和建议
通过这一次的课程设计,我们收获很大,我们了解了一个比较成熟的模型机的实现,并在参与其中,体会其中的种种困难,了解到了难点的地方,这对于我们学习这门课程有着很大的帮助,同时对于之前的几次试验我们操作机器录入的理解也更加的深刻了,在设计过程中,我们从开始的粗略的一个概念,到中间的疑惑与焦虑,到解决了问题的快乐。
这对于我们以后工作也有着很大的好处,培养了我们遇到问题,分析问题,解决问题各个方面上的能力。
平时我们做作业也都是在做书本上面给我们的题目,而这一次则是由我们自己设计出的,这对我们的创新意识也是一种很大大培养。
我相信有了这种实验的经历,我们以后再就业的过程当中也会多一份自信。
我们希望学校以后可以多为我们提供这样的机会,这样我们就可以在实践中得到平时课堂上面所缺失的一些能力,同时希望学校可以在别的学科也可以小组成员里这样给我们提供如此之好的条件来进行教学。
这样可以使我们的综合素质的到很好的提升。
参考文献
《计算机组成原理》科学出版社白中英著
《计算机组成原理课程设计指导》长安大学周立著
教师点评
教师姓名:
日期: