成绩:
实 验 报 告
课程名称: 计算机组成原理 实践名称: 模型机综合实验及微程序设计 姓 名: 专 业: 计算机科学与技术 班 级: 学 号:
计算机科学与技术学院
实验教学中心
2016年12月07日
哈尔滨理工大学计算机科学与技术学院
目录
实验项目名称: 模型机综合实验及微程序设计 .......................................................................................... 2 一、实验目的 ................................................................................................................................................... 2 二、实验内容 ................................................................................................................................................... 2 三、实验用设备仪器及材料 ........................................................................................................................... 2 四、实验原理 ................................................................................................................................................... 2
(一)模型机总体结构 ........................................................................................................................... 2 (二)模型机寻址方式 ........................................................................................................................... 4 (三)微程序控制器组成及原理 ........................................................................................................... 4 (四)模型机指令集 ............................................................................................................................... 4 (五)设计指令/微指令系统 .................................................................................................................. 5 五、实验操作步骤 ........................................................................................................................................... 5
实验 1:数据传送实验/输入输出实验 .................................................................................................. 5 实验 2:数据运算实验(加/减/与/或) ................................................................................................ 8 实验 3:移位/取反实验 .......................................................................................................................... 9 实验 4:转移实验 ..................................................................................................................................11 实验 5:编写微指令 ............................................................................................................................. 13 六、实验结果分析 ......................................................................................................................................... 17
(一)实验过程中部分截图 ................................................................................................................. 17 (二)心得体会 ..................................................................................................................................... 20
1
哈尔滨理工大学计算机科学与技术学院
实验项目名称: 模型机综合实验及微程序设计
一、实验目的
1.了解伟福CP2000实验仪及软件的工作环境。 2.了解微指令系统的工作原理及工作方式。
3.自己设计简单指令与微指令,在机器上运行测试程序验证结果。
二、实验内容
1.数据传送实验/输入输出实验 2. 数据运算实验(加/减/与/或) 3. 移位/取反实验 4. 转移实验 5. 编写微指令
三、实验用设备仪器及材料
COP2000计算机组成原理实验仪、计算机
四、实验原理
(一)模型机总体结构
COP2000 模型机包括了一个标准CPU 所具备所有部件,这些部件包括:运算器ALU、累加器A、工作寄存器W、左移门L、直通门D、右移门R、寄存器组R0-R3、程序计数器PC、地址寄存器MAR、堆栈寄存器ST、中断向量寄存器IA、输入端口IN、输出端口寄存器OUT、程序存储器EM、指令寄存器IR、微程序计数器uPC、微程序存储器uM,以及中断控制电路、跳转控制电路。其中运算器和中断控制电路以及跳转控制电路用CPLD 来实现,其它电路都是用离散的数字电路组成。微程序控制部分也可以用组合逻辑控制来代替。
模型机为8位机,数据总线、地址总线都为8位,但其工作原理与16位机相同。相比而言8 位
2
哈尔滨理工大学计算机科学与技术学院
机实验减少了烦琐的连线,但其原理却更容易被学生理解、吸收。模型机的指令码为8 位,根据指令类型的不同,可以有0 到2 个操作数。指令码的最低两位用来选择R0-R3 寄存器,在微程序控制方式中,用指令码做为微地址来寻址微程序存储器,找到执行该指令的微程序。而在组合逻辑控制方式中,按时序用指令码产生相应的控制位。在本模型机中,一条指令最多分四个状态周期,一个状态周期为一个时钟脉冲,每个状态周期产生不同的控制逻辑,实现模型机的各种功能。模型机有24 位控制位以控制寄存器的输入、输出,选择运算器的运算功能,存储器的读写。 24 位控制位分别介绍如下:
XRD :外部设备读信号,当给出了外设的地址后,输出此信号,从指定外设读数据。 EMWR:程序存储器EM写信号。 EMRD:程序存储器EM读信号。
PCOE:将程序计数器PC的值送到地址总线ABUS上。
EMEN:将程序存储器EM 与数据总线DBUS接通,由EMWR和EMRD决定是将DBUS数据写到EM中,还是从EM读出数据送到DBUS。
IREN:将程序存储器EM读出的数据打入指令寄存器IR和微指令计数器uPC。 EINT:中断返回时清除中断响应和中断请求标志,便于下次中断。 ELP:PC打入允许,与指令寄存器的IR3、IR2位结合,控制程序跳转。 MAREN:将数据总线DBUS上数据打入地址寄存器MAR。 MAROE:将地址寄存器MAR的值送到地址总线ABUS上。 OUTEN:将数据总线DBUS上数据送到输出端口寄存器OUT里。 STEN: 将数据总线DBUS上数据存入堆栈寄存器ST中。
RRD:读寄存器组R0-R3,寄存器R?的选择由指令的最低两位决定。 RWR:写寄存器组R0-R3,寄存器R?的选择由指令的最低两位决定。 CN:决定运算器是否带进位移位,CN=1带进位,CN=0不带进位。 FEN:将标志位存入ALU内部的标志寄存器。
X2,X1,X0: X2、X1、X0三位组合来译码选择将数据送到DBUS上的寄存器。 WEN:将数据总线DBUS的值打入工作寄存器W中。 AEN:将数据总线DBUS的值打入累加器A中。
S2,S1,S0: S2、S1、S0三位组合决定ALU做何种运算。
3
哈尔滨理工大学计算机科学与技术学院
(二)模型机寻址方式
模型机的寻址方式分五种: 累加器寻址: 操作数为累加器A。
例如“CPL A”是将累加器A 值取反,还有些指令是隐含寻址累加器A,例如“OUT”是将累加器A的值输出到输出端口寄存器OUT。
寄存器寻址: 参与运算的数据在R0-R3 的寄存器中。
例如 “ADD A,R0”指令是将寄存器R0 的值加上累加器A的值,再存入累加器A中。 寄存器间接寻址:参与运算的数据在存储器EM 中,数据的地址在寄存器R0-R3中。
例如 “MOV A,@R1”指令是将寄存器R1 的值做为地址,把存储器EM 中该地址的内容送入累加器A中。
存储器直接寻址:参与运算的数据在存储器EM 中,数据的地址为指令的操作数。
例如“AND A,40H”指令是将存储器EM 中40H 单元的数据与累加器A的值做逻辑与运算,结果存入累加器A。
立即数寻址: 参与运算的数据为指令的操作数。
例如 “SUB A,#10H”是从累加器A中减去立即数10H,结果存入累加器A。
(三)微程序控制器组成及原理
微程序控制器主要由控制存储器、微指令寄存器和地址转移逻辑三大部分组成。其工作原理为: 1、将程序和数据通过输入设备送入存储器;
2、启动运行后,从存储器中取出程序指令送到控制器去识别,分析该指令要求什么事; 3、控制器根据指令的含义发出相应的命令(如加法、减法),将存储单元中存放的操作数据取出送出运算器进行运算,再把运算结果送回存储器指定的单元中; 4、运算任务完成后,就可以根据指令将结果通过输出设备输出。
(四)模型机指令集
模型机的缺省的指令集分几大类: 算术运算指令、逻辑运算指令、移位指令、数据传输指令、跳转指令、中断返回指令、输入/输出指令。可以通过COP2000计算机组成原理实验软件或组成原
4
哈尔滨理工大学计算机科学与技术学院
理实验仪来设计自己的指令集。
(五)设计指令/微指令系统
COP2000计算机组成原理实验仪,可以由用户自己设计指令/微指令系统,“指令流水实验”就是利用另一套指令/微指令系统来实现指令的流水工作。这样用户可以在现有的指令系统上进行扩充,加上一些较常用的指令,也可重新设计一套完全不同的指令/微指令系统。COP2000内已经内嵌了一个智能化汇编语言编译器,可以对用户设定的汇编助记符进行汇编。
五、实验操作步骤
实验 1:数据传送实验/输入输出实验
1.在COP2000软件中的源程序窗口输入下列下列程序
2.将程序另存为 EX1.ASM,将程序汇编成机器码,反汇编窗口会显示出程序地址、机器码、反汇编指令。
3.按快捷图标的 F7,执行“单微指令运行”功能,观察执行每条微指令时,寄存器的输入/输出状态,各控制信号的状态,PC及uPC如何工作。(见 EX1.ASM 程序跟踪结果)
5
哈尔滨理工大学计算机科学与技术学院
每个程序的一开始的第一条微指令一定是取指令,此微指令的值为0CBFFFFH,对应到各个控制位就是EMRD、PCOE、及IREN为低,此三位有效,其它所有位都处于无效状态。在程序第一次运行时或复位后,uPC和PC的值都为0,PCOE有效将PC值送到ABUS,做为程序存储器EM的地址,EMRD信号有效就是从程序存储器EM中读出程序指令,IREN将读出的指令送到IR寄存器和uPC,此微指令的作用就是:从程序存储器EM的0地址读出程序指令机器码7CH,并存入uPC中做为微程序存储器uM的地址,从微程序存储器uM的7CH单元中读出微控制码0C7FFF7H,同时PC加1为读下一条指令或数据做准备。
MOV A,#12:本指令为两个状态周期。在T1状态时,上次读出的指令机器码为7CH,存入uPC中做为微程序存储器uM的地址,读出微指令的值为0C7FFF7H,对应到各个控制位就是EMRD、PCOE、EMEN及AEN为低,处于有效状态,其它控制位为无效状态。由于 上条微指令(取指操作)已将PC加1,此时PCOE是将加1后的PC输出到ABUS做为程序存储器EM的地址,EMRD就是从程序存储器EM中读出数据,本指令中读出的数据应为12H,EMEN将读出的数据送到DBUS总线上,AEN 是将DBUS总线上的值存入累加器A中。同时uPC加1为执行下条微指令做准备,PC加1为读取下一条指令做准备。每条指令的最后一条微指令一定是取指令操作,本指令的T0状态周期即为取指令,执行上一条微指令时uPC已经加1,按照此uPC为地址从微程序存储器uM读出的微指令的值为0CBFFFFH,参照第一步的说明,此微指令从程序存储器EM中读取指令。
MOV A,R0: 本指令为两个状态周期。在T1状态时,由上条取指操作取出的指令机器码为70H,存入uPC后做为微程序地址访问 微程序存储器uM的70H单元,读出微指令的值为0FFF7F7,各控制位的状态为RRD、AEN为低电平为有效状态,RRD有效表示从寄存器组 R0-R3中读数送到DBUS上,在上条取指令操作时,IREN将取出的指令机器码70H送入IR寄存器,而IR寄存器的最低两位是用来选择寄存器R?的,此时IR寄存器最低两位为00,被读出的寄存器为R0。AEN有效表示将DBUS的数据写到累加器A中。同时uPC加1,为执行下条微指令做准备。本指令的T0状态也是取指令,完
6
哈尔滨理工大学计算机科学与技术学院
成的功能是取出下一条要执行的指令机器码,并存入uPC和IR寄存器中。
MOV A,@R0: 本指令为三个状态周期。在T2状态时,由上个取指操作读出的指令机器码为74H,打入uPC后,从微程序存储器74H单元读出的微指令的值为0FF77FFH,有效的控制位为MAREN和RRD,RRD有效表示从寄存器组R0-R3中读出数据送到DBUS,MAREN有效表示将数据从DBUS总线上打入地址寄存器MAR。uPC加1取出下条微指令执行。在T1状态时,由uPC做为微程序存储器地址,从uM的 75H单元中读出微指令的值为0D7BFF7H,其中有效的控制位为EMRD、EMEN、MAROE和AEN。MAROE表示程序存储器EM的地址由地址寄存器MAR输出,EMRD表示从程序存储器EM中读出数据,EMEN表示读出的数据送到地址总线DBUS上,AEN有效表示将数据总 线DBUS上的值存入累加器A中。此状态下uPC要加1,为取下条微指令做准备。本指令的T0状态执行的是取指操作。取指操作详细描述见程序开始部分的取指令的说明。
MOV A,01:本指令为三个状态周期。在T2状态时,由上条取指操作取出的指令机器码为78H,存入uPC和IR寄存器后做为微程序存储器uM的地址,读出微指令的值为0C77FFFH,相应的有效控制位为EMRD、PCOE、EMEN和MAREN,PCOE有效表示将PC值 做为程序存储器EM的地址,EMRD表示从程序存储器中读出数据,在本指令中此数据值为01H,EMEN表示将读出的数据送到DBUS总线,MAREN表示将DBUS总线上的数据打入地址寄存器MAR。uPC同时加1,取出下条微指令准备执行。在T1状态时,由uPC做为微程序存储器地址,从uM的79H单元中读出微指令的值为0D7BFF7H,可以参见上条指令的T1状态,此微指令的所完成的功能是,以MAR的值 做为程序存储器的地址,读出数据并送到数据总线DBUS,同时将此数据存入累加器A中。uPC加1取出下条微指令准备执行。在T0状态,微指令执行取指令操作。
IN:本指令分两个状态周期。在T1状态时,由上次取指操作取出的指令机器码为0C0H,以此做为微地址从uM中取出的微指令值为0FFFF17H,有效控制位为AEN、X2X1X0=000,因为X2、X1、X0为低,被选中的寄存器为输入端口IN,也就是说,输入端口IN上的数据被允许送到数据总线DBUS上,AEN有效表示将此数据打入累加器A中。同时uPC加1取出下条微指令准备执行。在T0状态,微指令执行的是取指令操作,取出下条指令准备执行。
OUT: 本指令分两个状态周期。在T1状态,由上次取出的指令机器码为0C4H,以此为微地址从微程序存储器uM中读出的微指令为0FFDF9FH,有效控制位为OUTEN、X2X1X0=100(二进制),S2S1S0=111(二进制),S2S1S0=111表示运算器做“ALU直通”运算,也就是累加器不做任何运算,直接输出结果,而X2X1X0=100表示运算器的结果不移位直接输出到数据总线DBUS,OUTEN有效表示将数据总线上的数据打入输出端口寄存器OUT内。uPC加1,取出下条微指令准备执行。在T0状态,
7
哈尔滨理工大学计算机科学与技术学院
微指令执行的是取指操作,取出下条将要执行的指令。
实验 2:数据运算实验(加/减/与/或)
1.在COP2000 软件中的源程序窗口输入下列程序。
2.将程序另存为 EX2.ASM,将程序汇编成机器码,反汇编窗口会显示出程序地址、机 器码、反汇编指令。
3.按快捷图标的 F7,执行“单微指令运行”功能,观察执行每条微指令时,寄存器的输入/输出状态,各控制信号的状态,PC及uPC如何工作。(见“EX2.ASM 程序跟踪结果” 详细介绍)
4.在了解数据运算的原理,可以加上一些数据传输指令给累加器 A 或寄存器R?赋值,再运算,并观察运算结果。
程序的开始执行一条取指的微指令,读入程序第一条指令。
ADDC A,R1:本指令为三个状态周期。在T2状态,由上次取指操作取出的指令码为21H,由
8
哈尔滨理工大学计算机科学与技术学院
IREN存入指令寄存器IR,最低两位为 01(二进制),选择寄存器R1,指令码由于IREN打入uPC时,忽略掉指令的最低两位,而将uPC的最低两位置成00,uPC的值为20H,访问 微程序存储器的20H单元,读出微指令值为0FFF7EFH,有效位为RRD及WEN,就是将R1内容送到工作寄存器W,uPC加1取出下条微指令。 在T1状态,读出的微指令值为0FFFE94H,有效位为FEN和AEN,FEN完成的操作是将标志位存入标志寄存器F(ALU内部),X2X1X0选择 “ALU直通”到数据总线DBUS,S2S1S0选择的运算操作为“带进位的加法运算”,AEN将DBUS上的数据存入累加器A。在T0状态,取出下条将要执行的指令。
SUB A,@R1:本指令有四个状态周期。在T3状态,上次取出的指令码为35H,最低两位用于寻址R1寄存器,uPC的最低两位置0,来访问uM的34H单元的微指令,读出值为0FF77FFH,将R1的值存入MAR。在T2状态,微指令为0D7BFEFH,表示用MAR做为地址从EM中读出数据送到DBUS再存到W中。在T1状态微指令为0FFFE91H,表示ALU做“减运算”,其结果直通到DBUS,再存入A中,同时保存标志位。T0状态为取指操作。
AND A,#55: 本指令为三个状态周期。在T2状态,微指令值为0C7FFEFH,表示以PC做为地址,从EM中读出数据送到DBUS,再将DBUS数据存W中。在T1状态,微指令为0FFFE93H,表示A和W做“逻辑与”运算,结果直通到DBUS,再存入A中,并保存标志位。
OR A,02:本指令有四个状态周期。在T3状态,微指令为0C77FFFH,表示以PC做为地址,从EM中读出数据送到DBUS,并存MAR 中。在T2状态,微指令为0D7BFEFH,表示以MAR做为地址,从EM中读出数据送到DBUS,并存入W中。在T1状态微指令为0FFFE92H,表示A和W做“逻辑或”运算,结果“直通”到DBUS并存入A中。T0状态为取指操作。
实验 3:移位/取反实验
1.在COP2000 软件中的源程序窗口输入下列程序。
2.将程序另存为 EX3.ASM,将程序汇编成机器码,反汇编窗口会显示出程序地址、机器码、反汇编指令。
9
哈尔滨理工大学计算机科学与技术学院
3.按快捷图标的 F7,执行“单微指令运行”功能,观察执行每条微指令时,寄存器的输入/
输出状态,各控制信号的状态,PC 及 uPC 如何工作。(见“EX3.ASM 程序跟踪结果” 详细介绍)
程序的开始执行一条取指的微指令,读入程序第一条指令。 MOV A, #55: 将累加器的值设为055H,以便下面观察。
RR A:本指令为两个状态周期。在T1状态,由上次取指操作取出的指令码为D0H,访问微程序存储器的20H单元,读出微指令值为0FFFCB7H,有效位为CN、FEN及AEN,表示不带进位移位,运算器控制S2S1S0=111(二进制)表示运算不运算,输出结果就为A 的值,X2X1X0=101(二进制)表示,运算器“右移”输出到总线,FEN将标志位保存,AEN将DBUS内容存入A中,uPC加1取出下条微指令。在T0状态,取出下条将要执行的指令。
RLC A:本指令有两个状态周期。在T1状态微指令为0FFFED7H,CN=1表示带进位移位,S2S1S0=111表示ALU不做运算,直接输 出A内容,X2X1X0=110(二进制)表示,运算器“左移”输出到DBUS,AEN表示DBUS内容存入A中,FEN表示保存标志位。T0状态为取指 操作。取出下条将要执行的指令。
CPL A:本指令为两个状态周期。在T1状态,微指令为0FFFE96H,S2S1S0=110表示ALU做“取反”运算,X2X1X0=100(二进制) 表示,运算器结果直通到DBUS,再存入A中,并保存标志位。T0状态为取指操作。取出下条将要执行的指令。
10
哈尔滨理工大学计算机科学与技术学院
实验 4:转移实验
1.在COP2000 软件中的源程序窗口输入下列程序。
2.将程序另存为 EX4.ASM,将程序汇编成机器码,反汇编窗口会显示出程序地址、机 器码、反汇编指令。
3.按快捷图标的 F7,执行“单微指令运行”功能,观察执行每条微指令时,寄存器的输入/输出状态,各控制信号的状态,PC 及 uPC 如何工作。观察在条件满足和不满足的情况 下,条件跳转是否正确执行。(见“EX4.ASM 程序跟踪结果”详细介绍)
11
哈尔滨理工大学计算机科学与技术学院
程序的开始执行一条取指的微指令,读入程序第一条指令。
MOV A, #01: 将累加器的值设为01H,用于下面计算来产生进位标志和零标志。 SUB A,#01:A值原为1,将A值第一次减1后,应产生“零标志”位。
JC 02: 由上条取指读出的指令码为0A0H,存入IR寄存器后,IR3、IR2的值为00(二进制),表示判进位跳转功能,指令码 存入uPC后,从uM读出的微指令值为0C6FFFFH,表示以PC为地址从EM中读出数据02H并送到DBUS,ELP为低成有效状态,与IR3、IR2 组成进位跳转控制,此时若有进位,就会产生一个控制信号,将总线DBUS上的值02H打入PC,下条微指令取指时,就会从EM新的地 址02中读指令码;此时若无进位,DBUS上的值被忽略,PC加1,下条取指操作按新PC取出指令码执行。当前无进位标志,顺序执行下 条指令。
JZ 02: 由上条取指读出的指令码为0A4H,存入IR寄存器后,IR3、IR2的值为01(二进制),表示判零跳转功能,指令码存入uPC后,从uM读出的微指令值为0C6FFFFH,表示以PC为地址从EM中读出数据02H并送到DBUS,ELP为低成有效状态,与IR3、IR2 组成零跳转控制,与上条指令相比,尽管微指令相同,由于指令码不同,上一个为判进位跳转,这个为判零跳转。此时若零标志位为1, 即A=0时,就会产生一个控制信号,将总线DBUS上的值02H打入PC,下条微指令取指时,就会从EM新的地址02中读指令码;此时若零标 志位为0,DBUS上的值被忽略,PC加1,下条取指操作按新PC取出指令码执行。由于A=0,零标志位为1,产生PC打入信号,将DBUS上的 值02H打入PC。下一条取指操作,PC=02,以PC为地址从EM的02单元取出指令码执行,程序转到02地址。
SUB A,#01:A值现为0,再减1后,A=0FFH,并产生“进位标志”位。
JC 02: 此为判进位跳转指令,此时由于进位标志为1,与ELP、IR3、IR2组成的电路产生PC打入信号,将数据总线上的值存 入PC,程序跳转到02H地址执行。
SUB A,#01:A值现为0FFH,再减1后,A=0FEH,无“零标志”,无“进位标志”位。 JC 02: 此为判进位跳转指令,此时无进位标志,程序顺序执行下条指令。 JZ 02: 此为判零跳转指令,此时无零标志位,程序顺序执行下条指令。 JMP 00: 由上条取指操作读出的指令码为0ACH,存入IR寄存器后,IR3、IR2的值为11(二进制),此为无条件跳转控制,指令 码存入uPC后,从uM读出的微指令为0C6FFFFH,表示以PC为地址从EM中读出数据并送到数据总线DBUS上,因为ELP有效,与IR3、IR2组合产 生PC的打入信号,将DBUS上的数据存入PC中,下一条取指微指令按新的PC值读出程序的指令码。
MOV A, #01: 程序从开头重新执行。
12
哈尔滨理工大学计算机科学与技术学院
实验 5:编写微指令
建立一个有如下指令的系统:
因为硬件系统需要指令机器码的最低两位做为 R0-R3 寄存器寻址用,所以指令机器码要忽 略掉这两位。我们暂定这四条指令的机器码分别为 04H,08H,0CH,10H。
(1)打开 COP2000 组成原理实验软件,选择[文件|新建指令系统/微程序],清除原来的指令/ 微程序系统,观察软件下方的“指令系统”窗口,所有指令码都“未使用”。
2.选择第二行,即“机器码 1”为 0000 01XX行,在下方的“助记符”栏填入数据装载功能的指令助记符“LD”,在“操作数 1”栏选择“A”,表示第一个操作数为累加器 A。 在“操作数 2”栏选择“#II”,表示第二个操作数为立即数。按“修改”按钮确认。
3.选择第三行,即“机器码 1”为 0000 10XX 行,在下方的“助记符”栏填入加法功能的指令助记符“ADD”,在“操作码 1”栏选择“A”,表示第一操作数为累加器 A,在“操作数 2”栏选择“#II”,表示第二操作数为立即数。按“修改”按钮确认。
4.选择第四行,即“机器码 1”为 0000 11XX 行,在下方的“助记符”栏填入无条件跳转功能的指令助记符“GOTO”,在“操作码 1”栏选择“MM”,表示跳转地址为 MM,此 指令无第二操作数,无需选择“操作数 2”。按“修改”按钮确认。因为硬件设计时,跳转指令的跳转控制需要指令码的第 3 位和第 2 位 IR3、IR2 来决定,无条件跳转的控制要 求 IR3 必需为 1,所以
13
哈尔滨理工大学计算机科学与技术学院
无条件跳转的机器码选择在此行,机器码为 000011XX。
5.选择第五行,即“机器码 1”为 0001 00XX 行,在下方的“助记符”栏填入输出数据功 能的指令助记符“OUTA”,由于此指令隐含指定了将累加器 A 输出到输出商品寄存器, 所以不用选择“操作码 1”和“操作数 2”,按“修改”按钮确认。 现在我们只是输入了四条指令(见下图),
下面要做的是根据指令的功能来设计相应的微程序。
6.将窗口切换到“uM 微程序”窗口,现在此窗口中所有微指令值都是 0FFFFFFH,也就是无任何操作,我们需要在此窗口输入每条指令的微程序来实现该指令的功能。
7.每个程序开始要执行的第一条微指令应是取指操作,因为程序复位后,PC和uPC的值都为0,所以微程序的0地址处就是程序执行的第一条取指的微指令。取指操作要做的工作是从程序存储器 EM 中读出下条将要执行的指令,并将指令的机器码存入指令寄存 器IR和微程序计数器uPC中,读出下条操作的微指令。根据此功能,首先选中“_FATCH_”指令的第一行,观察窗口下方的各控制信号,有“勾”表示信号为高,处于无效状态, 去掉“勾”信号为低,为有效状态。要从 EM中读数,EMRD必需有效,去掉信号下面的“勾”使其有效;读EM的地址要从PC输出,所PCOE要有效,允许PC输出,去掉PCO下面的“勾”,PCOE 有效同时还会PC加1,准备读EM的下一地IREN是将EM读出的指令码存入uPC和IR,所以要去掉IREN的“勾”使其有效。这样,取指操作的微指令就
14
哈尔滨理工大学计算机科学与技术学院
设计好了,取指操作的微指令的值0CBFFFFH。
8.现在我们来看把立即数装入累加器 A 要做哪些工作,首先要从EM中读出立即数,并送到数据总线 DBUS,再DBU上将数据打入累加器 A中,按照这个要求,从EM中读数据,EMRD 应该有效,EM 的地址由PC输出,PCOE必需有效,读出的数据送到DBUS,EMEN也应有效,要求将数据存入 A 中,AEN也要有效,选中“LD A,#II”指令的第一行,根据前面描述,将所有有效位下面的“勾”去掉,使其有效,这条微指令的值为 0C7FFF7H。为了保证程序的连续执行,每条指令的最后必需是取指令,取出下条将要执行的指令。选中指令的第二行(第二条微指令)填入取指操作所需的有效位,(取操作描述可见第7步)。
9.本指令为立即数加法指令,立即数加可分两步,首先从EM中读出立即数,送到DBUS,并存入工作寄存器W中,从EM中读数,EMRD应有效,读EM的地址由PC输出,PCO要有效,读出的数据要送到DBUS,EMEN应有效,数据存入W中,WE应有效,根 据描述,选中“ADD A,#II”指令的第一行,将有效信号的“勾”去掉,使其有效,这条微指令的值为 0C7FFEFH。第二步,执行加法操作,并将结果存入 A 中。执行加法操 作,S2S1S0的值应为 000(二进制),结果无需移位直接输出到 DBUS,X2X1X0 的值就 要为 100(二进制),从DBUS将数据再存入A中,AEN应有效。与此同时,ABUS 和 IBUS 空闲,取指操作可以并行执行,也就是以PC为地址,从 EM 中读出下条将要执行指令的机器码,并打入 IR 和 uPC 中,根据取指操作的说明,EMRD、PCOE、IREN 要有效, 根据上面描述,选中该指令的第二行,将 EMRD、PCOE、IREN、X2X1X0、AEN、S2S1S0 都置成有效和相应的工作方式,此微指令的值为 0CBFF90H。
10.“GOTO MM”为无条件跳转,所要执行的操作为从EM中读出目标地址,送到数据总线 DBUS 上,并存入PC中,实现程序跳转。从 EM 中读数,EMRD 要有效,读 EM 的地址由 PC 输出,PCOE 有效,数据送到 DBUS,EMEN 要有效,将数据打入 PC 中, 由两位决定,ELP有效,指令寄存器 IR 的第三位 IR3 应为 1,由于本指令机器码为 0CH, 存入IR后,IR3 为 1。选中“GOTO MM”指令的第一行,将上面的 EMRD、PCOE、 EMEN、ELP 设成低,使其成为有效状态,结合指令的第三位,实现程序跳转,这条微 指令的值为 0C6FFFFH。下条微指令应为取指操作,选中此指令的第二行,将 EMRD、 PCOE、IREN 设成有效,微指令的值为 0CBFFFFH。
11.“OUTA”,将累加器的内容输出到输出端口。其操作为累加器A不做运算,直通输出, ALU 结果不移位输出到 DBUS,DBUS 上的数据存入输出商品 OUT。累加器A直通输 出结果,S2S1S0 值要为 111(二进制),ALU 结果不移位输出到数据总线 DBUS,X2X1X0 的值要等于 100(二进制),DBUS 数据要打入 OUT,那么 OUTEN 应有效。与此同时, ABUS 和 IBUS 空闲,取指操作可以并
15
哈尔滨理工大学计算机科学与技术学院
行执行,也就是以 PC 为地址,从 EM 中读出下条 将要执行指令的机器码,并打入 IR 和 uPC 中,根据取指操作的说明,EMRD、PCOE、 IREN 要有效,综上所述,选中此指令的第一行,将 EMRD、PCOE、IREN、OUTEN、 X2X1X0、S2S1S0 置成有效状态和相应的工作方式,微指令的值为0CBDF9FH。
12.选择菜单[文件|保存指令系统 /微程序]功能,将新建的指令系统/微程序保存下来,以 便以后调用。为不与已有的两个指令系统冲突,将新的指令系统/微程序保存为“INST3.INS”。
13.在源程序窗口输入下面程序。
14.将程序另存为 NEW_INST.ASM,将程序汇编成机器码,观察反汇编窗口,会显示出程 序地址、机器码、反汇编指令。
15.按快捷图标的 F7,执行“单微指令运行”功能,观察执行每条微指令时,数据是否按照设计要求流动,寄存器的输入/输出状态是否符合设计要求,各控制信号的状态,PC 及 uPC 如何工作是否正确。
到此为止,我们利用 COP2000 软件系统已经建成了一个新的指令系统/微程序。新的指令系统从汇编助记符到指令机器码到微指令都与原来的指令系统有所不同。成为一个真正的指令系统。
16
哈尔滨理工大学计算机科学与技术学院
可以用快捷图标上的“生成组合逻辑控制器 ABEL 程序”功能将微程序转换组合逻辑控制方式的 ABEL 语言程序,在 EDA 开发系统上编译后,编程到 CPLD 上,用组合逻辑来控制程序的运行。
六、实验结果分析 (一)实验过程中部分截图
17
哈尔滨理工大学计算机科学与技术学院
18
哈尔滨理工大学计算机科学与技术学院
19
哈尔滨理工大学计算机科学与技术学院
(二)心得体会
这次的实验,加强了我们动手、思考和解决问题的能力。巩固和加深了对计算机cpu内部的理解,提高综合运用所学知识解决问题的能力。培养了我们选用参考书,查阅手册及文献资料的能力。培养思考,深入研究,分析问题、解决问题的能力。通过COP2000试验箱以及软件的使用,让我们对其中的原理能清楚的掌握。而且做实验的同时也是对课本知识的巩固和加强,平时看课本时,有些问题就不是很能理解,做完实验,那些问题就迎刃而解了。而且还可以记住很多东西。认识来源于实践,实践是认识的动力和最终目的,实践是检验真理的唯一标准。
这次的实验使我懂得了理论与实际相结合是很非常重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和思考的能力。
通过这次的实验,让我更加了解到计算机组成原理的重要性。以及它对我们专业的发展发挥的作用。对我们而言,知识上的收获很重要,但精神上的丰收更加可喜。让我知道了学无止境的道理。此次实验,我还学到了很多课内学不到的东西,比如思考解决问题,出现差错的随机应变,这些都让我受益非浅,今后的制作应该能够更轻松,自己也都能够解决并高质量的完成项目。
20
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- pqdy.cn 版权所有 赣ICP备2024042791号-6
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务