编程概述
- 更新时间2026-02-26
- 阅读时长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)在仲裁机制中的优先级较低。
为明确何时需考虑共享接口限制,必须区分端口波特率(波特)与数据吞吐率(字节/秒)。波特率是电气信号转换的速率(包括开始、停止和校验位等开销),而数据吞吐率是实际数据与应用程序(即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缓冲区,可应对收发数据的小幅突发。最后,如果在高波特率下发生超时,可以尝试增加超时值或减少其他模块访问(如属性节点操作),帮助降低超时发生的几率。