每个模块的功能如下:
1. 可编程输入输出单元(IOB)
可编程输入/ 输出单元简称I/O 单元,是芯片与外界电路的接口部分,完成不同电气特性下对输入/ 输出信号的驱动与匹配要求,其示意结构如图2-4 所示。FPGA 内的I/O 按组分类,每组都能够独立地支持不同的I/O标准。通过软件的灵活配置,可适配不同的电气标准与I/O 物理特性,可以调整驱动电流的大小,可以改变上、下拉电阻。目前,I/O 口的频率也越来越高,一些高端的FPGA 通过DDR 寄存器技术可以支持高达2Gbps 的数据速率。
外部输入信号可以通过IOB 模块的存储单元输入到FPGA 的内部,也可以直接输入FPGA 内部。当外部输入信号经过IOB 模块的存储单元输入到FPGA 内部时,其保持时间(Hold TIme) 的要求可以降低,通常默认为0。为了便于管理和适应多种电器标准,FPGA 的IOB 被划分为若干个组(bank),每个bank 的接口标准由其接口电压VCCO 决定,一个bank 只能有一种VCCO,但不同bank 的VCCO 可以不同。只有相同电气标准的端口才能连接在一起,VCCO 电压相同是接口标准的基本条件。
2.可配置逻辑块(CLB)
CLB 是FPGA 内的基本逻辑单元。CLB 的实际数量和特性会依器件的不同而不同,但是每个CLB 都包含一个可配置开关矩阵,此矩阵由4 或6 个输入、一些选型电路( 多路复用器等) 和触发器组成。 开关矩阵是高度灵活的,可以对其进行配置以便处理组合逻辑、移位寄存器或RAM。在赛灵思公司公司的FPGA 器件中,CLB 由多个( 一般为4 个或2 个) 相同的Slice 和附加逻辑构成,如图2-5 所示。每个CLB 模块不仅可以用于实现组合逻辑、时序逻辑,还可以配置为分布式RAM 和分布式ROM。
Slice 是赛灵思公司公司定义的基本逻辑单位,其内部结构如图2-6 所示,一个Slice 由两个4 输入的函数、进位逻辑、算术逻辑、存储逻辑和函数复用器组成。
算术逻辑包括一个异或门(XORG) 和一个专用与门(MULTAND),一个异或门可以使一个Slice 实现2bit 全加操作,专用与门用于提高乘法器的效率;进位逻辑由专用进位信号和函数复用器(MUXC) 组成,用于实现快速的算术加减法操作;4 输入函数发生器用于实现4 输入LUT、分布式RAM 或16 比特移位寄存器(Virtex-5 系列芯片的Slice 中的两个输入函数为6 输入,可以实现6 输入LUT 或64 比特移位寄存器) ;进位逻辑包括两条快速进位链,用于提高CLB 模块的处理速度。