目 录
1 设计概述 ·········································································································································· 1
1.1设计题目 ································································································································· 1 1.2设计目的 ································································································································· 1 1.3设计器材 ································································································································· 1 2 设计原理 ·········································································································································· 2
2.1设计基本原理 ························································································································· 2 2.2需要执行的机器指令 ············································································································· 2 2.3数据通路图 ····························································································································· 2 2.4微指令格式 ····························································································································· 3 2.5微程序地址的转移 ················································································································· 4 2.6 机器指令的写入、读出和执行 ···························································································· 6 3 设计步骤 ·········································································································································· 8
3.1编写机器指令 ························································································································· 8 3.2绘制微程序流程图 ················································································································· 8 3.3 编写微指令代码 ·················································································································· 10 3.4连接实验线路 ······················································································································· 10 3.5写入微指令 ··························································································································· 11 3.6写入机器指令 ······················································································································· 11 3.7运行程序 ······························································································································· 12 4 遇到的问题及解决方法 ················································································································ 13
4.1 遇到的问题 ·························································································································· 13 4.2 解决的方法 ·························································································································· 13 设计总结 ············································································································································ 14
I
计算机组成原理课程设计 设计概述
1 设计概述
1.1设计题目
基本模型机的设计与实现。
1.2设计目的
1. 在掌握部件单元电路实验的基础上,进一步将其组成系统,构造一台基本模型计算机。 2. 为其定义若干条机器指令,并编写相应的微程序,上机调试,掌握整机概念。
1.3设计器材
TDN-CM计算机组成原理教学实验系统一台,排线若干。
1
计算机组成原理课程设计 设计内容
2 设计原理
2.1设计基本原理
前面的部件实验过程中,各部件单元的控制信号是人为模拟产生的,而本次设计将能在微程序控制下自动产生部件信号,实现特定指令功能。这里,计算机数据通路的控制将由微程序控制器来完成,CPU从内存中取出一条机器指令到指令执行结束的一个指令周期全部由微指令组成的序列来完成,即一条机器指令对应一个微程序。
本次系统使用两种外部设备,一种是二进制代码开关(DATA UNIT),它作为输入设备;另一种是发光二极管(BUS UNIT上的一组发光二极管),它作为输出设备。例如:输入时,二进制开关数据直接经过三态门送到总线上,只要开关状态不变,输入的信息也不变。输出时,将输出数据送到数据总线BUS上,驱动发光二极管显示。
2.2需要执行的机器指令
本次设计采用六条机器指令;IN(输入)、OR(或运算)、ASR(两个数相减)、AND(二进制与操作)、OAD(混合运算)、OUT(输出),其指令格式如下表2.1所示。
表2.1 机器指令格式 助记符 IN OR [addr] 机器指令码 0000 0000 0001 0000 XXXXXXXX 0010 0000 XXXXXXXX 0011 0000 XXXXXXXX 0100 0000 XXXXXXXX 0101 0000 XXXXXXXX 说明 “DATA UNIT”中的开关状态->R0 R0 OR [addr]→R0 [addr]-R0→R0 R0 AND [addr]→R0 (R0 or[addr])+R0->[addr] ASR [addr] AND[addr] OAD [addr] OUT [addr] [addr] →BUS 其中机器指令码的最高8位为操作码。IN为单字长(8位),其余为双字长指令。XXXXXXXX为addr对应的二进制地址码。
2.3数据通路图
通常把许多寄存器之间传送信息的通路,称为数据通路。信息从什么地方开始,中间经过哪个寄存器或三态门,最后传送到哪个寄存器,都要加以控制。
本实验系统的数据通路图,如图2.1所示。
2
计算机组成原理课程设计 设计内容
图2.1数据通路图
注意: ①片选信号CE=0为有效电平,CE=1为无效电平。 ②WE=1为写入,WE=0为读出。
③LOAD和LDPC同时为“1”时,可将总线上的数据装入到PC中;LDPC为“1”,同时LOAD为“0”时,将PC中内容加1。
④M=0为算术运算,M=1为逻辑运算。
⑤CN=0表示运算开始时低位有进位,否则低位无进位
2.4微指令格式
微指令字长共24位,其控制位顺序如图2.2所示。
3
计算机组成原理课程设计 设计内容
图2.2 微指令格式
其中UA5~UA0为下一条微指令微地址,A、B、C为三个译码字段,分别由三个控制位译码出多种不同控制信号。
A字段中的各种信号功能是将总线上的数据存入相应的寄存器中。
B字段中的各种信号功能是将寄存器中的数据或通过开关输入的数据传送到总线上。
C字段中的P(1)~P(4)是四个测试字位。其功能是根据机器指令及相应代码进行译码,使微程序转入相应的微地址入口,从而实现微程序的顺序、分支、循环运行,其原理如图3所示。
2.5微程序地址的转移
本实验系统的指令寄存器(IR)用来保存当前正在执行的一条指令。当执行一条指令时,先把该指令从内存取到缓冲寄存器中,然后再传送至指令寄存器。指令划分为操作码和地址码字段,由二进制数构成,为了执行任何给定的指令,必须对操作码进行测试[P(1)],通过节拍脉冲T4的控制以便识别所要求的操作。“指令译码器”(实验板上标有“INS DECODE”的芯片)根据指令中的操作码译码后的结果,将微控器单元的微地址修改为下一条微指令的地址。
地址修改要依靠实验系统的微程序地址转移电路来完成,该电路如图2.3所示。
4
计算机组成原理课程设计 设计内容
图2.3 微程序地址转移电路
图中左侧的FC、FZ、P(1)~P(4)均为低电平有效。当T4有正脉冲信号到来时该电路开始工作。I7~I2中输入指令寄存器的第7~2位,SE5~SE1为微程序地址转移电路的输出结果。
根据SE5~SE1的值,实验系统自动将下一条微指令的原始地址UA4~UA0修改为实际的正确地址。修改方法是将SE5~SE1的值与下一条微指令的原始地址UA4~UA0进行按位操作,SE5~SE1中为1的位对应的原始地址UA4~UA0中的位保持不变,而SE5~SE1中为0的位对应的原始地址UA4~UA0中的位强置为1。
根据该逻辑电路图,得SE1~SE5的逻辑表达式:
SE5(FCFZ)T4p(3)
(FCFZ)T4P(3) (1)
SE4I7T4P(1)
I7T4P(1) (2)
SE3I6T4P(1)
I6T4P(1) (3)
SE2(I5T4P(1))(I3T4P(2))(SWBT4P(4))
(I5T4P(1))(I3T4p(2))(SWBT4P(4)) (4)
5
计算机组成原理课程设计 设计内容
SE1(I4T4P(1)(I2T4P(2))(SWAT4P(4))
(I4T4P(1))(I2T4P(2))(SWAT4P(4)) (5)
由这些逻辑表达式可知: ① 由于P(1)~P(4)微指令中C字段译码后的部分输出,所以它们至多有一个有效(低电平)。
② 当P(1)有效时,在T4时刻,可以通过对I4~I7置“1”,使对应的SE1~SE4有效(低电平)。
③ 当P(2)有效时,在T4时刻,可以通过对I2~I3置“1”,使对应的SE1~SE2有效(低电平).
④ 当P(3)有效时,在T4时刻,标志位FZ或者FC有效(高电平)使SE7有效(低电平)。
⑤ 当P(4)有效时,在T时刻,外部输入控制信号SWA或者SWB有效(高电平),使SE1~SE2有效(低电平)
2.6 机器指令的写入、读出和执行
为了向RAM中装入机器指令程序和数据,检查写入是否正确,并能启动机器指令程序执行,还必须设计三个控制台操作微程序。
存储器读操作(KRD):拨动总清开关CLR(使CLR从1→0→1)后,控制台开关SWB、SWA置为“0 0”时,按START微动开关,可对RAM连续手动读操作。
存储器写操作(KWE):拨动总清开关CLR后,控制台开关SWB、SWA置为“0 1”时,按START微动开关可对RAM进行连续手动写入。
启动程序:拨动总清开关CLR后,控制台开关SWB、SWA置为“1 1”时,按START微动开关,即可转入到第23号“取指”微指令,启动程序运行。
上述三条控制台指令用两个开关SWB、SWA的状态来设置,其定义如表2.2所示。
表2.2 控制台指令 SWB SWA 控制台指令 0 0 读内存(KRD) 0 1 写内存(KWE) l l 启动程序(RP)
三个控制台操作微程序的流程图如图2.4所示。
6
计算机组成原理课程设计 设计内容
数表示。
控制台操作为P(4)测试,它以控制台开关SWB、SWA作为测试条件,出现了3路分支,占用3个固定微地址单元。当分支微地址单元固定后,余下的微指令可以存放在控制存储器的其他任意单元中。
当设计“取指”微指令时,该微指令的判别测试字段为P(1)测试。由于“取指”微指令是所有微程序都使用的公共微指令,因此P(1)的测试结果出现多路分支。本机用指令寄存器的前六位(IR7—IR2)作为测试条件,最终形成多个微地址,出现多路分支。
图2.4 控制台操作微程序流程图
注意:控制台操作微程序流程图中方框右上角的数字代表该条微指令的地址,用八进制
7
计算机组成原理课程设计 设计步骤
3 设计步骤
3.1编写机器指令
设计各条机器指令操作码和操作数(地址),并为指令和数据在RAM(616芯片)中分配存储地址
本次设计将实现六条机器指令分别为:IN、OR[addr]、ASR[addr]、AND[addr]、OAD[addr]、OUT[addr],机器指令程序及数据存放地址如表3.1所示。
表3.1 机器指令程序及数据存放地址
地址 40 H 41 H 42 H 43 H 44 H 45 H 46 H 47 H 48 H 49 H 4A H 4B H 4C H 4D H 4E H 4F H 机器指令码 0000 0000 0001 0000 OR[4BH] 0100 1011 0100 0000 ASR[4CH] 0100 1100 0011 0000 AND [4DH] 0100 1101 0100 0000 OAD[4EH] 0100 1110 0101 0000 OUT[4EH] 0100 1110 0000 0011 0000 0010 0000 0011 0000 0100 0000 0101 (R0 or[4EH])+R0->[R0] R0 AND [4DH]→R0 [4CH] - R0→R0 R0 OR [4BH]→R0 助记符 IN 说 明 “DATA UNIT”中的开关状态→R0 [4EH] →BUS 内容自定 内容自定 内容自定 内容自定 内容自定 3.2绘制微程序流程图
根据每条机器指令的功能,为每条机器指令画出微程序流程图,并为其中的每条微指令分配地址。
本次课程设计,我们小组共设计了6条指令,即IN、OR[addr]、ASR[addr]、AND[addr]、OAD[addr]、OUT[addr]。其中,我负责其中的AND[addr]。微程序流程图如图3.1所示。
8
计算机组成原理课程设计 设计步骤
KWE(01) KT
00Q (SW)→PC 20Q P(4) KRD(00) RP(11) 21Q PC→AR PC+1 24Q (SW)→BUS BUS→RAM
20Q 23Q PC→AR PC→AR PC+1 PC+1 22Q 25Q RAM→BUS RAM→BUS BUS→IR P(1) 43Q PC→AR PC+1 64Q RAM→BUS BUS→AR 65Q RAM→BUS BUS→DR2 66Q R0→DR1 67Q DR1 and DR2→R0 图3.1微程序流程图
9
计算机组成原理课程设计 设计步骤
3.3 编写微指令代码
将画好的微程序流程图中每一CPU周期的微操作转化成二进制代码,根据微指令格式,微指令字长共24位,由其控制位顺序得各个微操作的二进制代码表。
各条指令的微指令二进制代码如表3.2所示。
表3.2 微指令代码 微地址 (八进制) 00 20 22 21 24 23 25 43 64 65 66 67 S3 S2 S1 S0 M CN WE CE LDPC 000000011 000000011 000000000 000000011 000000100 000000011 000000000 000000011 000000000 000000000 000000010 101110010 A 101 110 000 110 000 110 100 110 110 011 010 001 B 110 111 000 111 110 111 000 111 000 000 001 101 C 100 000 000 000 000 000 001 000 000 000 000 000 UA5---UA0 (八进制) 20 22 20 24 21 25 40 64 65 66 67 23 3.4连接实验线路
全部微程序设计完毕后,按图3.4所示连接实验线路,仔细查线路无误后接通电源。
图3.4实验线路图
10
计算机组成原理课程设计 设计步骤
3.5写入微指令
将“二进制微指令代码表”中设计好的微指令正确的写入E2PROM(2816芯片)中,校验正确后就可进行下一步
写入步骤:
⑴将编程开关置为PROM(编程)状态。
⑵将实验板上“STATE UNIT”中的“STEP”置为“STEP”,“STOP”置为“RUN”状态。
⑶用二进制模拟开关UA0~UA5置微地址MA0~MA5。
⑷在MK23~MK0开关上置微指令代码,24位开关对应24位显示灯,开关置为“0”时灯亮,开关置为“l”时灯灭。
⑸启动时序电路(按动启动按钮“START”),即将微代码写入到E2PROM 2816的相应地址对应的单元中。
⑹重复⑶~⑸步骤,将表3-2中的微代码写入E2PROM 2816。
写完微指令后须进行校验。将编程开关设置为READ(校验)状态。将实验板的“STEP”开关置为“STEP”状态。“STOP”开关置为“RUN”状态。用二进制模拟开关UA0~UA5置好微地址MA0~MA5。按动“START”键,启动时序电路,读出微代码。观察显示灯MD23~MD0的状态(灯亮为“0”,灭为“1”),检查读出的微代码是否与写入的相同。如果不同,则将开关置于PROM编程状态,重新写入微指令即可。
3.6写入机器指令
使用图2.4所示的控制台KWE和KRD微程序将机器指令的写入RAM(6116芯片)中,然后进行校验。
写入步骤;
A.使编程开关处于“RUN”,STEP为“STEP”状态,STOP为“RUN”状态。
B.拨动总清开关CLR(1→0→1),微地址寄存器清零。此时用“DATA UNIT”单元的8位二进制开关给出要写入RAM区的首地址,控制台SWB,SWA开关置为“01”,按动一次启动开关START,微地址显示灯显示“010001”,再按动一次START,微地址灯显示“010100”,此时数据开关的内容置为要写入的机器指令,按动一次START键,即完成该条指令的写入。若仔细阅读KWE的流程,就不难发现,机器指令的首地址只要第一次给入即可,PC会自动加1,所以,每次按动START,只有在微地址灯显示“010100”时,才设置内容,直到所有机器指令写完。
C.写完程序后须进行校验。拨动总清开关CLR(1→0→1)后,微地址清零。此时用“DATA UNIT”单元的8位二进制开关置要读的RAM区的首地址,控制台开关SWM,SWA为“0 0”,按动启动SRART,微地址灯将显示“010000”,再按START,微地址灯显示为“010010”,第三次按START,微地址灯显示为“010000”,此时总线单元的显示灯显示为该首地址的内容。不断按动START,可检查后续单元内容。
注意:每次仅在微地址灯显示为“010000”时,显示灯的内容才是相应地址中的机器指令内容。
11
计算机组成原理课程设计 设计步骤
3.7运行程序
调试运行程序,检查结果是否和理论值一致 ①单步运行程序
A.使编程开关处于“RUN”状态,STEP为“STEP”状态,STOP为“RUN”状态。 B.拨动总清开关CLR(1→0→1),使微地址清零。
C.将“DATA UNIT”的8位数据开关(D7~D0)设置为机器指令首地址。
D.按动START启动键,单步运行一条微指令,每按动一次START键,即单步运行一条微指令。对照微程序流程图,观察微地址显示灯是否和流程一致。
E.当运行结束后,可检查存数单元中的结果是否和理论值一致。 ②连续运行程序
A.使“STATE UNIT”中的STEP开关置为“EXEC”状态。STOP开关置为“RUN”状态。
B.将“DATA UNIT”的8位二进制开关设置为机器指令程序首地址,然后按动START,系统连续运行程序,稍后将STOP拨至“STOP”时,系统停机。
C.停机后,可检查存数单元结果是否正确。
12
计算机组成原理课程设计 遇到问题及解决方法
4 遇到的问题及解决方法
4.1 遇到的问题
本次课程设计我主要负责控制台连线和AND指令。
在具体的设计过程中,由于对操作流程的不熟悉,一开始就感觉无从下手,不知道具体应该做些什么操作。在设计中,从开始分析数据通路图到对指令流程图的分析、设计,以及微指令的编码、写入,都遇到了一系列的问题。
在连接实验线路的步骤时,由于线路板复杂和连线杂乱的原因,致使有几条线的正反顺序接错。导致在程序运行的阶段数据总线显示灯不能正常的显示。在反复细心的检查后查出了问题,从而排除了问题。
在微指令输入时,由于指令的重复与烦琐,致使在输入过程中有几个数位输入错误,导致程序只能运行一半,无法完整运行。在浪费了很长时间重新输入所有的微指令后,才解决掉这个问题。
在输入机器指令时,微地址显示灯不能显示“010001”,无法输入机器指令。后来检查是由于微地址设计不正确。
4.2 解决的方法
对于本次课程设计我们小组遇到的问题,当和同学讨论无法解决时,我们会请教老师,在老师认真的讲解下,最终得到的正确的解答。
对于微程序流程图的设计出现的错误,在老师的指导下进行了改正;对于微指令地址的计算,老师给我们仔细的讲了一遍,最后在老师的指导下,我们把微地址和信号都写正确了,确定了我们的微指令;
对于微指令设计的错误。我们重新设计了微指令并重新输入。
13
计算机组成原理课程设计 设计总结
设计总结
为期一周的计算机组成原理课程设计很快就结束了。在这一个星期的时间里,我们经过不懈的努力,完成了所选课程设计的内容。能够实现任务书上的基本要求,在微程序编写和调试的过程中,我们将计算机组成原理的知识又重新的温习了一次,使我们的计算机组成原理知识又稳固了一次。
课程设计的前的一星期我们在王老师的带领下学习了本次设计的任务指导书,了解了我们要完成的任务。我们小组不但要完成给定任务的编写与调试,还选择了OUT指令的编写与调试。并且更是把其余的要求有能力完成的指令也成功编写调试。在课程设计之前,我们面对着指导书并不知道自己要做的是什么,但是随着设计的一步一步进行,慢慢地一切都明了起来。只有进过自己的双手、经过自己大脑思考的东西才能被我们真正理解,纸上谈兵不是真的本事。录入微指令后,我们就要录入机器指令,让所有的微指令在我们的控制之下按照流程图进行。在进入微程序时候表示了微指令的地址,在有数据经过总线的时候显示的是数据的内容以及数据存放的地址,在运行完一个微程序的时候还会显示运行出来的结果。所有的处理都是针对二进制数的运算处理,所以在录入指令的时候需要格外的注意,反复的检查,以防止错误。
在整个课设过程中,我们团结一致,为该微指令的设计工作打下了良好的基础。尽管设计中的困难是不可必免的,但在解决困难的过程中,我们也学会了独立思考,增强了团队意识,同时也加深了对控制台操作的理解,这为我们今后的学习与工作,提供了良好的实习机会,进一步增强了我们的实践能力,提高了我们对本专业知识的运用能力,这也是该课程开设目地所在。课程设计是对我们专业知识掌握程度的检查,是否游刃有余的掌握所学的专业知识,能够在课程设计的过程中完全的展现出来。同时也是对我们的合作精神有个考验,让我们学会了如何利用自己所擅长的方面与别人配合,团体之间相互补偿。
这次课程设计让我们学到了许多的知识,其中有许多是在课本上学不到的。增加了对微指令与机器指令设计的经验,也提高了自己的动手能力。对将来在社会上进行一系列的活动和工作有着非常大的帮助。经过这次课程设计,我也知道了在今后社会上的活动和工作方式。所以这次课程设计是一次难得的锻炼机会。
实践出真知,课程设计要亲手做过,才能明白其中的各种滋味,无论成功或失败,每一次尝试都是一种收获。此计算机组成原理课程设计是我们实践指令编写与调试的又一新的起点,我们坚信在老师的指导之下,通过我们的努力,我们定会在计算机组成原理之路走得更高、更远。
14
因篇幅问题不能全部显示,请点此查看更多更全内容