同步FPGA和主机
- 更新时间2025-05-20
- 阅读时长2分钟
FPGA VI与主控VI固有不同步。如需要在FPGA VI和主控VI间同步操作或传输数据,可使用基于中断或轮询的方法。需要最小化主机处理器的使用量时可使用基于中断的同步,需要较小的延迟时可使用基于轮询的同步。DMA FIFO是一种可用于在FPGA和主机间传输数据的特殊的基于轮询的同步。下表总结了上述同步方法的特性。
| 同步方法 | 延迟 | 主CPU使用量 | 常用于 |
| 基于中断 | 高 | 下限 | 数据记录 |
| 基于轮询 | 下限 | 高 | 控制,仿真 |
| DMA FIFO | 下限 | 下限 | 数据记录 |
基于中断的同步
中断为FPGA终端插入至主机的物理硬件数据线。可以使用中断通知主控VI事件,如数据变为可用、产生错误或任务完成。
使用基于中断的通信相对于使用轮询的通信的优势在于主控VI等待中断的同时可执行其他操作。但处理中断所需的系统开销也相应地增加了延时。
通过中断VI生成FPGA终端可用的32位逻辑中断。每个逻辑中断指出了产生中断的原因,并允许用户在软件中进行不同的处理。可将中断VI设置为等待直至主控VI通过连线等待前清零输入端确认FPGA终端的中断。在上述情况下,中断VI等待直至主控VI控制设备确认中断。
当FPGA终端的调用包含同步中断时请使用警告。当使用多于1个中断时,中断数据线用作共享资源,且将产生抖动。
基于轮询的同步
基于轮询的同步使用循环持续检查FPGA VI的状态,且当特定条件存在时执行动作。定时VI可用于确定轮询循环的频率。增加轮询循环的频率可降低同步的延时。降低轮询循环的频率可减少主机CPU的使用量。
直接内存访问(DMA)和同步
DMA FIFO是固有同步的。DMA引擎自动轮询DMA FIFO的状态,且当DMA FIFO包含指定数量的数据值时开始数据传输。但用户可指定设备从DMA FIFO获取数据的方式。具体来说,可以使用基于轮询的方法从DMA FIFO获取数据。