2.7 FPGA编程资源
大多数FPGA使用SRAM单元技术来编程互连和LUT功能单元,但需要注意的是,基于SRAM方式的FPGA具有易失性,即每次掉电时,FPGA上复位,必须在每次上电时对FPGA进行重新配置。如图2-15所示为SRAM单元的FPGA底层结构示意图。
图2-15 FPGA底层结构示意图
配置和控制FPGA中的所有这些不同类型的结构,需要更多的编程信息。此外,为了支持所有单元之间可能的连接,同时仍然包括大量可用的用户逻辑,需要更简单和更小的编程结构。为了实现这些目标,FPGA使用SRAM单元来编程逻辑电平并建立路由连接。
为了解FPGA编程如何与SRAM单元一起工作,图2-15中左侧是行和列之间的典型互连节点。互连包括在垂直方向布线与水平方向布线,以连接所有可能连接上的开关晶体管。每个晶体管上选择的栅极控制来自SRAM单元。图2-15中右侧显示了典型的SRAM单元。SRAM单元基本上是锁存器,使在编程时,编程位被锁存到单元中。单元的输出是编程位的补码,因此,为建立路由连接,编程位为0,在编程的互连晶体管的栅极上放置1,关闭开关并进行连接。
显然,这种类型的编程架构需要比CPLD编程阵列更多的晶体管,但是所有晶体管都是标准的,不需要浮栅晶体管,因此不需要特殊的制造。这种编程架构的主要问题不是所需的晶体管数量,而是它的易失性。无论何时断电,锁存器都会被清除。这意味着必须始终在上电时对FPGA器件进行配置,以配置器件SRAM单元。
FPGA是基于SRAM的可编程逻辑器件,配置信息必须存储在非易失性的其他地方,以便可以在上电时配置器件。通常,EEPROM、CPU甚至CPLD的外部设备被用于实现FPGA器件编程。
对于大多数FPGA器件,可以通过两种方式进行配置。通过主动配置,FPGA在上电时自动开始与外部设备通信,并基本上自行配置。通过被动配置,外部设备(通常是CPU)控制FPGA如何及何时使用存储在EEPROM或其他配置设备中的数据进行配置。无论哪种方式,只要FPGA复位或重新上电,就需要进行相同的配置过程。
与CPLD器件一样,FPGA具有JTAG接口,可在PC中通过JTAG进行配置。但是,在生产中,必须使用其他编程方法在上电时配置FPGA。