【计算机组成原理】实验七:堆栈寄存器及微程序控制实验
【计算机组成原理】实验七:堆栈寄存器及微程序控制实验
本文是一篇关于计算机组成原理的实验指导文档,主要介绍了堆栈寄存器及微程序控制实验的具体步骤和原理。通过详细的实验操作和原理说明,帮助读者深入理解堆栈和微程序控制的相关知识。
实验七:堆栈寄存器及微程序控制实验
一、实验目的
1、熟悉堆栈概念
2、熟悉堆栈寄存器的组成和硬件电路
3、熟悉微程序控制器的原理
4、掌握微程序编制、写入并观察运行状态
二、实验要求
1.按照实验步骤完成实验项目,对4个堆栈寄存器进行读出、写入数据操作。
2.按照实验步骤完成实验项目,掌握设置微地址、微指令输出的方法
三、实验说明
3.1 堆栈寄存器组实验构成
本系统内有4个寄存器R0~R3,寄存器组由4个74LS374组成,由1片74LS139(2-4译码器)来选择4个74LS374,并且由2片74LS32来组成控制线。8芯插座R-IN、R-OUT作为数据输入、输出端,可通过短8芯扁平电缆把数据输入、输出端连接到数据总线上。
图1 堆栈寄存器组实验构成
3.2 堆栈寄存器组原理
由SA、SB两根控制线通过74LS139译码来选择4个寄存器(74LS374)。当WR=0时,表示数据总线向寄存器写入数据,RCK为寄存器的工作脉冲,在有上升沿时把总线上数据打入74LS139选择的那个寄存器。当RR=0时,74LS139所选择的寄存器上的数据输出至数据总线。在本系统内使用了WR=0作为写入允许,RCK信号为上升沿时打入数据、RR=0时数据输出。
图2 堆栈寄存器组原理
3.3控制信号说明
信号名称 作 用 有效电平
SA、SB 选通寄存器 低电平有效
RR 数据读出允许 低电平有效
WR 数据写入允许 低电平有效
RCK 寄存器写入脉冲 上升沿有效
四、实验步骤
实验一:对4个寄存器进行写入操作
将R-IN(8芯盒形插座)与右边板上的二进制开关单元中J03插座相连(对应二进制开关H0~H7),R-OUT可通过短8芯扁平电缆与数据总线上DJ4相连。把RR、WR、SA、SB接入二进制拨动开关(SA,SB借用X0,X1的H12,H11孔),把RCK连到脉冲单元的PLS1。(请按下表接线)。
信号定义 接入开关位号
RCK PLS**1 孔
RR H15**孔
WR H14**孔
SA H1**2 孔
SB H1**1 孔
接线图示:
图3 给出的接线图
1、把数据写入寄存器R0
● 二进制开关H0H7作为数据(D0D7)输入,置11H(对应开关如下表)
H7 H6 H5 H4 H3 H2 H1 H0 数据总线值
D7 D6 D5 D4 D3 D2 D1 D0 8位数据
0 0 0 1 0 0 0 1 11H
● 按启停单元中的运行按钮,置实验平台为运行状态。
● 置WR=0、RR=1、SB=0、SA=0 (对应开关如下表)。
H15 H14 H12 H11
RR WR SA SB
1 0 0 0
● 按脉冲单元中的PLS1脉冲按键,在RCK上产生一个上升沿的脉冲,把11H打入R0寄存器。
2、把数据写入寄存器R1
● 置二进制开关H0H7(D0D7)为22H,各控制信号对应开关如下表。
H15 H14 H12 H11
RR WR SA SB
1 0 1 0
● 按脉冲单元中的PLS1脉冲按键,在RCK上产生一个上升沿的脉冲,把22H打入R1寄存器。
3、把数据写入寄存器R2
● 置二进制开关H0H7(D0D7)为33H,各控制信号对应开关如下表。
H15 H14 H12 H11
RR WR SA SB
1 0 0 1
● 按脉冲单元中的PLS1脉冲按键,在RCK上产生一个上升沿的脉冲,把33H打入R2寄存器。
● 同理:置二进制开关H0~H7为44H,RR=1 WR=0、SA=1、SB=1,在RCK脉冲作用下把44H打入R3寄存器。
实验二:对4个寄存器进行读出操作
● 置WR=1、RR=0、SB=0、SA=0 (对应开关如下表)。此时把寄存器R0数据读出总线数据IDB0~IDB7指示灯将显示11H。保持RR、WR的值不变(RR=0,WR=1),可通过分别设置SB、SA为10、01、11把R1,R2,R3中的值显示在总线上。观察寄存器输出的数据是否与上实验中写入的数据相同。
H15 H14 H12 H11
RR WR SA SB
0 1 0 0
*附:74LS139的逻辑*
74LS139
输入 输出
SB SA Y0 Y1 Y2 Y3 选择寄存器
X X H H H H X
0 0 0 1 1 1 R0
0 1 1 0 1 1 R1
1 0 1 1 0 1 R2
1 1 1 1 1 0 R3
各个寄存器显示的值如下图所示:
图4 R0寄存器的值为11H
图5 R1寄存器的值为22H
图6 R2寄存器的值为33H
图7 R3寄存器的值为44H
3.4微程序控制单元的构成:(如图7)
8位微地址寄存器由2片74LS161组成;3片6264(3*8位)为微程序存储器;24位微指令锁存器由3片74LS374组成。
图8 微程序控制单元的构成
3.5微程序控制单元原理:(如图8)
1、由于本系统中指令系统规模不大、功能较简单,微指令可以采用全水平、不编码的方式,每一个微操作控制信号由1位微代码来表示,24位微代码至少可表示24个不同的微操作控制信号。如要实现更多复杂的操作可通过增加一些译码电路来实现。
2、增量方式来控制微代码的运行顺序,每一条指令的微程序连续存放在微指令存储器连续的单元中。
3、每一指令的微程序的入口地址是通过对指令操作码的编码来形成的。在本系统内指令码最长为8位,那么最多可形成256条指令。
4、在微程序存储器的0单元存放取指指令,在启动时微地址寄存器清零,执行取指指令。每一段微程序都以取指指令结束,以取得下一条指令。在本系统内,MLD为置微地址的控制信号,MCK为工作脉冲。当MLD=0、MCK有上升沿时,把MD0~MD7的值作为微程序的地址,打入微地址寄存器。当MLD=1、MCK有上升沿时,微地址计数器自动加1。
图9 微程序控制单元原理
3.6控制信号说明:
信号名称 作 用 有效电平
MCK 微程序工作脉冲 上升沿用效
MOCK 微程序存储器输出工作脉冲 低电平有效
MLD 微地址控制信号 低电平有效
MD0—MD7 微地址选择开关
3.7实验步骤:
● 将MD0~MD7、MLD接入二进制的开关上,将MCK、MOCK分别接入脉冲单元上的PLS1、PLS2上。(请按下表接线)。
信号定义 接入开关位号
MCK PLS1**孔
MOCK PLS2**孔
MD0 H0**孔
MD1 H1**孔
MD2 H2孔
MD3 H3**孔
MD4 H4**孔
MD5 H5**孔
MD6 H6**孔
MD7 H7**孔
MLD H23**孔
接线图示:
图10 给出的接线图
● 按启停单元中的停止按键,使实验平台处于停机状态。通过键盘把数据写入微程序存储器中,例如微地址0H中输入11H、11H、11H三个字节、在05H中输入55H、55H、55H三个字节、在06H中输入66H、66H、66H。键盘监控的使用方法请参阅第4章《键盘监控》。
实验三:微地址打入操作
● 按启停单元中的停止按键,使实验平台处于停机状态,此时微地址寄存器被清零。
● 按启停单元中的运行按键,使实验平台处于运行状态。此时微程序存储器为读状态,微地址寄存器(74LS161)确定了当前微程序存储器的地址,并且输出24位微操作(M0~M23)。
● 按脉冲单元中的PLS2脉冲按键,在MOCK上产生一个上升沿,把当前微程序存储器输出的微指令打入微指令锁存器。可在右上的微指令指示灯显示出当前微指令,应为11H,11H,11H。
图11 结果显示为11H
● 置MLD=0,微代码的地址MD0MD7(对应二进制开关H0H7)为05H (对应开关如下表)。
H7 H6 H5 H4 H3 H2 H1 H0 H23
MD7 MD6 MD5 MD4 MD3 MD2 MD1 MD0 MLD
0 0 0 0 0 1 0 1 0
● 按脉冲单元中的PLS1脉冲按键,在MCK上产生一个上升沿,把MD0MD7打入74LS161,微地址显示灯MA0MA7将显示05H,微程序存储器把05H单元的内容输出。
● 按脉冲单元中的PLS2脉冲按键,在MOCK上产生一个上升沿的脉冲,把当前微指令打入微指令锁存器,在右板上的微指令指示灯应显示55H,55H,55H。
图12 结果显示为55H
*注意:*微代码由3片74LS374作为微指令锁存器,它的OE端已经接地,只要MOCK端上有上升沿,即可锁存并输出微代码。
实验二:微地址+1操作
● 置MLD=1。
● 按启停单元中的运行按键,使实验平台处于运行状态。
● 按脉冲单元中的PLS1脉冲按键,在MCK上产生一个上升沿,微地址寄存器自动加1。若原来微地址寄存器的值为05H,那么当前的微地址显示灯MA0~MA7将显示06H,同时微程序存储器输出06H单元中的内容。
● 按脉冲单元中的PLS2脉冲按键,在MOCK上产生一个上升沿,将微程序存储器的输出的微指令,打入微指令锁存器并输出,在CPT-B板上的微指令指示灯应显示66H,66H,66H。
图13 结果显示为66H
五、实验总结
1.首先,实验通过对堆栈的基本操作(入栈、出栈)进行实践,使我们深入理解了堆栈的后进先出(LIFO)特性。堆栈在程序执行中的重要性体现在其能够有效管理函数调用和局部变量,这为后续的程序设计提供了良好的基础。
2.其次,实验分析了堆栈寄存器的组成及其硬件电路。通过观察堆栈寄存器的结构,了解了各个组成部分如何协同工作,以实现数据的存储与管理。掌握了堆栈操作的实现方式后,我们能够更好地理解计算机内部数据传输的过程。
3.此外,实验还涉及微程序控制器的原理。我们学习了微程序控制器如何通过微指令控制计算机的操作。这一过程不仅增强了对计算机体系结构的理解,也为后续的编程与系统设计打下了坚实的基础。
4.最后,通过编写微程序并将其写入微程序控制器,我们观察了程序的运行状态,分析了执行过程中的各项指标。这一环节使我们对微程序控制有了更深刻的认识,提升了实践动手能力。
综上所述,本实验通过理论与实践相结合,增强了对堆栈和微程序控制的理解,为后续深入学习奠定了良好的基础。