每个FPGA芯片(FPGA)是由有限个带有可编程连接预定义资源组成。这些互连资源通过LabVIEW FPGA模块实现用户设计的数字电路。用户创建FPGA VI时设计一个电路示意图,以说明FPGA逻辑块的连接方式。编译VI时,编译工具将FPGA VI转译为FPGA电路。

注: 本文将介绍与底层FPGA实现相关的概念。理解这些概念并不是使用LabVIEW FPGA模块的前提,但是本文有助于提高编写FPGA VI的效率。

下图显示了FPGA上逻辑块、I/O块和可编程线路之间的关系。

设计FPGA应用时,下列FPGA规范为重要的考虑因素。

  • 可配置逻辑块的数量
  • 固定函数逻辑块的数量(例如,乘法器)
  • 存储器资源的大小(例如,嵌入式块RAM)

关于FPGA基础的详细信息,请参考ni.com网站上的的技术支持文档。

触发器、LUT和逻辑片

FPGA资源为FPGA上可执行逻辑功能的资源。FPGA资源被组合在逻辑片内,以创建可配置逻辑块。每个逻辑片包含一组LUT、触发器和多路复用器。LUT是FPGA上一组硬接线的逻辑门。LUT是存储每个输入组合的预定义输出列表的逻辑块,因此能够快速获取逻辑操作的输出。触发器是能够实现两个稳态,表示一个比特的电路。多路复用器(通常称为MUX)在两个或多个输入之间选择输入,并输出选中的输入。

不同的FPGA系列执行逻辑片和LUT的方式不同。例如,Virtex-II FPGA上的逻辑片带有两个LUT和两个触发器。Virtex-5 FPGA上的逻辑片带有四个LUT和四个触发器。此外,LUT的输入端数量通常为2至6个,实际数量取决于FPGA的型号。

寄存器

寄存器是存储位模式的一组触发器。FPGA上的寄存器带有时钟、输入数据、输出数据和启用信号端口。在每个时钟周期内,输入数据被触发且存储在内部,然后更新输出数据为与内部存储数据匹配的值。FPGA VI使用寄存器执行下列功能:

  • 在循环计数间保持状态
  • I/O同步
  • 时钟域间的握手数据
  • 流水线
  • 与主机VI通信

寄存器是了解FPGA VI的定时考虑因素的重要概念。

块RAM

块存储器(块RAM)是嵌入在FPGA上用于存储数据的随机存储器。通常,LabVIEW使用块存储器实现存储器和FIFO函数。用户可指定LabVIEW分别使用FIFO属性和存储器属性对话框实现FIFO和存储器项。

DSP48E和DSP48E1

DSP48E逻辑片是特定FPGA系列(例如,Xilinx Virtex-5)包含的数字信号处理逻辑单元。该逻辑片可用于实现不同的算术运算。例如,乘法累加器、乘加器、单步/n步计数器。该逻辑片还可用于执行AND、OR、XOR等逻辑运算。使用多个DSP48E逻辑片可在不占用额外FPGA架构资源的前提下实现更为复杂的功能。例如,实现复杂乘法器或n阶FIR滤波器。

DSP48E1是某些Xilinx Virtex-6或更高级别FPGA设备的数字信号处理单元。DSP48E1在多个方面扩展了DSP48E逻辑片的功能(例如,在乘法器前包含一个预加器)。该预加器对执行特定的算法非常有用(例如,对称FIR滤波器)。

UltraRAM

UltraRAM (URAM)是一种高度灵活的低密度大容量存储块,可用于大多数Xilinx UltraScale+终端。UltraRAM的容量是块存储器的8倍,但数据宽度和地址空间配置的灵活性不如块存储器。UltraRAM可用于存储较大的本地FIFO。在FIFO属性对话框中可以指定LabVIEW如何实现FIFO。