RISC-CPU毕业设计_第1页
RISC-CPU毕业设计_第2页
RISC-CPU毕业设计_第3页
RISC-CPU毕业设计_第4页
RISC-CPU毕业设计_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、电子信息工程05-3李寿春1引言1.1 CPU简介CPU从最初发展至今已经有二十多年的历史了,这期间,按照其处理信息的字长,CPU可以分为:四位微处理器、八位微处理器、十六位微处理器、三十二位微处理器以及六十四位微处理器等等。如今,我们常见的知道的CPU基本上都是intel或amd的,但是除了Intel或AMD的CPU,你可能还听说过的其它一些CPU,如HP的PA-RISC,IBM的Power4和Sun的UltraSparc等,只是它们并不是我们个人计算机上通常使用的CPU,而是精简指令集运算(RISC)处理器。我们的个人电脑上用的CPU都是复杂指令集(CISC,“Complex Instru

2、ction Set Computer”的缩写)CPU,采用复杂指令系统的计算机有着较强的处理高级语言的能力,这对提高计算机的性能是有益的。当计算机的设计沿着这条道路发展时,有些人没有随波逐流,他们回过头去看一看过去走过的道路,开始怀疑这种传统的做法:IBM公司设在纽约Yorktown的JhomasIWason研究中心于1975年组织力量研究指令系统的合理性问题,因为当时已感到,日趋庞杂的指令系统不但不易实现,而且还可能降低系统性能。1979年以帕特逊教授为首的一批科学家也开始在美国加册大学伯克莱分校开展这一研究。结果表明,CISC存在许多缺点。首先,在这种计算机中,各种指令的使用率相差悬殊:一

3、个典型程序的运算过程所使用的80指令,只占一个处理器指令系统的20,事实上最频繁使用的指令是取、存和加这些最简单的指令,这样来,长期致力于复杂指令系统的设计,实际上是在设计一种难得在实践中用得上的指令系统的处理器;同时,复杂的指令系统必然带来结构的复杂性,这不但增加了设计的时间与成本还容易造成设计失误。此外,尽管VLSI(超大规模集成电路Very Large Scale Integrated circuites)技术现在已达到很高的水平,但也很难把CISC的全部硬件做在一个芯片上,这也妨碍单片计算机的发展。在CISC中,许多复杂指令需要极复杂的操作,这类指令多数是某种高级语言的直接翻版,因而通

4、用性差。由于采用二级的微码执行方式,它也降低那些被频繁调用的简单指令系统的运行速度。因而,针对CISC的这些弊病,帕特逊等人提出了精简指令的设想,即指令系统应当只包含那些使用频率很高的少量指令,并提供一些必要的指令以支持操作系统和高级语言。这样,RISC产生并发展了起来。 RISC是英文“Reduced Instruction Set Computings”的缩写,中文意思是“精简指令集”。相对于CISC型CPU,RISC型CPU不仅精简了指令系统,还采用了一种叫做“超标量和超流水线结构”,大大增加了并行处理能力(并行处理是指一台服务器有多个CPU同时处理,并行处理能够大大提升服务器的数据处理

5、能力,部门级、企业级的服务器应支持CPU并行处理技术)。也就是说,在同等频率下,采用RISC架构的CPU比CISC架构的CPU性能高很多,这是由CPU的技术特征决定的。目前,RISC的应用范围很广泛,大到各种超级计算机、工作站、服务器,小到各类嵌入式设备、家用游戏机、消费电子产品、工业控制计算机,都可以看到RISC的身影。目前常见使用RISC的处理器包括DEC Alpha、ARC、ARM、MIPS、PowerPC、SPARC和SuperH等。图1.1 IBM的PowerPC 4051.2 RISC和CISC的区别RISC和CISC的区别如下,应该根据不同的用途和要求选择设计使用:(1) 指令系

6、统:RISC 设计者把主要精力放在那些经常使用的指令上,尽量使它们具有简单高效的特色。对不常用的功能,常通过组合指令来完成。因此,在RISC 机器上实现特殊功能时,效率可能较低。但可以利用流水技术和超标量技术加以改进和弥补。而CISC 计算机的指令系统比较丰富,有专用指令来完成特定的功能。因此,处理特殊任务效率较高。(2) 存储器操作:RISC 对存储器操作有限制,使控制简单化;而CISC 机器的存储器操作指令多,操作直接。(3) 程序:RISC 汇编语言程序一般需要较大的内存空间,实现特殊功能时程序复杂,不易设计;而CISC 汇编语言程序编程相对简单,科学计算及复杂操作的程序社设计相对容易,

7、效率较高。(4) 中断:RISC 机器在一条指令执行的适当地方可以响应中断;而CISC 机器是在一条指令执行结束后响应中断。(5) CPU:RISC CPU 包含有较少的单元电路,因而面积小、功耗低;而CISC CPU 包含有丰富的电路单元,因而功能强、面积大、功耗大。(6) 设计周期:RISC 微处理器结构简单,布局紧凑,设计周期短,且易于采用最新技术;CISC 微处理器结构复杂,设计周期长。(7) 用户使用:RISC 微处理器结构简单,指令规整,性能容易把握,易学易用;CISC微处理器结构复杂,功能强大,实现特殊功能容易。(8) 应用范围:由于RISC 指令系统的确定与特定的应用领域有关,

8、故RISC 机器更适合于专用机;而CISC 机器则更适合于通用机。1.3 本设计简介本毕业设计将对RISC-CPU的架构进行探讨,介绍如何设计RISC-CPU,并以一个8位的能够实现加、减、跳转等简单指令的精简指令集的cpu为实例加以说明。设计将使用VHDL语言,EDA工具使用Altera公司自行设计的第四代PLD开发软件Quartus,采用FPGA的方式实现。2 CPU设计思路2.1 cpu的两种架构设计RISC-CPU,首先要考虑架构。计算机体系结构可分为两种类型,冯诺依曼结构和哈佛结构。大多数CPU采用冯诺依曼结构。(1)冯诺依曼结构又称作普林斯顿体系结构(Princetionarchi

9、tecture)。1945年,冯诺依曼首先提出了“存储程序”的概念和二进制原理,后来,人们把利用这种概念和原理设计的电子计算机系统统称为“冯.诺曼型结构”计算机。冯.诺曼结构的处理器使用同一个存储器,经由同一个总线传输。冯.诺曼结构处理器具有以下几个特点:必须有一个存储器;必须有一个控制器;必须有一个运算器,用于完成算术运算和逻辑运算;必须有输入和输出设备,用于进行人机通信。图2.1 冯诺依曼结构图示冯诺依曼的主要贡献就是提出并实现了“存储程序”的概念。由于指令和数据都是二进制码,指令和操作数的地址又密切相关,因此,当初选择这种结构是自然的。但是,这种指令和数据共享同一总线的结构,使得信息流的

10、传输成为限制计算机性能的瓶颈,影响了数据处理速度的提高。在典型情况下,完成一条指令需要3个步骤,即:取指令、指令译码和执行指令。从指令流的定时关系也可看出冯诺依曼结构与哈佛结构处理方式的差别。举一个最简单的对存储器进行读写操作的指令,指令1至指令3均为存、取数指令,对冯.诺曼结构处理器,由于取指令和存取数据要从同一个存储空间存取,经由同一总线传输,因而它们无法重叠执行,只有一个完成后再进行下一个。(2)哈佛结构是一种将程序指令存储和数据存储分开的存储器结构。中央处理器首先到程序指令存储器中读取程序指令内容,解码后得到数据地址,再到相应的数据存储器中读取数据,并进行下一步的操作(通常是执行)。程

11、序指令存储和数据存储分开,可以使指令和数据有不同的数据宽度,如Microchip公司的PIC16芯片的程序指令是14位宽度,而数据是8位宽度。图2.2 哈佛结构图示哈佛结构的微处理器通常具有较高的执行效率。其程序指令和数据指令分开组织和存储的,执行时可以预先读取下一条指令。实际上,哈佛结构是以面积的增加为代价来换取速度的提高。目前使用哈佛结构的中央处理器和微控制器有很多,除了上面提到的Microchip公司的PIC系列芯片,还有摩托罗拉公司的MC68系列、Zilog公司的Z8系列、ATMEL公司的AVR系列和ARM公司的ARM9、ARM10和ARM11。2.2 risc和cisc在早期的计算机

12、业界,编译器技术尚未出现,程序是以机器语言或汇编语言完成的。为了便于编写程序,计算机架构师设计出越来越复杂的指令,可以直接对应高级程序语言的高级功能。当时的看法是硬件比编译器更容易设计,所以结构的复杂性在硬件这端。加速这种复杂化的另一因素是缺乏大容量的内部存储器。在内部存储器容量受限的应用中,具有极高讯息密度的程序更加实用。当时内部存储器中的每一字节都很宝贵,例如只有几千个字节来储存某个完整系统。它使产业界倾向于高度编码的指令、长度不等的指令、多操作数的指令,以及把数据的搬移与计算合并在一起的指令。在当时看来,相对于使指令更容易译码,指令的编码打包问题远为重要。还有一个因素是当时的内部存储器不

13、仅容量少,而且速度很慢,使用的都是磁性技术。凭借高密度打包的指令,存取慢速资源的频率可以降低。微处理器只有少量缓存器的两个原因是:缓存器每一个位位都比外部内部存储器贵。以当时的集成电路技术水准,大量缓存器对芯片或电路板而言是难以承受的。一旦具有大数量的缓存器,相关的指令字(opcode)将会需要更多的位位(使用宝贵的RAM)来定位缓存器。基于上述原因,微处理器设计师尽可能使指令做更多的工作。这导致单个指令做全部的工作: 读入两个加数,相加,并将计算结果直接写入内部存储器;另一个例子是从内部存储器读取两个数据,但计算结果储存在缓存器内;第三个例子是将从内部存储器和缓存器各读取一个数据,其结果再次

14、写入内部存储器;以此类推。这种微处理器设计原理,在精简指令集(RISC)的思路出现后,最终被人称为复杂指令集(CISC)。当时设计的一个通常目标是为每个指令都提供所有的寻址模式,称为正交性。这给微处理器增加了一些复杂性,但理论上每个可能的命令均可单独调整。相对于使用更简单的指令,这样做能够使设计速度更快。70年代后期,IBM(以及其它类似企业组织)的研究人员显示,大多数正交寻址模式基本上已被程序员所忽略。这是编译器的使用逐渐增多而汇编语言的使用相对减少所导致的。值得注意的是,由于编写编译器的难度很大,当时编译器并不能充分利用CISC处理机所提供的各种特性。尽管如此,广泛应用编译器的趋势已然很明

15、显,从而使得正交寻址模式变得更加无用。这些复杂操作很少被使用。事实上,相比用更精简的一系列指令来完成同一个任务,用单一复杂指令甚至会更慢。这看上去有些自相矛盾,却源自于微处理机设计者所花的时间和精力:设计者一般没有时间去调整每一条可能被用到的指令,通常他们只优化那些常用的指令。几乎就在同时,微处理机开始比内部存储器执行得更快。即便是在七十年代末,人们也已经认识到这种不一致性至少会在下一个十年继续增加,到时微处理机将会比内部存储器的速度快上百倍。很明显,需要有更多缓存器(以及后来的缓存)来支持更高频率的操作。为此,必须降低微处理机原本的复杂度,以节省出空间给新增的缓存器和缓存。不过RISC也有它

16、的缺点。当需要一系列指令用来完成非常简单的程序时,从内存读入的指令总数会变多,因此也需要更多时间。在当时的工业和设计领域,对RISC的性能优劣有大量持续不断的争论。精简指令集,是电脑中央处理器的一种设计模式,也被称为RISC(Reduced Instruction Set Computing 的缩写)。这种设计思路对指令数目和寻址方式都做了精简,使其实作更容易,指令并行执行程度更好,编译器的效率更高。目前常见的精简指令集微处理器包括DEC Alpha、ARC、ARM、AVR、MIPS、PA-RISC、Power Architecture(包括PowerPC、PowerXCell)和SPARC等

17、。早期,这种指令集的特点是指令数目少,每条指令都采用标淮字长、执行时间短、中央处理器的实作细节对于机器级程序是可见的等等。实际上在后来的发展中,RISC与CISC在竞争的过程中相互学习,现在的RISC指令集也达到数百条,执行周期也不再固定。虽然如此,RISC设计的根本原则针对流水线化的处理机优化没有改变,而且还在遵循这种原则的基础上发展出RISC的一个并行化变种VLIW(包括Intel EPIC),就是将简短而长度统一的精简指令组合出超长指令,每次执行一条超长指令,等于并行执行多条短指令。另一方面,目前最常见的复杂指令集x86 CPU,虽然指令集是CISC的,但是较新的处理机都已经是以RISC

18、核心为基础,只是再在外面辅以硬体解码器,在执行CISC指令时动态翻译成RISC指令,这个过程对程序设计师透明。3 FPGA技术3.1 FPGA简介FPGA是英文Field Programmable Gate Array的缩写,即现场可编程门阵列,它是在可编程阵列逻辑PAL(Programmable Array Logic)、门阵列逻辑GAL(Gate Array Logic)、可编程逻辑器件PLD(Programmable Logic Device)等可编程器件的基础上进一步发展的产物。它是作为专用集成电路ASIC(Application Specific Integrated Circuit

19、)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA能完成任何数字器件的功能,上至高性能CPU,下至简单的74系列电路,都可以用FPGA来实现。FPGA如同一张白纸或是一堆积木,工程师可以通过传统的原理图输入法,或是硬件描述语言自由设计一个数字系统。通过软件仿真,我们可以事先验证设计的正确性。在PCB完成以后,还可以利用FPGA的在线修改能力,随时修改设计而不必改动硬件电路。使用FPGA来开发数字电路,可以大大缩短设计时间,减少PCB面积,提高系统的可靠性。FPGA的这些优点使得PLD技术在90年代以后得到飞速的发展,同时也大大推动了电子

20、设计自动化EDA(Electronic Design Automatic)软件和硬件描述语言VHDL(Very-High-Speed Integrated Circuit Hardware Description)的进步。自1985年Xilinx公司推出有史以来第一颗现场可程序化逻辑组件至今,已经历了超过二十几年的发展历史。在发展过程中,以FPGA为代表的数位系统现场集成取得了惊人的发展:现场可程序化逻辑组件从最初的1200个可利用逻辑门,发展到90年代的25万个可利用逻辑门。其后不到数年,著名FPGA厂商,包括Altera公司、Xilinx等公司,又陆续推出了内建数百万逻辑门以上的FPGA芯

21、片,将现场可程序化组件的整合度提高到一个新的水准。如今,各厂商不再盲目追加逻辑门的数量,转而努力消除过去FPGA弱势之处,以强化过的运算效能、更为节省的功耗,向各种运算领域扑天盖地而来。纵观现场可程序化逻辑组件的发展历史,其之所以具有巨大的市场吸引力,在于FPGA不仅可以解决电子系统小型化、低功耗、高可靠性等问题,而且其开发周期短、开发软体投入少、芯片价格不断降低,促使FPGA在某些情况下得以取代ASIC的市场,特别是对小量、多样,短开发期的产品需求,使FPGA成为首选。3.2 FPGA的架构发展最早的可程序化逻辑组件只有可程序化只读存储器(PROM)、紫外线可擦除只读存储器(EPROM)和可

22、擦写只读存储器(EEPROM)三种。由于结构的限制,它们只能完成简单的数字逻辑功能。 其后,出现了一类结构上稍复杂的可程序化芯片,即可程序化逻辑组件(PLD),它能够完成各种数字逻辑功能。典型的PLD由一个与门和一个或门阵列组成,而任意一个组合逻辑都可以用“与-或”来描述,所以,PLD能以乘积和的形式完成大量的组合逻辑功能。这一阶段的产品主要有PAL(可程序化数组逻辑)和GAL(通用数组逻辑)。PAL由一个可程序化的与平面和一个固定的或平面构成,或门的输出可以通过触发器有选择地被置为暂存状态。PAL组件是现场可程序化的,它的实现制程有反熔丝技术、EPROM技术和EEPROM技术。 还有一类结构

23、更为灵活的逻辑组件是可程序化逻辑数组 (PLA),它也由一个与平面和一个或平面构成,但是这两个平面的连接关系是可程序化的。PLA组件既有现场可程序化的,也有掩膜可程序化的。而在PAL的基础上,工程师又发展出了一种通用数组逻辑GAL (Generic Array Logic),如GAL16V8,GAL22V10 等。它采用了EEPROM制程,实现了可擦除、可重写,其输出结构是可程序化的逻辑宏单元,因而它的设计具有很强的灵活性,至今仍有许多人使用。这些早期的PLD组件的一个共同特点是可以实现速度特性较好的逻辑功能,但其过于简单的结构也使它们只能实现规模较小的电路。为了弥补这一缺陷,20世纪80年代

24、中期。 Altera和Xilinx分别推出了类似于PAL结构的扩展型 CPLD(Complex Programmab1e Logic Dvice)和与标准门阵列类似的FPGA(Field Programmable Gate Array),它们都具有体系结构和逻辑单元灵活、整合度高以及适用范围宽等特点。这两种组件兼容了PLD和通用门阵列的优点,可实现较大规模的电路,程序化也很灵活。 与门阵列等其它ASIC(Application Specific IC)相比,它们又具有设计开发周期短、设计制造成本低、开发工具先进、标准产品无需测试、质量稳定以及可实时在线检验等优点,因此被广泛应用于产品的原型设计

25、和产品生产(一般在10,000件以下)之中。几乎所有应用门阵列、PLD和中小规模通用数字整合电路的场合均可应用FPGA和CPLD组件。3.3 本设计使用芯片本设计将使用Altera公司Cyclone系列FPGA的EP1C3T144C8芯片进行仿真。这里EP1C3表示Cyclone系列及此器件的规模;T表示TQFP封装;144表示有144个引脚;C8表示速度级别。具体使用方法将在后面的Quartus II软件介绍中说明。4 硬件描述语言VHDL4.1 VHDLVHDL语言是一种用于电路设计的高级语言,英文全名是Very High Speed Integrated Circuit Hardware

26、Description Language,翻译成中文就是超高速集成电路硬件描述语言,诞生于1982年。1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言 。自IEEE公布了VHDL的标准版本,IEEE-1076(简称87版)之后,各EDA公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口。此后VHDL在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准的硬件描述语言。1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本,(简称93版)。现在,VH

27、DL和Verilog作为IEEE的工业标准硬件描述语言,又得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可是部分,及端口)和内部(或称不可视部分)。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点与其他硬件描

28、述语言相比,VHDL具有以下特点:功能强大、设计灵活。VHDL具有功能强大的语言结构,可以用简洁明确的源代码来描述复杂的逻辑控制。它具有多层次的设计描述功能,层层细化,最后可直接生成电路级描述。VHDL支持同步电路、异步电路和随机电路的设计,这是其他硬件描述语言虽不能比拟的。VHDL还支持各种设计方法,既支持自底向上的设计,又支持自顶向下的设计;既支持模块化设计,又支持层次化设计。支持广泛、易于修改。由于VHDL已经成为IEEE标准所规范的硬件描述语言,目前大多数EDA工具几乎都支持VHDL,这为VHDL的进一步推广和广泛应用奠定了基础。在硬件电路设计过程中,主要的设计文件是用VHDL编写的源

29、代码,因为VHDL易读和结构化,所以易于修改设计。强大的系统硬件描述能力。VHDL具有多层次的设计描述功能,既可以描述系统级电路,又可以描述门级电路。而描述既可以采用行为描述、寄存器传输描述或结构描述,也可以采用三者混合的混合级描述。另外,VHDL支持惯性延迟和传输延迟,还可以准确地建立硬件电路模型。VHDL支持预定义的和自定义的数据类型,给硬件描述带来较大的自由度,使设计人员能够方便地创建高层次的系统模型。独立于器件的设计、与工艺无关。设计人员用VHDL进行设计时,不需要首先考虑选择完成设计的器件,就可以集中精力进行设计的优化。当设计描述完成后,可以用多种不同的器件结构来实现其功能。很强的移

30、植能力。VHDL是一种标准化的硬件描述语言,同一个设计描述可以被不同的工具所支持,使得设计描述的移植成为可能。易于共享和复用。VHDL采用基于库(Library)的设计方法,可以建立各种可再次利用的模块。这些模块可以预先设计或使用以前设计中的存档模块,将这些模块存放到库中,就可以在以后的设计中进行复用,可以使设计成果在设计人员之间进行交流和共享,减少硬件电路设计。(1)与其他的硬件描述语言相比,VHDL具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。(2)VHDL丰富的仿真语句和库函

31、数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。(3)VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。符合市场需求的大规模系统高效,高速的完成必须有多人甚至多个代发组共同并行工作才能实现。(4)对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表。(5)VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。一个简单的VHDL例子,或门c=a+b:library ieee;use ieee

32、.std_logic_1164.all;entity shiyan1 isport(a,b:in std_logic;c:out std_logic);end entity;architecture behave of shiyan1 isbeginprocess(a,b)beginc=a or b;end process;end behave;其仿真结果:4.2 Quartus IIQuartus II是Altera提供的CPLD/FPGA开发集成环境,Altera是世界最大可编程逻辑器件提供商之一。Quartus II在21世纪初推出,是Altera前一代CPLD/FPGA开发集成环境MA

33、X+plusII的更新换代产品,其界面友好,使用便捷。在QuartusII上可以完成EDA的整个工程设计流程,它提供了一种与结构无关的设计环境,使设计者能方便地进行输入设计、快速处理和器件编程。Quartus II支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。Quartus II可以在windows、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快

34、,界面统一,功能集中,易学易用等特点。Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三放EDA工具。此外,Quartus II 通过和DSP Builder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。Maxplus II 作为Altera的上一代PL

35、D设计软件,由于其出色的易用性而得到了广泛的应用。目前Altera已经停止了对Maxplus II 的更新支持,Quartus II 与之相比不仅仅是支持器件类型的丰富和图形界面的改变。Altera在Quartus II 中包含了许多诸如SignalTap II、Chip Editor和RTL Viewer的设计辅助工具,集成了SOPC和HardCopy设计流程,并且继承了Maxplus II 友好的图形界面及简便的使用方法。Altera Quartus II 作为一种可编程逻辑的设计环境, 由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。 Altera的Quartus

36、II可编程逻辑软件属于第四代PLD开发平台。该平台支持一个工作组环境下的设计要求,其中包括支持基于Internet的协作设计。Quartus平台与Cadence、ExemplarLogic、 MentorGraphics、Synopsys和Synplicity等EDA供应商的开发工具相兼容。改进了软件的LogicLock模块设计功能,增添 了FastFit编译选项,推进了网络编辑性能,而且提升了调试能力。支持MAX7000/MAX3000等乘积项器件。下图中所示的上排是QuartusII编译设计主控界面,它显示了QuartusII自动设计的各主要处理环节和设计流程,包括设计输入编辑、设计分析和

37、综合、适配、编程文件汇编、时序参数提取以及编程下载几个步骤。下排的流程框图,是与上面的QuartusII设计流程相对照的标准的DEA开发流程。编程器图形或HDL编辑分析与综合适配器编程文件汇编时序分析器设计输入综合或编译适配器件下载仿真这里以第四节中的或门为例介绍QuartusII的使用方法:(1) 建立工作目录。在D盘根目录建立文件夹shiyan1。(2) 输入源程序。打开QuartusII,选择filenewdevice design filesVHDL file,在弹出的文本框中输入源程序,输入完毕存盘filesave as,保存到上面建立的文件夹D:/shiyan1中,文件名与实体名一

38、致,即shiyan1.vhd。当出现“Do you want to ”时点“是”进入创建工程流程,若点否则按以下方法进入。(3) 创建工程。Filenew project wizard,弹出“工程设置”对话框,点最右上角的“”按钮找到D:/shiyan1文件夹并选中shiyan1.vhd。第二行为工程名,可以随意取。第三行为实体名,必须与源程序中实体名一致。设置完点“next”。(4) 将设计文件加入工程中。单机“Add”按钮加入相关的vhdl文件,这里加入shiyan1.vhd。设置完点“next”。(5) 选择仿真器和综合器的类型。此处用默认项none,点“next”进入下一项。(6) 选

39、择目标芯片。选择Cyclone系列的EP1C3T144C8。点“next”弹出“工程设置统计”窗口,点“finish”完成工程的创建。(7) 编译前设置及编译。菜单assignmentssettingscategorydevice,选中EP1C3T144C8再点击device&pin options,再切换到configuration将use configuration device 设置为EPCS1。设置完毕关闭各页面,点processingstart compilation开始全程编译。(8) 时序仿真,创建波形文件。选择菜单filenewother filesvector wavefor

40、m file建立空白的波形编辑器,然后点菜单editend time设置整个仿真域的时间为50us,保存波形文件filesave as,同shiyan1.vhd保存在一起,默认名为shiyan1.vwf。(9) 编辑输入波形。菜单viewutility windowsnode finder,在弹出的对话框中,filter选择pins:all,然后单击list将在下放的nodes found窗口中列出shiyan1工程的所有端口引脚名,这里将列出a、b、c,将它们拖入波形编辑器中用左侧的按键设置成如下波形:(10) 仿真参数设置。菜单assignmentsettingscategoryfitte

41、r settingssimulator,选中simulation coveragereporting,毛刺检测glitch detection为1ns,选中run simulation until all vector stimuli全程仿真,选择power estimation将end time设为40ms。(11) 启动仿真器并观察结果。选择菜单processingstart simulation,等待仿真结束出现结果,本例结果如下:5 电路设计实现5.1 risc cpu的硬件结构寄存器构成(1) 通用寄存器 GR0,GR1,GR2,GR3。 (2) 变址寄存器 GR1,GR2。(3)

42、堆栈指示器 GR3(4) 程序计数器 PC2.内部功能模块的构成(1) 内部寄存器a. 指令寄存器 IRb. 地址寄存器 P0c. 数据寄存器 P1(2) 运算器 ALUCUALUUTMPADDIRPC_ROMP1P0BCUGR(3) 控制器CU5.2 指令编码指令助记符操作码暂停HLT000算术加ADD001ALU的结果输给累加器LDA010逻辑与ANDD011逻辑异或XORR100输出累加器数据STO101无条件转移JMP110零转移 JZ1115.3 控制单元的设计5.3.1状态机控制器状态机控制器接受复位信号RST,当RST有效时通过信号ena使其为0,输入到状态机中停止状态机的工作。

43、下图为状态机控制器的电路图:library ieee;use ieee.std_logic_1164.all;entity machinectl isport(rst,fetch:in std_logic; ena:out std_logic);end entity;architecture behave of machinectl isbeginprocess(rst,fetch)beginif(rst=1)thenena=0;elseena=1;end if;end process;end behave;5.3.2状态机状态机是CPU的控制核心,用于产生一系列的控制信号,启动或停止某些部件

44、。CPU何时进行读指令读写I/O端口、RAM区等操作,都是由状态机来控制的。状态机的当前状态,由变量state记录,state的值就是当前这个指令周期中经过的时钟数(从零记起)。指令周期由8个时钟周期组成,每个时钟周期都要完成固定的操作。第0个时钟,因为CPU状态控制器的输出rd和load_ir为高电平,其余均为低电平。指令寄存器寄存由ROM送来的高8位指令代码。第1个时钟,与上一时钟相比只是inc_pc从0变为1,故PC增1,ROM送来低8位指令代码,指令寄存器寄存该8位代码。第2个时钟,空操作。第3个时钟,PC增1,指向下一条指令。若操作符为HALT,则输出信号HALT为高;,如果操作符不

45、为HALT,除了PC增1外(指向下一条指令),其它各控制线输出为零。第4个时钟,若操作符为ANDD,ADD,XORR或LDA,读相应地址的数据;若为JMP,将目的地址送给程序计数器,若为STO,输出累加器数据。第5个时钟,若操作符为ANDD,ADD,XORR或LDA,算术运算器就进行相应的运算;若为JZ,先判断累加器的值是否为0,如果为0,将目的地址送给程序计数器,否则空操作;若为JMP,锁存目的地址;若为STO,将数据写入地址处;若为LDA,就把数据通过算术运算器送给累加器。第6个时钟,空操作。第7个时钟,若操作符为JZ且累加器值为零,则锁存目的地址,否则空操作。程序:library iee

46、e;use ieee.std_logic_1164.all;entity machine isport(clk1,zero,ena:in std_logic;code:in std_logic_vector(2 downto 0);inc_pc,load_acc,load_pc,rd,wr:out std_logic;load_ir,datactl_ena,halt:out std_logic);constant HLT: std_logic_vector(2 downto 0):=000;constant ADD: std_logic_vector(2 downto 0):=001;cons

47、tant LDA: std_logic_vector(2 downto 0):=010;constant ANDD: std_logic_vector(2 downto 0):=011;constant XORR: std_logic_vector(2 downto 0):=100;constant STO: std_logic_vector(2 downto 0):=101;constant JMP: std_logic_vector(2 downto 0):=110;constant JZ: std_logic_vector(2 downto 0):=111;end machine;arc

48、hitecture behave of machine isbeginprocess(clk1)variable state: integer range 0 to 7;begin-初始化,全部清零if(clk1=1 and clk1event)thenif(ena=0)then -接到machinectl的rst信号,进行复位state:=0;inc_pc=0;load_acc=0;load_pc=0;rd=0;wr=0;load_ir=0;datactl_ena=0;halt=0;-初始化完成,开始时钟周期-第零个时钟,读取指令高八位-if(clk1=1 and clk1event)the

49、nelsif(state=0) theninc_pc=0;load_acc=0;load_pc=0;rd=1;wr=0;load_ir=1;datactl_ena=0;halt=0;state:=1;-第一个时钟,读取指令低八位elsif(state=1) theninc_pc=1;load_acc=0;load_pc=0;rd=1;wr=0;load_ir=1;datactl_ena=0;halt=0;state:=2;-第二个时钟,空操作elsif(state=2) theninc_pc=0;load_acc=0;load_pc=0;rd=0;wr=0;load_ir=0;datactl_

50、ena=0;halt=0;state:=3;-第三个时钟,开始分析指令elsif(state=3 and code = HLT) theninc_pc=1;load_acc=0;load_pc=0;rd=0;wr=0;load_ir=0;datactl_ena=0;halt=1;state:=4;elsif(state=3) theninc_pc=1;load_acc=0;load_pc=0;rd=0;wr=0;load_ir=0;datactl_ena=0;halt=0;state:=4;-第四个时钟,分析AND,ADD,XOR,LDA,JMP,STO指令elsif(state=4 and

51、code=JMP) theninc_pc=0;load_acc=0;load_pc=1;rd=0;wr=0;load_ir=0;datactl_ena=0;halt=0;state:=5;elsif(state=4 and (code=ADD OR code=ANDD OR CODE=XORR OR CODE=LDA)theninc_pc=0;load_acc=0;load_pc=0;rd=1;wr=0;load_ir=0;datactl_ena=0;halt=0;state:=5;elsif(state=4 and code = STO)theninc_pc=0;load_acc=0;loa

52、d_pc=0;rd=0;wr=0;load_ir=0;datactl_ena=1;halt=0;state:=5;elsif(state=4) theninc_pc=0;load_acc=0;load_pc=0;rd=0;wr=0;load_ir=0;datactl_ena=0;halt=0;state:=5;-第五个时钟,增加分析JZ指令elsif(state=5 and (code=ADD OR code=ANDD OR CODE=XORR OR CODE=LDA)theninc_pc=0;load_acc=1;load_pc=0;rd=1;wr=0;load_ir=0;datactl_e

53、na=0;halt=0;state:=6;elsif(state=5 and code=JZ and zero=0)theninc_pc=0;load_acc=0;load_pc=0;rd=0;wr=0;load_ir=0;datactl_ena=0;halt=0;state:=6;elsif(state=5 and code=JZ and zero=1)theninc_pc=0;load_acc=0;load_pc=1;rd=0;wr=0;load_ir=0;datactl_ena=0;halt=0;state:=6;elsif(state=5 and code=JMP)theninc_pc=0;load_acc=0;load_pc=1;rd=0;wr=0;load_ir=0;datactl_ena=0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论