1 引言
现场可编程门阵列(FPGA)在结构上由逻辑功能块排列为阵列,并由可编程的内部连线连接这些
功能块,来实现一定的逻辑功能。 FPGA 可以替代其他 PLD 或者各种中小规模数字逻辑芯片在数字系
统中广泛应用,也是实现具有不同逻辑功能 ASIC 的有效办法。FPGA 是进行原型设计最理想的载体,
原型机的最初框架和实现通过 PFGA 来验证,可以降低成本、缩短开发周期。利用FPGA 的可重配置功
能,可以在使用过程中,在不改变所设计的设备的硬件电路情况下,改变设备的功能。但和所有的数
字电路一样,FPGA 电路中也存在毛刺问题。它的出现会影响电路工作的可靠性、稳定性,严重时会
导致整个数字系统的误动作和逻辑紊乱。在此详细论述了解决此问题的多种方法。
2 FPGA 的功能和结构特点
2.1 FPGA 的功能
FPGA 的功能由逻辑结构的配置数据决定,在工作时,这些配置数据存放在片内的 SRAM 或者熔
丝图上。使用 SRAM 的 FPGA 器件,在工作前需要从芯片外部加载配置数据,这些配置数据可以存放在
片外的 EPROM 或其他存储体上,人们可以控制加载过程,在现场修改器件的逻辑功能。
图1 实际逻辑电路
图2 LUT 的实现方式
2.2 FPGA 的结构特点
FPGA 使用了可编程的查找表(Look Up Table ,LUT)结构,LUT 是可编程的最小逻辑构成单元。
大部分 FPGA 采用基于 SRAM 的查找表逻辑形成结构,就是用 SRAM(静态随机存储器)来构成逻辑函数
发生器。图1、2分别是4输入 LUT 的实际逻辑电路和 LUT 的实现方式。FLEX10KE 系列器件的结构和工
作原理在 Altera 的 FPGA 器件中具有典型性,下面以此类器件为例,介绍 PFGA 的结构。其内部结构
如图3所示:
图3 FLEX10KE 内部结构
FLEX10KE 内部结构包含嵌入式阵列块(EAB,Embedded Array Block)、逻辑阵列块(LAB,Logic
Array Block)、快速通道(Fast Track)互连和输入/输出单元(I/O Element,IOE)四部分。
(1) 嵌入式阵列用来实现各种存储器及复杂的逻辑功能,如数字信号处理、微控制器等。嵌入式阵列
由一系列嵌入式阵列块(EAB)构成。EAB 是在输入输出口上具有寄存器的能变形的 RAM 块。
(2) 逻辑阵列用来实现普通逻辑功能,如计数器、加法器、状态机等。逻辑阵列由一系列逻辑阵列块
(LAB)构成。每个 LAB 包含八个 LE 和一些局部互连。LAB 构成了 FLEX10KE 的“粗粒度”结构,有利
于 EDA 软件进行布局布线,优化器件的利用,提高性能。LE 是 FLEX10KE 结构中的最小单元,每个 LE