逻辑加与减法指令在基本模型机的设计与实现
一.设计背景与设计目标
通过计算机组成原理理论课和几次实验的学习,尝试设计五条机器指令,并编写相应的微程序,完成由基本单元电路构成一台基本模型机,再经过调试指令和模型机使其在微程序的控制下自动产生各部件单元的正常工作控制信号。
在设计基本模型机的实验过程中,个别部件单元的控制信号是人为模拟产生的,而本课程设计将能在微程序控制下自动产生各部件单元控制信号,实现特定指令的功能。这里,计算机数据通路的控制将由微程序控制器来完成,CPU从内存中取出一条机器指令到指令执行结束的一个指令周期,全部由微指令组成的序列来完成,即一条机器指令对应一条微程序。
本课程设计要求增加两条机器指令,我组选择:或OR(逻辑加),SUB(减法)
二.设计仪器
TDN—CM+计算机组成原理教学实验系统一台,排线若干; PC机一台。
三.设计原理
1. 微程序控制电路
微程序控制器的组成见图1-13。其中控制存储器采用3片2816 E2PR0M,具有掉电保护功能。微命令寄存器18位,用两片8D触发器(74LS273)和一片4D(74LS175)触发器组成。微地址寄存器6位,用三片上升沿触发的双D触发器(74LS74)组成,它们带有清“0”端和置“1”端。在不判别测试的情况下,T2时刻打入微地址寄存器的内容即为下一条微指令地址。当T4时刻进行测试判别时,转移逻辑满足条件后输出的负脉冲通过强置端将某一触发器设置为“1”状态,完成地址修改。
在该实验电路中,在CONTROL UNIT有一个编程开关,它具有三种状态:WRITE(编程)、READ(校验)、RUN(运行)。当处于“编程状态”时,实验者可根据微地址和微指令格式将微指令二进制代码写入到控制存储器2816中。当处于“校验状态”时,可以对写入控制存储器中的二进制代码进行验证,从而可以判断写入的二进制代码是否正确。当处于“运行状态”时,只要给出微程序的入口微地址,则可根据微程序流程图自动执行微程序。图中微地址寄存器输出端增加了一组三态门74LS245,目的是隔离触发器的输出,增加抗干扰能力,并用来驱动微地址显示灯 2. 微指令格式
微指令字长24位,其控制位顺序如下:
表1-2 微指令结构图 微程序 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 A B P 6 5 4 3 2 1 控制信号 S3 S2 S1 S0 M CN WE CE LDPC
A字段 15 14 13 控制信号 12 11 B字段 10 控制信号 9 8 P字段 7 控制信号 uA5 uA4 uA3 uA2 uA1 uA0 0 0 0 0 1 1 1 0 0 1 1 0 0 1 0 1 0 1 0 1 0 LDRi LDDR1 LDDR2 LDIR LOAD LDAR 0 0 0 0 1 1 1 0 0 1 1 0 0 1 0 1 0 1 0 1 0 RS_B 299_B ALU_B PC_B 0 0 0 0 1 1 1 0 0 1 1 0 0 1 0 1 0 1 0 1 0 P1 P4 其中uA5一uA0为6位的后续微地址,A、B、P为三个译码字段,分别由三个控制位译码出多位。P字段中的Pl一P4是四个测试字位。其功能是根据机器指令及相应微代码进行译码,使微程序转入相应的微地址入口,从而实现微程序的顺序、分支、循环运行。AR为算术运算是否影响进位及判零标志控制位,其为零有效。B字段中的RS_B、RD_B、RI_B分别为源寄存器选通信号、目的寄存器选通信号及变址寄存器选通信号,其功能是根据机器指令来进行三个工作寄存器R0、R1及R2的选通译码。
四.实验步骤
1按照基本模型机的同路框图设计微程序流程图 数据通路图:
地址总线ALU-GARS3S2S1S0LDARALUPC-GMEMLED-GLOADT4LDDR1DR1T4LDDR2PCDR2LDPCCEWEWEOUT数据总线R0-GR0LDR0时序WE微控制器T1T2INIRLDIRSW-G 微程序流程图的控制台部分:
1
01 PC->AR PC+1 02 RAM->BUS BUS->IR 10 P1 IN ADD STA OUT JMP OR SUB 10 11 12 13 14 15 16 SW->R0 PC->AR PC->AR PC->AR PC->AR PC->AR PC->AR PC+1 PC+1 PC+1 PC+1 PC+1 PC+1 03 07 26 25 34 30 RAM->BUS RAM->BURAM->BUS RAM->BUS RAM->BUS RAM->BUS 01 BUS->AR S BUS->AR BUS->AR BUS->AR BUS->AR 04 27 17 01 35 31 R0->BUS R0->BUS R0->BUS RAM->BUS R0->BUS BUS->DR0 BUS->DR0 BUS->RAM BUS->DR1 BUS->DR0 36 32 05 R0->DR1 R0->DR1 R0->DR1 01 01 06 37 33 DR1+DR2->DR1+DR2->DR1-DR2- R0 R0(逻辑加) >R0 01 01 01 2 下图为将全部微程序按微指令格式变成二进制代码,可得下表的二进制代码表 微地址 00 01 02 03 04 S3∽CN 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 WE 0 0 0 0 0 CE LDPC 1 1 1 1 0 1 0 1 0 1 A 0 0 0 1 1 0 1 0 0 1 1 0 0 1 1 2
B 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 P 1 0 0 1 1 0 0 0 1 0 0 0 0 0 0 uA5∽uA0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 05 06 07 10 11 12 13 14 15 16 17 20 21 22 23 24 30 31 32 33 34 35 36 36 37 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1 0 1 0 1 0 1 1 1 1 1 0 1 1 1 0 1 0 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 0 1 0 0 0 1 1 1 0 0 0 1 1 1 0 1 1 0 1 1 0 1 1 0 0 0 0 1 1 0 0 1 0 1 1 0 1 1 0 0 1 0 0 0 0 0 1 0 1 1 0 0 1 1 0 1 0 0 0 1 1 1 0 0 1 1 0 1 0 0 0 1 0 0 1 0 0 1 1 0 1 0 0 0 0 0 0 1 1 0 1 1 0 1 1 0 1 1 0 0 0 1 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 1 1 1 0 0 1 1 1 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 1 1 1 1 0 1 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 0 0 1 0 1 1 1 0 0 0 0 0 1 0 1 1 0 0 1 0 1 1 0 0 1 0 1 1 0 1 0 0 1 1 0 1 1 0 0 0 0 0 1 0 1 1 1 0 1 0 1 1 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 0 0 0 0 1 3 连接实验线路,仔细检查无误
3
微控制器时序控制实验接线图: 以下为微程序内容,用于验证指令是否可以执行,按下表写入程序 地址(八位) 机器指令码 助记符 功能说明 40 0000 0000 IN \"DATA\"→R0 41 0101 0000 OR [47H] R0+[47H]→R0 42 0100 0111 43 0000 0000 IN \"DATA\"→R0 44 0110 0000 SUB [47H] R0-[47H]→R0 45 0100 0111 46 47 0000 0001 自定义数据 4.运行程序 ①单步运行程序
A.使编程开关处于“RUN”状态,STEP为“STEP”状态,STOP为“RUN”状态。 B.拨动总清开关CLR(0→1),微地址清零,PC计数器清零,程序首地址为40H。 C.单步运行一条微指令,每按动一次START键,即单步运行一条微指令。对照微程序流程图,观察微地址显示灯是否和流程一致。 D.可观察地址等,数据等和微地址灯看结果。 ②连续运行程序
A.使“STATE UNIT”中的STEP开关置于“EXEC”状态,STOP开关置为“RUN”状态。 B.拨动CLR开关,清微地址及PC计数器,按动START,系统连续运行程序,稍后将STOP拨至“STOP”时,系统停机。
五.实验结果分析
经老师检查后,在键盘输入8A与01做以上微程序的逻辑加与减法计算,最后得到的逻辑加的结果是:8B,正确!减法的结果是89,结果也正确,增加的指令可行。
六.课程设计心得体会
本次课程设计,在彭小红老师和黄超英的帮助和指导下,以及组员的积极配合,有了两天时间基本实现了课程设计的基本要求和功能。通过紧张有序的几天的课程设计实践,不仅让我们对基本模型机原理和微程序的编辑、写入方法有了进一步的了解, 也让我们觉得自己的动手能力有了很大的提高;在课程设计中自己思考解决遇到的问题,理论知识得到实际体验,这巩深化和巩固了自己的知识结构;组员之间紧密配合工作,更加理解了团队合作精神。
本设计的难点在于测试字位P(1)、P(4)的功能,只要理解了它是怎么实现程序的顺序、分支、循环运行的,其它的步骤即可迎刃而解。
通过这次实践,使我们懂得,只要自己在每一次实践中都能仔细思考,能亲自动手,课程设计中遇到的难点都可以顺利解决。每个同学都要多操作演示,理解各个步骤的意义,只有多操作才能从中发现问题,及时解决问题,从而更好的掌握实验的基本原理。课程设计目的除工作量和设计质量之外,更重要的是认真去对待,通过设计实践对理论知识有了更深刻的认识,并从中学到书本上学不到的知识。
4
七.参考文献
[1]《计算机组成原理》(第四版) 白中英 北京:科学出版社 2004
[2]《计算机组成原理实验指导书》 信息学院计算机系 湛江:广东海洋大学 2011 [3] 《计算机组成原理》学习指导与训练 旷海兰等编著 中国水利水电出版社 2004
5
附加微控制器实验原理图:
6
因篇幅问题不能全部显示,请点此查看更多更全内容