6.6 现场可编程阵列
现场可编程门阵列(Field Programmable Gate Array,FPGA)是80年代中后期发展起来 的一种可编程的大规模集成器件。它是由掩膜可编程门阵列和可编程逻辑器件演变而来的,将它们的特性结合在一起,使FPGA既有门阵列的高逻辑密度和通用性,又有可编程逻辑器件的用户可编程特性。通常由布线资源围绕的可编程单元(或宏单元)构成阵列,再由可编程 I/O单元围绕阵列构成,用户可以通过编程将这些模块连接成所需要的数字系统。 Xilinx公司自1985推出第一片FPGA以来,已陆续推出了XC2000,XC3000,XC3100,XC4000,XC5200和XC8000等FPGA系列产品。其功能和原理基本相同.但后面几种器件在结构、规模和性能上有所改进。以XC2000系列为例,介绍FPGA的结构和编程配置原理及应用。
6.6.1 FPGA
的基本结构
FPGA主要由三种可编程逻辑单元和一个用于存放编程数据的静态存储器(SRAM)组成。三种可编程逻辑单元是可编程逻辑块(Configurable Logic Block,CLB)、可编程输入/输出块(Input/Output Block,IOB)和可编程内部互连(Programmable Interconnet ,PI),这三种可编程逻辑单元的配置、工作状态都由静态存储器中的数据决定。FPGA的基本结构示意图如图6-6-l所示。
1.可编程逻辑块(CLB)
CLB是FPGA的基本逻辑单元;在FPGA内排列成方阵,每个CLB通过配置可成为具备一定逻辑功能的小单元,CLB之间通过互连可以实现用户指定的复杂的逻辑功能。XC2000系列中的XC2064有64个CLB,排列成8×8的矩阵,XC2018中有100个CLB排列成10×10的矩阵。XC2000系列CLB结构示意图如图6-6-2所示。
CLB由组合逻辑电路、存储电路及内部控制逻辑电路(数据选择器)组成,有4个输入端A、B、C、D, 二个时钟输入端CLK,两个输出端X、Y。该单元通过PI连线, 可与其他的CLB及IOB相连。图中的数据选择器只标出了数据输入端和数据输出端,省略了地址输入端,地址代码存放在FPGA内部的编程数据存储器中。
通过编程可以将组合逻辑部分设置成三种不同的组态,如图6-6-3所示。
CLB存储电路结构如图6-6-4所示,其中包括一个触发器(XC3000系列和XC4000系列的
FPGA器件的CLB中有两个触发器)。通过编程可以将触发器设置为边沿触发的D触发器,也可以设置为电平触发的D型锁存器。触发器的输入D来自组合逻辑的输出F,时钟从片内公共时钟CLK、输入C、组合逻辑输出G三者中选择,片内公共时钟CLK作为时钟信号,工作在同步方式;输入C或组合逻辑输出G作为时钟信号,工作在异步方式。这些都是由线程设定的。异步置位信号在输入A和组合逻辑输出罗中选择,异步复位信号在输入D和组合逻辑输出G中选择。触发器的输出信号也可以作组合逻辑的输入信号,如图 6-6-3所示 。 2.可编程输入/输出模块(I0B)
IOB分布于FPGA的四周,可以灵活编程,满足不同的逻辑功能需要。XC2000系列IOB 结构示意图如图6-6-5所示。
IOB由输出三态缓冲器、输入缓冲器、触发器、数据选择器组成。通过编程输入缓冲器 定义为组合输入或者寄存器输入形式,即输入缓冲器的输出是直接作为芯片的输入,还是经 D触发器寄存后作为芯片的输入;输出三态缓冲器可以在允许、禁止和三态门三种状态中任 一种形式;输入缓冲器的电平值可以为TTL接口电平( 1.4V)或CMOS接口电平(2.2V)。 XC2000系列器件同一边的所有IOB共享一个I/O时钟;通常在配置过程中或RESET有 效时,IOB的触发器均被清零。
3.可编程内部互连(PI)
通过对可编程内部互连进行配置,可以将FPGA 内部的CLB和IOB组合起来实现复杂的逻辑功能。XC2000系列的可编程互连主要分为两大类,即金属线和可编程开关。金属线包括通用内部连线(Genera1 Purpose Interconnect)、直接连线(Direct Interconnect)和长线(Long Line),可编程开关包括开关矩阵(Switching Matrices,SM)和可编程连接点(Pro- grammable Interconnect Points,PIP)。
通用内部连线由夹在两列CLB之间的5根垂直导线和夹在两行CLB之间 4根水平导线组成,通过开关短矩阵相互连接形成网线,如图6-6-6所示。
直接连线是指在相邻的CLB及IOB之间不通过开关矩阵通用接线,直接对信号接收端的可编程连接点编程。如图6-6-7中粗线即为直接连线。直接连线布线短,延时小,适合相邻块间的高速传送。
长线是垂直或水平地贯穿于整个芯片的金属线,适于传送距离长、偏移要求小的信号。XC2000系列器件的长线结构如图6-6-8所示,CLB两列之间的两根垂直长线和夹在CLB两行之间的一根水平线均属于长线。全局长线用于输送一些公共信号(如公用的RESET信号)等。
开关晶体管形成了可编程互连点PIP和开关矩阵SM,用来实现金属线段和块引脚的连接。开关矩阵SM就是通用连线交接处的转换控制逻辑,依靠SM的转换,可以将CLB的输出以接力的方式,从通用连线中一段一段地传送到芯片的任一位置。图6-6-9(a)中画出了开关矩阵和可编程连接点的布置图,图6-6-9(b)中画出了开关矩阵在不同编程情况下的8种转换方式。