比SPI快、比PCIe容易,还有其他更好选择?

比SPI快、比PCIe容易,还有其他更好选择?

时间:2026-09-15
编辑者:创龙科技

工业控制领域,ARM + FPGA异构协同已经非常常见,但ARM与FPGA之间的数据通信一直是实际开发中的难题:SPI简单易用,但带宽有限,影响数据采集;PCIe带宽高,但开发复杂度也高,增加了开发成本。


有一种更直接的ARM与FPGA通信方式——Local Bus。它能直接访问FPGA内部寄存器,减少中间协议开销,让数据交互变得简单,更具有较高的传输速率!


1.jpg


了解Local Bus


Local Bus是一种用于处理器与本地外部设备之间数据交互的总线,它的核心思路是:把对端器件的地址空间映射成自己的一段物理地址,然后用读写内存的方式直接访问,其特点有:


(1)并行传输:多位数据同时传输,可提高数据传输效率。

(2)时序简单:以基本的读写操作为核心,接口时序相对简单,易于实现。

(3)访问延迟低:没有复杂协议处理带来的额外开销,适合对实时性有要求的应用。


Local Bus重要机制:主从分工


上文所述,Local Bus是通过“地址映射”的方式实现对端设备的读写。因此,需要明确谁负责发起请求、谁负责响应请求。


在使用Local Bus作ARM与FPGA通信时,采用Master-Slave(主从)模式作区分:Master负责发起访问请求,Slave负责响应请求并完成对应的数据读写。


Master(ARM端)


  • 发起读写请求

  • 提供访问地址和控制信息

  • 写操作:发送数据至FPGA

  • 读操作:等待FPGA返回数据


Slave(FPGA端)


  • 接收ARM发起的访问请求

  • 根据地址确定访问目标

  • 执行寄存器/FIFO读写

  • 返回数据或响应状态


Local Bus通信方案演示


以下基于创龙科技T153工业评估板与TL-AD-PGL25G模块演示Local Bus协议传输性能。


1789454530747072.jpg


执行程序,ARM通过Local Bus总线写入4KByte随机数据至FPGA FIFO,然后读出数据、进行数据校验,同时打印Local Bus总线读写速率和误码率。


root@T153-Tronlong:~#./localbus_dma_rw-c100
DMA:write:(app time:27us,app rate:139.92MB/s,write_error:0)
   read:(app time:44us,app rate:87.30MB/s,read_error:0)
   check_error:0
root@T153-Tronlong:~#


根据实际测试结果,基于Local Bus实现ARM与FPGA通信,传输速率最高可达近140MB/s。当SPI方案带宽不足以承载大批量数据流,而PCIe方案对软硬件协同设计要求较高时,Local Bus能够在传输能力与实现复杂度之间取得平衡,是一个不错的选择!

客服
提交成功