可编程逻辑器件与FPGA简介
可编程逻辑器件(Programmable Logic Device,PLD)是一类半定制的通用性器件,用户可以通过对PLD器件进行编程来实现所需的逻辑功能。与专用集成电路ASIC相比,PLD具有灵活性高、设计周期短、成本低、风险小等优势,因而得到了广泛应用,各项相关技术也迅速发展起来,PLD目前已经成为数字系统设计的重要硬件基础。
PLD从20世纪70年代发展到现在,已经形成了许多类型的产品,其结构、工艺、集成度、速度等方面都在不断完善和提高。随着数字系统规模和复杂度的增长,许多简单PLD产品已经逐渐退出市场,目前使用最广泛的可编程逻辑器件有两类:现场可编程门阵列(Field
Programmable Gate Array,FPGA)和复杂可编程逻辑器件(Complex Programmable Logic
Device,CPLD)。
FPGA和CPLD的内部结构稍有不同。通常,FPGA中的寄存器资源比较丰富,适合同步时序电路较多的数字系统;CPLD中组合逻辑资源比较丰富,适合组合电路较多的控制应用。在这两类可编程逻辑器件中,CPLD提供的逻辑资源较少,而FPGA提供了最高的逻辑密度、最丰富的特性和极高的性能,已经在通信、消费电子、医疗、工业和军事等各应用领域当中占据重要地位。因此,本文主要针对FPGA进行阐述。
图1 FPGA基本结构(略)
FPGA是一类高集成度的可编程逻辑器件,起源于美国的Xillnx公司,该公司于1985年推出了世界上第一块FPGA芯片。在这二十年的发展过程中,FPGA的硬件体系结构和软件开发工具都在不断的完善,日趋成熟。从最初的1200个可用门,90年代时几十万个可用门,发展到目前数百万门至上千万门的单片FPGA芯片,Xilinx、Altera等世界顶级厂商已经将FPGA器件的集成度提高到一个新的水平。FPGA结合了微电子技术、电路技术、EDA技术,使设计者可以集中精力进行所需逻辑功能的设计,缩短设计周期,提高设计质量。
FPGA结构原理与特点
FPGA基本结构
目前生产FPGA的公司主要有Xilinx、Altera、Actel、Lattice、QuickLogic等,生产的FPGA品种和型号繁多。尽管这些FPGA的具体结构和性能指标各有特色,但它们都有一个共同之处,即由逻辑功能块排成阵列,并由可编程的互连资源连接这些逻辑功能块,从而实现不同的设计。
典型的FPGA通常包含三类基本资源:可编程逻辑功能块、可编程输入/输出块和可编程互连资源,基本结构如图1所示。可编程逻辑功能块是实现用户功能的基本单元,多个逻辑功能块通常规则地排成一个阵列结构,分布于整个芯片;可编程输入/输出块完成芯片内部逻辑与外部管脚之间的接口,围绕在逻辑单元阵列四周;可编程内部互连资源包括各种长度的连线线段和一些可编程连接开关,它们将各个可编程逻辑块或输入/输出块连接起来,构成特定功能的电路。用户可以通过编程决定每个单元的功能以及它们的互连关系,从而实现所需的逻辑功能。不同厂家或不同型号的FPGA,在可编程逻辑块的内部结构、规模、内部互连的结构等方面经常存在较大的差异。
除了上述构成FPGA基本结构的三种资源以外,随着工艺的进步和应用系统需求的发展,一般在FPGA中还可能包含以下可选资源:
存储器资源(块RAM、分布式RAM);
数字时钟管理单元(分频/倍频、数字延迟、时钟锁定);
算数运算单元(高速硬件乘法器、乘加器);
多电平标准兼容的I/O接口;
高速串行I/O接口;
特殊功能模块(以太网MAC等硬IP核);
微处理器(PowerPC405等硬处理器IP核)。
下面以Xilinx公司的Spartan-II系列以及Altera公司的Cyclone-II系列FPGA为例,介绍FPGA的一般结构。Xilinx公司的Spartan-II系列FPGA器件的基本结构如图2所示。主要包括5个可配置部分:(1)可配置逻辑块(Configurable
Logic Blocks,CLBs),用于实现大部分逻辑功能;(2)在CLBs的四周分布着可编程的输入输出块(Input/Output
Blocks,IOBs),提供封装引脚与内部逻辑之间的连接接口;(3)丰富的多层互连结构的可编程连线(未画出);(4)片上的随机存取块状RAM(BLOCK
RAM);(5)全数字式延迟锁相环(DLL)时钟控制块,与每个全局时钟输入缓冲器相连,该闭环系统确保时钟边沿到达内部触发器与其到达输入引脚同步,有效地消除时钟分配的延迟。
Altera公司FPGA器件Cyclone-II系列的基本结构如图3所示。主要包括:(1)逻辑阵列,由多个逻辑阵列块(Logic
Array Blocks,LABs)排列而成,用于实现大部分逻辑功能;(2)在芯片四周分布着可编程的输入输出单元(Input/Output
Elements,IOEs),提供封装引脚与内部逻辑之间的连接接口;(3)丰富的多层互连结构的可编程连线(未画出);(4)片上的随机存取块状RAM;(5)锁相环(PLL),用于时钟的锁定与同步、能够实现时钟的倍频和分频;(6)高速的硬件乘法器,有助于实现高性能的DSP功能。
图3 Altera Cyclone-II系列FPGA基本结构(略)
查找表LUT
目前绝大部分FPGA都采用查找表(Look Up Table,LUT)技术,如Altera的ACEX、APEX、Cyclone、Stratix系列,Xilinx的Spartan、Virtex系列等。这些FPGA中的最基本逻辑单元都是由LUT和触发器组成的。
查找表简称为LUT,本质上就是一个RAM。目前FPGA中多使用4输入的LUT,所以每一个LUT可以看成一个有4位地址线的16x1的RAM。当用户通过原理图或HDL语言描述了一个逻辑电路以后,FPGA开发软件会自动计算逻辑电路的所有可能的结果,并把结果事先写入RAM。这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出该地址对应的内容,然后输出即可。
由于LUT主要适合SRAM工艺生产,所以目前大部分FPGA都是基于SRAM工艺的。而SRAM工艺的芯片在掉电后信息就会丢失,因此需要外加一片专用的配置芯片。在上电的时候,由这个专用配置芯片把数据加载到FPGA中,FPGA就可以正常工作。少数FPGA产品采用反熔丝或Flash工艺,掉电后配置信息不会丢失,因此这种FPGA芯片不需要外加的专用配置芯片。
FPGA的编程技术
目前,市场上有三种基本的FPGA编程技术:SRAM、反熔丝、Flash。其中,SRAM是迄今为止应用范围最广的架构,主要因为它速度快且具有可重编程能力,而反熔丝FPGA只具有一次可编程(One
Time Programmable,OTP)能力。基于Flash的FPGA是FPGA领域比较新的技术,也能提供可重编程功能。基于SRAM的FPGA器件经常带来一些其他的成本,包括:启动PROMS支持安全和保密应用的备用电池等等。基于Flash和反熔丝的FPGA没有这些隐含成本,因此可保证较低的总系统成本。
基于SRAM的FPGA器件
这类产品是基于SRAM结构的可再配置型器件,上电时要将配置数据读入片内SRAM中,配置完成就可进入工作状态。掉电后SRAM中的配置数据丢失,FPGA内部逻辑关系随之消失。这种基于SRAM的FPGA可以反复使用。
反熔丝FPGA
采用反熔丝编程技术的FPGA内部具有反熔丝阵列开关结构,其逻辑功能的定义由专用编程器根据设计实现所给出的数据文件,对其内部的反熔丝阵列进行烧录,从而使器件实现相应的逻辑功能。这种器件的缺点是只能一次性编程;优点是具有高抗干扰性和低功耗,适合于要求高可靠性、高保密性的定型产品。
基于Flash的FPGA
在这类FPGA器件中集成了SRAM和非易失性EEPROM两类存储结构。其中SRAM用于在器件正常工作时对系统进行控制,而EEPROM则用来装载SRAM。由于这类FPGA将EEPROM集成在基于SRAM工艺的现场可编程器件中,
因而可以充分发挥EEPROM的非易失特性和SRAM的重配置性。掉电后,配置信息保存在片内的EEPROM中,因此不需要片外的配置芯片,有助于降低系统成本、提高设计的安全性。
FPGA器件性能参数和指标
如前所述,目前市场上FPGA的品种和型号相当多,它们的具体结构、可用资源以及性能都各具特色。为了在系统设计中选择合适的FPGA器件,充分发挥器件的能力,设计者必须了解FPGA的各项参数和性能指标。表1列出了与器件选型和实际应用密切相关的参数和指标。
FPGA器件选型原则
数字系统逻辑功能设计之前的一个重要问题就是FPGA器件的选型,包括厂商的选择以及器件系列和型号的选择。下面介绍FPGA选型的一些原则和建议。
表1:FPGA器件的性能参数与指标(略)
FPGA厂商的选择
每个FPGA厂商都有自己特有的核心技术和相应的产品。对于继承性产品的开发,尽量使用熟悉并一直使用的FPGA厂商的产品;对于新产品的开发,则可以根据待设计系统的特点和要求,以及各种FPGA器件的特性来初步选择FPGA厂商和产品系列。如表2所示。
表2 :初步选择FPGA厂商和产品系列(略)
另外,还可以根据FPGA芯片成本来选择FPGA器件厂商和产品系列。比如Xilinx的Virtex系列和Altera的Stratix系列FPGA属于高性能产品;而Xilinx的Spartan系列和Altera的Cyclone则系列属于低成本FPGA器件。
FPGA型号的选择
选择具体型号的FPGA时,需要考虑的因素较多,包括管脚数量、逻辑资源、片内存储器、功耗、封装形式等等。各种FPGA器件的参数如表3所示。另外,为了保证系统具有较好的可扩展性和可升级性,一般应留出一定的资源余量。根据系统需求估计,使用表3列出的数据即可大致选出可能的FPGA器件。
表3:选择FPGA具体型号(略)
FPGA外围器件的选择
FPGA选定之后,还有根据FPGA的特性,为其选择合适的电源芯片、片外存储器芯片、配置信息存储器等多种器件。在系统设计和开发阶段,应该尽量选择升级空间大、管脚兼容的器件。在产品开发后期再考虑将这些外围器件替换为其他的兼容器件以降低成本。
FPGA技术的发展趋势
随着微电子技术、EDA技术、以及应用系统需求的发展,FPGA正在逐渐成为数字系统开发的平台,并将在以下方面继续完善和提高:
(1) 高集成度、大容量、低成本、低电压、低功耗;
(2) 资源多样化;
(3) 适用于片上系统:处理器、高速串行I/O、DSP等等;
(4) 深亚微米工艺的使用。目前基于90nm工艺的FPGA已经商用,正在向65nm挺进;
(5) 各种软硬IP库的发展和完善;
(6) 动态可重构技术实用化。
|