EDA课程设计报告堆栈设计.doc
《EDA课程设计报告堆栈设计.doc》由会员分享,可在线阅读,更多相关《EDA课程设计报告堆栈设计.doc(30页珍藏版)》请在三一办公上搜索。
1、-可编程逻辑器件原理及应用?课程综合设计报告书设计题目 堆栈设计设计要求和任务设计一个以字节形式组织的的堆栈,长度为8,设有入栈按钮、出栈和读栈按钮,执行相应操作设计过程堆栈是一种简单的数据构造,是一种只允许在其一端进展插入或删除的线性表。允许插入或删除操作的一端称为栈顶,另一端称为栈底,对堆栈的插入和删除操作被称为入栈和出栈。有一组CPU指令可以实现对进程的存实现堆栈访问。其中,POP指令实现出栈操作,PUSH指令实现入栈操作。CPU的ESP存放器存放当前线程的栈顶指针,EBP存放器中保存当前线程的栈底指针。CPU的EIP存放器存放下一个CPU指令存放的存地址,当CPU执行完当前的指令后,从
2、EIP存放器中读取下一条指令的存地址,然后继续执行。在本文中,我们设计了堆栈处理器。主要分为如下几个局部:l 数据子系统模块:堆栈存储器:“先进后出是堆栈处理器的根本功能,故在堆栈处理器设计之前我们首先需要了解入栈PUSH和出栈POP的3中情况A、B均满/空和A空B满,及其如何实现该功能的,之后利用VHDL语言把这三种情况的实现编写出来。由于加减模块较为简单,所以可以直接利用VHDL语言,把堆栈处理器的根本操作表达出来。A、B均满/空,A空B满。在EDA课程中我们很少用到乘法和除法运算,而且利用语言的形式也很难编写出来,故该模块我们利用?现代电子系统设计实验指导书?上的调用LPM模块的方式来编
3、写。运算器:由于执行各种运算所需的时间不同,故需要开场和完毕信号。数据路径:RAM及存放器A、B的数据来源。条件与控制点:输出及输出信号显示l 控制子系统:根据数据子系统对堆栈处理器各局部的分析,利用VHDL语言编写程序,下载到FPGA实验板上,验证其功能是否满足设计要求。l 其他:本次课程设计除了满足上述要求外还可以额外的实现错误提示功能,及扩展数据到16位。下面会对此进展简单的分析。关键词:入栈POP、出栈PUSH、算术运算、VHDL、FPGA一、任务解析: 本次设计要实现如下功能:a与外部数据线的数据交换符合堆栈要求先进后出; b对存储的数据能进展算术运算;c数据位数不少于8位;d通过数
4、码管显示操作数据及运算结果。围绕着要实现功能,分析堆栈处理器应该具有哪些输入和输出信号,明确设计要求。1.1 从堆栈角度考虑堆栈的指示信号 堆栈其实是一个能随机存取数据的存储器,它符合先进后出的原则。作为一个存储器,除了工作速度外,它的首要指标是容量,设其字数为aa,每个字N位。表征存取字位置的指示信号时地址,在堆栈中称为指针SP。当指针处于栈顶时,SP=0,对应满栈,应有满栈指示信号FULL=1。设计过程当堆栈空时,指针SP=aa,应有空栈指示信号EMPTY=1。同时规定指针SP始终指向操作之前栈有容的位置。图1 堆栈处理器指针堆栈的操作 作为堆栈它的操作只有两项,入栈PUSH和出栈POP。
5、入栈操作PUSH后指针SP(SP-1),出栈操作POP后指针SP(SP+1)。假设FULL=1,不能入栈PUSH,假设EMPTY=1,不能出栈POP。1.2 从算术运算功能考虑首先应有进展算术运算的指示信号,即输出信号ADD,SUB,MUL和DIV。由于不同的运算所需的时间不同,因此必须有一个启动信号START和一个完成信号READY。堆栈中两个数据进展运算的过程如下图。地址分别为SP和SP+1的两个数据送入运算器进展运算,运算后将结果送入地址SP+1的字中。当堆栈只有一个字时,不能进展算术运算,因此必须有一个ONE指示。当指针处于栈底时,SP=aa-1,这时堆栈只有一个字,应有指示信号ONE
6、=1。图2 堆栈处理器的运算1.3 功能方框图由以上分析可以得到堆栈处理器的功能框图如下所示。图中所标注的信号时该堆栈处理器和外界应有的交换信号。设计过程图3 堆栈处理器功能方框图二、系统方案论证由于本系统操作时判断条件很多,用流程图描述时会有很多分支,显得很杂乱,因此在此采用VHDL语言将堆栈处理器对数据的操作方案进展描述。本语言对数字系统的描述不涉及具体实现和具体元件,属于行为处理器的描述语言。但其整个描述过程可以得到下列图的框架。在此构造中,将堆栈处理器分为数据子系统和控制子系统两大局部,下面分别设计数据子系统和控制子系统。图4 堆栈处理器构造方框图三、数据子系统模块 数据子系统包括对数
7、据的存储、运算、传输以及和控制子系统之间的条件和控制信号交换几大局部。下面就从这几个方面来设计数据子系统,找出各局部的模块电路和它们之间的联系。3.1堆栈存储器用一块容量为aaN的随机存取存储器RAM作为堆栈存储器,相应的地址产生器的输出即指针SP,由于对RAM数据的存取必须先对地址操作,然后再对数据操作,这样速度较慢。在计算机中一般都用两个高速存放器直接和总线进展数据交换,RAM则作为后备,其构造如下列图所设计过程示。存放器A,B和RAM共同组成了堆栈存储器。图5 堆栈存储器构造堆栈处理器的工作过程规定如下:进栈PUSH操作,分三种情况:(a) A,B均空:BDIN。(b) A空B满:ADI
8、N。(c) A,B均满:RAMB,BA,ADIN。图6 堆栈处理器的进栈操作出栈POP操作,分三种情况:(a) A,B均满:DOUTA。(b) A空B满:DOUTB。(c) A,B均空:BRAM,DOUTB。图7 堆栈处理器的出栈操作算术运算OP操作,分三种情况:设计过程aA,B均满:BA(OP)B。bA空B满:AB,BRAM,BA(OP)B。cA,B均空:BRAM,AB,BRAM,BA(OP)B。图8 堆栈处理器的运算操作 从以上规定的操作可以看出堆栈处理器的构造特点:l 只有存放器A,B直接和外部总线进展数据交换,RAM只和存放器B进展数据交换。l 必须设有标志信号FA和FB,当存放器A满
9、时FA=1,当存放器B满时FB=1。l 存放器A是堆栈存储器的栈顶,存放器B是次栈顶,B不能在A之前先空。将堆栈处理器的存储器和存放器归纳如下: RAM。对存储器RAM可以从以下几个方面进展描述:l 容量 假设选用aa=1024个字,每个字为16位的RAM,记为M1024,16。l 地址 地址产生器MA,其输出值VMA即为指针SP。即为SP= VMA;当满栈时,FULL=1,SP= VMA=0;栈只有一个字时,ONE=1,SP= VMA=1023=aa-1;当空栈时,EMPTY=1,SP=VMA=1024=aa。由于要置入SP=1024,所以地址线应有11位;对地址产生器的操作有加1,减1和置
10、数=1024初始化。l 操作 读RAM的操作是:BM(vMA);将RAM中地址为vMA的字置入存放器B。 写RAM的操作是: M(vMA) B;将存放器B中的容设计过程存入地址为vMA的RAM的字中。RAM的读写操作均需一定的时间,操作完毕后,RAM输出MREADY信号表示完毕。 存放器。共有六个存放器,它们是三个16位的存放器A(16)、B(16)、输出存放器D。16,一个6位的操作码存放器ROP16和两个标志存放器FA,FB。操作码存放器的每一位分别表示PUSH,POP,ADD,SUB,MUL,DIV,对它的操作有置数LD和清零CR。标志存放器FA和FB是一位的D触发器,它们分别具有置数和
11、清零控制端。3.2 运算器假设已有一块能完成、-、的运算器OP。对应每种运算所需要的时间假设为T(ADD)=T(SUB)=2,T(MUL)=8,T(DIV)=12。由于执行各种运算所需的时间不同,因此必须有一个开场信号OBEGIN和完毕信号OREADY。四堆栈处理器源程序及其分析library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity st isgeneric(k:integer:=8;w:integer:=3);port(rst:in
12、 std_logic; clk:in std_logic; din1,din2:in std_logic; push,pop:in std_logic; op1,op2,op_en:in std_logic; full,empty,one,ready,FA,FB,error_led:out std_logic; mul_in:in std_logic_vector(15 downto 0); div_quo,div_rem:in std_logic_vector(k-1 downto 0); dispA,dispB,data_bus,data_set:outstd_logic_vector(k
13、-1 downto 0); qA,qB:out std_logic_vector(k-1 downto 0); end entity;根据数据子系统的分析我们可以了解到堆栈处理器的各种输出和输入变量,在这局部进展实体及其端口的定义architecture behav of st issubtype word is std_logic_vector(k-1 downto 0);type memory is array(0 to 2*w-1)of word;signal tmp_full,tmp_empty,tmp_one:std_logic;signal count1,count2:std_lo
14、gic_vector(w downto 0);signal din:std_logic_vector(k-1 downto 0);signal tmp_FA,tmp_FB:std_logic:=0;signal dout:std_logic_vector(k-1 downto 0);设计过程begindata_in:process(rst,din1,din2) begin if(din1event and din1=1)then count1=count1+1; end if;if (din2event and din2=1)then count2=count2+1;end if;din(k-
15、1 downto 4)=count2; din(3 downto 0)=count1; data_set=din; if(rst=1)thencount1=0000;count2=0000;end if;end process;由于一个数码管最多能显示4位16进制数据,且本次课程设计要求其数据位不得少于8位,故需定义两个数据输入端口,高4位和低4位。process(clk,pop,push,op_en)isvariable sram:memory;variable ready1:std_logic;variable sp:integer range 0 to 8;variable A,B:st
16、d_logic_vector(k-1 downto 0);beginif(clkevent and clk=1)thenif(rst=1)thensp:=8;tmp_FA=0;tmp_FB=0;tmp_empty=1;tmp_one=0;A:=00000000;B:=00000000;end if;if(sp=0 and tmp_FA=1 and tmp_FB=1)then tmp_full=1; elsif(sp=8 and tmp_FA=0 and tmp_FB=0)then tmp_empty=1;tmp_one=0; elsif(tmp_FA=0 and tmp_FB=0 and sp
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 课程设计 报告 堆栈 设计
链接地址:https://www.31ppt.com/p-1090602.html