计算机组成原理课程设计实验报告.doc_第1页
计算机组成原理课程设计实验报告.doc_第2页
计算机组成原理课程设计实验报告.doc_第3页
计算机组成原理课程设计实验报告.doc_第4页
计算机组成原理课程设计实验报告.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机组成原理课程设计实验报告(2010/2011第2学期-第19周)指导教师:李俊松 张芳班级:09数媒2班姓名:林真超学号:e09700203计算机组成原理课程设计实验报告一、目的和要求(1)实验目的:深入了解计算机各种指令的执行过程,以及控制器的组成,指令系统微程序设计的具体知识,进一步理解和掌握动态微程序设计的概念;完成微程序控制的特定功能计算机的指令系统设计和调试。(2)实验要求:(1) 根据内容自行设计相关指令微程序;(务必利用非上机时间设计好微程序)(2) 设计测试程序、实验数据并上机调试。(3) 设计报告内容:包括:1、设计目的2、设计内容3、微程序设计(含指令格式、功能、设计及微程序) 4、实验数据(测试所设计指令的程序及结果)。另外,要进行这项大型实验,必须清楚地懂得:(1) tec-2机的功能部件及其连接关系;(2) tec-2机每个功能部件的功能与具体组成;(3) tec-2机支持的指令格式;(4) tec-2机的微指令格式,am2910芯片的用法;(5) 已实现的典型指令的执行实例,即相应的微指令与其执行次序的安排与衔接;(6) 要实现的新指令的格式与功能。二、实验环境tec-2仿真模拟机计算机三、具体内容(一)实验内容选定指令格式、操作码,设计如下指令:(1)把用绝对地址表示的内存单元a中的内容与内存单元b中的内容相加,结果存于内存单元c中。指令格式:d4,addr1,addr2,addr3 四字指令(控存入口100h)功能: addr3=addr1+addr2(2)将一通用寄存器内容减去某内存单元内容,结果放在另一寄存器中。指令格式:e0 dr sr,addr (sr,dr源、目的寄存器各4位)双字指令(控存入口130h)功能: dr=sr - addr(3)转移指令。判断两个通用寄存器内容是否相等,若相等则转移到指定绝对地址,否则顺序执行。指令格式:e5 dr sr,addr 双字指令(控存入口140h)功能: if dr=sr goto addr else顺序执行。设计:利用指令的cnd字段,即ir108,令ir108=101,即cc=z 则当dr=sr时z=1,微程序不跳转,接着执行mem pc(即addr pc) 而当dr!=sr时z=0,微程序跳转至a4。(二)实验步骤(1)设计微程序(2)根据微指令写出相应微码(3)启动tec-2仿真模拟机,进入监控程序状态(4)将微码输入到由某地址(如:900h)开始的内存单元中1、用“e”命令输入微码2、用“d”命令查看输入的微码(检查前一步所输入的微码是否正确)(5)将微码加载到微控存中1、用“a”命令输入加载微码的程序2、用“g”命令运行加载微码的程序(6)输入程序,运行新指令(即检验调试程序)1、用“a”命令输入程序2、用“e”命令输入新指令3、用“u”命令查看输入的程序4、用“g”命令运行程序(7)观察运算结果查看内存单元使用“d”命令,查看寄存器使用“r”命令(三)实验设计并分析(1)把用绝对地址表示的内存单元a中的内容与内存单元b中的内容相加,结果存于内存单元c中。功能: addr3=addr1+addr2指令格式:d4xxaddr1addr2addr3d4,addr1,addr2,addr3 四字指令(控存入口100h)指令分析:根据指令的功能和指令格式,先取指令于ar中,然后再读取内存单元中的data,再取第二个内存单元的地址和数据,完成两个数据相加,并存放于q寄存器中。取第三个内存地址,将q寄存器中数据放入。微程序以及微码: pcar,pc+1pc: 0000 0e00 a0b5 5402 程序计数器加1,开辟1个内存单元memar:0000 0e00 10f0 0002 将指令地址送ar(addr1)memq:0000 0e00 00f0 0000 将内存单元中的数据送入q寄存器pcar,pc+1pc: 0000 0e00 a0b5 5402 pc加1,开辟第二个内存单元memar:0000 0e00 10f0 0002 将指令地址送ar(addr2)mem+qq:0000 0e01 00e0 0000 完成加法(add2内容+q内容q寄存器)pcar,pc+1pc: 0000 0e00 a0b5 5402 pc加1,开辟第三个内存单元mem ar: 0000 0e00 10f0 0002 将指令地址送ar(addr3)qmem,cc#=0: 0029 0300 1020 0010 将结果送入addr3,低电平有效微码分析:pc-ar, pc+1-pc 程序计数器加1,开辟1个内存单元( 七 )( 六 )( 五 )( 四 )( 三 )( 二 )( 一 ) 0 0 0 e 0 0 a 0 b 5 5 4 0 20000000000001110000000001010000010110101010101 0000000010 下地址 顺序执行sccsc备用sst f-b +s mi2-0 a口 b口 sci ssh sa dc1 sb dc2 不操作 dc2:在本条微码中,地址寄存器接收,故dc2为010dc1:未向ib总线发送控制,故dc1为000sa:作am2901sb:作am2901ssh:未移位sci:未进位b口:使用了寄存器r5,即程序计数器pca口:使用了寄存器r5,即程序计数器pcmi2-0:此时alu的r端输入为0,s端输入为bmi5-3:运算功能选择为“+s”,即执行+1功能bi8-6:有返回值,且返回值返回至b,而y的输出选择为ami0#,req,we#:三位用于控制内外数据总线的读和写,此处不操作,故取10xsst:未用状态,故为000备用位为0sc 未用条件码,故为0scc am2901命令:14#命令,即为顺序执行下地址:由于顺序执行,并未使用下地址,故下地址为0mem-ar 将指令地址送ar(addr1)0 0 0 e 0 0 1 0 f 0 0 0 0 20000000000001110000000000001000011110000000000 0000000010 下地址 顺序执行sccsc备用sst 无 +s mi2-0 a口 b口 sci ssh sa dc1 sb dc2 存储器读 dc2:在本条微码中,地址寄存器接收,故dc2为010dc1:未向ib总线发送控制,故dc1为000sa:作am2901sb:作am2901ssh:未移位sci:未进位b口:未使用寄存器,故为0a口:未使用寄存器,故为0mi2-0:此时alu的r端输入为d(外部数据),s端输入为0mi5-3:运算功能选择为“+s”,即执行d+0bi8-6:没有返回值, y的输出选择为fmi0#,req,we#:三位用于控制内外数据总线的读和写,此处为存储器读,故取001sst:未用状态,故为000备用位为0sc 未用条件码,故为0scc am2901命令:14#命令,即为顺序执行下地址:由于顺序执行,并未使用下地址,故下地址为0mem-q 将内存单元中的数据送入q寄存器0 0 0 e 0 0 0 0 f 0 0 0 0 00000000000001110000000000000000011110000000000 0000000000 下地址 顺序执行sccsc备用sst f-b +s mi2-0 a口 b口 sci ssh sa dc1 sb dc2 存储器读 dc2:在本条微码中,寄存器未接收,故dc2为000dc1:未向ib总线发送控制,故dc1为000sa:作am2901sb:作am2901ssh:未移位sci:未进位b口:未使用寄存器,故为0a口:未使用寄存器,故为0mi2-0:此时alu的r端输入为d(外部数据),s端输入为0mi5-3:运算功能选择为“+s”,即执行d+0bi8-6:有返回值0,而y的输出选择为f,故此处为000mi0#,req,we#:三位用于控制内外数据总线的读和写,此处为读出内存单元内容,并将其送入q寄存器,故取001sst:未用状态,故为000备用位为0sc 未用条件码,故为0scc am2901命令:14#命令,即为顺序执行下地址:由于顺序执行,并未使用下地址,故下地址为0pc-ar, pc+1-pc pc加1,开辟第二个内存单元00000000000011100000000010100000101101010101010000000010mem-ar 将指令地址送ar(addr2) 00000000000011100000000000010000111100000000000000000100这两条分析同mem+q-q 完成加法(add2内容+q内容q寄存器)0 0 0 e 0 1 0 0 e 0 0 0 0 00000000000001110000000010000000011100000000000 0000000000 下地址 顺序执行sccsc备用sst f-b +s mi2-0 a口 b口 sci ssh sa dc1 sb dc2 存储器读 dc2:在本条微码中,寄存器未接收,故dc2为000dc1:未向ib总线发送控制,故dc1为000sa:作am2901sb:作am2901ssh:未移位sci:未进位b口:未使用寄存器,故为0a口:未使用寄存器,故为0mi2-0:此时alu的r端输入为d(外部数据),s端输入为qmi5-3:运算功能选择为“+s”,即执行d+qbi8-6:有返回值0,而y的输出选择为f,故此处为000mi0#,req,we#:三位用于控制内外数据总线的读和写,此处为读出内存单元内容,将其与q寄存器中内容相加,故取001sst:状态保存,故为001备用位为0sc 未用条件码,故为0scc am2901命令:14#命令,即为顺序执行下地址:由于顺序执行,并未使用下地址,故下地址为0pc-ar, pc+1-pc pc加1,开辟第三个内存单元00000000000011100000000010100000101101010101010000000010mem-ar 将指令地址送ar(addr3)00000000000011100000000000010000111100000000000000000100这两条分析同q-mem, cc#=0 将结果送入addr3,低电平有效 2 9 0 3 0 0 1 0 2 0 0 0 1 00010100100000011000000000001000000100000000000 0000010000 下地址 顺序执行sccsc备用sst 无 +s mi2-0 a口 b口 sci ssh sa dc1 sb dc2 存储器读 dc2:在本条微码中,寄存器未接收,故dc2为000dc1:向ib总线发送运算器的指令,故dc1为001sa:作am2901sb:作am2901ssh:未移位sci:未进位b口:未使用寄存器,故为0a口:未使用寄存器,故为0mi2-0:此时alu的r端输入为0,s端输入为qmi5-3:运算功能选择为“+s”,即执行0+qbi8-6:没有返回值,y的输出选择为fmi0#,req,we#:用于控制内外数据总线的读和写,此处为将q寄存器中值写入内存单元,故取000sst:未用状态,故为000备用位为0sc 此处低电平有效,故取scc为000,sc为0scc am2901命令:3#命令,即为条件转移,低电平有效,有效时,转入下地址下地址:此命令为最后一条命令,若指令跳转,将转入a4h,即下地址为29 加载微码的程序: a800tec-2机主存储器中ram地址分配为0800h-0fffhmov r1,300微码在内存中的首地址mov r2,9共九条指令mov r3,100微码在微控存中的首地址(程序的入口地址)ldmc 加载微码指令ret停止,返回调试程序:此处为一般情况,当两加数相同时,可以省略r1,并将r0的值同时赋给内存单元0a01a150微控存首地址之后的数据mov r0,0023将立即数0023赋给寄存器r0mov r1,0034将立即数0034赋给寄存器r1mov a00,r0将寄存器r0中数据赋值给内存单元0a00mov a01,r1将寄存器r1中数据赋值给内存单元0a01nop四个nop,占四个字节,因为由该指令格式知该指令占了四个字节,此处的nop起等待作用nopnopnopret新指令:e158前三条指令从0150开始,一条指令占两个内存单元d400 0a00 0a01 0a02由指令格式得出“u”命令查看输入的程序,屏幕显示:0150:2c00 0023 mov r0,0023此处2c00为操作码的十六进制数,根据此十六进制转入相应程序入口(2)将一通用寄存器内容减去某内存单元内容,结果放在另一寄存器中。功能: dr=sr - addr微程序:pcar,pc+1pc: 0000 0e00 a0b5 5402 程序计数器加1memar: 0000 0e0010f0 0002 指令地址送arsr - addr dr: 0029 0301 31d0 0088 完成加法,最后结果送寄存器指令格式: e0drsraddre0 dr sr,addr (sr,dr源、目的寄存器各4位)双字指令(控存入口130h)指令分析:根据指令的功能和指令格式,用sr寄存器中数据减去内存单元数据,结果存放在dr寄存器中。微码分析:pc-ar, pc+1-pc 程序计数器加1( 七 )( 六 )( 五 )( 四 )( 三 )( 二 )( 一 ) 0 0 0 e 0 0 a 0 b 5 5 4 0 20000000000001110000000001010000010110101010101 0000000010 下地址 顺序执行sccsc备用sst f-b +s mi2-0 a口 b口 sci ssh sa dc1 sb dc2 不操作 dc2:在本条微码中,地址寄存器接收,故dc2为010dc1:未向ib总线发送控制,故dc1为000sa:作am2901sb:作am2901ssh:未移位sci:未进位b口:使用了寄存器r5,即程序计数器pca口:使用了寄存器r5,即程序计数器pcmi2-0:此时alu的r端输入为0,s端输入为bmi5-3:运算功能选择为“+s”,即执行+1功能bi8-6:有返回值,且返回值返回至b,而y的输出选择为ami0#,req,we#:三位用于控制内外数据总线的读和写,此处不操作,故取10xsst:未用状态,故为000备用位为0sc 未用条件码,故为0scc am2901命令:14#命令,即为顺序执行下地址:由于顺序执行,并未使用下地址,故下地址为0mem-ar 指令地址送ar0 0 0 e 0 0 1 0 f 0 0 0 0 20000000000001110000000000001000011110000000000 0000000010 下地址 顺序执行sccsc备用sst 无 +s mi2-0 a口 b口 sci ssh sa dc1 sb dc2 存储器读 dc2:在本条微码中,地址寄存器接收,故dc2为010dc1:未向ib总线发送控制,故dc1为000sa:作am2901sb:作am2901ssh:未移位sci:未进位b口:未使用寄存器,故为0a口:未使用寄存器,故为0mi2-0:此时alu的r端输入为d(外部数据),s端输入为0mi5-3:运算功能选择为“+s”,即执行d+0bi8-6:有返回值,且返回值返回至b,而y的输出选择为ami0#,req,we#:三位用于控制内外数据总线的读和写,此处为存储器读,故取001sst:未用状态,故为000备用位为0sc 未用条件码,故为0scc am2901命令:14#命令,即为顺序执行下地址:由于顺序执行,并未使用下地址,故下地址为0sr-mem-dr 完成加法,最后结果送寄存器2 9 0 3 0 1 3 1 d 0 0 0 8 80000000000001110000000010011000111010000000000 0010001000 下地址 顺序执行sccsc备用sst f-b s-r mi2-0 a口 b口 sci ssh sa dc1 sb dc2 存储器读 dc2:在本条微码中,寄存器未接收,故dc2为000dc1:未向ib总线发送控制,故dc1为000sa:用指令给alu的r端赋值,故为1sb:用指令给alu的s端赋值,故为1ssh:未移位sci:未进位b口:未使用寄存器,故为0a口:未使用寄存器,故为0mi2-0:此时alu的r端输入为d(外部数据),s端输入为ami5-3:运算功能选择为“s-r”,即执行sr-membi8-6:有返回值,且返回值返回至b,而y的输出选择为fmi0#,req,we#:用于控制内外数据总线的读和写,此处是读取内存单元内容,并被sr减,故取001sst:状态保存,故为001备用位为0sc 此处低电平有效,故取scc为000,sc为0scc am2901命令:3#命令,即为条件转移,低电平有效,有效时,转入下地址下地址:此命令为最后一条命令,若指令跳转,将转入a4h,即下地址为29 加载微码的程序: a800tec-2机主存储器中ram地址分配为0800h-0fffhmov r1,300微码在内存中的首地址mov r2,3共三条指令mov r3,130微码在微控存中的首地址(程序的入口地址)ldmc 加载微码指令ret停止,返回调试程序:a150微控存首地址之后的数据mov r0,0023将立即数0023赋给寄存器r0mov r1,0024将立即数0034赋给寄存器r1两个nop,占四个字节,因为由该指令格式知该指令占了四个字节,此处的nop起等待作用mov a00,r0将寄存器r0中数据赋值给内存单元0a00nopnopret指令:e158前三条指令从0150开始,一条指令占两个内存单元e021 0a00由指令格式得出,表示将r1-r0结果送入r2“u”命令查看输入的程序,屏幕显示:0150:2c00 0023 mov r0,0023此处2c00为操作码的十六进制数,根据此十六进制转入相应微程序入口(3)转移指令。判断两个通用寄存器内容是否相等,若相等则转移到指定绝对地址,否则顺序执行。指令格式:e5 dr sr,addr 双字指令(控存入口140h)设计:利用指令的cnd字段,即ir108,令ir108=101,即cc=z 则当dr=sr时z=1,微程序不跳转,接着执行mem pc(即addr pc) 而当dr!=sr时z=0,微程序跳转至a4。功能: if dr=sr goto addr else顺序执行。指令格式:e5drsraddr指令分析:1、sr- dr,运算器接受标志位,设定标志位2、pcar,pc+1pc,, scc=7,ir10-8=101,cc#=z dr=sr,cc#=z=1,顺序执行102,drsr 转移到下地址为103的指令继续转移 3、(dr=sr)偏移量 offset加ip(r4),结果赋给pc(r5),然后令cc#=0,用3号命令条件转移到a4h,结束微程序4、pcar,pc+1pc scc=101,sc=1,使cc#=s#,drsr,sr-dr0,s=1,cc#=s#=0,3号命令条件转移到下地址为a4h的指令结束程序,dr0,s=0,cc#=s#=1,条件转移命令将顺序执行地址为104的指令5、(drar, cc#=cnd,pc+1-pc2 9 0 3 e 0 a 0 b 5 5 4 0 20010100100000011111000001010000010110101010101 0000000010 下地址 顺序执行sccsc备用sst f-b +s mi2-0 a口 b口 sci ssh sa dc1 sb dc2 不操作 dc2:在本条微码中,地址寄存器接收,故dc2为010dc1:未向ib总线发送控制,故dc1为000sa:作am2901sb:作am2901ssh:未移位sci:未进位b口:使用了寄存器r5,即程序计数器pca口:使用了寄存器r5,即程序计数器pcmi2-0:此时alu的r端输入为0,s端输入为bmi5-3:运算功能选择为“+s”,即执行+1功能bi8-6:有返回值,且返回值返回至b,而y的输出选择为ami0#,req,we#:三位用于控制内外数据总线的读和写,此处不操作,故取10xsst:未用状态,故为000备用位为0sc 此处根据sr-dr数值是否为0判断sr与dr是否相等,条件是由指令给出的,所以这里sccscc 为111,而cc低电平有效,故sc为0,am2901命令:3#命令,即为条件转移,低电平有效,有效时,转入下地址下地址:此命令为最后一条命令,若指令跳转,将转入a4h,即下地址为29men-pc,cc#=02 9 0 3 0 0 3 0 f 0 5 0 0 00010100100000011000000000011000011110000010100 0000000000 下地址 顺序执行sccsc备用sst f-b +s mi2-0 a口 b口 sci ssh sa dc1 sb dc2 存储器读 dc2:在本条微码中,寄存器未接收,故dc2为000dc1:未向ib总线发送控制,故dc1为000sa:作am2901sb:作am2901ssh:未移位sci:未进位b口:使用了寄存器r5,即程序计数器pc,故为0101a口:未使用寄存器,故为0mi2-0:此时alu的r端输入为d(外部数据),s端输入为0mi5-3:运算功能选择为“+s”,即执行d+0bi8-6:有返回值,且返回值返回至b,而y的输出选择为fmi0#,req,we#:用于控制内外数据总线的读和写,此处是读取内存单元地址送入pc,故取001sst:未用状态位,故为000备用位为0sc 此处低电平有效,故取scc为000,sc为0scc am2901命令:3#命令,即为条件转移,低电平有效,有效时,转入下地址下地址:此命令为最后一条命令,若指令跳转,将转入a4h,即下地址为29加载微码的程序: a800tec-2机主存储器中ram地址分配为0800h-0fffhmov r1,300微码在内存中的首地址mov r2,3共三条指令mov r3,140微码在微控存中的首地址(程序的入口地址)ldmc 加载微码指令ret停止,返回调试程序:此处r0、r1即为sr、dra150微控存首地址之后的数据mov r0,0023将立即数0023赋给寄存器r0mov r1,0045将立即数0045赋给寄存器r1两个nop,占四个字节,因为由该指令格式知该指令占了四个字节,此处的nop起等待作用nopnopmov r2,0012此条命令用于检测nop等待时执行的命令是否成功,若成功且数据相等时,则直接跳至0158内存单元,而不执行此条语句;若数据不等时,则跳出指令,而执行此条指令最终将0012输出。ret新指令:e154前三条指令从0150开始,一条指令占两个内存单元e501 0158由指令格式得出“u”命令查看输入的程序,屏幕显示:0150:2c00 0023 mov r0,0023此处2c00为操作码的十六进制数,根据此十六进制转入相应微程序入口(四)实验数据及运行结果截图(1)把用绝对地址表示的内存单元a中的内容与内存单元b中的内容相加,结果存于内存单元c中。指令格式:d4,addr1,addr2,addr3 四字指令(控存入口100h)功能: addr3=addr1+addr21、 输入微码2、d命令查看微码3、a命令输入加载微码程序,并用“g”命令运行4、输入程序以及新指令,并运行一般情况下,两个数相加时,程序如下:相等的两个数相加时,程序可以这样写:4、查看结果(2)将一通用寄存器内容减去某内存单元内容,结果放在另一寄存器中。指令格式:e0 dr sr,addr (sr,dr源、目的寄存器各4位)双字指令(控存入口130h)功能: dr=sr - addr1、输入微码2、d命令查看微码3、a命令输入加载微码程序,并用“g”命令运行4、输入程序以及新指令,并运行5、u命令查看输入的程序6、用“r”命令查看结果(查看寄存器中内容)(3)转移指令。判断两个通用寄存器内容是否相等,若相等则转移到指定

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论