计算机组成原理实验(5) 堆栈寄存器实验
实验五 堆栈寄存器实验
一、实验目的
1、熟悉堆栈概念
2、熟悉堆栈寄存器的组成和硬件电路
二、实验要求
按照实验步骤完成实验项目,对4个堆栈寄存器进行读出、写入数据操作。
三、实验说明
3.1 堆栈寄存器组实验构成(图3-1)
本系统内有4个寄存器R0~R3,寄存器组由4个74LS374组成,由1片74LS139(2-4译码器)来选择4个74LS374,并且由2片74LS32来组成控制线。8芯插座R-IN、R-OUT作为数据输入、输出端,可通过短8芯扁平电缆把数据输入、输出端连接到数据总线上。

图 3-1
3.2 堆栈寄存器组原理(图3-2)
由SA、SB两根控制线通过74LS139译码来选择4个寄存器(74LS374)。当WR=0时,表示数据总线向寄存器写入数据,RCK为寄存器的工作脉冲,在有上升沿时把总线上数据打入74LS139选择的那个寄存器。当RR=0时,74LS139所选择的寄存器上的数据输出至数据总线。在本系统内使用了WR=0作为写入允许,RCK信号为上升沿时打入数据、RR=0时数据输出。

图 3-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 | PLS1 孔 |
RR | H15 孔 |
WR | H14 孔 |
SA | H12 孔 |
SB | H11 孔 |
接线图示:
(1)把数据写入寄存器R0
● 二进制开关H0~H7作为数据(D0~D7)输入,置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寄存器。
实验结果图片如下:

把11H打入R0寄存器
(2)把数据写入寄存器R1
● 置二进制开关H0~H7(D0~D7)为22H,各控制信号对应开关如下表。
H15 | H14 | H12 | H11 |
RR | WR | SA | SB |
1 | 0 | 1 | 0 |
● 按脉冲单元中的PLS1脉冲按键,在RCK上产生一个上升沿的脉冲,把22H打入R1寄存器。
实验结果图片如下:

把22H打入R1寄存器
(3)把数据写入寄存器R2
● 置二进制开关H0~H7(D0~D7)为33H,各控制信号对应开关如下表。
H15 | H14 | H12 | H11 |
RR | WR | SA | SB |
1 | 0 | 0 | 1 |
● 按脉冲单元中的PLS1脉冲按键,在RCK上产生一个上升沿的脉冲,把33H打入R2寄存器。
实验结果图片如下:

把33H打入R2寄存器
● 同理:置二进制开关H0~H7为44H,RR=1 WR=0、SA=1、SB=1,在RCK脉冲作用下把44H打入R3寄存器。
实验结果图片如下:

把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 |
实验结果图片如下:

11H输出在数据总线上

22H输出在数据总线上

33H输出在数据总线上

44H输出在数据总线上
附: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 |
五、实验总结
● 实验原理
在本实验中,我们深入探讨了**堆栈寄存器**的概念及其实现原理。堆栈寄存器是临时存储数据的设备,通常用来实现函数调用、局部变量存储及数据回退等功能。堆栈在计算机系统中起着关键作用,尤其是在数据管理和控制结构的实施中。
1. 堆栈寄存器的组成
本实验所用的堆栈寄存器组由4个D型触发器(74LS374)构成,每个寄存器可存储8位数据(D0至D7)。通过74LS139(2-4译码器),我们可以选择性地激活任意一个寄存器进行读写操作。控制信号由二进制开关进行设置,包括:
- SA、SB:用于选择具体的寄存器,低电平有效。
- WR:写入使能信号,低电平有效。
- RR:读出使能信号,低电平有效。
- RCK:寄存器时钟脉冲信号,在上升沿有效。
通过设置这些控制信号,我们可以将数据从数据总线写入指定的寄存器或将寄存器中的数据读出到数据总线。
2. 数据写入过程
在进行写入操作时,需将WR信号设置为低电平(WR=0),并选择目标寄存器(通过SA和SB信号)。此时,将二进制开关的输出(数据输入)传输到寄存器。当RCK信号在上升沿激活时,所选择的寄存器将存储数据。实验中,我们逐步将值11H、22H、33H和44H写入R0、R1、R2和R3寄存器。
3. 数据读出过程
在读出操作中,WR信号保持为高电平(WR=1),而RR信号设置为低电平(RR=0)。此时,选择相应的寄存器(SA和SB对应选择的寄存器)。激活的寄存器中的数据会通过数据总线输出,利用数码指示灯显示读取结果。通过这种方式,我们分别验证了R0、R1、R2和R3寄存器中保存的数据是否与之前 写入的数据一致。
● 实验结果分析
通过以上实验步骤,结果显示数据成功地写入和读取相应的寄存器。每个寄存器的内容都能准确反映出在写入阶段设置的值。实验结果如下:
- 寄存器R0:读取到11H
- 寄存器R1:读取到22H
- 寄存器R2:读取到33H
- 寄存器R3:读取到44H
这些数据与实验中输入的值完全一致,表明寄存器的读写功能正常且可靠。
● 个人感悟
通过本次实验,我更深入地理解了计算机系统中堆栈的工作原理以及如何通过硬件实现堆栈的功能。堆栈作为一种重要的数据结构,广泛用于函数调用及中断处理等场景。其通过先进先出的特性,为数据的存取提供了便利。
此外,实验中对硬件电路的搭建与调试,使我认识到了理论与实践结合的重要性。面对实验中的各种问题,解决的过程也增强了我的动手能力和逻辑思维能力。这次实验不仅加深了我对计算机组成原理的理解,也激励我进一步探索计算机科学中的更多概念与技术。