FPGA 是基于 PAL、GAL、EPLD、CPLD 和其他可编程设备产品的迅速发 展而出现的。FPGA 当作 ASIC 方面的一种半定制电路产生的,不仅克服了定制 电路的缺点,还攻克了之前可编程元件门电路的不足之处。
ASIC 完成逻辑的基本结构之间的配合是采用确定的与非门的,但是 FPGA 却需要被重复的编写录入,并且仅运用一种容易重复设置的结构。现在大部分的 FPGA 都运用了鉴于 SRAM 技术的查找表结构,因为这样的查找表可以充分满足 这个条件。还有一些军工级别和宇航级别的 FPGA,它们运用的是 Flash 或者熔 丝和反熔丝技术的查找表结构。要对 FPGA 进行反复设置,就可以经过编写录入 程序来更改查找表信息的办法完成。
依据数字电路的常识能够了解到,关于一个 N 输入的逻辑计算,无论是或与 非计算或者异或计算,至多就能够出现 2N 种情况。因此如果提前把对应的情况 存储在一个存储模块,就好比完成了与非门电路的功效。对于 FPGA 来说也是同 一个道理,它经过编写录入代码来设置查找表的内容,进而可以在同样的电路的 情况下完成不一样的要求。
查找表(Look-Up-Table)简称为 LUT,实际上 LUT 也是一个随机读写存储 器(RAM)。现在四输入的 LUT 被广泛运用于 FPGA,因此各个 LUT 能够看作就 是一个有四位地址线的随机读写存储器(RAM)。主要使用者利用原理图或 HDL
语言形容了一个逻辑电路之后,PLD/PFGA 可以自己运算出逻辑电路全部会出现 的情况。而且真值表(即结果)会提前录入随机读写存储器(RAM),因此,当 录入一个信号去完成逻辑计算就相当于录入了一个地址去完成查表,找到地址相 对应的部分,最后输出就可以了[8]。
现在大部分的 FPGA 还是基于查找表技术的,相比于之前版本的基本性能已 经有了很大的超越,而且融合了基本的性能(如随机读写存储器、时钟管理和 DSP)的硬核(ASIC 型)模块。FPGA 的芯片大致可以分为七个单元,分别是: 可编程输入输出、基本可编程逻辑、完整的时钟管理、嵌入式随机读写存储器、 丰富的布线空间、内嵌的底层功能单元和内嵌专用硬件模块[9]。
所有模块的作用如下: (1)可编程输入输出单元(IOB)
I/O 单元又称为可编程输入/输出单元,芯片通过它与外部元器件进行连接, 进而实现在不一样的电气特征下带动和配合输入/输出信号。FPGA 里的 I/O 可 以分成不一样的组,各组都可以单独应付不一样的 I/O 准则。可以利用软件进行 简单方便的设置,去适应不一样的电气标准和 I/O 物理特征,也可以改变上、下 拉阻值,调节驱动电流的数值[10]。
外面的录入信号能够经过 IOB 模块的储存单元录入到 FPGA 的里面,还能够 直接录入 FPGA 里面。在外面的录入信号通过 IOB 模块的储存单元录入带 FPGA 里面的时候,可以减少它的维持时间(Hold Time)的请求,一般默许是零。FPGA 的 IOB 模块一般要被分割成不确定的几个组(bank)以利于约束和顺应各种电 气标准。每一个组(bank)的接口电压(VCCO)来确定接口准则,一个组只可以 有一个接口电压,但是不一样的组的接口电压是能够不一样的。仅有同一电气标 准的接口才可以相接起来,接口电压的电压一样是接口标准的根本要求[11]。
(2)可配置逻辑块(CLB)
FPGA 里的最小逻辑单元为可配置逻辑块。每一个可配置逻辑块都含有一个 可设置的开关矩阵,可配置逻辑块的真是数目和特征会根据元件的不一样而不相 同。一些选型电路(多路复用器等)和触发器、四个或者 6 个输入构成了这些开 关矩阵[12]。它是非常灵敏的,如果想利用它方便处理逻辑的配合、移位寄存器或 者随机读写存储器(RAM),只需要对它进行设置。 基于FPGA竞赛系统设计+程序(5):http://www.youerw.com/zidonghua/lunwen_78557.html