购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.1 FPGA介绍

FPGA的全称为Field Programmable Gate Array,即现场可编程门阵列,是在可编程阵列逻辑(PAL)、通用阵列逻辑(GAL)和复杂可编程逻辑器件(CPLD)等可编程器件的基础上进一步发展的产物。作为专用集成电路(ASIC)领域中的一种半定制电路,它既弥补了定制电路的不足,又克服了原有可编程器件门电路数量有限的缺点。目前,FPGA广泛应用在汽车、军用装备、图像处理、有线和无线通信、医药以及工业控制等诸多领域。

1.1.1 FPGA基本结构

FPGA的基本结构如图 1.1 所示,包括可编程输入/输出单元、基本可编程逻辑单元、嵌入式块RAM、丰富的布线资源、底层嵌入功能单元和内嵌专用硬核等。

图 1.1 FPGA的基本结构

(1)可编程输入/输出单元

输入/输出(Input/ Ouput)单元简称I/ O单元,它们是芯片与外界电路的接口部分,完成不同电气特性下对输入/输出信号的驱动与匹配需求。为了使FPGA具有更灵活的应用,目前大多数FPGA的I/ O单元被设计为可编程模式,即通过软件的灵活配置,可以适配不同的电气标准与I/ O物理特性,还可以调整匹配阻抗特性、上下拉电阻,以及调整驱动电流的大小等。

可编程I/ O单元支持的电气标准因工艺而异,不同芯片商、不同器件的FPGA支持的I/ O标准不同。一般来说,常见的电气标准有LVTTL、LVCMOS、SSTL、HSTL、LVDS、LVPECL和PCI等。值得一提的是,随着ASIC工艺的飞速发展,目前可编程I/ O支持的频率上限越来越高,一些高端FPGA通过DDR寄存器技术,甚至可以支持高达 2 Gbit/ s的数据速率。

(2)基本可编程逻辑单元

基本可编程逻辑单元是可编程逻辑的主体,可以根据设计灵活地改变其内部连接与配置,完成不同的逻辑功能。FPGA一般是基于SRAM工艺的,其基本可编程逻辑单元绝大多数是由查找表(LUT,Look Up Table)和寄存器(Register)组成。Xilinx 7 系列FPGA内部查找表为 6 输入,查找表一般完成纯组合逻辑功能。FPGA内部寄存器结构相当灵活,可以配置为带同步/异步复位或置位、时钟使能的触发器,也可以配置成锁存器,FPGA依赖寄存器完成同步时序逻辑设计。

一般来说,比较经典的基本可编程逻辑单元的配置是一个寄存器加一个查找表,但是不同厂商的寄存器与查找表也有一定的差异,而且寄存器与查找表的组合模式也不同。当然,这些可编程逻辑单元的配置结构随着器件的不断发展也在不断更新,最新的一些可编程逻辑器件常常根据需求设计新的LUT和寄存器的配置比率,并优化其内部的连接构造。

Xilinx 7 系列FPGA中的可编程逻辑单元叫CLB(Configurable Logic Block,可配置逻辑块)。每个CLB里包含两个逻辑片(Slice)。每个Slice由 4 个查找表、8 个触发器和其他一些逻辑所组成。CLB示意图如图 1.2 所示。

CLB是逻辑单元的最小组成部分,在FPGA中排列为一个二维阵列,通过可编程互联连接到其他类似的资源。每个CLB里包含两个逻辑片,并且紧邻一个开关矩阵。

(3)嵌入式块RAM

目前大多数FPGA都有内嵌的块RAM(Block RAM)。FPGA内部嵌入可编程RAM模块,大大拓展了FPGA的应用范围和使用灵活性。不同器件商或不同器件族的内嵌块RAM的结构不同,Intel常用的块RAM大小是 9 kbit。 Intel的块RAM非常灵活,一些高端器件内部同时含有 3 种块RAM结构,分别是M512 RAM、M4K RAM、M9K RAM。

Xilinx 7 系列FPGA的块RAM可以实现RAM、ROM和FIFO(First In First Out)缓冲器。每个块RAM可以存储最多 36 kB的信息,并且可以被配置为一个 36 kB的RAM或两个独立的 18 kB RAM。默认的字宽是 18 位,这种配置下每个RAM含有 2 048 个存储单元。RAM还可以被“重塑”来包含更多、更小的单元(比如 4 096 单元×8 位,或 8 192 单元×4 位),或是另外做成更少、更长的单元(如 1 024 单元×36 位,或 512 单元×72 位)。把两个或多个块RAM组合起来可以形成更大的存储容量。FPGA中的块Block RAM示意图如图 1.3 所示。

图 1.2 CLB示意图

图 1.3 FPGA中的Block RAM示意图

除了块RAM外,Xilinx和Intel还可以灵活地将LUT配置成RAM、ROM、FIFO等存储结构,这种技术被称为分布式RAM。根据设计需求,块RAM的数量和配置方式也是器件选型的一个重要标准。

(4)丰富的布线资源

布线资源连通FPGA内部的所有单元,而连线的长度和工艺决定着信号在连线上的驱动能力和传输速度。FPGA芯片内部有着丰富的布线资源,这些布线资源根据工艺、长度、宽度和分布位置的不同而划分为 4 种不同的类别:

①全局性的专用布线资源:用于完成器件内部的全局时钟和全局复位/置位的布线。

②长线资源:用于完成芯片Bank间的高速信号和第二全局时钟信号的布线。

③短线资源:用于完成基本逻辑单元间的逻辑互连与布线。

④分布式布线资源:用于专有时钟、复位等控制信号线。

由于在设计过程中,往往由布局布线器根据输入的逻辑网表的拓扑结构和约束条件自动选择可用的布线资源连通所用的底层单元模块,所以常常忽略布线资源。从本质上讲,布线资源的使用方法和设计的结果有直接的关系。

(5)底层嵌入功能单元

底层嵌入功能单元的概念比较笼统,这里指的是那些通用程度较高的嵌入式功能模块,比如PLL(Phase Locked Loop)、DLL(Delay Locked Loop)、DSP、CPU等软处理核(Soft Core)。随着FPGA的发展,这些模块被越来越多地嵌入FPGA的内部,以满足不同场合的需求。

目前大多数FPGA厂商都在FPGA内部集成了DLL或者PLL硬件电路,用于完成时钟信号高精度、低抖动的倍频和分频,占空比调整,以及相移等功能。目前,高端FPGA产品集成的DLL和PLL资源越来越丰富,功能越来越复杂,精度越来越高。

(6)内嵌专用硬核

内嵌专用硬核是相对底层嵌入软核而言的,指FPGA处理能力强大的硬核(Hard Core),等效于ASIC电路。为了提高FPGA性能,芯片生产商在芯片内部集成了一些专用的硬核。

1.1.2 现代FPGA基本逻辑单元

Intel可编程逻辑单元通常被称为LE(Logic Element),由一个寄存器加一个LUT构成。Intel大多数FPGA将 10 个LE有机地组合在一起,构成更大的功能单元——逻辑阵列模块(LAB,Logic Array Block)。LAB中除了LE还包含LE之间的进位链、LAB控制信号、局部互联线资源、LUT级联链、寄存器级联链等连线与控制资源。

前面提到的Xilinx 7 系列FPGA中的每个CLB里包含两个Slice,每个Slice由 4 个查找表、8 个触发器和其他一些逻辑所组成。

查找表(Look-Up-Table)简称LUT,其本质上为RAM,一个 4 输入LUT中包括 4 位地址线的 16x1 的RAM,4 输入LUT共有 16 种输出结果。若将这 16 种结果全部存储下来,就可以根据不同的地址输入“查找”出相应输出结果。LUT实现 4 输入与门的示例如表 1.1 所示。

表 1.1 LUT实现 4 输入与门的示例

续表

LUT仅仅是FPGA最基本的组成,FPGA的复杂程度远远不能用LUT来描述。在Xilinx FPGA中,LUT组成LC(Logic Cell),进一步形成Slice,Slice才是Xilinx FPGA的最基本组成。而Slice上一级是CLB,CLB的实际数量会根据器件的不同而变化,CLB之间的可编程互连是通过可配置的开关矩阵组成的,这样每个CLB模块不仅可以用于实现组合逻辑和时序逻辑,还可以配置为分布式RAM和分布式ROM。

Xilinx FPGA中逻辑块等级关系为LC—Slice—CLB,在同一Slice的LC之间能快速互连,同一CLB中的Slice之间互连则稍慢些,最后是CLB之间的互连,这样可以比较容易地把它们彼此连在一起,同时也不会增加太多的互连延迟,从而达到优化平衡。 i9e8ShnBB+n7/0QZAo6PiAi//XJgdLefgTQz0exxzh2fSRIgVIvqRAdGxLOS+whQ

点击中间区域
呼出菜单
上一章
目录
下一章
×

打开