fpga芯片主要由三部分组成,分别是ioe(input output element,输入输出单元)、lab(logic array block,逻辑阵列块,对于xilinx称之为可配置逻辑块clb)和interconnect(内部连接线)。
1.ioe
ioe是芯片与外部电路的物理接口,主要完成不同电气特性下输入/输出信号的驱动与匹配要求,比如从基本的lvttl/lvcmos接口到pci/lvds/rsds甚至各种各样的差分接口,从5v兼容到3.3v/2.5v/1.8v/1.5v的电平接口,下面是altera公司的cyclone iv ep4ce115f29设备的ioe结构
图1 ep4ce115f29设备的ioe结构图
fpga的ioe按组分类,每组都能够独立地支持不同的i/o标准,通过软件的灵活配置,可匹配不同的电器标准与io物理特性,而且可以调整驱动电流的大小,可以改变上/下拉电阻,cyclone iv设备有8个io blank(组),见下图:
图2 cyclone iv设备的io组
2.lab
lab是fpga的基本逻辑单元,其实际的数量和特性依据所采用的器件的不同而不同,ep4ce115f29设备的每个lab的布局包括16个le、lab控制信号、le carry chains、register chains和local interconnect,其lab结构图如下:
图3 lab结构图
le是cyclone iv设备最小的逻辑单元,每个le主要有lut和寄存器组成的,
图4 le的结构图
查找表lut(look-up-table)其本质是一个静态存储器sram,目前fpga多采用4输入的lut,每个lut可以看作一个有4位地址线的16x1的ram。当我们通过原理图或hdl语言描述了一个逻辑电路后,fpga开发软件会自动计算逻辑电路的所有可能的结果,并把结果事先写入ram。这样,在fpga工作时,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出。
图5 lut的实现原理图
3.interconnect
fpga内部连接线很丰富,根据数据手册的描述,主要有图3中的row interconnect、column interconnect、direct link interconnect、和local interconnect和register chain interconnect(寄存器之间连接的连接线)。
内部连接线联通fpga内部的所有单元,而连线的长度和工艺决定着信号再连接线上的驱动能力和传输速度。在实际开发中,设计者不需要直接选择连接线,布局布线器可自动地根据输入逻辑网表(这由综合生成)的拓扑结构和约束条件选择连接线来连通各个逻辑单元,所以,从本质上来说,布线资源的使用方法和设计的结果有密切和直接、直接的关系。