FPGA是现代数字电路设计中常用的可编程逻辑器件,FPGA的“Field-Programmable”即“可编程场”的定义,意味着其内部的逻辑电路可以按照需要进行编程和重构。但FPGA的实现离不开一种叫做“查找表”的基本构建模块。下面,我们将从多个角度讲述FPGA是基于什么原理图的。
FPGA内部的所有逻辑电路都可以表示为数个输入到某个输出的逻辑函数。而FPGA内部的基本构建模块“查找表”可以存储少量输入与输出之间的逻辑关系(也称为真值表)。查找表内部一般由一组SRAM存储器实现,因此可以随时被重新编程。FPGA的LUT是独立的,也就是说,它们可以自由组合成任意规模的逻辑电路,没有限制。
查找表是FPGA的核心,具有高度可编程性和灵活性。在Xilinx公司的FPGA中,查找表被精细划分为2输入LUT和3输入LUT两种。一个2输入LUT可以表示任意两个输入的逻辑关系,而一个3输入LUT可以表示任意三个输入,如此类推。
除了查找表,FPGA内部的电路还需要极为复杂的互连网络来将不同查找表之间连接起来。这种互连网络称为“交叉开关矩阵”。交叉开关矩阵由一组可编程开关和逻辑门构成,用于将查找表之间的输入和输出连接起来。通过交叉开关矩阵,任意组合的LUT可以被连接起来,实现复杂的逻辑电路。
交叉开关矩阵是FPGA的重要构件,可以说是FPGA的灵活性和可编程性源泉之一。交叉开关矩阵可以在硬件上支持各种复杂的互连模式,因此,一款FPGA芯片的性能和可应用范围,很大程度上取决于其交叉开关矩阵的设计。
时钟管理是现代数字电路设计中最为重要的困难之一。在FPGA中,时钟管理可以帮助实现复杂的时序控制,保证各个复杂的数字电路模块之间的数据传输和同步。实际上,主要电路都有内部时钟,来确保电路在同一个时刻进行计算。在FPGA的内部实现中,时钟管理模块可以通过时钟分配和数据处理工具来快速生成和管理多个时钟。
时钟管理也是FPGA实现高性能高效运算的重要手段。在一些大型的数据加速和计算任务中,FPGA可以使用多个内部时钟来增强其处理能力,提高算法的运算效率。
最后,作为一种可编程逻辑器件,FPGA的开发离不开良好的开发环境和工具链。对于FPGA的开发人员而言,最基本的需求就是可以快速地把自己的设计转换为FPGA可以理解的逻辑电路。FPGA的开发环境中,HDL和EDA工具链是最为关键的两个部分。常用的HDL有Verilog和VHDL,而EDA工具链主要有Xilinx ISE和Vivado两种。
通过HDL和EDA工具链,FPGA设计人员可以将其逻辑设计转化为FPGA内部电路并进行仿真和调试,为FPGA的开发提供了基础。同时,还有一些基于图形化编程的FPGA开发工具,例如NI公司的LabVIEW FPGA和Xilinx公司的SDSoC,极大地简化了FPGA的开发过程。