基于FPGA的计算器设计(共47页).doc
《基于FPGA的计算器设计(共47页).doc》由会员分享,可在线阅读,更多相关《基于FPGA的计算器设计(共47页).doc(47页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上基于FPGA的计算器设计摘 要本文介绍了一个简单计算器的设计,该设计采用了现场可编程逻辑器件FPGA设计,并基于硬件描述语言VHDL在Altera公司的Quartus 软件上实现仿真。系统由计算部分、存储部分、显示部分和输入部分四个部分组成,计算部分为加法器、减法器、乘法器和除法器,存储部分需要3个存储器来实现:内部累加器(acc)、输入寄存器(reg)以及结果暂存器(ans)。显示部分由四个七段译码管组成,分别来显示输入数字,输入部分采用外接键盘,由09十个数字按键,加减乘除四个运算符按键,一个等号按键和一个清零按键组成的。通过外部的按键可以完成四位数之内的 加、减
2、、乘、除四种功能运算,其结构简单,易于实现。 关键词:FPGA;VHDL;计算器1 概述在国外,电子计算器在集成电路发明后,只用短短几年时间就完成了技术飞跃,经过激烈的市场竞争,现在的计算器技术己经相当成熟。计算器已慢慢地脱离原来的“辅助计算工具”的功能定位,正向着多功能化、可编程化方向发展,在各个领域都得到了广泛的应用。用计算器不仅可以实现各种各样复杂的数学计算还可以用来编制、运行程序,甚至解方程组,图形计算器还可以进行图形处理。计算器内置的软件允许用户进行类似于对计算机的文件和目录管理等操作,允许用户对图形界面进行定制,同时各种新技术也被应用到计算器里使计算器功能越来越强大。可以说,计算器
3、就是一个“微微型”的计算机。国内也有厂商利用计算器芯片开发新的产品,但对计算器技术的研究、计算器芯片的设计还处于起步阶段。计算器的主要功能还是在于“计算”,不妨称之为“低档计算器”。即便是对这种计算器,很多厂商也只从事计算器的组装、销售业务。一些IC设计公司、芯片提供商也开始研究计算器技术。本次设计基于现场可编程逻辑器件FPGA进行设计,应用硬件描述语言VHDL编程并在Altera公司的Quartus 软件上实现仿真。需要进行计算器的常用运算功能的实现,通过外接键盘输入、LED数码显示来达成运算目的。2 硬件描述语言VHDL简介2.1 VHDL的发展VHDL诞生于1982年。在1987年底,V
4、HDL被IEEE和美国国防部确认为标准硬件描述语言 。自IEEE公布了VHDL的标准版本,IEEE-1076(简称87版)之后,各EDA公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口。此后VHDL在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准的硬件描述语言。而Verilog HDL是由GDA(Gateway Design Automation)公司的PhilMoorby在1983年末首创的,最初只设计了一个仿真与验证工具,之后又陆续开发了相关的故障模拟与时序分析工具。1985年Moorby推出它的第三个商用仿真器Verilog XL,获得了巨大的成功,从
5、而使得Verilog HDL迅速得到推广应用。1989年CADENCE公司收购了GDA公司,使得Verilog HDL成为了该公司的独家专利。1990年CADENCE公司公开发表了Verilog HDL,并成立LVI组织以促进Verilog HDL成为IEEE标准,即IEEE Standard 1364-1995。 2.2 VHDL的特点VHDL语言主要用于描述数字系统的结构、行为、功能和接口,与其他硬件描述语言相比,VHDL语言有如下优越之处2:1) VHDL语言支持自上而下(Top Down)和基于库(Library Base )的设计方法,还支持同步电路、异步电路、FPGA以及其他随机电
6、路的设计;2) VHDL语言具有多层次描述系统硬件功能的能力,可以从系统的数学模型直到门级电路,其高层次的行为描述可以与低层次的RTL描述和结构描述混合使用,还可以自定义数据 类型,给编程人员带来较大的自由和方便;3) VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必关心最终设计实现的目标器件是什么;4) VHDL具有电路仿真与验证功能,可以保证设计的正确性,用户甚至不必编写如何测试相量便可以进行源代码级的调试,而且设计者可以非常方便地比较各种方案之间的可行性及其优劣,不需做任何实际的电路实验;5) VHDL语言可以与工艺无关编程;6) VHDL语言标准、规范,易于共享和复
7、用。2.3 VHDL语言结构 图2.1 VHDL程序结构框图3图2.1中是VHDL的全部结构,但实际上并不需要全部的结构,就像在许多设计项目中,大部分工程师只用到VHDL其中的30%的语法;通常图2.2的结构才是基本和必需的。图2.2 VHDL程序基本结构2.3.1 实体(ENTITY)实体作为一个设计实体的组成部分,其功能是对这个设计实体与外部电路进行接口描述,它是设计实体的表层设计单元;实体说明部分规定了设计单元的输入输出接口信号或引脚,它是设计实体对外一个通信界面。就一个设计实体面言,外界所看到的仅仅是它的界面上的各种接口。它可以拥有一个或多个结构体,用于描述此设计实体的逻辑结构和逻辑功
8、能,对于外界来主,这一部分是不可见的。不同逻辑功能的实体可以拥有相同的实体描述,这是因为实体类似于原理图中的一个部件符号,而其的逻辑功能是由设计实体中结构体的描述确定的。实体是VHDL的基本设计单元,它可以对一个门电路、一个芯片、一块电路板乃至整个系统进行接口描述。其结构:ENTITY 实体名 IS4 GENERIC(常数名:数据类型:设定值 ;常数名:数据类型:设定值 ); PORT(端口名:端口模式 数据类型;端口名:端口模式 数据类型);END ENTITY 实体名;2.3.2 结构体(ARCHITECTURE)结构体是实体所定义的设计实体中的一个组成部分。结构体描述设计实体的内部结构和
9、实体端口间的逻辑关系。结构体由两大部分组成5:对数据类型、常数、信号、子程序和元件等元素的说明部分;描述实体逻辑行为的,以各种不同的描述风格表达的功能描述语句,它们包括各种形式的顺序描述语句和并行描述语句。其语句格式如下:ARCHITECTURE 结构体名; 说明语句BEGIN 功能描述语句END ARCHITECTURE 结构体名;图2.3中的五种语句结构的基本组成和功能分别是:块语句是由一个系列并行执行语句构成的组成体,它的功能是将结构中的并行语句组成一个或多个模块。进程语句定义顺序语句模块,用以将从外部获得的信号值,或内部的运算数据向其它的信号进行赋值。信号赋值语句将设计实体内的处理结果
10、向定义的信号或界面端口进行赋值。子程序调用语句用以调用过程或者函数,并将此元件的端口与其它的元件、信号或高层次实体的界面端口进行连接。图2.3 结构体构造图2.4 VHDL软件设计简介系统电路的软件设计可采用工具软件Quartus ,用该工具软件所支持的语言硬件描述语言VHDL,以文本的方式进行编程输入。在编程时分别对控制、计数、锁存、译码等电路模块进行VHDL文本描述,使每个电路模块以及器件都以文本的形式出现,然后通过编译、波形分析、仿真、调试来完善每个器件的功能。单个器件制作完成后,然后将它们生成库文件,并产生相应的符号,最后用语言将各个已生成库文件的器件的各个端口连接在一起,从而形成了系
11、统主电路的软件结构。在连接器件时,也可以采用图形输入方式,即在图形输入界面中调出先制作好的库文件器件符号,再将每个器件符号的各端口直接连线,从而构成系统主电路。在上述工作的基础上,再进行波形分析、仿真调试便完成整个软件设计6。3 现场可编程门阵列(FPGA)简介3.1 可编程逻辑器件可编程逻辑器件(PLD-Programmable Logic Devices)是一种由用户编程以实现某种逻辑功能的新型逻辑器件。它诞生于20 世纪70 年代,在20 世纪80 年代以后,随着集成电路技术和计算机技术的发展而迅速发展起来的。可编程逻辑器件自问世以来,PLD 经历了从PROM、PLA、PAL、GAL 到
12、FPGA、ispLSI 等高密度PLD 的发展过程。在此期间,PLD 的集成度、速度不断提高,功能不断增强,结构趋于更合理,使用变得更灵活方便。PLD 的出现打破了由中小型通用型集成电路和大规模专用集成电路垄断的局面。与中小规模通用型集成电路相比,用PLD 实现数字系统,有研制周期短、先期投资少、无风险、修改逻辑设计方便、小批量生产成本低等优势。随着可编程逻辑器件性能价格比的不断提高,EDA 开发软件的不断完善,现代电子系统的设计将越来越多地使用可编程逻辑器件,特别是大规模可编程逻辑器件。如果说一个电子系统可以像积木堆积起来的话,那么现在构成许多电子系统仅仅需要3 种标准的积木块微处理器、存储
13、器和可编程逻辑器件,甚至只需一块大规模可编程逻辑器件。PAL ( Programmable Array Logic)器件是20 世纪70 年代末期出现的一种低密度、一次性可编程逻辑器件。GAL(Generic Array Logic)器件是继PAL 器件之后,在20 世纪80 年代中期推出的一种低密度可编程逻辑器件。它在结构上采用了输出逻辑宏单元(OLMC-Output Logic Macro Cell )结构形式,在工艺上吸收EEPROM 的浮栅技术,从而使GAL 器件具有可擦除、可重新编程、数据可长期保存的结构特点。CPLD(Complex Programmable Logic Devic
14、e)是万门以上的复杂可编程逻辑器件,采用CMOS EPROM、EEPROM、快闪存储器和SRAM 等编程技术,从而构成高密度、高速度和低功耗的可编程逻辑器件7。3.2 现场可编程门阵列(FPGA)FPGA 是现场可编程门阵列(Field Programmable Gate Array)的简称。FPGA器件及其开发系统是开发大规模数字集成电路的新技术。它利用计算机辅助设计,绘制出实现用户逻辑的原理图、编辑布尔方程或用硬件描述语言等方式作为设计输入;然后经一系列转换程序、自动布局布线、模拟仿真的过程;最后生成配置FPGA 器件的数据文件,对FPGA 器件初始化。这样就实现了满足用户要求的专用集成电
15、路,真正达到了用户自行设计、自行研制和自行生产集成电路的目的。FPGA是一种半定制的集成电路,其特点是直接面向用户,具有极大的灵活性和通用性,开发效率高,硬件测试和实现快捷,工作可靠性好而且技术维护简单。FPGA 相对于CPLD 而言,其结构特点在于FPGA 是基于查找表look-up-table的。查找表(look-up-table)简称为LUT,LUT 本质上是一个RAM。FPGA 中多使用4 输入的LUT,所以每一个LUT 可以看成一个有4 位地址线的16x1 的RAM。当用户通过原理图或HDL语言描述了一个逻辑电路后,PLD/FPGA 开发软件会自动计算逻辑电路的所有可能的结果,并把结
16、果事先写入RAM,这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。3.2.1 FPGA的器件结构与工作原理FPGA(Field Programmable Gate Array)即现场可编程逻辑阵列,是大规模可编程集成电路的主流器件。FPGA一般由三种可编程电路和一个用于存放编程数据的SRAM(静态随机存储器)组成,这三种可编程电路是:可编程逻辑阵列LAB(Logic Array Block),输入输出模块IOB (I/O Block)和互连资源IR(Interconnect Resource)。FPGA可编程逻辑形成的方法是基于查找表LUT (Lo
17、ok Up Table)结构的,LUT是可编程的最小逻辑构成单元4。1.可编程逻辑阵列LAB可编程逻辑阵列是由一系列相邻的逻辑单元LE (Logic Element)构成的,每个LAB包括八个逻辑单元LE、相连的进位链和级联链,LAB控制信号和LAB局部互连。LAB的构成、ACEK系列芯片的“粗粒度(coarse-grained )结构,有利于EDA软件进行布局布线,优化器件的利用进而提高整个数字系统的性。其中的逻辑单元LE是一种基于查找表的函数发生器。它能够实现4输入1输出的任意逻辑函数。每个LE包含一个4输入的查找表、一个带有同步使能的可编程触发器、一个进位链和一个级联链。每个LE有两个输
18、出分别可以驱动局部互连和快速通道互连。LE有两个输出驱动内部互连,一个是驱动局部互连输出,另一个驱动行或列的快速通道Fast Track的互连输出,这两个输出可以单独控制。因此在一个逻辑单元LE中的触发器和查找表能够用来完成不相关的功能,从而提高LE的资源利用率。在ACEK系列芯片的结构中还提供了两种专用的高速数据通道,用于连接相邻的LE,但不占用局部互连通路,它们是进位链和级联链。进位链用来支持高速计数器和加法器,它提供了LE之间的决速向前进位功能。来自低位的进位信号经进位链向前直接送到高位,同时馈入查找表和进位链的下一段。这种特点使得ACEK结构能够实现高速计数器、加法器和宽位比较器。级联
19、链可以用来实现多输入数的逻辑函数。相邻的查找表并行地完成部分逻辑功能,级联链把中间结果拼接起来。进位链和级联链的使用有利于提高器件的工作速度,但是大量使用进位链和级联链会限制布局布线的灵活性,导致资源的浪费。因此在设计过程应该权衡考虑,在FPGA芯片资源利用和工作速度之间寻求平衡。2.输入/输出模块IOBACEK器件的I/O引脚是由一些I/O单元驱动的。IOE (I/O Element)位于快速通道的行和列末端,包含一个双向的缓冲器和一个寄存器。这个寄存器可以用作需要快速建立时间的外部数据输入寄存器,也可以作为需要快速“时钟到输出”性能的数据输出寄存器。IOE可以配置成输入、输出或双向口。AC
20、EK器件中的IOE具有许多特性,支持JTAG编程、三态缓冲和漏极开路输出等等。每个IOE的时钟、清零、时钟使能和输出使能的控制均由I/O控制信号网络提供,采用高速驱动以减小通过器件的时间偏差。此外,ACEK器件还提供了若干专用输入引脚,这些引脚用来驱动IOE寄存器的控制端,使用了专用的布线通道,以便具有比快速通道更短的延迟和更小的偏差。3.互连资源IR可编程的互连资源包括各种长度的金属连线线段和一些可编程的连线开关,它们将各个逻辑阵列之间、及其与IO模块之间互相连接起来,构成各种功能复杂的系统。在ACEK中互连结构是通过快速通道(Fast Track)实现的。Fast Track遍布于整个AC
21、EK器件,是一系列水平和垂直走向的连续式布线通道。每一行的LAB都有一个专用的“行互连”,“行互连”可以驱动。I/O引脚或馈送到器件中的其LAB;“列互连”连接各行,也能驱动I/O引脚。这种布线结构能够有效提高布线效率,使得即使非常复杂的设计也能够测定其延时性。4.嵌人式阵列块EAB嵌人式阵列块EAB是在输入输出口上带有寄存器的灵活的RAM块,是由一系列嵌人式RAM单元组成的。EAB的逻辑功能是在配置期间,用只读模式对EAB编程产生一个大型查找表来实现的。采用查找表实现组合逻辑比一般算法快,EAB的快速时间通道使得这一先进性能进一步得到加强。当要实现存储器功能时,每个EAB提供2048比特位,
22、每一个EAB是一个独立的结构,它具有共同的输入、互连和控制信号。每个EAB含有一个行互连馈入端,EAB的输出能够同时驱动行互连通道和列互连通道。这一特性增加了EAB的可利用布线资源。因此,EAB可以非常方便地用于实现一些规模不大的RAM, ROM, FIFO等功能模块;同时在实现地址译码器、状态机、微控制器等复杂逻辑时也具备了一定优势5。3.2.2 基于EDA平台的FPGA开发流程一个完整、典型的EDA设计流程67即是自顶向下设计方法的具体实施过程,也是EDA软件本身的组成结构。在实践中进一步了解支持这一个设计流程的诸多设计工具,有利于排解设计中的具体问题,提高设计质量。1.设计输入基于EDA
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 FPGA 计算器 设计 47
限制150内