之前我们谈过FPGA相关内容,但是更多的是讲解了FPGA工作原理,并举了实际的例子,进行操作流程的说明,今天我们来谈一谈FPGA芯片结构。

FPGA芯片内部结构

目前大部分的FPGA仍是基于查找表(LUT)技术,但是随着版本的升级,代与代之间的基本功能差别很大,在现在的FPGA内部,整合了很多常用功能(如RAM、时钟管理 和DSP)的硬核(ASIC型)功能模块。

FPGA芯片的内部结构

图一给出一个通用的内部结构模型,实际上不同系列的FPGA,内部的结构都不尽相同。但是从上图我们可以看出,FPGA芯片的主要部分由6大模块,分别为:可编程输入输出单元(IOB)、基本可编程逻辑单元(CLB)、数字时钟管理(DCM)、嵌入块式RAM(BRAM)、丰富的布线资源、内嵌的底层功能单元和内嵌专用硬件模块。

下面我们一一介绍图一中的各个部分。

模块单元内容介绍

  • 可编程输入输出单元(IOB)

可编程输入/输出单元,简称I/O单元,FPGA芯片通过这部分,与外围电路连接。在不同的电气特性下面,满足对输入/输出信号的驱动与匹配要求,其示意结构如图1-2所示。

IOB内部结构

FPGA内的I/O一般按组进行分类,并且每组都能够独立地支持不同的I/O标准。一般通过软件的配置,使其能够适配不同的电气标准和I/O物理特性。

外部输入信号进入FPGA有两种模式。第一种,首先进入IOB模块的存储单元,然后再通过存储单元进入到FPGA的内部。第二种,直接输入FPGA 内部。如果为第一种情况,其对保持时间(Hold Time)的要求可以很低。

因为电器标准的多样性,以及为了方便管理,一般将FPGA的IOB划分为若干个组(bank),各个bank的接口标准,取决于接口电压VCCO,通常情况下,每个bank只能对应一种VCCO。只有相同电气标准的端口才能连接在一起,VCCO电压相同是接口标准的基本条件。

  • 可配置逻辑块(CLB)

CLB是FPGA内的基本逻辑单元。器件的不同,会使得CLB的实际数量和特性的不同,但是通常情况下,每个CLB都包含一个可配置开关矩阵,此矩阵由4或6个输入、一些选型电路(多路复用器等)和触发器组成。开关矩阵具有高度灵活性,可以对其进行配置,以便处理组合逻辑、移位寄存器或RAM。

在Xilinx公司的FPGA器件中,CLB由多个(一般为4个或2个) 相同的Slice和附加逻辑构成,如图三所示。每个CLB模块不仅可以用于实现组合逻辑、时序逻辑,还可以配置为分布式RAM和分布式ROM。

CLB结构

Slice是Xilinx公司定义的基本逻辑单位,其内部结构如图四所示。

输入Slice结构

一个Slice由两个4输入的函数、进位逻辑、算术逻辑、存储逻辑和函数复用器组成。

算术逻辑包括一个异或门(XORG)和一个专用与门(MULTAND),一个异或门可以使一个Slice实现 2bit全加操作,专用与门用于提高乘法器的效率。

进位逻辑由专用进位信号和函数复用器(MUXC)组成,用于实现快速的算术加减法操作。

4输入函数发生器用于实现4输入LUT、分布式RAM或16比特移位寄存器(Virtex-5系列芯片Slice中的6输入函数有两个,可以实现6输入LUT或64比特移位寄存器。Virtex-7系列芯片Slice中的6输入函数有四个)。

进位逻辑包括两条快速进位链,用于提高CLB模块的处理速度。

小结

在讨论FPGA的逻辑资源的时候,一般有两种说法。一种是将CLB作为最小逻辑单元。但是因为CLB有两个slice构成,所以有人也将slice作为最小逻辑单元进行讨论。大量的slice和时钟,共同构成了数字电路。

剩余的部分,将在后面的文章中继续为大家呈现。