使用FPGA I/O
- 更新时间2025-03-06
- 阅读时长7分钟
通过FPGA终端上的输入和输出(I/O)连接FPGA终端至其他设备。FPGA I/O资源为FPGA终端的固定单元,可用于在系统的不同部分间传递数据。在某些FPGA终端上,FPGA I/O资源与前面板连线板、PXI背板或RTSI连接器对应。在其他FPGA终端上,FPGA I/O资源为FPGA内部的节点,用于连接NI设计的FPGA与用户设计的FPGA。对于组件级IP (CLIP),I/O资源为FPGA内部的节点,用于连接CLIP和FPGA VI。每个FPGA I/O资源均具有特定的类型,例如数字或模拟。一个FPGA终端可能具有多个相同或不同类型的I/O资源。用户可创建FPGA I/O项、判定FPGA终端上的待用I/O资源及为使用的I/O资源分配唯一的名称。
资源将物理量转化为用户在FPGA模块软件中操作的数字值,或将软件值转化为物理量。每个I/O资源具有一个或多个用于接收或生成物理量的接线端。许多FPGA终端上的I/O资源均具有物理接线端,用户可通过这些接线端直接连接系统单元。
FPGA VI在FPGA终端运行时在硬件中执行I/O运算。例如,如配置FPGA I/O节点读取数字线,FPGA I/O节点将读取该数字线并返回结果至FPGA VI。由于FPGA VI在FPGA上运行,VI可采用FPGA终端硬件可用的速度和确定性响应输入端。
模拟和数字输入及输出可放在程序框图的同一个节点内。FPGA I/O项的终端范围属性和方法可分别配合FPGA I/O属性节点和FPGA I/O方法节点使用。
数字I/O
FPGA终端可将数字I/O资源组织为独立的数据线或数据线组(即端口)。某些FPGA终端可访问数字I/O资源(仅为独立数据线或端口)。其他FPGA终端允许用户访问同一物理数据线(包括独立数据线和端口)。数字I/O资源分为三类:分别为读取输入、写入输出和执行上述两种函数的资源。关于数字I/O资源的支持的详细信息,见FPGA终端硬件文档。
数字输入资源
通过FPGA I/O节点可读取数字输入FPGA资源。通过数字输入资源监视FPGA终端外部的电路。
数字输出资源
通过FPGA I/O节点可写入数字输出FPGA资源。通过数字输出资源控制FPGA终端外部的电路。
数字输入和输出资源
某些FPGA资源包含双向或三态的数字I/O资源。在LabVIEW FPGA中,三态数字I/O资源称为数字输入和输出资源。通过FPGA I/O节点可读取/写入数字输入和输出资源。数字输入和输出资源可用于监视和控制FPGA终端外部的电路。三态资源可用于配置I/O资源和控制数据流的方向。通过已配置“设置输出启用”方法的FPGA I/O方法节点改变数据流的方向。连线TRUE值至启用输出端,以配置三态I/O资源为输出资源。连线FALSE值至启用输出端,以配置三态I/O资源为输入资源。
如下列示意图所示,输出启用信号控制数据线配置为输入还是输出。
三态资源用作一个由输出启用信号控制的开关,如下列示意图所示。
当输出启用信号为TRUE或等于1时,数据线配置为输出,且输出数据中存储的值将被驱动至数字线。当输出启用信号为FALSE或等于0时,数据线配置为高阻态输入,此时数据线可由外部设备驱动,如下列示意图所示。
无论输出启用信号的状态如何,输入数据均可用于监视数据线的当前状态。
如使用FPGA I/O节点读取数字输入和输出资源,FPGA I/O节点不会改变资源的方向。使用数字输入和输出资源写入输出时,用户使用同一资源读取输入时必须禁用该输出。如下列示意图所示,配置了一个数字输入和输出资源的FPGA I/O节点读取外部信号的状态前,带有设置输出启用方法的FPGA I/O方法节点禁用了输出数据线。否则,FPGA I/O节点仅读取FPGA VI写入的最新值。
使用FPGA I/O节点写入数字输入和输出资源时,FPGA I/O节点同时写入数据并启用输出接线端。或者使用FPGA I/O方法节点和设置输出数据方法写入数据,而无需启用输出接线端。使用FPGA I/O方法节点和设置输出启用方法启用数字接线端,此操作允许数据被驱动输出。在设置输出启用方法前使用设置输出数据方法,以在启用输出时指定数字输出和输出资源的状态。例如,程序框图的某一部分可能持续生成内部信号。当内部信号实际被驱动至一个外部设备时,在程序框图的另一部分使用FPGA I/O方法节点和设置输出启用方法进行独立控制。
如在单周期定时循环内包含了数字I/O资源,对应于单周期定时循环的每次计数,每个同步寄存器均将引入延迟。在某些情况下,FPGA外部的延迟可能对系统影响较大。如LabVIEW框图和FPGA间的延时的准确模型对于通过在开发计算机上执行FPGA VI测试应用的逻辑非常重要,可延时I/O仿真数据为对I/O节点的调用数量,其等于同步寄存器的数量。
模拟I/O
模拟输入
如所用的FPGA终端包含模拟输入资源,用户必须配置FPGA I/O节点以读取模拟输入的值。如配置FPGA I/O节点读取一个模拟输入,FPGA I/O节点可能初始化转换、等待结果并返回电压的二进制表示值(有符号整数或定点数)。模拟输入过程和输出数据类型随FPGA终端变化。对于多数FPGA终端,创建FPGA VI,以将模拟输入FPGA I/O节点返回的数据用于FPGA内部的运算。数据也可被传回主控VI,且可能的情况下,如FPGA终端的模拟输入端连接了传感器,可将数据转换为电压或其他物理量。
用于转换二进制表示法为物理量的公式取决于FPGA终端和传感器。例如,对于NI PXI-7831R设备,使用下列公式转换二进制表示值为电压:输入电压 = (二进制编码/ 32768) × 10.0V。更多信息见FPGA终端硬件的文档。
模拟输出
如所用的FPGA终端包含模拟输出资源,用户可配置FPGA I/O节点以写入一个模拟输出值。如配置FPGA I/O节点写入数据至模拟输出,FPGA I/O节点将电压的二进制表示值写入至数模转换器(DAC),该转换器将设置模拟输出电压。数据类型随FPGA终端变化。电压有两种生成方式-主控VI或FPGA VI。通常主控VI写入值至FPGA VI前,先转换电压为恰当的二进制表示值。如FPGA VI判定电压,通常FPGA VI使用相应的二进制表示法执行计算。在上述两种情况下,DAC生成一个对应二进制表示值的电压。
用于转换电压至二进制表示值的公式取决于指定FPGA终端。例如,对于NI PXI-7831R设备,使用下列公式转换电压为二进制表示值:二进制编码 = (输出电压 × 32768) / 10.0V。更多信息见FPGA终端硬件的文档。