您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 计算机组成原理课程设计-复杂模型机设计实验
复杂模型机设计实验1、实验目的综合运用所学计算机原理知识,设计并实现较为完整的计算机。2、实验设备1、ZYE1603B计算机组成原理教学实验系统一台,排线若干。2、PC机一台。3、数据格式及指令系统1.指令格式模型机设计四大类指令共十六条,其中包括算术逻辑指令、I/O指令、访问及转移指令和停机指令。1).算术逻辑指令设计9条算术逻辑指令并用单字节表示,寻址方式采用寄存器直接寻址,其格式如下:D7D6D5D4D3D2D1D0OP-CODErsrd其中,OP-CODE为操作码,rs为源寄存器,rd为目的寄存器,并规定:rs或rd选定的寄存器000110R0R1R29条算术逻辑指令的名称、功能和具体格式见表2).访存指令及转移指令模型机设计2条访存指令――存数(STA)和取数(LDA),2条转移指令――无条件转移(JMP)和结果为零或有进位转移指令(BZC),这4条指令长度为2个字节,其指令格式为:D7D6D5D4D3D2D1D000MOP-CODErdD其中,OP-CODE为操作码,rd为目的寄存器地址(LDA、STA指令使用)。D为偏移量(正负均可),M为寻址模式,其定义如下:寻址模式M有效地址E说明00011011E=DE=(D)E=(RI)+DE=(PC)+D直接寻址间接寻址RI变址寻址相对寻址本模型机规定变址寄存器RI指定为寄存器R2。3).I/O指令输入(IN)和输出(OUT)指令采用单字节指令,其格式如下:D7D6D5D4D3D2D1D0OP-CODEaddrrd其中,addr=01时,选中“INPUTDEVICE”中的开关组作为输入设备,addr=10时,选中“OUTPUTDEVICE”中的数码块作为输出设备。4).停机指令指令格式如下:D7D6D5D4D3D2D1D0011100rdOP-CODE0000HALT指令用于实现停机操作。2.指令系统本模型机共有16条基本指令,其中算术逻辑指令7条,访存指令和程序控制指令4条,输入输出指令2条,其它指令1条,表列出了各条指令的格式、汇编符号、指令功能。表1助记符号指令格式功能CLRrdMOVrs,rdADCrs,rdSBCrs,rdINCrdANDrs,rdCOMrdRRCrs,rdRLCrs,rd1000rsrd1001rsrd1010rsrd1011rd1100rsrd1101rd1110rsrd1111rsrd0→rdrs→rdrs+rd+cy→rdrs-rd-cy→rdrd+1→rdrs∧rd→rd→rdrs→rdrs←rd00M00rdDLDAM,D,rdSTAM,D,rdJMPM,DBZCM,D00M01rdD00M00rdD00M00rdDE→rsrd→EE→PC当CY=1或Z=1,E→PCINaddr,rdOUTaddr,rd010001rd010101rdaddr→rdrd→addrHALT010001rd停机4、总体设计本模型机的数据通路框图如图所示。图1:复杂模型机数据通路图根据机器指令系统的要求,设计微程序流程图及确定微地址如下:图2:复杂模型机微程序流程图按照系统建议的微指令格式,参照微指令流程图,将每条微指令代码化,译成二进制代码表,并将二进制代码表转换为联机操作时的十六进制格式文件。5、实验步骤1.根据复杂模型机的指令系统,编写实验程序。实验过程如下:本实验完全使用寄存器操作。程序首先从数据输入开关采集数据放入R0中,经循环左移两次放入R1中。然后再次从数据输入开关采集数据放入R0中,经循环将右移一次与R1中的数据相加,其结果送到R1中,然后判断加法的结果是否有进位或为全零,若是就循环运行,否则,输出结果到数码管上显示。实验的机器指令程序如下:根据流程图,确定如下微程序:微程序:$M00018108$M2205DB81$M0101ED82$M230180E4$M0200C050$M24018001$M0300A004$M2595AAA0$M0400E0A0$M2600A027$M0500E006$M2701BC28$M0600A007$M2895EA29$M0700E0A0$M2995AAA0$M0801ED8A$M2A01B42B$M0901ED8C$M2B959B41$M0A00A03B$M2C01A42D$M0B018001$M2D65AB6E$M0C00203C$M2E0D9A01$M0D00A00E$M2F01AA30$M0E01B60F$M300D8171$M0F95EA25$M31959B41$M1001ED83$M32019A01$M1101ED85$M3301B435$M1201ED8D$M3405DB81$M1301EDA6$M35B99B41$M14001001$M360D9A01$M15030401$M37298838$M16018016$M38019801$M173D9A01$M3919883A$M18019201$M3A019801$M1901A22A$M3B070A08$M1A01B22C$M3C068A09$M1B01A232$M1C01A233$M1D01A236$M1E318237$M1F318239$M20009001$M21028401验证程序:助记符机器码IN01,R0$P0044IN01,R2$P0146SBCR2,R0$P02A8MOVR0,R1$P0381RLCR1,R1$P04F5OUTR1,R1$P0559HALT$P0600指令功能:在实验板的数据开关手动输入一个数存到R0寄存器里,在输入另一个数到R2寄存器里,然后用R2-R0存到R0寄存器里,接着把R0里的数转存到R1寄存器,然后再把R1的数左移一位存到R1,接着在数码管显示输出当前R1寄存器里的数,最后停止。1.按图连接实验线路2.写入程序/运行程序1)手动写入A.按如下步骤讲微代码写入微控器中的存储器2816中:1将编程开关置为PROM(编程)状态。2将实验板上“STATEUNIT”中的“STEP”置为“STEP”,“STOP”置为“RUN”状态。3用二进制模拟开关置微地址MA5—MA0。4在MK24-MK1开关上置微代码,24位开关对应24位显示灯,开关量置为“0”时灯亮,开关量为“1”时灯灭。5启动时序电路(按动启动按钮“START”),即将微代码写入到2816的相应地址对应的单元中。6重复①-⑤步骤,将所有的微代码写入2816中。B.按如下步骤校验微代码1将编程开关置为READ(校验)状态。2将实验板上“STATEUNIT”中的“STEP”置为“STEP”,“STOP”置为“RUN”状态。3用二进制模拟开关置微地址MA5—MA0。4启动时序电路(按动启动按钮“START”),读出微代码。观察显示灯MD24-MD1的状态(灯亮为“0”,灭为“1”),检查读出的微代码是否与写入的相同。如果不同,则将开关置于PROM编程状态,重新执行③)即可。C.按如下步骤使用KWE微程序进行机器指令程序的装入。1使编程开关处于“RUN”,STEP为“STEP”状态,STOP为“RUN”状态。2拨动总清开关CLR(0→1→0),微地址寄存器清零,程序计数器清零,然后使控制台SWB、SWA开关置为“01”,并按动一次START,微地址显示灯显示“010001”。3再按动一次START,微地址灯显示“010100”,此时数据开关的内容置为要写入的机器指令。再按动两次START键后,即完成该条指令的写入,并且微地址显示灯显示“010001”。(注:由KWE的流程图可知,该流程每执行一次,将向PC寄存器所指向的存储器单元中写入一个字节的数据,并且将PC加1。)4如果还需要向存储器中输入数据,则需重复重新执行③。D.按如下步骤使用KRD微程序进行机器指令程序的检查。1使编程开关处于“RUN”,STEP为“STEP”状态,STOP为“RUN”状态。2拨动总清开关CLR(0→1→0),微地址寄存器清零,程序计数器清零,然后使控制台SWB、SWA开关置为“00”,并按动一次启动开关START,微地址显示灯显示“010000”。3再按动一次START,微地址灯显示“010010”,第三次按动STRAT,微地址灯显示为“010111”,再按动STRAT后此时输出单元的数码管显示为PC寄存器所指单元的内容。(注:由KRD的流程图可知,该流程每执行一次,将显示PC寄存器所指向的存储器单元中一个字节的数据,并且将PC加1。)4如果还需要检查存储器中其他单元的数据,则需重复重新执行③。2)联机读/写程序将微代码写入文本文件中,通过联机软件载入实验系统。3.运行程序1)本机运行A.单步运行程序1使编程开关处于“RUN”状态,STEP为“STEP”状态,STOP为“RUN”状态。2拨动总清开关CLR(0→1→0),微地址寄存器清零,程序计数器清零。3单步运行一条微指令,每按动一次START键,即单步运行一条微指令。对照微程序流程图,观察微地址显示灯是否与流程一致。4当运行结束后,可检查存数单元(0BH)中的结果是否和理论计算结果一致。B.连续运行程序1使编程开关处于“RUN”状态,STEP为“EXEC”状态,STOP为“RUN”状态。2拨动总清开关CLR(0→1→0),微地址寄存器清零,程序计数器清零。3按动START键,系统将连续运行程序,直至将STOP拨至“STOP”状态。4当运行结束后,可检查存数单元(0BH)中的结果是否和理论计算结果一致。2)联机运行联机运行程序时,进入软件界面,装载机器指令及微指令后,运行即图3:实验连接图六、实验总结:这次课程设计中,基于前几次实验中,对计算机的大致组成以及运行原理有了初步的了解,并且对实验板也比较熟悉了,所以按照实验连接图连线也比较上手了,经过那么多次实验,觉得连线最重要的就是认真,如果一开小差就会出错,每连完一条线之后,都要检查一遍,看是否连错,这告诉我们,做每一件事都要认认真真的完成,容不得一丝马虎,否则只会落得个事倍功半的效果。这次课程设计最重要的就是编写程序了,要想编写程序首次要对程序了解,知道每个助记符对应的机器码是什么意思,对应的二进制的每四位代表什么。在对程序理解的过程中,刚开始不知道程序的十六进制是如何通过助记符转换过来的,经过对指令格式的剖析才知道没个助记符对应的二进制,然后对刚编好的程序进行运行,通过观察CPU一般都是先取机器指令,然后编译,送往寄存器,然后再去指令,再编译,一直这样下去,直到停止为止,此次课程设计最大的收获就是,通过观察大致了解了CPU的运行方式,并且都指令也有了较大的了解,还懂得了合作和请教才是完成任务的最佳方法。
本文标题:计算机组成原理课程设计-复杂模型机设计实验
链接地址:https://www.777doc.com/doc-8531028 .html