版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、摘 要堆栈是计算机系统中的一个重要概念,也是理解微型计算机组成的一个基础概念。堆栈是一种存储部件,即数据的写入跟读出不需要提供地址,而是根据写入的顺序决定读出的顺序。堆栈也是一种数据结构。有一个地址指针总指向最后一个压入堆栈的数据所在的数据单元,存放这个地址指针的寄存器就叫做堆栈指示器。数据一个一个地存入,这个过程叫做“压栈”。在压栈的过程中,每有一个数据压入堆栈,就放在和前一个单元相连的后面一个单元中,堆栈指示器中的地址自动加1。读取这些数据时,按照堆栈指示器中的地址读取数据,堆栈指示器中的地址数自动减 1。这个过程叫做“出栈pop”。如此就实现了后进先出的原则。一般的堆栈存储器由ram、寄
2、存器a,寄存器b构成。算术运算一般在寄存器a和寄存器b 之间进行,其中的数据可能来自于进栈的输入也可能来自栈堆的出栈。运算结果则会放入寄存器b中以待下步操作。此次的课程设计做出的堆栈处理器,使其能与外部数据总线进行数据交换,且符合堆栈要求(先进后出),并能对存储的数据进行算术运算,且存储的数据的数据位不少于8位,通过数码管显示操作数据及运算结果(只有寄存器a、b直接与外部总线进行数据交换,ram只和寄存器b进行数据交换)。关键词:堆栈,ram, push, pop , 寄存器a,寄存器b 目 录一. 任务解析.3二. 系统方案论证.32.1总体方案与比较论证.32.2 设计思路.42.3系统原
3、理与结构.4 2.3.1 系统框图.4 2.3.2 系统结构框图.5 2.3.3堆栈电路图.5三. 设计过程.63.1堆栈存储器的设计.6 3.1.1堆栈存储器设计原理及仿真结果.63.2对数据进行算术运算的设计及仿真.7 3.2.1 对存储器中数据进行加法运算.7 3.2.2 对存储器中数据进行减法运算.8 3.2.3 对存储器中数据进行乘法运算.8 3.2.4 对存储器中数据进行除法运算.9四. 总结.94.1遇到的问题及解决方案.94.2设计心得.104.3参考文献.101、 任务解析堆栈处理器应能完成两个基本的功能:与外部数据线的数据交换符合堆栈要求(先进后出);对存储的数据能进行算术
4、运算。对整个堆栈处理器有以下要求:1与外部数据线的数据交换符合堆栈要求(先进后出)即实现进栈(push)和出栈(pop)操作; 2对存储的数据能进行算术运算即能进行简单的加减乘除算;3数据位数不少于8位:4能进行简单的判断运算或操作出现错误时会报警提示。根据堆栈处理器实验要求,可画出程序流程图如下图:图1、程序流程图2、 系统方案论证2.1 总体方案与比较论证 方案一、直接用vhdl语言实现其功能,包括对存储器的入栈出栈处理、与数据总线的数据交换,包括对数据的算术运算处理。 此方案可实现其功能,但是由于对于算术运算中乘法器和除法器用vhdl语言来实现会比较繁琐,且不容易实现,故此方案不够理想。
5、 方案二、直接用lpm模块进行定制ram、乘法器和除法器等器件。 此方案对于ram、乘法器、除法器的定制比较简单、灵活,但是对于其数据先进后出的控制会比较麻烦。 方案三、用vhdl语言来实现数据的堆栈处理,用lpm模块进行定制乘法器和除法器等器件。 此方案简单且易实现。 综合以上几种方案的优缺点,方案三简单易实现,且其实现的过程比较简单易理解,并且完全可以达到设计要求,故采用第三种方案。2.2设计思路围绕着要实现的功能,分析堆栈处理器应该具有哪些输入输出信号,明确设计要求。1.从堆栈角度考虑(1)堆栈的指示信号:堆栈其实是一个能随机存取数据的存储器,它符合先进后出的原则。作为一个存储器,除工作
6、速度外,它的首要指标是容量,设其字数为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.从算术运算功能考虑首先应有进行算术运
7、算的指示信号,即输入信号add, sub, mul, div。由于不同的运算所需的时间不同,因此必须有一个启始信号start和一个完成信号ready。堆栈中两个数据进行算术运算的为地址分别为sp和sp+1的两个数据送入运算器进行运算,运算后将结果送入地址为sp+1的字中。当堆栈只有一个字时,不能进行算术运算,因此必须有一个one指示。当指针处于栈底时,sp=aa-1,这时堆栈只有一个字,应有指示信号one=1。若此时进行运算操作则要有报错信号error=1.2.3系统原理与结构2.3.1系统框图对本设计分析: 在本设计中要求此堆栈处理器能与外部数据总线进行数据交换,且数据遵循先进后出的堆栈要求
8、,并要求有指示信号,即满栈指示信号full,空栈指示信号empty,满栈时不能入栈(push),空栈时不能出栈(pop),在此设计中要求对存储的数据进行算术运算,故有进行加减乘除的指示信号,add、sub、mul、div, 由于不同运算所需时间不同,所以需有一个启动信号start和一个完成信号ready,当堆栈中只有一个字时不能进行算术运算,故需要一个one指示信号来控制是否可以进行算术运算,由此得到如下系统框图: 图2、系统框图2.3.2系统结构框图通过对设计任务的各个功能实现的具体分析,得到下面的堆栈处理器的结构框图: 图3、结构框图2.3.3堆栈电路图 图4、电路图3、 设计过程3.1
9、堆栈存储器的设计3.1.1 堆栈存储器设计原理及仿真结果 对此设计进行具体分析,首先是对数据的先进后出的堆栈处理: 图5、堆栈存储器结构图堆栈其实是一个能随机存取数据的存储器,它符合先进后出的原则。作为一个存储器,除工作速度外,它的首要指标是容量,设其字数为aa,每个字n位。表征存取字位置的指示信号是地址,在堆栈中称为指针sp。当指针处于栈顶时,sp=0,对应满栈,应有满栈指示信号full=1。当栈空时,指针sp=aa,应有空栈指示信号empty=1。同时规定指针sp始终指向操作之前的栈内有内容的位置。设fa、fb为寄存器a、b的指示信号,当fa=1、fb=1时表示a、b中存有数据。当指针处于
10、栈顶即sp=0、fa=1、fb=1时,栈满full=1;当指针sp=8、fa=0、fb=0时,栈空empty=1;当sp=7、fa=0、fb=0或sp=8、fa=0、fb=1时,堆栈中只有一个数据,one=1。当full=1时,不能入栈(push);当empty=1时,不能出栈(pop);当one=1时,不能进行算术运算。图6堆栈存储器进栈出栈的仿真图由图6可知,当push=1即高电平时,压入寄存器b的数据为2,而后push为低电平,当其为高电平时压入寄存器a第二个数据3,当pop=1时,数据出栈,此时寄存器a、b均满,将寄存器a中数据输出到数据总线上,输出数据为3。3.2 对数据进行算术运算
11、的设计及仿真在此设计中,对于存储器中数据的运算是,将数据存入寄存器a和寄存器b中进行算术运算之后,再将运算结果存入寄存器b中的过程。3.2.1对存储器中数据进行加法运算: 图7存储器中数据进行加法运算的仿真图由图7可知,依次压入两个数据2、3,压入之后数据2存入寄存器b中,3存入寄存器a中,当start=1,enter2=0且enter1=0时,数据进行加法运算,结果为5,存入b寄存器中。3.2.2对存储器中数据进行减法运算:图8存储器中数据进行减法运算的仿真图由图8可知,依次在寄存器b,a中存入数据2和3,,当start=1,enter2=0且enter1=1时,进行减法运算,结果为1,存入
12、b寄存器中。3.2.3对存储器中数据进行乘法运算: 图9存储器中数据进行乘法运算的仿真图 依次压入数据2、3,此时寄存器a和寄存器b中内容分别是3和2,当start=1,enter2=1且enter1=0时,进行乘法运算,结果为6,存入寄存器b中。此时寄存器a空b满,再压入数据15,压入的数据存入寄存器a中,当start=1,enter2=1且enter1=0时,进行乘法运算(6*15),结果有溢出,error=1,发出报警信号。3.2.4对存储器中数据进行除法运算:图10存储器中数据进行除法运算的仿真图 依次压入数据3、6,此时寄存器a和寄存器b中内容分别是6和3,当start=1,ente
13、r2=1且enter1=1时,进行除法运算(6/3),结果为2,存入寄存器b中。4、 总结4.1 遇到的问题及解决方案为期两周的堆栈处理器课程设计终于完成了,努力终于有了结果,学到了很多有用的知识,其中也遇到了很多的问题。在课程设计开始的时候,我选用vhdl语言编写乘法器和除法器的程序,但在这个问题上思考花费的时间比较长,并且最终也没有得到预期的结果,乘法器的程序刚开始编写的时候就遇到了问题,想到乘法如何实现,怎样实现,多次仿真之后始终得不到满意的结果,到最后经老师指点,顺利编写成功,经过仿真之后结果也比较令人满意,但是在编写除法器的过程中又遇到了很多的问题,编写出来的程序仿真结果一直不正确,
14、最终感觉到自己能力有限,就放弃了这种用vhdl语言实现乘法器和除法器的方案,选择了用lpm模块定制乘法器和除法器的方案来完成设计,最终选定模式5,并且对自己的程序进行了修改,合理安排输入输出,然后下载到试验箱上观察实验结果。最初的开始只有入栈、出栈、加法和减法结果正确,乘法和除法的结果都不正确,通过检查发现是自己在建工程的过程中出现错误,没有把顶层文件名和工程名保持一致,之后只好又重新开始建工程,编译下载,最终在实验板上看到了实验结果,实现了堆栈处理器应能完成两个基本的功能:与外部数据线的数据交换符合堆栈要求(先进后出);对存储的数据能进行算术运算,由此完成了此次对于堆栈处理器的课程设计。4.
15、2 设计心得 整个堆栈设计通过了软件和硬件上的测试,我想这对于自己以后的学习和工作都会有很大的帮助。在这次设计中遇到了很多实际性的问题,在实际设计中才发现,书本上理论性的东西与在实际运用中的还是有一定的出入的,所以有些问题不但要深入地理解,而且要不断地更正以前的错误思维。一切问题必须要靠自己一点一滴的解决,而在解决的过程当中你会发现自己在飞速的提升,对于堆栈处理器,其程序结构很简单,但编写起来有些难度,主要是解决程序设计中的问题,而程序设计是一个很灵活的东西,它反映了自己解决问题的逻辑思维和创新能力,它才是一个设计的灵魂所在。因此在整个设计过程中大部分时间是用在程序上面的。很多子程序是借鉴书本上的,但怎样衔接各个子程序才是关键的问题所在,这需要对系统的结构很熟悉。因此可以说系统的设计是软件和硬件的结合,二者是密不可分的。通过这次课程设计我也发现了自身存在的不足之处,虽然感觉理论上已经掌握,但在运用到实践的过程中仍有意想不到的困惑,经过一番努力才得以解决。 这也激发了我今后努力学习的兴趣,我想这将对我以后的学习产生积极的影响。其次,这次课程设计过程中,当我们碰到不明白的问题时,齐老师总是耐心耐心的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 园林砍树合同(2篇)
- 国企外派合同(2篇)
- 二零二五年度智能办公用品批发采购合同范本2篇
- 2025年度智能工厂设计与建设合同3篇
- 黑龙江工商学院《微积分CⅡ》2023-2024学年第一学期期末试卷
- 浙江理工大学《数学建模与应用软件》2023-2024学年第一学期期末试卷
- 长沙理工大学城南学院《基础医学英语》2023-2024学年第一学期期末试卷
- 2024游泳馆会员卡积分累积与兑换服务合同3篇
- 2024版设计合同模板
- 2025年人教版九年级道法寒假复习 第10讲 构建人类命运共同体
- Unit 2 My Schoolbag ALets talk(说课稿)-2024-2025学年人教PEP版英语四年级上册
- 2024年国家公务员考试《行测》真题(行政执法)
- 儒家思想讲解课程设计
- 烟花爆竹安全生产管理人员考试题库附答案(新)
- 国有企业外派董监事、高管人员管理办法
- 寒假作业一年级上册《数学每日一练》30次打卡
- 2024年个人汽车抵押借款合同范本(四篇)
- 春联课件教学课件
- 北师大版五年级上册脱式计算400道及答案
- 安徽省芜湖市2023-2024学年高一上学期期末考试 地理试题
- 8《美丽文字 民族瑰宝》教学设计2023-2024学年统编版道德与法治五年级上册
评论
0/150
提交评论