FPGA的主要配置单元是CLB(Configurable Logic Blocks)、IOBs(Input/Output Blocks)、Block RAM和PIPs(Programmable Interconnect Points)。
一个CLB是一个函数单元组(LUTs,MUXes和触发器flip flop)被用于构造逻辑。
IOBs提供外部包端口和内部信号线之间的接口。
PIPs是连接CLBs和IOBs的输入和输出到适当的网络上的布线路径的节点。
一个用户设计被在FPGA中实现通过配置决定数字逻辑的CLB单元和决定FPGA内部连接的布线。
一个资源被定义为一个FPGA内的任意的可配置单元,它可能包括CLB输入(F LUT输入,G LUT输入,BX,BY,…),布线(Singles,Hexes,…),时钟等。
Xilinx Virtex FPGA是由被IOBs所环绕的CLBs阵列所组成的。
CLBs是主要的构造块,它包含了单元为了来实现可定制门、flip flops和连接线。
IOBs提供了和外部设备进行通信的信号电路。
在东西方向的两个边缘是BRAMs。
BRAMs允许千比特级数据的异步或同步存储,尽管每个CLB也能够实现异步或同步的32位RAMs。
每个CLB包含两个slice,每个slice执行实现两个四输入的LUT、两个D触发器和一些进位逻辑。
一个Virtex slice是相似的在功能上和一个Xilinx XC4000 CLB,这意味着每个Virtex CLB的逻辑容量是一个XC4000的两倍。
通常的布线(general routing)允许数据被传送到或被接收从其它的CLB。
输入选择器允许连线(wires)在通常的布线(general routing)中去传送数据到slice,同时输出选择器允许slice传送数据到通常布线(general routing)中的连接(wires)。
在slice中的基本单元是F和G LUTs,以及X和Y触发器。
LUT能够被用于实现门或实现小的存储器。触发器能够被用于产生状态机。
slices也有内部的选择器来控制内部资源的连接,每个slice内部都有实现运算类型逻辑快速进位的逻辑。
每个slice有13个输入,包括F1-F4,G1-G4,CLK,SR等。每个输入都有一个选择器与之相连,决定哪个连接到(wire)设备输入。使用JBits,每个输入选择器都有它自己的类,并且使用对应的名字命名。
每个CLB有8个输出选择器,Out0-Out7。
每个输出选择器能够选择不同的slice输出并且驱动那些信号在通常布线(general routing)中的。
一个slice输出能够被扇形展开到多个位置靠驱动多输出选择器。使用JBits,每个输出选择器有它自己的名字命名的类。
通用布线(general routing)使用了两种线型(wires):singles和hex's。
singles端接在一个邻近的CLB,同时hex's端接在CLB 6位置上面。
singles应该被用来传输邻近CLB之间的数据,hex's则用来传输非局部的CLB之间的数据。
singles和hex's都被归合进总线延伸到四个基本方位:东、南、西、北。
对邻近CLB的连接是直接顺向的。
在CLB里一个北single直接连接到该CLB上一级的一个南single。
一个hex西wire直接连接到一个hex东wire在CLB 6上。
一些Hex wires只能够传送数据到CLB里,它们是单向性的。
一些Hex wires只能够传送数据出CLB,也是单向性的。
一些既可以传出也能够传入数据,它们是双向性的。
然而注意电路应该在双向线上向一个方向传送数据,而不是双向,以避免出现导致损坏设备的连接。
下面展示Hex开关盒所允许的连接方式。