计算机组成原理堆栈
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
堆栈是计算机系统中的一个重要概念,也是理解微型计算机组成的一个基础概念。堆栈是一种存储部件,即数据的写入跟读出不需要提供地址,而是根据写入的顺序决定读出的顺序。
堆栈也是一种数据结构。有一个地址指针总指向最后一个压入堆栈的数据所在的数据单元,存放这个地址指针的寄存器就叫做堆栈指示器。数据一个一个地存入,这个过程叫做“压栈”。在压栈的过程中,每有一个数据压入堆栈,就放在和前一个单元相连的后面一个单元中,堆栈指示器中的地址自动加1。读取这些数据时,按照堆栈指示器中的地址读取数据,堆栈指示器中的地址数自动减1。这个过程叫做“出栈pop”。如此就实现了后进先出的原则。
一般的堆栈存储器由RAM、寄存器A,寄存器B构成。算术运算一般在寄存器A和寄存器B 之间进行,其中的数据可能来自于进栈的输入也可能来自栈堆的出栈。运算结果则会放入寄存器B中以待下步操作。
此次的课程设计做出的堆栈处理器,使其能与外部数据总线进行数据交换,且符合堆栈要求(先进后出),并能对存储的数据进行算术运算,且存储的数据的数据位不少于8位,通过数码管显示操作数据及运算结果(只有寄存器A、B 直接与外部总线进行数据交换,RAM只和寄存器B进行数据交换)。
关键词:堆栈,RAM, PUSH, POP , 寄存器A,寄存器B
一. 任务解析 (3)
二. 系统方案论证 (3)
2.1总体方案与比较论证 (3)
2.2 设计思路 (4)
2.3系统原理与结构 (4)
2.3.1 系统框图 (4)
2.3.2 系统结构框图 (5)
2.3.3堆栈电路图 (5)
三. 设计过程 (6)
3.1堆栈存储器的设计 (6)
3.1.1堆栈存储器设计原理及仿真结果 (6)
3.2对数据进行算术运算的设计及仿真 (7)
3.2.1 对存储器中数据进行加法运算 (7)
3.2.2 对存储器中数据进行减法运算 (8)
3.2.3 对存储器中数据进行乘法运算 (8)
3.2.4 对存储器中数据进行除法运算 (9)
四. 总结 (9)
4.1遇到的问题及解决方案 (9)
4.2设计心得 (10)
4.3参考文献 (10)
一、任务解析
堆栈处理器应能完成两个基本的功能:与外部数据线的数据交换符合堆栈要求(先进后出);对存储的数据能进行算术运算。
对整个堆栈处理器有以下要求:
1.与外部数据线的数据交换符合堆栈要求(先进后出)即实现进栈(PUSH )和出栈(POP )操作;
2.对存储的数据能进行算术运算即能进行简单的加减乘除算;
3.数据位数不少于8位:
4.能进行简单的判断运算或操作出现错误时会报警提示。
根据堆栈处理器实验要求,可画出程序流程图如下图: START
输入数据
堆栈A/B 寄
存器
运算选择
将A/B 寄存器内数据进
行运算并把结果放在B
寄存器内A/B 寄存器是否
都有数据
输出
READY
继续输入数据或调用堆栈内数据入栈
否是
出栈
图1、程序流程图
二、系统方案论证
2.1 总体方案与比较论证
方案一、直接用VHDL 语言实现其功能,包括对存储器的入栈出栈处理、与数据总线的数据交换,包括对数据的算术运算处理。
此方案可实现其功能,但是由于对于算术运算中乘法器和除法器用VHDL
语言来实现会比较繁琐,且不容易实现,故此方案不够理想。
方案二、直接用LPM模块进行定制RAM、乘法器和除法器等器件。
此方案对于RAM、乘法器、除法器的定制比较简单、灵活,但是对于其数据先进后出的控制会比较麻烦。
方案三、用VHDL语言来实现数据的堆栈处理,用LPM模块进行定制乘法器和除法器等器件。
此方案简单且易实现。
综合以上几种方案的优缺点,方案三简单易实现,且其实现的过程比较简单易理解,并且完全可以达到设计要求,故采用第三种方案。
2.2设计思路
围绕着要实现的功能,分析堆栈处理器应该具有哪些输入输出信号,明确设计要求。
1.从堆栈角度考虑
(1)堆栈的指示信号:堆栈其实是一个能随机存取数据的存储器,它符合先进后出的原则。作为一个存储器,除工作速度外,它的首要指标是容量,设其字数为aa,每个字N位。表征存取字位置的指示信号是地址,在堆栈中称为指针SP。当指针处于栈顶时,SP=0,对应满栈,应有满栈指示信号FULL=1。当栈空时,指针SP=aa,应有空栈指示信号EMPTY=1。同时规定指针SP始终指向操作之前的栈内有内容的位置。
(2)堆栈的操作:作为堆栈它的操作只有两项,入栈(PUSH)和出栈(POP)。入栈操作PUSH后指针SP←(SP-1),出栈操作POP后指针SP←(SP+1)。若FULL=1,不能入栈(PUSH),若EMPTY=1,不能出栈(POP)。否者出现错误操作信号提示ERROR=1。
2.从算术运算功能考虑
首先应有进行算术运算的指示信号,即输入信号ADD, SUB, MUL, DIV。由于不同的运算所需的时间不同,因此必须有一个启始信号START和一个完成信号READY。堆栈中两个数据进行算术运算的为地址分别为SP和SP+1的两个数据送入运算器进行运算,运算后将结果送入地址为SP+1的字中。当堆栈只有一个字时,不能进行算术运算,因此必须有一个ONE指示。当指针处于栈底时,SP=aa-1,这时堆栈只有一个字,应有指示信号ONE=1。若此时进行运算操作则要有报错信号ERROR=1.
2.3系统原理与结构
2.3.1系统框图
对本设计分析:
在本设计中要求此堆栈处理器能与外部数据总线进行数据交换,且数据遵循先进后出的堆栈要求,并要求有指示信号,即满栈指示信号full,空栈指示信号empty,满栈时不能入栈(push),空栈时不能出栈(pop),在此设计中要求对存储的数据进行算术运算,故有进行加减乘除的指示信号,add、sub、mul、div,由于不同运算所需时间不同,所以需有一个启动信号start和一个完成信号ready, 当堆栈中只有一个字时不能进行算术运算,故需要一个one指示信号来控制是否可以进行算术运算,由此得到如下系统框图: