表3-2 微指令表
KRD KWE RP
NOR
OUT
010000 010010 010001 010100 010011 010101 000101 011011 100001 100010 100011 100100 011100 101001 101010 0000 0000 0000 0000 0000 0000 1001 0000 0000 0000 0000 0001 0000 0000 0000 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 110 000 110 000 110 100 000 110 110 011 010 001 110 110 000 111 000 111 110 111 000 101 111 000 000 000 101 111 000 000 000 000 000 000 000 001 000 000 000 000 000 000 000 000 000
010010 010000 010100 010001 010101 011000 010011 100001 100010 100011 100100 010011 101001 101010 010011
3.4连接实验线路
按图3.2连接实验线路,仔细查线路无误后接通电源。
图3.2 实验接线图
3.5写指令
3.5.1 写微指令
⑴将编程开关置为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.5.2 写机器指令
使用图2.4所示的控制台KWE和KRD微程序进行机器指令程序的装入和检查。 ⑴使编程开关处于“RUN”,STEP为“STEP”状态,STOP为“RUN”状态。
⑵拨动总清开关CLR(1→0→1),微地址寄存器清零。此时用“DATA UNIT”单元的8位二进制开关给出要写入RAM区的首地址,控制台SWB、SWA开关置为“0 1”,按动一次启动开关START,微地址显示灯显示“010001”,再按动一次START,微地址灯显示“010100”,此时数据开关的内容置为要写入的机器指令,按动一次START键,即完成该条指令的写入。
若仔细阅读KWE的流程,就不难发现,机器指令的首地址只要第一次给入即可,PC会自动加1,所以,每次按动START,只有在微地址灯显示“010100'’时,才设置内容,直到所有机器指令写完。
写完机器指令后须进行校验。拨动总清开关CLR(1→0→1)后,微地址清零。此时用“DATA UNIT'’单元的8位二进制开关置要读的RAM区的首地址,控制台开关SWB、 SWA为“0 0”,按动启动START,微地址灯将显示“010000",再按START,微地址灯显示为“010010",第三次按START,微地址灯显示为“010000”,此时总线单元的显示灯显示为该首地址的内容。不断按动START,可检查后续单元内容,注意:每次仅在微地址灯显示为“010000”时,显示灯的内容才是相应地址中的机器指令内容。
3.6运行程序
3.6.1单步运行程序
⑴使编程开关处于“RUN”状态,STEP为“STEP”状态,STOP为“RUN”状态。 ⑵拨动总清开关CLR(1→0→1),微地址清零。
⑶将“DATA UNIT”的8位数据开关(D7~D0)设置为机器指令首地址。
⑷按动START启动键,单步运行一条微指令,每按动一次START键,即单步运行一条微指令。对照微程序流程图,观察微地址显示灯是否和流程一致。
⑸当运行结束后,可检查存数单元中的结果是否和理论值一致。
3.6.2连续运行程序
⑴使“STATE UNIT”中的STEP开关置为“EXEC”状态。STOP开关置为“RUN”状态。
⑵将“DATA UNIT”的8位二进制开关设置为机器指令程序首地址,然后按动START,系统连续运行程序,稍后将STOP拨至“STOP”时,系统停机。
⑶停机后,可检查存数单元结果是否正确。
第四章 遇到的问题及解决方法
在此次计算机组成原理课程设计中我们小组遇到了不少问题。
在设计机器指令代码时,由于对每条指令的操作数部分理解的不是很全面和到位,导致一些诸如求或操作的结果无法正确保存进纸面上指定的地址。在经过对机器指令代码仔细的研究后,知道了程序运行的过程,即先取出操作码进行判断后,再取出操作数进行实际的运算。从而解决了以上出现的问题。
在绘制微指令流程图时,由于在经过P(1)的译码后,要对以后每一条功能指令进行地址的转换,这就需要在译码前选定一个好的后续转换地址。但由于前期没有经验,只是随机的选出几个数来作为后续地址,导致经过转换过来的地址始终有重复。后来经过仔细分析,最终选定40H作为后续地址。
在连接实验线路的步骤时,由于线路板复杂和连线杂乱的原因,致使有几条线的正反顺序接错。导致在程序运行的阶段数据总线显示灯不能正常的显示。在反复细心的检查后查出了问题,从而排除了问题。
在微指令输入时,由于指令的重复与烦琐,致使在输入过程中有几个数位输入错误,导致程序只能运行一半,无法完整运行。在浪费了很长时间重新输入所有的微指令后,才解决掉这个问题。
设计总结
为期一周的计算机组成原理课程设计很快就结束了。在这一个星期的时间里,我们经过不懈的努力,完成了所选课程设计的内容。能够实现任务书上的基本要求,在微程序编写和调试的过程中,我们将计算机组成原理的知识又重新的温习了一次,使我们的计算机组成原理知识又稳固了一次。
我们小组不但要完成给定任务的编写与调试,还选择了NOT指令的编写与调试。并且更是把其余的要求有能力完成的指令也成功编写调试。在整个课设过程中,我们团结一致,为该微指令的设计工作打下了良好的基础。尽管设计中的困难是不可必免的,但在解决困难的过程中,我们也学会了独立思考,增强了团队意识,同时也加深了对控制台操作的理解,这为我们今后的学习与工作,提供了良好的实习机会,进一步增强了我们的实践能力,提高了我们对本专业知识的运用能力,这也是该课程开设目地所在。课程设计是对我们专业知识掌握程度的检查,是否游刃有余的掌握所学的专业知识,能够在课程设计的过程中完全的展现出来。同时也是对我们的合作精神有个考验,让我们学会了如何利用自己所擅长的方面与别人配合,团体之间相互补偿。