华中科技大学组原第三次实验报告微程序控制器2014
课 程 实 验 报 告
课程名称:
专业班级:
学 号: U201214xxx 姓 名: xxx 同组成员: xxx 指导教师: 秦磊华 报告日期: 2014年6月
计算机科学与技术学院
原创性声明:
本人郑重声明:本实验的实验报告内容,是由作者本人独立完成的。有关观点、方法、数据和文献等的引用已在文中指出。除文中已注明引用的内容外,本报告不包含任何其他个人或集体已经公开发表的作品成果,不存在抄袭行为。
作者(签字): 日期: 年
特此声明
月 日
目录
1 实验名称.......................................................... 3 2 实验目的.......................................................... 3 3 实验设备.......................................................... 3 4 实验任务.......................................................... 3 5 实验设计方案、电路实现与电路分析.................................. 4
5.1 基本芯片介绍................................................ 4 5.2 设计方案.................................................... 4 5.3电路实现与分析 .............................................. 7 6 实验结果与分析................................................... 10
6.1 基本操作准备............................................... 10 6.2 检查方案................................................... 10 7 实验中遇到的问题及解决方法....................................... 11 8 收获与体会....................................................... 12 9 参考书目......................................................... 12
1 实验名称
实验名称:微程序控制器实验
2 实验目的
(1)复习与巩固微程序控制器基本原理。 (2)练习简单微程序的控制与调试。 (3)为整机实验做准备。
(4)进一步加深对运算器、存储器及时序电路的理解。 (5)熟练连接硬件电路,为课程设计做好准备。
3 实验设备
实验台:JZYL—Ⅱ型计算机组成原理实验仪一台。 主要芯片:
74LS6116:静态存储器芯片 1片 74LSl81:运算器芯片 2片 74LS373:八D锁存器 3片 74LS244:八路原码输出三态门 1片 74LS193:同步4位计数器 1片 其它基本器件若干。
4 实验任务
(1)按照下面的参考电路至少实现取数、加法、或操作等5条运算。(提示:尽量控制信号最少)。
(2)复习前两个实验电路中各个信号的含义和作用,好好思考其中的协作关系。重点是运算与存储器之间的建立用微命令控制数据通路。要求有冲突报警灯和溢出检测灯。冲突时,报警灯亮,244处于高阻态,6116不工作。 (3)参考电路图
图1 参考电路图
5 实验设计方案、电路实现与电路分析
5.1 基本芯片介绍
74LS6116、74LSl81、74LS373、74LS244、74LS193等芯片的介绍详见参考文献:...\组成实验(给学生)\整理后常用的芯片资料。
5.2 设计方案
(1)主要目的:本次实验是将上两次的实验运算器和存储器的综合,并且加入了微程序控制部分,用指令实现对整个电路的控制,使其实现相应的运算功能。 (2)基本思路:我们可以将电路划分为3个部分。运算器部件,存储器部件和微程序控制部件。根据上两次的实验,我们将74LS181做数据运算器,进行算术运算和逻辑运算,接受运算指令的控制;6116做数据存储器,存储实验中的数据,193做地址计数器,存取数据的过程中设置地址,244做读写控制器,控制6116存储器的读写模式;74LS373做指令锁存器,锁存微指令。还有相关部件要完成相应的冲突报警和溢出检测的功能。 (3)电路各部件架构:
运算器部件:由于本次实验只针对4位数据的运算实现,故可用1片181和2片373组成此部件。1片373作为暂存器,另一片373作为AC(可将数据输入181)。可以利用181的进/借位设计溢出检测信号。
存储器部件:由1片6116,1片244和1片193组成。6116作为存储器,其
低4位的地址值接193的输出端,其低4位数据位接244的输出端。
微程序控制部件:由时序产生电路和组合逻辑电路组成,其中组合逻辑电路由1片373和若干基本芯片组成。373作为指令锁存器,其他基本芯片构成的组合逻辑电路实现对整个实验电路的信号的控制。本部分电路的指令设计,具体分析见下一部分。 (4)基本指令设计:
A 机器指令:
本实验要求至少设计5条机器指令。所以我们设计了LOAD,XOR,OR,ADD,SUB,NOP这几条指令(NOP即意为不做任何操作而保持原状)。因此机器指令可以用指令锁存器IR中的3位来表示(有8种状态),而地址值ADDR可以用4位来表示,故实际微指令应该有7位,而指令锁存器IR有8位数据位,因此我们可以用低4位表示ADDR,用高3位表示机器指令,第5位可以随便接一个高或者低电平(此位无效)。具体机器指令的设计如下:
B 微命令的设计与分析:
根据以上分析,要实现上述6种机器指令,在整个电路中需要控制的信号有:运算器181的S3~S0、M和Cn,181送数据给373的控制信号LE1和AC送数据给181的控制信号LE2,其中每个控制信号对应一个微命令。具体微命令有效值和相关功能见下表(默认在微程序控制时存储器6116处于读状态,因此不用考虑6116的控制信号)。
有了相关的微命令以后,现在分析相关的机器指令与微命令的对应关系。这
里一个微指令对应一个机器指令(当然有几个微指令对应一个机器指令的情况),而一个微指令天然就是一个CPU周期(这里规定一个CPU周期为4个时钟周期),所以每个机器指令都对应一个CPU周期。
根据图1及以上分析,整个CPU周期的大致划分是:
第一个周期T0以前,控制开关K7~K0都已置好位,因此这个时间内6116会把相应地址的数据读入181中;
第一个周期T0内,将控制开关K7~K0的值送入指令锁存器IR中(这里实际上有一个控制信号,即指令锁存器IR的控制端LE,T0时间内需将K7~K0放入IR中,因此LE只在第一个时钟周期内有效,故直接将LE与T0相串联,就不在上表中讨论了)并且181经过了相应的运算;
第二个时钟周期T1内,181将运算的结果输入373中,此片373再将结果送入AC中;
第三个时钟周期T2内,AC将值送入181中。
相对于具体指令的分析如下:对于LOAD指令,需要将(ADDR)内的值送入AC,因此根据181的功能表,C5~C0要置为d11010(此时F=B);将C6在T1内置为1,此时181将结果送入373;将C7在T2内置为1,此时AC将数据送入181。其他指令的分析过程相似,这里就不一一赘述了。实现相关的机器指令所对应的微命令见下表。
注:1(T1)表示在T1内相应的微命令的值为1,其他时间段内为0;1(T2)与此相似。
根据上面的分析,再做出相应的卡诺图并分析以后,可以得出微命令Ci相应的逻辑表达式。分析过程不再赘述,这里直接给出相应表达式(IRi即是指令锁存器相应的输出值,与控制开关Ki一一对应)。根据下列表达式,可以直接得出微程序控制部件中组合逻辑电路部分的电路连接图。
C0=IR6IR5; C1=IR6IR5;
C2=IR7(IR6IR5); C3=IR7(IR5IR6); C4=IR7IR5IR6; C5=IR7;
C6=(IR7IR6)T1; C7=(IR7IR6)T2; (5)电路基本结构图示
图2 电路基本结构
5.3电路实现与分析
(1)运算器部件
由1片181和2片273组成。181输入端A3~A0接AC(下面那片373)的输出,B3~B0接6116的数据输出端;控制端S3~S0,M和Cn的连接详见第三部分;上面那片373的4位数据输入接181的数据输出,4位输出接AC的输入。2片373的两个OE端均接低电平,两个LE端的连接详见第三部分。将181的Cn4端接入1片244的输入端,其控制端1G是(IR7IR5)IR6的结果,244的相应输出即可接溢出检测灯,就可达到在ADD/SUB
指令时灯变亮,其他情况灯灭的效果。 图3 运算器部件电路连接图
(溢出检测部分在总电路图中体现)。本部分具体电路连接图如图3。
(2)存储器部件
由1片6116,1片193和1片244组成。6116的地址端A3~A0接193的输出,A10~A4接地,数据输入端I4~I1接244的4位数据输出端,控制端WE接开关,OE,CE接地;193的数据输入端A~D来自整个电路的控制开关K3~K0,将CLR端接开关,LD端接开关(在微程序控制电路工作时置为0,即异步置数,在单独存储器部件工作时置为1),CPD,CPU接脉冲信号;244的4个数据输入端接开关,控制端1G接开关。将1G端和WE端异或以后即可接一个冲突报警灯(冲突部分在总电路图中体现)。本部分具体电路连接图如图4。
图4 存储器部件电路连接图
(3)微程序控制部件
本部分电路由时序电路和组合逻辑电路部分组成。时序电路部分将STOP,SEL接开关,START接正脉冲;CLK接3.81HZ,STOP=0,SEL=1,按一次START就会出现一次连续节拍;CLK接3.81HZ,STOP=0,SEL=0,按一次START就会出现无限连续节拍;CLK接一个单脉冲按钮,STOP=0,每按一次按钮就会出现一个节拍(时序电路部分不在电路图中体现)。组合逻辑电路部分由一个373(作为指令锁存器)和若干基本器件组成。根据上面的5.2(4)B微指令的设计与分析,这些基本器件分别是2片74LS08(二输入四与门),1片74LS04(六门反向器),1片74LS32(二输入四或门),1片74LS86(二输入四异或门)。由于5.2(4)B微指令的设计与分析 已经将本部分电路的相关逻辑表达式写了出来,清晰明了,而且本部分电路的连接涉及整个电路,因此就将本部分的逻辑电路图和电路连接图省去以免赘述,相关电路连接会在总电路图中体现。
(4)总电路图
图5 总电路图
注:由于篇幅有限,没有将6116的输出接灯在图中体现,实际操作中确是将其与灯相接。
6 实验结果与分析
6.1 基本操作准备
先将存储器部分的相数值置好。为了方便,我们采取将地址值和数据值相同的方法将6116中的16个存储单元分别置为1111~0000。执行此操作时将CLR置为1后又置为0(清零操作),LD置为1,WE和1G置为0,按CPu或CPd并将I0~I3的数值置好,依次对相应的地址存储相应的值。完成后应该将存储器置为读操作(WE=1G=0),通过6116的数据输出灯观察数据的读入是否正确。
将LD置为1(异步置数),WE和1G置为0。设计检查的相应方案。
6.2 检查方案
参考1 机器指令对应的微命令表
参考2 组合逻辑电路的相应表达式:
C0=IR6IR5;C1=IR6IR5;C2=IR7(IR6IR5);C3=IR7(IR5IR6);C4=IR7IR5IR6;C5=IR7;C6=(IR7IR6)T1;C7=(IR7IR6)T2。 (1)机器指令在单节拍下的检查方案
将STOP置为0,CLK接一个单脉冲按钮,每按一次按钮就会出现一个节拍。 ①检查指令LOAD时,将K7~K0置为10010101(其中K7~K5代表机器码OP,K3~K0代表需操作的ADDR值,K4无意义)。此时微命令指示灯C7~C0显示为00111010,6116数据灯C4~C1显示为0101,溢出检测灯灭,冲突报警灯为0;
②第一次按下CLK按钮后,此时微命令指示灯C7~C0显示依然为00111010,6116数据灯C4~C1显示依然为0101,181数据灯F3~F0显示为0101(有变化),
溢出检测灯灭,冲突报警灯为0;
③第二次按下CLK按钮后,此时微命令指示灯C7~C0显示为01111010(有变化),6116数据灯C4~C1显示依然为0101,181数据灯F3~F0显示依然为0101,溢出检测灯灭,冲突报警灯为0;
④第三次按下CLK按钮后,此时微命令指示灯C7~C0显示为10111010(有变化),6116数据灯C4~C1显示依然为0101,181数据灯F3~F0显示依然为0101,AC的数据灯O3~O0显示为0101(有变化),溢出检测灯灭,冲突报警灯为0; ⑤再按两次按钮,可观察到各灯均无变化,一次连续节拍完成。
由上述操作,可以观察到整个电路的工作周期从输入控制信号K7~K0完成开始(在T0之前),在T2时刻结束时结束。其中每按一次脉冲,各数据灯的变化均符合预想要求。这里我们仅给出上述这个例子,其他的我们可以改变相关的机器码和需要操作的ADDR值,观察不同机器指令和不同ADDR值下各灯的变化来探究电路的正确与否,这里就不再赘述。经过验证,各条机器指令在单节拍下均能使电路正常工作,因此此项方案达到了预期要求。 (2)机器指令在一个连续节拍下的检查方案
将START接正脉冲,CLK接3.81HZ,STOP置为0,SEL置为1,按一次START就会出现一次连续节拍。下表中各个指示灯均是一个连续节拍结束以后显示的值。
表6 机器指令在连续节拍下的检查表
根据上表,所有指示灯的结果均符合预期要求,因此此项方案达到了预期要求。
7 实验中遇到的问题及解决方法
本次实验是前两次实验的一个综合与提升,并且加入了微程序控制的内容,
因此本实验属于一个综合性较强的实验,在试验过程中也遇到了很多问题,一些重要问题具体如下:
整个电路连好下6116的读写问题:一开始连电路的时候我们是将相关值先通过244存入6116后,再连接后面的电路。但是由于实验不是一次做完,后面一次重新打开实验台,原来存入的数据已经消失,而此时电路也已经全部连好,这个时候不知道怎样才能在6116中存入数据,后来发现193中有一个LD端,有异步置数的作用,可以将控制信号的ADDR部分与193的4位输入相连,很方便地就实现了整个电路连好下6116的读写问题;
时序电路的分析:由于关于时钟周期和CPU周期的理解还不是很透彻,因此在时序电路理解这一方面费了很多功夫。一开始不知道时序电路是怎样产生的,进了实验室才明白原来有专门的时序产生电路,但是对于此电路的使用又遇到了问题,关键是在于有时钟周期作为输入量的组合逻辑电路的表达式的分析不够清楚,后来逐渐理解,并能把相关表达式全部正确地展现出来;
整合电路的兼容性:由于前两次做的实验都是基于8位数据位的相关操作,这次只需实现4位数据位的相关操作,就需要考虑基于8位数据位的芯片是否同样适用于4位数据位,当然绝大多数情况下均可以适用。还有如果是基于16位的相关实验,是否只是可以用芯片的简单叠加就可以解决呢?由于时间有限,这个问题在实验的时候没有予以深究。
8 收获与体会
这是一次综合性的实验,是为了以后的课程设计打好基础,因此这次实验显得很重要,做完实验之后我也有很多收获和体会。这次实验加深了我对微命令,微指令和机器指令等相关概念的进一步理解,让我很好地体会了CPU的工作过程。而实际上我们这次实验应该是基于硬布线控制的实验,最明显的就是CPU周期中没有取指周期,而且用了组合逻辑电路来实现对相关微命令的控制,但是对组合逻辑电路我们并没有分析它是否存在竞争和险象,我觉得这是一个不足之处。这次实验也让我养成了良好的操作习惯,比如合理排线和接灯,事先检查芯片灯等。经过了这一次的实验以后,我对组成原理这门课程有了更进一步的了解,相信在下个学期中的课程设计中我会把它做好!
9 参考书目
《计算机组成原理》 秦磊华 吴非 莫正坤 编著 《计算机组成原理实验及课程设计》 秦磊华 王小兰 编著