x
x
查看: 953|回复: 0

国产RK3568J基于FSPI的ARM+FPGA通信方案分享

[复制链接]
发表于 2024-1-30 15:29:43 | 显示全部楼层 |阅读模式
[color=rgba(0, 0, 0, 0.9)]近年来,随着中国新基建、中国制造2025规划的持续推进,单ARM处理器越来越难胜任工业现场的功能要求,特别是如今能源电力、工业控制、智慧医疗等行业,往往更需要ARM + FPGA架构的处理器平台来实现例如多路/高速AD采集、多路网口、多路串口、多路/高速并行DI/DO、高速数据并行处理等特定功能,因此ARM + FPGA架构处理器平台愈发受市场欢迎。
ARM + FPGA架构能带来性能、成本、功耗等综合比较优势,ARM与FPGA既可各司其职,各自发挥原本架构的独特优势,亦可相互协作处理更复杂的问题。ARM + FPGA常见的通信方式有PCIe、FSPI、I2C、SDIO、CSI等,今天主要介绍基于FSPI的ARM + FPGA通信方式。
FSPI总线特点介绍
[color=rgba(0, 0, 0, 0.9)]FSPI(Flexible Serial Peripheral Interface)是一种高速、全双工、同步的串行通信总线,在RK3568处理器中就有ESPI控制器,可用来连接FSPI设备。它具备如下特点:
[color=rgba(0, 0, 0, 0.9)]
[color=rgba(0, 0, 0, 0.9)]- 支持串行NOR FLASH、串行NAND FLASH
[color=rgba(0, 0, 0, 0.9)]- 支持SDR模式
[color=rgba(0, 0, 0, 0.9)]- 支持一线、二线以及四线模式
[color=rgba(0, 0, 0, 0.9)]
[color=rgba(0, 0, 0, 0.9)]相比PCIe而言,FSPI可较好实现“小数据-低时延”、“大数据-高带宽”要求。另外,在与FPGA通信的时候,用户往往更喜欢选用FSPI接口还有如下原因:
[color=rgba(0, 0, 0, 0.9)]
[color=rgba(0, 0, 0, 0.9)]- 使用低成本FPGA即可实现高速通信,而具备PCIe接口的FPGA成本则成倍增长。
具备PCIe接口的FPGA功耗往往较大,而低成本FPGA。一般而言,低功耗器件的使用寿命也将更长。
[color=rgba(0, 0, 0, 0.9)]
基于FSPI的ARM + FPGA通信实测数据分享
[color=rgba(0, 0, 0, 0.9)]硬件方案一:创龙科技TL3568F-EVM评估板(RK3568J + Logos-2)。
[color=rgba(0, 0, 0, 0.9)]
[color=rgba(0, 0, 0, 0.9)]实测数据:写速率20MB/s+,最高24MB/s,误码率0%;读速率26MB/s+,最高30MB/s,误码率0%。
[color=rgba(0, 0, 0, 0.9)]
[color=rgba(0, 0, 0, 0.9)]TL3568F-EVM评估板简介:
[color=rgba(0, 0, 0, 0.9)]创龙科技TL3568F-EVM是一款基于瑞芯微RK3568J/RK3568B2四核ARM Cortex-A55处理器 + 紫光同创Logos-2 PG2L50H/PG2L100H FPGA设计的异构多核国产工业评估板,由核心板和评估底板组成,ARM Cortex-A55处理单元主频高达1.8GHz/2.0GHz。核心板ARM、FPGA、ROM、RAM、电源、晶振、连接器等所有元器件均采用国产工业级方案,国产化率100%。同时,评估底板大部分元器件亦采用国产工业级方案。
[color=rgba(0, 0, 0, 0.9)]硬件方案二:创龙科技TL3568-EVM评估板(RK3568) + TLA7-EVM评估板(Artix-7)
[color=rgba(0, 0, 0, 0.9)]
[color=rgba(0, 0, 0, 0.9)]实测数据:写速率52.563MB/s,读速率67.387MB/s,误码率高。
[color=rgba(0, 0, 0, 0.9)]
[color=rgba(0, 0, 0, 0.9)]备注:由于该测试受限于飞线连接方式,因此在150MHz通信时钟频率下测得误码率过高,测试结果仅供参考。

基于FSPI的ARM + FPGA通信案例详解
[color=rgba(0, 0, 0, 0.9)]下文主要介绍基于瑞芯微RK3568J(硬件平台:创龙科技TL3568-EVM评估板)与Xilinx Artix-7(硬件平台:创龙科技TLA7-EVM评估板)的FSPI通信案例,按照创龙科技提供的案例用户手册进行操作得出测试结果。
[color=rgba(0, 0, 0, 0.9)]
[color=rgba(0, 0, 0, 0.9)]同时基于LinuxLinux-RT系统进行测试,得到“小数据-低时延”、“大数据-高带宽”的测试数据。
[color=rgba(0, 0, 0, 0.9)]
[color=rgba(0, 0, 0, 0.9)]spi_rw案例
[color=rgba(0, 0, 0, 0.9)](1)案例说明
[color=rgba(0, 0, 0, 0.9)]
[color=rgba(0, 0, 0, 0.9)]案例功能:ARM端运行Linux系统,基于FSPI总线对FPGA BRAM进行读写测试。
[color=rgba(0, 0, 0, 0.9)]
[color=rgba(0, 0, 0, 0.9)]ARM端实现SPI Master功能,原理说明如下:
[color=rgba(0, 0, 0, 0.9)]a)打开SPI设备节点,如:/dev/spidev4.0。
[color=rgba(0, 0, 0, 0.9)]b)使用ioctl配置FSPI总线,如FSPI总线极性和相位、通信速率、数据长度等。
[color=rgba(0, 0, 0, 0.9)]c)选择模式为单线模式、双线模式或四线模式。当设置FSPI总线为双线模式时,发送数据为单线模式,接收数据为双线模式;当设置FSPI为四线模式时,发送数据为四线模式,接收数据为四线模式。
[color=rgba(0, 0, 0, 0.9)]d)发送数据至FSPI总线,以及从FSPI总线读取数据。
[color=rgba(0, 0, 0, 0.9)]e)校验数据,然后打印读写速率、误码率。
[color=rgba(0, 0, 0, 0.9)]
[color=rgba(0, 0, 0, 0.9)]FPGA端实现SPI Slave功能,原理说明如下:
[color=rgba(0, 0, 0, 0.9)]a)FPGA将SPI Master发送的数据保存至BRAM。
[color=rgba(0, 0, 0, 0.9)]b)SPI Master发起读数据时,FPGA从BRAM读取数据通过FSPI总线传输至SPI Master。
[color=rgba(0, 0, 0, 0.9)]
2.png


图2 ARM端程序流程图

[color=rgba(0, 0, 0, 0.9)](2)测试结果
[color=rgba(0, 0, 0, 0.9)]
[color=rgba(0, 0, 0, 0.9)]ARM通过FSPI总线(四线模式)写入4Byte随机数据至FPGA BRAM,然后读出数据、进行数据校验,同时打印FSPI总线读写速率和误码率。
[color=rgba(0, 0, 0, 0.9)]
[color=rgba(0, 0, 0, 0.9)]最终,本次测试设置FSPI总线通信时钟频率为24MHz,则四线模式的理论通信速率为:(24000000 / 1024 / 1024 / 8 x 4)MB/s ≈ 11.44MB/s,从下图可知,本次实测写速率为0.048MB/s,读速率为0.182MB/s,误码率为0%。
[color=rgba(0, 0, 0, 0.9)]
3.png

[color=rgba(0, 0, 0, 0.9)]图3
[color=rgba(0, 0, 0, 0.9)]备注:以上案例硬件采用飞线方式进行连接,需将FSPI总线通信时钟频率设置为较低的24MHz,并且需设置较小的测试数据量(会导致实测速率偏低),否则会产生误码现象。如使用创龙科技TL3568F-EVM评估板(RK3568J + Logos-2)硬件平台进行测试,则无误码的通信速率将大幅提升。
[color=rgba(0, 0, 0, 0.9)]


4.png

[color=rgba(0, 0, 0, 0.9)]图4
[color=rgba(0, 0, 0, 0.9)]备注:由于本次测试受限于飞线连接方式,因此在150MHz通信时钟频率下测得误码率过高,测试结果仅供参考。
[color=rgba(0, 0, 0, 0.9)]
[color=rgba(0, 0, 0, 0.9)]rt_spi_rw案例
[color=rgba(0, 0, 0, 0.9)](1)案例说明
[color=rgba(0, 0, 0, 0.9)]
[color=rgba(0, 0, 0, 0.9)]案例功能:ARM端运行Linux-RT系统,基于FSPI总线对FPGA BRAM进行读写测试。
[color=rgba(0, 0, 0, 0.9)]
[color=rgba(0, 0, 0, 0.9)]ARM端实现SPI Master功能,原理说明如下:
[color=rgba(0, 0, 0, 0.9)]a)打开SPI设备节点,如:/dev/spidev4.0。
[color=rgba(0, 0, 0, 0.9)]b)使用ioctl配置FSPI总线,如FSPI总线极性和相位、通信速率、数据长度等。
[color=rgba(0, 0, 0, 0.9)]c)选择模式为单线模式、双线模式或四线模式。当设置FSPI总线为双线模式时,发送数据为单线模式,接收数据为双线模式;当设置FSPI为四线模式时,发送数据为四线模式,接收数据为四线模式。
[color=rgba(0, 0, 0, 0.9)]d)发送数据至FSPI总线,以及从FSPI总线读取数据。
[color=rgba(0, 0, 0, 0.9)]e)校验数据,然后打印读写速率、误码率。
[color=rgba(0, 0, 0, 0.9)]
[color=rgba(0, 0, 0, 0.9)]FPGA端实现SPI Slave功能,原理说明如下:
[color=rgba(0, 0, 0, 0.9)]a)将SPI Master发送的数据保存至BRAM。
[color=rgba(0, 0, 0, 0.9)]SPI Master发起读数据时,FPGA从BRAM读取数据通过FSPI总线传输至SPI Master。
[color=rgba(0, 0, 0, 0.9)]
5.png


图5 ARM端程序流程图

[color=rgba(0, 0, 0, 0.9)](2)测试结果
[color=rgba(0, 0, 0, 0.9)]
[color=rgba(0, 0, 0, 0.9)]ARM通过FSPI总线写入4Byte随机数据至FPGA BRAM,然后读出数据、进行数据校验,同时打印FSPI总线读写速率和误码率。最终,本次测试设置FSPI总线通信时钟频率为24MHz,则SPI四线模式理论通信速率为:(24000000 / 1024 / 1024 / 8 x 4)MB/s ≈ 11.44MB/s。
[color=rgba(0, 0, 0, 0.9)]
[color=rgba(0, 0, 0, 0.9)]从下图可知,本次实测写速率为0.179MB/s,发送最大耗时为46us,最小耗时为20us,平均耗时为20us,误码率为0%;读速率为0.187MB/s,发送最大耗时为46us,最小耗时为19us,平均耗时40s,误码率为0%。
[color=rgba(0, 0, 0, 0.9)]
[color=rgba(0, 0, 0, 0.9)] 6.png
备注:以上案例硬件采用飞线方式进行连接,需将FSPI总线通信时钟频率设置为较低的24MHz,并且需设置较小的测试数据量(会导致实测速率偏低),否则会产生误码现象。如使用创龙科技TL3568F-EVM评估板(RK3568J + Logos-2)硬件平台进行测试,则无误码的通信速率将大幅提升。
[color=rgba(0, 0, 0, 0.9)]tronlong.tmall.com
[color=rgba(0, 0, 0, 0.9)]瑞芯微RK3568J技术交流群:567208221,欢迎加入!

1.jpg
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表