编程概述
- 更新时间2025-10-09
- 阅读时长3分钟
LabVIEW FPGA应用程序编程接口(API)与其他NI-Serial(如VISA)和C系列模块API本质上不同。与I/O节点不同,FPGA I/O方法节点上的读取字节和写入字节方法被用于数据传输。
属性节点可动态更改模块配置。此外,大多数模块配置可在编译和运行VI之前,直接通过项目浏览器窗口,右键单击相应模块并选择属性来完成。如使用非标准波特率,该配置面板还可用于计算通过属性节点写入的合适波特率分频数和波特率预分频数。
模块上的四个端口共享一个与FPGA目标连接的接口,带宽约为128 KB/s。在高速传输大量数据时,该共享接口是一个重要的考量因素。由于模块的共享接口,任一时刻模块只能由一个LabVIEW FPGA节点访问。如FPGA VI程序框图中存在多个将同时执行的节点,LabVIEW FPGA模块会为端口专用的属性和方法节点,自动采用公平轮询仲裁机制调配对模块的访问。常规模块属性节点,如序列号、模块ID#和供应商ID#,在仲裁机制中的优先级较低。
为了理解共享接口何时需要重点关注,区分端口波特率(baud)和数据吞吐率(字节/秒)非常重要。波特率是指电信号转换的速率(包括起始位、停止位和奇偶校验位等开销),而数据吞吐率则是实际数据与应用程序(在此即FPGA)之间传输的速度。
在给定波特率下,最大数据吞吐率可通过将波特率除以串行消息的总位数来计算。例如,常见配置为1个起始位、8个数据位和1个停止位,共计10位。使用该配置的9600波特设置,可支持每秒960(9600除以10)条数据消息(字节)。使用相同配置且波特率为921,600的串口,其平均数据吞吐率为92.2 KB/s,依此类推。
如四个端口的波特率之和大于500,000波特,该共享接口可能会开始限制性能。请考虑所有四个端口均以460,800波特运行的配置。该设置的最大数据吞吐率为每个端口46.08 KB/s。应用程序可同时以46.08 KB/s的速度对一个端口进行读写,或以23.04 KB/s的速度对两个端口进行读写,且无任何延迟。然而,若尝试以46.08 KB/s的速率同时对两个端口读写,则可能会引入一些延迟,具体取决于传输数据的大小。
参考而言,如果所有四个端口的波特率均为115,200及以下,则模块可在任意数据吞吐率下正常运行。大多数串行应用不会以给定波特率的最大带宽传输大量连续数据块。此外,NI 987x C系列模块为每个端口都配备了独立的64字节UART FIFO缓冲区,可实现发送和接收数据的小规模突发。最后,如果在高波特率下发生超时,增加超时值或减少其他模块访问(如属性节点)的数量,有助于降低超时发生概率。