第1章FPGA基本概念与DE2开发平台第1章FPGA基本概念与DE2开发平台1.1可编程逻辑器件1.2CycloneⅡ系列FPGA1.3DE2开发平台1.4DE2平台的开发环境第1章FPGA基本概念与DE2开发平台1.1可编程逻辑器件1.1.1可编程逻辑器件概述数字电子领域中三种基本的器件类型为存储器、微处理器和逻辑器件。存储器用来存储数据表、数据库、程序代码等随机信息;微处理器通过执行软件指令来完成如文字处理、视频处理及工业控制等各种任务;逻辑器件提供器件间的接口、数据通信、信号处理、数据显示、时序和控制操作以及系统运行等各种特定功能。逻辑器件可分为两大类,即固定逻辑器件和可编程逻辑器件(PLD)。第1章FPGA基本概念与DE2开发平台固定逻辑器件中的电路是永久性的,用于完成一种或一组功能。固定逻辑器件一旦制造完成,就无法改变,专用集成电路(ASIC)就是其中的一种。根据器件复杂程度的不同,固定逻辑器件从设计、定型到最终生产所需要的时间一般为数月至一年多不等,如果器件工作不满足设计要求,或者应用要求发生了变化,就必须重新开发全新的设计。设计和验证固定逻辑的前期工作需要大量的“非重发性工程成本”,或简称NRE。NRE表示在固定逻辑器件最终从芯片制造厂制造出来以前客户需要投入的所有成本,这些成本包括工程资源、昂贵的设计工具软件、用来制造芯片不同金属层的昂贵的光刻掩模组以及初始原型器件的生产成本。这些NRE成本可能从数十万美元至数百万美元不等。第1章FPGA基本概念与DE2开发平台可编程逻辑器件作为一类标准成品部件,能够为用户提供各种逻辑能力、速度和电压特性,而且可以在任何时候对此类器件进行修改,以完成多种不同的功能。对于可编程逻辑器件,设计人员可利用价格低廉的软件工具快速开发、仿真和测试其设计,然后将设计快速编程到器件中,并立即在实际运行的电路中对设计进行测试。原型中使用的PLD器件与正式生产最终设备(如网络路由器、DSL调制解调器、DVD播放器或汽车导航系统)时所使用的PLD器件完全相同,完全没有NRE成本,最终的设计也比采用定制固定逻辑器件完成得更快。采用PLD的另一个关键优点是在设计阶段客户可根据需要不断地修改电路,直到对设计工作感到满意为止,这是因为PLD的结构是基于可重写的存储器技术,当要改变设计时,只需要简单地对器件进行重新编程即可。一旦设计完成,客户可立即投入生产,即利用最终的软件设计文件简单地对PLD器件进行编程。第1章FPGA基本概念与DE2开发平台可编程逻辑器件的两种主要类型是现场可编程门阵列(FPGA)和复杂可编程逻辑器件(CPLD),这两类可编程逻辑器件的结构不同。与CPLD相比,FPGA可提供更高的逻辑密度、更丰富的特性和更高的性能。最新的FPGA器件可提供数百万门的逻辑电路,这些先进的器件还提供诸如内建硬核处理器、大容量存储器、时钟管理系统等特性,并支持多种最新的高速接口技术。FPGA应用范围广泛,如在数据处理和存储、仪器仪表、电信和数字信号处理等方面都有大量应用。与FPGA相比,CPLD提供的逻辑资源少得多,最高约一万门左右。但CPLD可预测性好,对于关键的控制应用非常理想。而且CPLD器件功耗相对较低且价格低廉,使其在成本敏感的、电池供电的便携式应用(如移动电话和数字手持助理)中非常理想。第1章FPGA基本概念与DE2开发平台《EDN》杂志对可编程逻辑器件作过这样的评价:“可编程逻辑器件是逻辑器件产品中增长最快的领域,这主要有两个基本原因。可编程逻辑器件不断提高的单片器件逻辑门数量集成了众多功能,不然的话,这些功能只能采用大量分立逻辑和存储器芯片才能实现,这可以改善最终系统的体积、功耗、性能、可靠性和成本。同样重要的是这样的事实,在许多情况下只需要数十秒或数分钟的时间,就可以在工作站或系统组装线上配置和重新配置这些器件。这一能力提供了强大的灵活性,支持迅速地对最后一分钟的设计修改,以及在设计定型前对各种想法进行原型实验,同时还可满足在消费者需求和竞争压力下不断缩短的上市时间最终期限要求。”(EDN,“PLD年度目录”,2000年8月17日。)第1章FPGA基本概念与DE2开发平台固定逻辑器件和可编程逻辑器件各有自己的优点。例如,固定逻辑器件适合大批量应用,因为它们可更为经济地大批量生产。对有些需要极高性能的应用,固定逻辑器件也可能是最佳的选择。然而,可编程逻辑器件提供了一些优于固定逻辑器件的重要优点,主要包括以下几个方面:(1)在设计过程中为客户提供了更大的灵活性,因为对于可编程逻辑器件来说,设计反复只需要简单地改变编程文件就可以了,而且设计改变的结果可立即在工作器件中看到。(2)不需要漫长的前置时间来制造原型或正式产品,因为可编程逻辑器件已经放在分销商的货架上并可随时交付。(3)不需要客户支付高昂的NRE成本和购买昂贵的掩模组,因为供应商在设计其可编程器件时已经支付了这些成本,并且可通过可编程逻辑器件产品线延续多年的生命期来分摊这些成本。第1章FPGA基本概念与DE2开发平台(4)允许客户在需要时仅订购所需要的数量,从而使客户可控制库存。采用固定逻辑器件的客户经常会需要废弃过量的库存,而当对其产品的需求高涨时,他们又可能为器件供货不足而苦恼,并且不得不面对生产延迟的现实。(5)甚至在设备交付给客户以后还可以重新编程。由于有了可编程逻辑器件,因此设备制造商现在可以为已经安装在现场的产品增加新功能或者进行升级。要实现这一点,只需要通过Internet将新的编程文件下载到可编程逻辑器件中,就可以在系统中创建出新的硬件逻辑。第1章FPGA基本概念与DE2开发平台(6)有越来越多的知识产权(IP)核心库的支持。用户可利用这些预定义和预测试的软件模块在可编程逻辑器件内迅速实现系统功能。IP核心包括复杂数字信号处理算法、存储器控制器直到总线接口和成熟的软核微处理器等。此类IP核心为客户节约了大量的时间和费用,否则用户可能需要数月的时间才能实现这些功能,而且还会进一步延迟产品推向市场的时间。可编程逻辑器件的价值在于其能够大大缩短电子产品制造商的开发周期,以及帮助他们更快地将产品推向市场。随着PLD供应商继续致力于在可编程逻辑器件中集成更多的功能、降低其成本并提高能够节约时间的IP核心的可用性,可编程逻辑器件一定会在数字设计人员中进一步普及。第1章FPGA基本概念与DE2开发平台1.1.2CPLD的结构与原理大部分CPLD采用基于乘积项(Product-Term)的PLD结构,如Altera公司的MAX7000和MAX3000系列(EEPROM工艺)、Xilinx公司的XC9500系列(FLASH工艺)以及Lattice公司和Cypress公司的大部分产品(EEPROM工艺)。第1章FPGA基本概念与DE2开发平台这里先看一下这种PLD的总体结构(以MAX7000系列为例,其他型号的结构与此都非常相似)。图1.1是MAX7000E和MAX7000S系列CPLD的结构框图。这种PLD一般由三部分组成:宏单元(Macrocell)、可编程连线(PIA)和I/O控制块。宏单元是PLD的基本结构,用以实现基本的逻辑功能。在MAX7000系列CPLD中,每16个宏单元组成一个逻辑阵列块(LAB)。可编程连线负责信号传递,连接所有的宏单元。I/O控制块负责输入/输出的电气特性控制,比如可以设定集电极开路输出、摆率控制、三态输出等。图1.1左上角的INPUT/GCLK1、INPUT/OE2/GCLK2和INPUT/OE1是全局时钟、清零和输出使能信号,这几个信号通过PIA(可编程互连阵列)及专用连线与PLD中的每个宏单元相连,这些信号到每个宏单元的延时相同并且延时最短。第1章FPGA基本概念与DE2开发平台图1.1基于乘积项的PLD内部结构第1章FPGA基本概念与DE2开发平台MAX7000E和MAX7000S系列CPLD的宏单元结构如图1.2所示。每个宏单元主要由三部分组成:逻辑阵列、乘积项选择矩阵和可编程寄存器。图中左侧是逻辑阵列,也就是一个与或阵列,阵列连线的每一个交点都是一个可编程熔丝,如果导通就实现“与”逻辑;其后的乘积项选择矩阵是一个“或”阵列,两者一起完成组合逻辑。图右侧是一个可编程寄存器,它的时钟、清零输入都可以编程选择,可以使用专用的全局清零和全局时钟,也可以使用由内部逻辑(逻辑阵列)产生的时钟和清零。如果不需要该寄存器,也可以将它旁路,使信号直接输给PIA或输出到I/O脚。第1章FPGA基本概念与DE2开发平台图1.2宏单元结构第1章FPGA基本概念与DE2开发平台图1.3是一个简单的电路,参照该电路具体说明PLD是如何利用以上结构来实现特定逻辑的。假设图1.3中组合逻辑的输出(AND3的输出)为f,则f = (A + B)CD= ACD+ BDD第1章FPGA基本概念与DE2开发平台图1.3一个简单的组合逻辑电路第1章FPGA基本概念与DE2开发平台CPLD将以图1.4所示的方式实现图1.3中的简单组合逻辑电路。A、B、C、D由CPLD芯片的管脚输入后进入可编程连线阵列(PIA),在内部会产生A、A、B、B、C、C、D、D等8个输出。图中每一个叉表示相连(可编程熔丝导通),可以得到:f = f1 + f2D = ACD+ BCD从而实现了图1.3中的组合逻辑。图1.3电路中D触发器的实现比较简单,直接利用宏单元中的可编程D触发器就可实现。时钟信号CLK由I/O脚输入后进入芯片内部的全局时钟专用通道,直接连接到可编程触发器的时钟端。可编程触发器的输出与I/O脚相连,把结果输出到芯片管脚,这样CPLD就完成了如图1.3所示电路的功能。以上这些步骤都是由软件自动完成的,不需要人为干预。第1章FPGA基本概念与DE2开发平台图1.4电路在CPLD中的实现第1章FPGA基本概念与DE2开发平台图1.3所示的电路是一个很简单的例子,只需要一个宏单元就可以完成。对于一个复杂的电路,一个宏单元是不能实现的,这时就需要通过并联扩展项和共享扩展项将多个宏单元相连,宏单元的输出也可以连接到可编程连线阵列,再作为另一个宏单元的输入。这样,CPLD就可以实现更复杂的逻辑。这种基于乘积项的PLD基本上都是由EEPROM和FLASH工艺制造的,上电即可自动工作,无需其他芯片配合。第1章FPGA基本概念与DE2开发平台1.1.3FPGA的结构与原理FPGA最常用的结构是查找表(Look-Up-Table,LUT)结构,如Altera的ACEX、APEX、Cyclone、CycloneⅡ系列和Xilinx的Spartan、Virtex系列等。第1章FPGA基本概念与DE2开发平台这里以CycloneⅡ系列FPGA为例来说明。逻辑单元(LogicElement,LE)是构成FPGA的基本单位之一,一个LE主要由一个4输入LUT、一个寄存器及进位和互连逻辑组成。LUT本质上是一个RAM。目前FPGA中多使用4输入的LUT,即一个LUT可以看成有4位地址线的16×1的RAM。当用户通过原理图或HDL语言描述了一个逻辑电路以后,FPGA开发软件会自动计算逻辑电路所有可能的结果,并把结果事先写入RAM,这样每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。也可以把它当作一个4输入的函数发生器,能够实现4变量输入的所有逻辑。图1.5是CycloneⅡ系列FPGA的一个LE的普通工作模式原理图。FPGA的基本单元一般为一个4输入查找表后接一个寄存器。第1章FPGA基本概念与DE2开发平台图1.5CycloneⅡ系列FPGA的LE的普通工作模式第1章FPGA基本概念与DE2开发平台表1.1为一个4输入与门的例子。A、B、C、D由FPGA芯片的管脚与可编程连线相连,然后作为地址线连到LUT,LUT中已经事先写入了所有可能的逻辑结果,通过地址查找到相应的数据然后输出,从而实现了组合逻辑。第1章FPGA基本概念与DE2开发平台表1.1输入查找表实际逻辑电路LUT的实现方式outABDCABDC16×1RA