基本模型机扩展(减法运算)

《计算机组成原理》课程设计报告

(2015——2016年度第一学期)

题 目 基本模型机扩展(减法运算) 专 业 班 级 姓 名 学 号

云南师范大学教务处编印

《计算机组成原理》课程设计

成 绩 评 定

指导教师:

目录

1 引言 ........................................................................ 1 2 设计过程 .................................................................... 3 2.1扩展减法指令设计 ........................................................... 3 2.1 ZY15Comp12BB基本模型机简介 ................................................ 3 2.2 ZY15Comp12BB基本模型机指令格式与SUB 指令格式设计 .......................... 4 2.3 ZY15Comp12BB基本模型基本机指令系统微操作序列简介 .......................... 4 2.3.1 READ、WRITE 和RUN 微操作序列 ............................................. 4 2.3.2 IN、OUT 、ADD 、STA 和JMP 指令微操作序列 ................................... 5 2.3.3 SUB指令微操作序列设计 ................................................... 7 2.4.ZY15Comp12BB 基本模型机基本机指令系统微操作序列简介 ........................ 7 2.4.1微操作指令格式 ........................................................... 8 2.4.2 SUB微程序 ............................................................... 8 3. 扩展减法指令的测试 ........................................................ 10 3.1按联机运行程序要求编写汇编语言与机器语言测试程序 .......................... 10 3.2编写微程序 ................................................................ 10 3.3连接模型机 ................................................................ 11 3.4输入与验证机器语言程序与微程序 ............................................ 11 3.5单步执行程序,记录运行结果 ................................................ 12 4总结 . ....................................................................... 16 5 参考文献: ................................................................. 17

1 引言

本次课程设计的任务是完成一个基本模型机扩展一条直接寻址的减法指令SUB addr 。设计综合运用了以前所学计算机原理的知识, 依照设计要求和指导, 实现了一条直接寻址的减法指令SUBaddr 的实现。

本模型机实现的功能有:IN (输入),OUT (输出),SUB (减法),STA (存数),JMP (跳转)。设计进行开始, 在了解微程序的基本格式, 及各个字段值的作用后, 按微指令格式参照指令流程图,设计出程序以及微程序,将每条微指令代码化,译成二进制代码表,并将二进制代码转换为联机操作时的十六进制格式文件。根据机器指令系统要求,设计微程序流程图及确定微地址。设计的减法中, 被减数和减数都由调试人员输入, 最后上机调试,各个功能运行结果正确。

设计目标:对ZY15Comp12BB 计算机组成原理教学实验系统的基本模型机扩展一条直接寻址的减法指令SUB addr。例如SUB[30H] R0把括号里面的30H 作为被减数减去R0中的值再传回R0中进行保存。

摘要:本论文主要论述了在基本模型机扩展一条直接寻址的减法指令。在ZY15Comp12BB

基本模型机上设计出IN (输入),OUT (输出),SUB (减法),STA (存数),JMP (跳转)五条指令。为其写出相对应的指令格式实现指令系统微操作序列。将所有的微指令编写成机器语言的二进制代码表格。并对其设计的扩展减法指令进行联接模型机单步执行程序测试记录下运行结果,验正所编写的指令的正确性。

关键词:基本模型机、减法指令、微程序

2.1扩展减法指令设计

2.1.1 ZY15Comp12BB基本模型机简介

图1数据通路

(1)运算器单元(ALU UINT)

运算器单元由以下部分构成:两片74LS181构成了并-串型8位ALU ;两个8位寄存器DR1和DR2为暂存工作寄存器,保存参数或中间运算结果。ALU 的S0~S3为运算控制端,Cn 为最低进位输入,M 为状态控制端。ALU 的输出通过三态门74LS245连到数据总线上,由ALU-B 控制该三态门。

(2)寄存器单元(REG UNIT)

该部分由3片8位寄存器R0、R1、R2组成,它们用来保存操作数用中间运算结构等。三个寄存器的输入输出均以连入数据总线,由LDRi 和RS-B 根据机器指令进行选通。

(3)指令寄存器单元(INS UNIT)

指令寄存器单元中指令寄存器(IR )构成模型机时用它作为指令译码电路的输入,实现程序的跳转,由LDIR 控制其选通。

(4) 时序电路单元(STATE UNIT)

用于输出连续或单个方波信号,来控制机器的运行。 (5) 微控器电路单元(MICRO -CONTROLLER UNIT)

微控器主要用来完成接受机器指令译码器送来的代码,使控制转向相应机器指令对应的首条微代码程序,对该条机器指令的功能进行解释或执行的工作。由输入的W/R信号控制微代码的输出锁存。由程序计数器(PC )和地址寄存器(AR )实现程序的取指功能。

(6) 逻辑译码单元(LOG UNIT)

用来根据机器指令及相应微代码进行译码使微程序转入相应的微地址入口,从而实现微程序的顺序、分支、循环运行,及工作寄存器R0、R1、R2的选通译码。

(7)主存储器单元(MAIN MEM) 用于存储实验中的机器指令。

(8) 输入输出单元(INPUT/OUTPUT DEVICE)

输入单元使用八个拨动开关作为输入设备,SW-B 控制选通信号。输出单元将输入数据置入锁存器后由两个数码管显示其值。

2.2ZY15Comp12BB 基本模型机指令格式与SUB 指令格式设计

在第一部分的单元实验中,所有的控制信号是人为用SWITCH 单元产生的,但是在实际的 CPU 中,所有的控制信号都是由 CPU 自动产生的。所以在本次实验中我们用微程序来控制,自动产生各部件单元控制信号,实现特定指令的功能。这里,计算机数据通路的控制将由微程序控制器来完成,CPU 从内存中取出一条机器指令到指令执行结束的一个指令周期全部由微指令组成的序列来完成,即一条机器指令对应一段微程序。

本实验要求设计五条机器指令,其指令格式如下: 助记符 机器指令码 说明 IN 00000000;输入,“INPUT ”设备中的开关状态→R0

ADD addr 00010000 XXXXXXXX ;二进制加法,R0+[addr ]→R0 SUB addr 01010000 XXXXXXXX ;二进制减法,[addr ]-R0→R0 STA addr 00100000 XXXXXXXX ;存数,R0→[addr ] OUT addr 00110000 XXXXXXXX ;输出,[addr ]→BUS JMP addr 01000000 XXXXXXXX ;无条件转移,addr →PC

机器指令码的前4位为操作码。其中IN 为单字长,其余为双字长指令,XXXXXXXX 为addr 对应的二进制地址码。

还要求能读写程序和启动程序(RUN ),即拨动总清开关CLR 后,控制台开关SWB 、SWA 设置为“11”时,按START 微动开关,即可转入到第01号“取址”微指令,启动程序运行。

为了向RAM 中装入程序和数据,检查写入是否正确,并能启动程序执行,还必须设计三个控制台操作指令(非编程指令):READ 、WRITE 和RUN 。上述三条控制台指令用两个开关SWB 、SWA

2.3 ZY15Comp12BB基本模型基本机指令系统微操作序列简介 2.3.1 READ 、WRITE 和RUN 微操作序列

图2控制台操微程序

PC 计数器在用清零开关CLR 清零后,通过控制台开始进行机器指令的读写和执行,此处将00Q 的后继地址设为20Q (即010000)。此时只有P(4)有效,即P(4)=0,P(1)=P(2)=P(3)=1。强置改变有一个特点,当SEi 为1时无效,不能改变;只有SEi 为0时,才能对该位上的数进行改变;但只能由0变成1,而不能逆转。

1. 强置写指令

当进行机器指令写入时,将SWB,SWA 置成01状态,通过指令译码器的逻辑表达式即可算出入口地址。

SE5=1 SE4=1 SE3=1 SE2=1 SE1=0 。SE5~SE2均无效,只有SE1有效,即可得出010000改变为010001,即强置写的入口地址为21Q 。

2. 强制写指令

当进行机器指令写入时,将SWB,SWA 置成00状态,通过指令译码器的逻辑表达式即可算出入口地址。

SE5=1 SE4=1 SE3=1 SE2=1 SE1=1 。SE5~SE1均无效,不能对 010000进行改变,即强置写的入口地址为20Q 。

3. 程序执行指令

当进行机器指令写入时,将SWB,SWA 置成11状态,通过指令译码器的逻辑表达式即可算出入口地址。

SE5=1 SE4=1 SE3=1 SE2=0 SE1=0 。SE5~SE3均无效,SE2和SE1有效,即可得出010000改变为010011,即强置写的入口地址为23Q 。 2.3.2 IN、OUT 、ADD 、STA 和JMP 指令微操作序列

本设计的规定项目采用五条机器指令:IN (输入)、MOV (将最终计算结果存入间接地址中)、ADD (二进制加法)、NOT(给2X 取非) 、STA (将X 存入直接地址中)、DEC(减) 、OUT (输

出)、HLT (保持执行结束状态,不再执行操作),图3. 指令微操作序列,其指令格式如下表1(前四位是操作码):

(1)IN 指令:为了执行输入指令,CPU 要做两件事情。首先控制开关SW ,允许INPUT 输入装置将数据送到总线上,其次通过总线将输入的数据写入寄存器R0中。这其中包括两个步骤,即SW->BUS和RO->BUS。由于输入到数据总线上的数据就是写入寄存器的数据,因此可以将这两个操作合并成一个操作:SW->R0。执行完输入指令的整个周期后,程序返回到取指令周期,开始取下一条指令。

(2)ADD 指令:加法指令执行的操作是将寄存器R0的内容与存储单元内容相加后,存回寄存器R0:R0+(MEM )->R0执行加法运算时,需要分别将R0的内容送寄存器R1,将存储单元的内容送DR2;而在ALU 中进行加法运算后,将运算结果写回到寄存器R0. 而存储单元的地址是存放在紧跟在操作码后的字节当中的,因此,首先要以该字节的内容为地址,即将该单元内容送地址寄存器AR ;然后,从AR 所指向的RAM 存储单元取出操作数送给DR2. 由于在取指令操作码时,PC 已经自动加1,指向下一字节,该地址就是存放需要做加数的操作数的存储单元的地址。于是通过执行以下三步骤,可以从存储器中取出操作数送到DR2:PC->AR,PC+1->PC;以AR 的内容作为取操作数的地址

RAM->BUS,BUS->AR;AR 指向存放操作数的RAM 单元 RAM->BUS,BUS->DR2;RAM 中的数据通过BUS 送DR2 将R0中的数据送DR1,即R0->DR1

在ALU 中进行加法运算,运算结果送R0,即(DR1)+(DR2)->R0

(3)STA 指令

向RAM 写数据操作的STA 指令已紧跟在操作码后的字节作为存放操作数的地址,将R0中的数据存入该地址单元。首先将紧跟在操作码后的字节的内容送地址寄存器AR :

PC->AR,PC+1->PC;以PC 的内容作为存数据的地址 RAM BUS,BUS AR;AR 指向存放操作数的RAM 单元

然后将R0的内容写入该地址的RAM 单元中:R0->BUS,BUS->RAM (4)OUT 指令

输出指令OUT ,以紧跟在操作码后的字节作为读出数据的地址,将该单元的内容通过DR1输出到OUT 端口。首先将紧跟在操作码后的字节的内容送给地址寄存器AR :

PC->AR,PC+1->PC;以PC 的内容作为取数据的地址 RAM->BUS,BUS->AR;AR 指向存放操作数的RAM 单元 然后将RAM 单元的内容读出到DR1,并送往输出端口OUT : RAM->BUS,BUS->DR1,DR1->OUT (5)JMP 指令

无条件转移指令JMP ,以紧跟在操作码后的字节的内容作为转移地址。将该字节的内容送给程序计数器PC ,实现程序的转移:

PC->AR,PC+1->PC;以PC 的内容作为取数据的地址 RAM->BUS,BUS->PC;将RAM 内容送PC ,实现程序转移 2.3.3 SUB指令微操作序列设计

图3. SUB指令微操作流程

通过执行以下三步骤,可以从存储器中取出操作数送到DR1:PC->AR,PC+1->PC;以AR 的内容作为取操作数的地址

RAM->BUS,BUS->AR;AR 指向存放操作数的RAM 单元 RAM->BUS,BUS->DR1;RAM 中的数据通过BUS 送DR1 将R0中的数据送DR2,即R0->DR2

在ALU 中进行加法运算,运算结果送R0,即(DR1)-(DR2)->R0 2.4. ZY15Comp12BB基本模型机基本机指令系统微操作序列简介

2.4.1微操作指令格式

微指令格式:微指令长共24位,其中uA5~uA0为6位的后续微地址,A 、B 、C 三个译码字段分别由三组译码控制电路译码产生各控制信号。C 字段中的P (1)~P(4)是4个测试字位。其功能是根据机器指令及相应微代码进行译码,使微程序转入相应的微地址入口,从而实现微程序的顺序、分支、循环运行。AR 为算术运算是否影响进位及判零标准控制位,低电平有效。B 字段中的RS-G 为源寄存器选通信号、目的寄存器选通信号及变址寄存器选

表3. 基本模型机微指令结构图

2.4.2 SUB微程序

(1)微指令的微地址分配

图4. 微指令的微地址分配

(2)微指令编码

表4. 微程序时序控制实验二进制代码表

SUB 微程序编码

ADD 微程序编码

表4.SUB 微程序时序控制实验二进制代码表 表5 微程序时序控制实验二进制代码表

其中 uA5 一 uA0 为 6 位的后续微地址,A 、B 、P 为三个译码字段,分别由三个控制位译码出多位。P 字段中的 Pl 一 P4 是四个测试字位。其功能是根据机器指令及相应微代码进行译码,使微程序转入相应的微地址入口,从而实现微程序的顺序、分支、循环运行。AR 为算术运算是否影响进位及判零标志控制位,其为零有效。B 字段中的RS_G、RD_G、RI_G分别为源寄存器选通信号、目的寄存器选通信号及变址寄存器选通信号,其功能是根据机器指令来进行三个工作寄存器R0、R1及R2的选通译码。

3. 扩展减法指令的测试

3.1按联机运行程序要求编写汇编语言与机器语言测试程序 IN ;输入减数至R0 SUB [FAH] ; (FAH)-R0 R0

STA [FBH] ; 保存差至存储单元FBH :R0 [FBH] OUT [FBH] ; 输出差:(FBH) BUS JMP [01H] ; 返回到准备取指 $P0000 $P0150 $P02FA

$P0320 $P04FB $P0530

$P06FB $P0740 $P0801

$PFAFF ;设置被减数 3.2编写微程序

图5微程序

3.3连接模型机

(1)按图6连接实验线路(图中箭头表示需要接线的地方,接总线和控制信号时要注意高低位一一对应,可用彩排线的颜色来进行区分)。

图6基本模型机实验接线图

3.4输入与验证机器语言程序与微程序

使用联机软件编辑微程序、载入模型机和进行微程序是否载入微程序存储器的验证。

图8输入与验证机器语言程序与微程序

联机运行程序时,进入软件界面,装载机器指令及微指令后,选择“操作”→“调试”功能菜单打开相应的动态数据通路图,按相应功能键即可联机运行、监控、调试程序。

3.5单步执行程序,记录运行结果

输入数据

4总结

本实验设计了基本模型机扩展一条直接寻址的减法指令。通过对SUB 指令格式的设计,指令微操作系列和微程序的代码的设计,然后联机将所编写的机器语言微程序加载到ZY15Comp12BB 基本模型机进行运行。输入数值1001 1101(9DH )与数值0000 0001(01H )最终结果为10011100(9CH ),结果正确。

通过这次实验让我了解了一条微指令在模型机中的实现, 完成对计算机组成原理这门课程的综合应用, 达到学习本书的作用。作为一个计算机系学生这是必需掌握的。使我们对数据选择器、移位器、加法器、运算器、存储器和微程序控制器,有了比较透彻的认识。由于计算机设计的部件较多、结构原理较复杂,对于我们这样的初设计者来说感到无从下手。在设计过程中,我们从开始的粗略的一个概念,到中间的疑惑与焦虑,到解决了问题的快乐。这对于我们以后工作也有着很大的好处,培养了我们遇到问题,分析问题,解决问题各个方面上的能力。

5 参考文献:

[1]蒋本珊 计算机组成原理[M].第3版. 北京:清华大学出版社,2010.


© 2024 实用范文网 | 联系我们: webmaster# 6400.net.cn