华北电力大学
| |
| |
实 验 报 告
实验名称 运算器实验
课程名称 计算机组成与结构
专业班级:软件12 学生姓名:
号: 成 绩:
指导教师:王晓霞 实验日期:2015.1
学
一、目的与要求
1. 熟悉教学计算机的指令格式、指令编码、寻址方式和指令功能等内容;
2. 熟悉教学计算机的总体组成和各个部件的运行原理,理解控制器部件在计算机系统中的作用。
3. 理解和熟悉指令执行步骤的划分方案; 4. 对微程序控制器:
1) 熟悉教学计算机的微指令格式和各个字段的控制功能,理解微指令下地址字段
的作用,并学会使用这个字段解决微指令之间的接续关系。
2) 熟悉教学计算机的微程序控制器的组成和运行原理,学习设计微程序控制器的过程和方法。
5. 对组合逻辑控制器:
1) 熟悉教学组合逻辑控制器的各个控制字段的组成及其控制功能,理解节拍发生
器线路设计和控制作用,并学会依照指令内容和节拍状态信号写出每一位控制信号的逻辑表达式。
2) 熟悉教学计算机的微程序控制器的组成和运行原理,学习设计组合逻辑控制器
的过程和方法。
二、实验正文
1. 扩展指令怎样写到存储单元中,怎样执行测试?
答:①设计几条指令的功能、格式和执行流程,并在教学计算机上实现、调试正确。例如ADC、STC、NOT等指令,也可以设计与实现其它的指令,包括原来已经实现的基本指令(要变换为另外一个指令操作码)或自己确定的指令。在原来提供的MACH程序的基础上按照ABEL语言的要求添加新指令的控制信号,编译产生.JED文件并下载到MACH芯片里。软件的使用和下载参见光盘中的附录。
②用监控程序的A、E(扩展指令必须用E命令置入)命令编写一段小程序,观察运行结果。实验时将教学机左下方的5个拨动开关置为00110,运行编写的小程序。观察终端显示的结果,检验设计的指令是否正确。若与预定结果不符,可查看指令的功能、格式、执行、流程设计的是否正确。
2. 扩展指令时,在指令格式、功能、执行流程设计过程中必须遵从哪些约束条件? 要明确自己要实现的指令格式、功能、执行流程设计中必须遵从的约束条件。
为了完成自己设计几条指令的功能、格式和执行流程,并在教学计算机上实现、调试正确的实验内容,具体过程包括: 1) 2)
确定指令格式和功能,要受到教学机已有硬件的约束,应尽量与已实现指令的格式和分类办法保持一致;
划分指令执行步骤并设计每一步的执行功能,设计节拍状态的取值,应参照已实现指令的处理办法来完成,特别要注意的是,读取指令的节拍只能用原来已实现的,其他节拍的节拍状态也应尽可能地与原用节拍的状态保持一致和相近; 3) 4)
在指令流程表中填写每一个控制信号的状态值,基本上是个查表填数的过程,应该特别仔细,并有意识地体会这些信号的控制作用;
在给出的mach的源文件中添加扩展指令的控制信号的逻辑表达式,编译适配后下载到MACH器件中;
5) 写一个包含你设计的指令的程序,通过运行该程序检查执行结果的正确性,初步判断你的设计是否正确;如果有问题,通过几种办法查出错误并改正,(比如手动置指令,单步调试每个节拍对应的控制信号)继续调试,直到完全正确。
3. 组合逻辑控制器指令为什么划分成A、B、C、D共4组。画出各自的流程。 图中的每一个方框代表一个节拍,表示指令的一个执行步骤。方框内部的文字简要说明在该节拍中应该完成的主要操作功能。
方框之间的带箭头的连线表示节拍状态的转换次序和方向。箭头线旁边有文字说明的,表示从前一个节拍转换为当前节拍的条件,没有文字说明的,表示无条件地从前一个节拍转换为当前节拍。
每个方框左上角的4位数字,是为该节拍分配的节拍状态编码。
前面已经讲到,把教学计算机全部指令按其应完成的功能和执行步骤情况,划分成A、B、C、D共4组。从指令流程图上可以看到,在完成读取指令之后,即已经得知指令操作码的前提下,节拍发生器就按这4类指令的划分情况,分别进入到各自不同的节拍序列。
其中状态编码为1000的节拍完成把0值送到程序计数器PC,为启动监控程序做好准备,只在教学计算机系统加电启动时被执行一次,在教学计算机正常运行的过程中不会进入这个
1000 按RESET键 读取指令000AR PC, PC PC+1 0010 读内存, IR 读出指令 A组指令 0011 寄存器之间的 数据运算或传送 B、C、D组指令 检查有无 节拍。
教学计算机的指令执行流程图
状态编码为0000和0010的两个节拍完成读取指令的功能,公用于所有指令,是每一条指令开始执行时必须首先完成的两个操作步骤。图中用虚线菱形框表示的“响应与处理中断请求”的动作,在相邻两条指令进行切换的时刻,即前一条指令已经结束、下一条指令尚未开始的时刻,完成检查有无中断请求的功能,这个检查步骤也公用于所有指令,并依据检查结果进行不同的处理,无中断请求时,就开始下一条指令的执行过程,有中断请求时则进入中断响应和处理的过程,处理起来略显复杂,等到讲解中断的时候再详细说明。
其他节拍用于不同指令,具体说明如下。
无 0110 传送地址 AR 地址 C组指令 0111 传送地址 AR 地址 D组指令 0101 中断请求 0100 B组指令 读、写内存 或读、写外设 读写内存 或寄存器间传送
A组指令将进入标记为0011状态的节拍,用1步完成寄存器之间的数据运算或传送; B组指令将进入标记为0110状态的节拍,再经过标记为0100的节拍,用2步完成1次对主存储器或IO设备的读写操作;
C组指令将进入标记为0110状态的节拍,再经过标记为0111的节拍、0101的节拍,用3步完成2次内存储器的读写操作,前2个节拍完成读主存储器的同时,还把读出内容传送到地址寄存器,第3个节拍直接使用该地址完成第二次对主存储器的读写操作;CALR指令是一次内存写操作和一次寄存器之间的数据传送操作,也是3个步骤完成。
D组指令,将进入标记为0110状态的节拍,再经过标记为0100的节拍、0111的节拍、0101的节拍,用4步完成2次内存储器的读写操作,每一次内存储器的读写操作各自用2步完成。
4.组合逻辑控制器实验中,单步方式下,通过指示灯观察上面扩展的几条扩展指令的控制信号是否与设计的一致。
1) 观察A组指令中的ADC指令:
<1> 置拨动开关SW=00100000 00010000;
<2> 先按“RESET”按键;再连续按“START”按键,观察每一步的节拍及控制信号如
下表:
节拍 指令 编码 /MIO REQ /WE A 1000 0000 0010 1 1 0 0 0 0 0 0 0 1 0 B SSH SSI I8-6 I5-3 I2-0 SST DC1 DC2 011 001 001 000 111 000 010 000 011 000 011 000 001 000 000 000 001 000 011 000 001 001 000 000 0101 0101 000 0101 0101 000 0000 0000 000 SR DR 001 0011 ADC 0010 1 0000
2) 观察A组指令中的STC指令:
<1> 置拨动开关SW=01101101 00000000;
<2> 先按“RESET”按键;再连续按“START”按键,观察每一步的节拍及控制信号如
下表。 节拍 指令 编码 /MIO REQ /WE A 1000 0000 0010 1 1 0 0 0 0 0 0 0 1 0 B SSH SSI I8-6 I5-3 I2-0 SST DC1 DC2 011 001 001 000 111 000 010 000 011 000 011 000 001 000 000 000 001 000 001 000 001 100 000 000 0101 0101 000 0101 0101 000 0000 0000 000 0000 0000 000 0011 STC 0110 1 1101
9.用教学机已实现的基本指令和扩展的几条指令编写程序并运行,测试扩展的几条指令是否正确。
1)测试ADC和STC指令,给出测试结果。
在命令行提示符状态下输入:
A 2000↙ 屏幕将显示: 2000:
从地址2000H开始输入下列程序:
2000: MVRD R0,0101 ;给R0赋值 0101
2002: MVRD R1,1010 ;给R1赋值 1010 2004: ↙
在命令行提示符状态下输入: A 2006↙ 2006: RET 2007: ↙
扩展指令STC、ADC不能用A命令键入,必须用E命令在相应的内存地址键入操作码所有扩展指令都必须用E命令键入。
用E命令输入STC、ADC R0,R1的代码,在命令行提示符状态下输入: E 2004↙ 2004: 6D00 2006:2001 2007: ↙
用G命令运行前面刚键入源程序,在命令行提示符状态下输入: G 2000↙
用R命令察看寄存器的内容,在命令行提示符状态下输入 R↙
运行结果为R0=1112 R1=1010,测试扩展指令正确。
三、综合实验总结 心得体会
本次实验比较复杂。
首先要理解并熟悉教学计算机的指令格式、指令编码、寻址方式和指令功能等内容,然后要熟悉教学计算机的总体组成和各个部件的运行原理,理解控制器部件在计算机系统中的作用熟悉教学组合逻辑控制器的各个控制字段的组成及其控制功能,理解节拍发生器线路设计和控制作用,并能够依照指令内容和节拍状态信号写出每一位控制信号的逻辑表达式,还要熟悉教学计算机的微程序控制器的组成和运行原理,学习设计组合逻辑控制器的过程和方法。这些都掌握了之后,还要学习使用另外两个软件,把设计出来的写进芯片里,最麻烦的就是在这,因为不懂这两个软件的使用,而且老师统一讲的时候我们也没赶上,所以在这里有些束手无策。后来的同学和老师的帮助学会了使用另外两个软件,并且煞费苦心的把扩展的指令烧到了芯片里。
这个实验让我感到了学以致用。课堂上学习的指令扩展在这里真的可以实现,有一些小小的欣喜。希望通过这次的计组实验,加深了对计算机组成与结构的理解,并且能提高自己动手实验和运用所学知识设计东西的能力。
最后,要感谢计组老师这一个学期的辛苦教导。计组老师讲课讲的很透彻,答疑答的很清楚,并且很注重我们学习能力的培养,而不是一味的讲书本知识。谢谢计组老师。