基于LUT的FPGA具有很高的集成度,其器件密度从数万门到数千万门不等,可以完成极其复杂的时序与逻辑组合的逻辑电路功能,因此其适用于高速、高密度的高端数字逻辑电路设计领域。其组成部分主要有可编程输入/输出单元、基本可编程逻辑单元、内嵌SRAM、丰富的布线资源、底层嵌入功能单元、内嵌专用单元等。FPGA的主要设计和生产厂家有赛灵思、Altera、Lattice、Actel、Atmel和QuickLogic等,其中最大的是美国赛灵思公司,在可编程市场中占有50%以上的份额,比其他所有竞争对手市场份额的总和还多。
FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。
目前,FPGA市场占有率最高的两大公司——赛灵思公司和Altera生产的FPGA都是基于SRAM工艺的,需要在使用时外接一个片外存储器以保存程序。上电时,FPGA将外部存储器中的数据读入片内RAM,完成配置后,进入工作状态;掉电后SRAM存储的数据丢失,内部逻辑消失。这样,FPGA能反复使用,且无须专门的FPGA编程器,只需配备一片存储代码的FLASH存储器即可。
图1-1 Virtex系列产品XC2V3000的内部结构
1.可配置逻辑块(CLB)
如图1-2所示,XC2V3000的CLB模块由4个相同的Slice和附加逻辑构成,用于实现组合逻辑和时序逻辑。
每个Slice由2个4输入函数发生器、进位逻辑、算术逻辑、存储逻辑和函数复用器组成。算术逻辑包括1个异或门(XORG)与1个专用与门(MULTAND),1个异或门可以使1个Slice实现2位全加操作,专用与门用于提高乘法器的效率。进位逻辑由专用进位信号和函数复用器(MUXC)组成,共同实现快速的算术加减法操作。具体结构详见图1-3和图1-4。
图1-2 Virtex系列产品
图1-3 Virtex系列产品
图1-4 Virtex系列产品Slice结构
2.可编程输入/输出单元(IOB)
可编程输入/输出单元简称IOB,提供FPGA内部逻辑与外部封装引脚之间的接口,用于完成不同电气特性下对输入/输出信号的驱动和匹配。根据当前使用的I/O接口标准的不同,需要设置不同的接口电压V cco 和参考电压V REF 。XC2V3000的I/O引脚分布在8个Bank中,同一个Bank的接口电压V cco 必须保持一致,不同Bank的接口电压V cco 允许不同。
如图1-5所示,XC2V3000的IOB模块含有6个存储单元,可以单独配置为边沿D触发器或锁存器,也可以成对实现DDR(Double-Data-Rate)输入和DDR输出。
DDR寄存器的结构见图1-6。
3.嵌入式块RAM(BRAM)
XC2V3000的Block SelectRAM资源丰富,其单位容量为18Kb双端口RAM,可以自由设定数据宽度和深度纵横比,并支持三种并发读/写(Read-During-Write)模式。
图1-5 Virtex系列产品
图1-6 DDR寄存器结构
4.丰富的布线资源
布线资源连通FPGA内部所有的单元,IOB、CLB、BRAM、DCM等都使用相同的内连阵列。XC2V3000内部共有16条全局时钟线,用于芯片内部全局时钟和全局复位/置位的布线。24条纵横交错的长线资源实现了芯片Bank间的高速通信和第二全局时钟信号的布线。
5.底层内嵌功能单元
XC2V3000集成了丰富的内嵌功能模块,如DCM(数字时钟管理器)、DCI(数字控制阻抗)、MicroBlaze软处理器核等,使其具有软、硬件联合设计的能力,可以用有限的资源完成系统级的设计任务。
,