您好,欢迎来到九壹网。
搜索
您的当前位置:首页2第2章1 FPGACPLD基本结构及原理

2第2章1 FPGACPLD基本结构及原理

来源:九壹网
第二章FPGA/CPLD基本概念

本章介绍可编程逻辑器件、FPGA的基本概念。 节2.1简单介绍可编程逻辑器件的基本概念,对CPLD和FPGA两类不同结构的可编程逻辑器件的工作原理和结构进行比较。

节2.2以EP2C35F672C6为代表,较为详细地介绍了Cyclone II系列FPGA的原理、结构及器件的资源。

2.1可编程逻辑器件

1、可编程逻辑器件概述

数字电子领域中三种基本的器件类型为存储器、微处理器和逻辑器件。 存储器用来存储程序代码等随机信息;微处理器通过执行软件指令来完成各种任务。

逻辑器件提供器件间的接口、数据通信、信号处理、数据显示、时序和控制操作以及系统运行等各种特定功能。

逻辑器件可分为两大类,即固定逻辑器件和可编程逻辑器件(PLD)。 固定逻辑器件中的电路是永久性的,用于完成一种或一组功能。固定逻辑器件一旦制造完成,就无法改变,专用集成电路(ASIC)就是其中的一种。

可编程逻辑器件作为一类标准成品部件,能够为用户提供各种逻辑能力、速度和电压特性,而且可以在任何时候对此类器件进行修改,以完成多种不同的功能。

对于可编程逻辑器件,设计人员可利用价格低廉的软件工具快速开发、仿真和测试其设计,然后将设计快速编程到器件中,并立即在实际运行的电路中对设计进行测试。原型中使用的PLD器件与正式生产最终设备时所使用的PLD器件完全相同,最终的设计也比采用定制固定逻辑器件完成得更快。

采用PLD的另一个关键优点是在设计阶段客户可根据需要不断地修改电路,直到对设计工作感到满意为止,这是因为PLD的结构是基于可重写的存储器技术,当要改变设计时,只需要简单地对器件进行重新编程即可。一旦设计完成,客户可立即投入生产,即利用最终的软件设计文件简单地对PLD器件进行编程。

可编程逻辑器件的两种主要类型是现场可编程门阵列(FPGA)和复杂可编程逻辑器件(CPLD),这两类可编程逻辑器件的结构不同。

与CPLD相比,FPGA可提供更高的逻辑密度、更丰富的特性和更高的性能。最新的FPGA器件可提供数百万门的逻辑电路,这些先进的器件还提供诸如内建硬核处理器、大容量存储器、时钟管理系统等特性,并支持多种最新的高速接口技术。FPGA应用范围广泛,如在数据处理和存储、仪器仪表、电信和数字信号处理等方面都有大量应用。

与FPGA相比,CPLD提供的逻辑资源少得多,最高约一万门左右。但CPLD可预测性好,对于关键的控制应用非常理想。而且CPLD器件功耗相对较低且价格低廉,使其在成本敏感的、电池供电的便携式应用(如移动电话和数字手持助理)中非常理想。

固定逻辑器件和可编程逻辑器件各有自己的优点。例如,固定逻辑器件适合大批量应用,因为它们可更为经济地大批量生产。对有些需要极高性能的应用,固定逻辑器件也可能是最佳的选择。

可编程逻辑器件提供了一些优于固定逻辑器件的重要优点,主要包括以下几个方面:

(1)、在设计过程中为客户提供了更大的灵活性,因为对于可编程逻辑器件

来说,设计反复只需要简单地改变编程文件就可以了,而且设计改变的结果可立即看到。

(2)、不需要漫长的前置时间来制造原型或正式产品,因为可编程逻辑器件已经放在分销商的货架上并可随时交付。

(3)、允许客户在需要时仅订购所需要的数量,从而使客户可控制库存。 (4)、甚至在设备交付给客户以后还可以重新编程。有了可编程逻辑器件,设备制造商现在可以为已经安装在现场的产品增加新功能或者进行升级。要实现这一点,只需要通过Internet将新的编程文件下载到可编程逻辑器件中,就可以在系统中创建出新的硬件逻辑。

(6)、有越来越多的知识产权(IP)核心库的支持。IP核心包括复杂数字信号处理算法、存储器控制器直到总线接口和成熟的软核微处理器等。此类IP核心为客户节约了大量的时间和费用。

可编程逻辑器件的价值在于其能够大大缩短电子产品制造商的开发周期,以及帮助他们更快地将产品推向市场。随着PLD供应商继续致力于在可编程逻辑器件中集成更多的功能、降低其成本并提高能够节约时间的IP核心的可用性,可编程逻辑器件一定会在数字设计人员中进一步普及。 2、CPLD的结构与原理

大部分CPLD釆用基于乘积项(Product-Term)的PLD结构,如Altera公司的MAX7000和MAX3000系列(EEPROM工艺)、Xilinx公司的XC9500系列(FLASH工艺)以及Lattice公司和Cypress公司的大部分产品(EEPROM工艺)。

图2.1基于乘积项的PLD内部结构

图2.1是MAX7000E和MAX7000S系列CPLD的结构框图。这种PLD—般由三部分组成:宏单元(Macro cell)、可编程连线(PIA)和I/O控制块。

宏单元是PLD的基本结构,用以实现基本的逻辑功能。在MAX7000系列CPLD中,每16个宏单元组成一个逻辑阵列块(LAB)。

可编程连线负责信号传递,连接所有的宏单元。

I/O控制块负责输入/输出的电气特性控制,比如可以设定集电极开路输出、摆率控制、三态输出等。

图2.1左上角的INPUT/GCLK1、INPUT/OE2/GCLK2和INPUT/OE1是全局时钟、清零和输出使能信号,这几个信号通过PIA(可编程互连阵列)及专用连线与PLD中的每个宏单元相连,这些信号到每个宏单元的延时相同并且延时最短。

图2.2宏单元结构

CPLD的宏单元结构如图2.2所示。每个宏单元主要由三部分组成:逻辑阵列、乘积项选择矩阵和可编程寄存器。

图中左侧是逻辑阵列,也就是一个与或阵列,阵列连线的每一个交点都是一个可编程熔丝,如果导通就实现“与”逻辑;其后的乘积项选择矩阵是一个“或”阵列,两者一起完成组合逻辑。

图右侧是一个可编程寄存器,它的时钟、清零输入都可以编程选择,可以使用专用的全局清零和全局时钟,也可以使用由内部逻辑(逻辑阵列)产生的时钟和清零。如果不需要该寄存器,也可以将它旁路,使信号直接输给PIA或输出到I/O脚。

图2.3是一个简单的电路,参照该电路具体说明PLD是如何利用以上结构来实现特定逻辑的。假设图2.3中组合逻辑的输出(AND3的输出)为f,则

fABCDACDBCD

图2.3一个简单的组合逻辑电路

CPLD将以图2.4所示的方式实现图2.3中的简单组合逻辑电路。

图2.4电路在CPLD中的实现

A、B、C、D由CPLD芯片的管脚输入后进入可编程连线阵列(PIA),在内部会产生A、、B、、C、、D、等8个输出。图中每一个叉表示相连(可编程溶丝导通),从而实现了图2.3中的组合逻辑。

ABCDff1f2ACDBCD。

图2.3电路中D触发器的实现比较简单,直接利用宏单元中的可编程D触发器就可实现。时钟信号CLK由I/O脚输入后进入芯片内部的全局时钟专用通道,直接连接到可编程触发器的时钟端。可编程触发器的输出与I/O脚相连,把结果输出到芯片管脚,这样CPLD就完成了如图2.3所示电路的功能。

以上这些步骤都是由软件自动完成的,不需要人为干预。

图2.3所示的电路是一个很简单的例子,只需要一个宏单元就可以完成。对于一个复杂的电路,一个宏单元是不能实现的,这时就需要通过并联扩展项和共享扩展项将多个宏单元相连,宏单元的输出也可以连接到可编程连线阵列,再作为另一个宏单元的输入。这样,CPLD就可以实现更复杂的逻辑。这种基于乘积项的PLD基本上都是由EEPROM和FLASH工艺制造的,上电即可自动工作,无需其他芯片配合。

3、FPGA的结构与原理

FPGA最常用的结构是查找表(Look Up Table,LUT)结构,如Altera的ACEX、APEX,Cyclone、Cyclone II系列和Xilinx的Spartan、Virtex系列等。

以Cyclone II系列FPGA为例。逻辑单元(Logic Element,LE)是构成FPGA的基本单位之一,一个LE主要由一个4输入LUT、一个寄存器及进位和互连逻辑组成。

LUT本质上是一个RAM。目前FPGA中多使用4输入的LUT,即一个LUT可以看成有4位地址线的16x1的RAM。当用户通过原理图或HDL语言描述了一个逻辑电路以后,FPGA开发软件会自动计算逻辑电路所有可能的结果,并把结果事先写入RAM,这样每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。也可以把它当作一个4输入的函数发生器,能够实现4变量输入的所有逻辑。

图2.5是Cyclone II系列FPGA的一个LE的普通工作模式原理图。FPGA的基本单元一般为一个4输入查找表后接一个寄存器。

图2.5 Cyclone II系列FPGA的LE的普通工作模式

表2.1为一个4输入与门的例子。A、B、C、D由FPGA芯片的管脚与可编程连线相连,然后作为地址线连到LUT,LUT中已经事先写入了所有可能的逻辑结果,通过地址查找到相应的数据然后输出,从而实现了组合逻辑。

表2.1输入查找表 实际逻辑电路 LUT的实现方式 ABCD输入 逻辑输出 0000 0 0001 0 … 0 1111 1 如果要用Cyclone II FPGA 地址 RAM中存储内容 0000 0 0001 0 … 0 1111 1 实现图2.3所示的电路,fACDBCD用查找表实现,则电路中的D触发器可直接利用

LUT后的寄存器来实现。时钟信号CLK由I/O脚输入后进入芯片内部的时钟专用通道,直接连接到触发器的时钟端。触发器的输出可以与I/O脚相连,把结果输出到芯片管脚,这样FPGA就完成了图2.3所示电路的功能。

与CPLD—样,这些步骤都是由软件自动完成的,不需要人为干预。

这个电路是一个很简单的例子,只需要一个LUT加上一个触发器就可以完成。对于一个LUT无法完成的电路,需要通过进位逻辑将多个单元相连,这样FPGA就可以实现复杂的逻辑。

由于LUT主要适合采用SRAM工艺生产,因此目前大部分FPGA都是基于SRAM工艺的,而基于SRAM工艺的芯片在掉电后信息就会丢失,必须外加一片专用配置芯片。上电时,由这个专用配置芯片把数据加载到FPGA中,FPGA才可以正常工作,由于配置时间很短,因而不会影响系统的正常工作。也有少数FPGA采用反熔丝或FLASH工艺,这种FPGA不需要外加专用的配置芯片。

随着技术的发展,在2004年以后,一些厂家推出了一些新的可编程逻辑器件,这些产品模糊了CPLD和FPGA的界线。例如Altera的MAX II系列PLD,就是一种基于FPGA(LUT)结构、集成配置芯片的PLD,本质上它是一种在内部集成了配置芯片的FPGA,但由于配置时间极短,上电后就可以工作,对用户来说,感觉不到配置过程,可以像传统的CPLD一样使用,加上容量和传统的CPLD类似,因此Altera把它归为CPLD。还有像Lattice的XP系列FPGA,也是使用了同样的原理,将外部配置芯片集成到内部,在使用方法上和CPLD类似,但是因为容量大,性能和传统FPGA的相同,也采用LUT架构,所以Lattice把它归为FPGA。

从可编程逻辑器件的结构和原理可以知道,CPLD分解组合逻辑的功能很强,一个宏单元就可以分解十几个甚至二三十个组合逻辑输入。而FPGA的一个LUT只能处理4输入的组合逻辑,因此CPLD适用于设计译码器等复杂的组合逻辑。但FPGA的制造工艺决定了FPGA芯片中包含的LUT和触发器的数量非常多,往往都是成千上万,而CPLD—般只能做到512个逻辑单元,而且如果用芯片价格除以逻辑单元数量,FPGA的平均逻辑单元成本将大大低于CPLD。

如果设计中使用到大量触发器,例如设计一个复杂的时序逻辑,那么使用FPGA就是一个很好的选择。

CPLD具有上电即可工作的特性,而大部分FPGA需要一个加载过程,如果系统要求可编程逻辑器件上电就能工作,那么就应该选择CPLD。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 91gzw.com 版权所有 湘ICP备2023023988号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务