近年来,随着中国新基建的不断推进和中国制造2025规划的不断推进,单个ARM处理器满足工业现场的功能需求变得越来越困难,尤其是在当今的能源电力、工控、智慧医疗等行业,往往需要ARM+FPGA架构的处理器平台来实现多通道高速AD采集等特定功能, 多通道网口、多通道串口、多通道高速并行DI DO、高速数据并行处理等,因此ARM + FPGA Fabric处理器平台在市场上越来越受欢迎。
图1 ARM+FPGA典型应用场景
ARM + FPGA 架构结合了性能、成本和功耗优势,使 ARM 和 FPGA 能够解决更复杂的问题,每个问题都利用了原始架构的独特优势。
ARM+FPGA常用的通信方式有PCIe、FSPI、I2C、SDIO、CSI等,今天我们主要介绍基于FSPI的ARM + FPGA通信方式。
FSPI(Flexible Serial Peripheral Interface,柔性串行外设接口)是一种高速、全双工、同步串行通信总线,RK3568处理器中有一个ESPI控制器,可用于连接FSPI器件。 它具有以下特点:
支持串行NOR闪存和串行NAND闪存
支持 SDR 模式。
支持第 1、2 和 4 线模式。
FSPI比PCIe更好。小数据 - 低延迟大数据 - 高带宽要求。 此外,在与FPGA通信时,用户通常更喜欢使用FSPI接口,原因如下:
用低成本 FPGA高速通信是可能的,而带有PCIe接口的FPGA的成本呈指数级增长。
具有 PCIe 接口的 FPGA 往往消耗更多功率,而低成本 FPGA 则成本低功耗更低。一般来说,低功耗设备的使用寿命也会更长。
基于FSPI的ARM+FPGA通信实测数据共享。
硬件方案一:TRontron TL3568F-EVM 评估板 (RK3568J + logos-2)。
实测数据:写入速率20MB S+,最高24MB s,0%误码率; 26MB S+ 读取速率,最高 30MB s,0% 误码率。
tl3568f-evm评估板简介:
TL3568F-EVM 是一款基于瑞芯微 RK3568J RK3568B2 四核 ARM Cortex-A55 处理器 + Unisplendour LOGOS-2 PG2L50H PG2L100H FPGA 的异构多核国产工业评估板8ghz/2.0ghz。核心板所有元器件,如ARM、FPGA、ROM、RAM、电源、晶振、连接器等,均采用国产工业级方案,国产化率100%。 同时,评估板的大部分元器件也采用了国产工业级方案。
硬件方案二:TL3568-EVM 评估板 (RK3568) +TLA7-EVM 评估板 (ARTIX-7)。
实测数据:写入率 52563MB 秒,读取速率 67387MB s,高误码率。
言论:由于飞线连接导致测试的局限性,在150MHz通信时钟频率下测得的误码率过高,测试结果仅供参考。
详细解释基于 FSPI 的 ARM + FPGA 通信案例。
下面主要介绍基于瑞芯微RK3568J(硬件平台:创龙科技TL3568-EVM评估板)和Xilinx Artix-7(硬件平台:创龙科技TLA7-EVM评估板)的FSPI通信案例,测试结果按照创龙科技提供的案例用户手册操作得到。
同时,基于linux跟linux-rt系统经过测试并得到“”。小数据 - 低延迟大数据 - 高带宽测试数据。
SPI RW案例
1)案例说明。
外壳功能:在手臂侧运行Linux系统在基于FSPI总线上的FPGA BRAM上执行读写测试。
SPI主控功能在ARM端实现,原理如下:
a) 打开 SPI 设备节点,例如 dev spidev40。
b) 使用IOCTL配置FSPI总线,如FSPI总线极性和相位、通信速率、数据长度等。
c) 选择模式为单线、双线或四线。当FSPI总线设置为双线模式时,发送的数据为单线模式,接收的数据为双线模式。 当 FSPI 设置为 4 线模式时,发送数据处于 4 线模式,接收数据处于 4 线模式。
d) 向 FSPI 总线发送数据或从 FSPI 总线发送数据。
e) 检查数据,然后打印读/写率和误码率。
FPGA端实现SPI SL**e功能,原理说明如下:
a) FPGA 将 SPI 主站发送的数据保存到 BRAM。
b) 当SPI主机启动数据读取时,FPGA从BRAM读取数据,并通过FSPI总线将其传输到SPI主机。
图2 ARM端程序流程图
2)测试结果。
ARM 通过 FSPI 总线(四线模式)将 4bytes 的随机数据写入 FPGA BRA,然后读取数据,验证数据,并打印 FSPI 总线读/写率和误码率。
最后,如果将FSPI总线通信时钟频率设置为24MHz,则四线模式的理论通信速率为:(24000000 1024 1024 8 x 4)MB S 1144MB s,从下图可以看出,测得的写入速率为0048MB 秒,读取速率为 0182MB 秒,误码率为 0%。
图3
言论:在上述情况下,硬件采用飞线连接,需要将FSPI总线通信时钟频率设置在24MHz的低位,并且测试数据量需要设置到少量(这会导致测量速率较低),否则会出现误码。 如果使用 TL3568F-EVM 评估板 (RK3568J + LOGOS-2) 硬件平台进行测试,则无比特通信速率将大大提高。
如果FSPI总线通信时钟频率设置为150MHz,ARM通过FSPI总线将1MB的随机数据写入FPGA BRAM中,然后读取数据,循环100次,无需数据验证,最后打印FSPI总线读/写率和误码率。
最后,如果将FSPI总线通信时钟频率设置为150MHz,则FSPI四线模式的理论通信速率为:(150000000 1024 1024 8 x 4) MB s 7153mb/s。从下图可以看出,测得的写入率为52563MB 秒,读取速率为 67387MB s,相对接近理论通信速率。
图4
言论:由于本次测试中飞线连接的局限性,在150MHz通信时钟频率下测得的误码率过高,测试结果仅供参考。
RT SPI RW 案例
1)案例说明。
外壳功能:在手臂侧运行Linux-RT系统在基于FSPI总线上的FPGA BRAM上执行读写测试。
SPI主控功能在ARM端实现,原理如下:
a) 打开 SPI 设备节点,例如 dev spidev40。
b) 使用IOCTL配置FSPI总线,如FSPI总线极性和相位、通信速率、数据长度等。
c) 选择模式为单线、双线或四线。当FSPI总线设置为双线模式时,发送的数据为单线模式,接收的数据为双线模式。 当 FSPI 设置为 4 线模式时,发送数据处于 4 线模式,接收数据处于 4 线模式。
d) 向 FSPI 总线发送数据或从 FSPI 总线发送数据。
e) 检查数据,然后打印读/写率和误码率。
FPGA端实现SPI SL**e功能,原理说明如下:
a) 将 SPI 主机发送的数据保存到 BRAM。
当SPI主机启动数据读取时,FPGA从BRAM读取数据,并通过FSPI总线传输到SPI主机。
图5 ARM端程序流程图
2)测试结果。
ARM通过FSPI总线向FPGA BRAM写入4字节的随机数据,然后读取数据,进行数据验证,并打印FSPI总线读/写率和误码率。 最后,如果将FSPI总线通信时钟频率设置为24MHz,则SPI四线模式的理论通信速率为:(24000000 1024 1024 8 x 4)MB S 1144mb/s。
从下图可以看出,测得的写入率为0179MB s,最长发送时间为 46us,最短时间为 20us平均耗时为20us误码率为0%; 读取速率为 0187MB s,最长发送时间为 46us,最短时间为 19us平均花费时间为40s误码率为0%;
图6
言论:在上述情况下,硬件采用飞线连接,需要将FSPI总线通信时钟频率设置在24MHz的低位,并且测试数据量需要设置到少量(这会导致测量速率较低),否则会出现误码。 如使用创龙科技的TL3568F-EVM评估板(RK3568J+LOGOS-2)硬件平台将大大提高无差错的通信速率。