
在工业自动化、运动控制及高速数据采集领域里,ARM与FPGA的异构协同早已成为主流,但两者之间的通信瓶颈却频频显现。传统SPI接口带宽仅10Mbps级别,面对海量数据时力不从心;而PCIe虽带宽极高,却因设计复杂、成本高昂,在许多场景中显得“大材小用”。
有没有一种兼顾性能、成本与开发效率的理想方案?
我们给出了答案:基于瑞芯微DSMC(双倍数据速率串行存储器控制器)总线技术,成功实现了ARM与FPGA间稳定、高速的数据互联,实测读写带宽均突破300MB/s,为工业通信提供了全新的高性价比选择。

为精准评估ARM与FPGA之间各类通信接口的真实性能,彻底规避传统飞线连接带来的信号完整性衰减、性能损耗问题,我们自研了FPGA+ARM一体化测试底板。
该平台可兼容3572、3576、3568、3506四款核心板作为算力主控,同时支持无缝适配赛灵思、Anlogic、Gowin等多品牌FPGA核心板,为异构计算方案的性能验证提供稳定、可靠的硬件基础。

各主控平台支持的互联接口如下:

本次测试基于一体化评估板,实现3572核心板与FPGA通过DSMC总线的通信性能验证。
1.基础测试环境
2.带宽测试结果

3.ARM侧实现逻辑
ARM端由Linux应用程序通过/dev/dsmc/cs0设备节点发起读写请求,内核中的DSMC驱动接收指令后,调用CPU_DMA引擎,经由DMA_MMP模块在DDR内存与DSMC_IO硬件接口之间直接完成数据搬运,全程无需CPU参与数据拷贝,保障了高吞吐与低延迟。测试程序可通过配置包大小、循环次数等参数完成读写校验,并输出误码率与实测传输速率。
4.FPGA侧实现逻辑
FPGA端实现Local Bus Slave功能:接收ARM端发送的数据时,数据经IOBUF、IDDR采样后存入DRAM;读取数据时,DRAM内的数据经ODDR、IOBUF输出至DSMC总线,完成数据回传。
5.系统架构框图
整体架构分为ARM端与FPGA端两层:ARM侧从用户态应用到底层硬件接口,依次经过Linux应用、设备节点、驱动层、DMA引擎、DSMC硬件IO;FPGA侧对应实现数据采样、存储与回传逻辑,两端通过DSMC总线完成高速交互。

本次测试通过dsmc_mmap_test工具完成,可通过参数灵活配置传输模式、循环次数、载荷长度、时钟频率等条件,核心参数说明如下:
执行:./dsmc_mmap_test -c 1000 -l 65528 -v -p
-o, --op. operation: rw (write+read+verify, default), wo (write only), ro (read only)
-c, --cycle.transfer count-l, --length. payload bytes per transfer (12-byte preamble added automatically
-G, --gen_mode. data pattern 0=random 1=sequential
-v, --verbose. dump write/read data
-P, --perf. print performance (MiB/s) summary
-f, --freq. set DSMC IO clock freq in Hz (e.g. 100000000)
本次测试选取65528字节载荷(避免65536字节下的溢出问题),分别完成100次、1000次循环读写验证,结果如下:
1.100次循环读写测试
测试指令:./dsmc_mmap_test-c 100-l 65528-v-P
传输模式:读写+校验
测试结果:100次循环全部成功,0失败、0误码,误码率0.0000%
性能表现:写入平均速率303.10MiB/s,读取平均速率305.59MiB/s

2.1000次循环读写测试
测试指令:./dsmc_mmap_test-c 1000-l 65528-v-P
传输模式:读写+校验
测试结果:1000次循环全部成功,0失败、0误码,误码率0.0000%
性能表现:写入平均速率303.53MiB/s,读取平均速率304.91MiB/s

两组测试均验证,DSMC总线在长周期、大数据量传输场景下表现稳定,读写速率均可稳定维持在300MB/s级别,且全程误码率为0,完全满足工业场景对高速、可靠通信的需求。
DSMC总线以适中的开发成本与硬件门槛,实现了接近PCIe级别的传输性能,完美适配中高速工业互联场景
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。