前言
近年来,随着我国新基建和中国制造2025的不断推进,单颗ARM处理器满足工业现场的功能需求变得越来越困难,特别是在能源电力、工业控制、智能医疗等领域。其他通常需要ARM+FPGA架构的行业。处理器平台实现特定功能,如多路/高速AD采集、多路网口、多路串口、多路/高速并行DI/DO、高速数据并行处理、 ETC。
那么我们先来看看ARM+FPGA架构的优势是什么? ARM:接口资源丰富,功耗低,擅长多媒体显示、逻辑控制等FPGA:擅长多路或高速AD采集、接口扩展、高速信号传输、高速数据并行处理, ETC。
因此,ARM+FPGA架构可以带来性能、成本、功耗等方面的综合比较优势。ARM和FPGA可以各司其职,各自发挥原有架构的独特优势,也可以相互协作来处理更复杂的问题。
对于成本不敏感、对通信速度要求较高的分立式ARM+FPGA应用,一般采用PCIe通信接口。但在成本敏感的分立式ARM+FPGA场景下,PCIe通信接口使得FPGA芯片的成本居高不下。
对于能源、电力、工业控制等众多工业领域来说,真正需要的是具有竞争力的性能和成本的解决方案。要求ARM与FPGA之间能够实现高速通信,并且成本达到最优,最好以国内方案为主。
针对这一需求背景,创龙科技提供了基于国产ARM和低成本FPGA的三种高速通信解决方案。
* 硬件平台介绍(全志科技T3/A40i)
创龙科技TLT3-EVM/TLA40i-EVM是一款基于全志T3/A40i处理器设计的4核ARM Cortex-A7国产工业评估板。每个核心主频高达1.2GHz。它由核心板和评估基板组成。 T3 和A40i 均引脚兼容。
评估板具有丰富的接口资源,包括双网口、双CAN、双USB、双RS485等通信接口,板载蓝牙、WIFI、4G(可选)模块,以及MIPI LCD、LVDS LCD、TFT LCD。HDMI OUT、CVBS OUT、CAMERA、LINE IN、H/P OUT等音视频多媒体接口,支持双屏差分显示、Mali400 MP2 GPU、1080P@45fps H.264视频硬件编码、1080P@60fps H. 264视频硬件解码,并支持SATA海量存储接口。
核心板采用100%国产元器件方案,并经过专业PCB Layout和高低温测试验证。稳定可靠,可满足各种工业应用环境。评估基板大部分部件采用国产方案,方便用户快速进行产品方案评估和技术预研。
*官方商城购物入口:https://tronlong.tmall.com
本文主要介绍全志科技T3/A40i和紫光同创PGL25G/Xilinx Spartan-6三种基于SPI、SDIO、CSI的高速通信解决方案。最大通信速率可达55.1MB/s。
为了简化描述,正文仅摘录了程序功能描述和测试结果。详细开发文档请扫描文末二维码下载。
注:目前创龙科技已推出T3/A40i+PGL25G全国一体化工业核心板解决方案,国产化率100%(连接器也国产)。欢迎咨询。
图3 T3/A40i+PGL25G国产工业核心板(国产化率100%)
1 spi_rw 案例
1.1 案例描述
案例功能:主要演示T3/A40i(ARM Cortex-A7)与PGL25G/Spartan-6(FPGA)处理器之间的SPI通信。
ARM端实现SPI Master功能a打开SPI设备节点,如:/dev/spidev0.0。 b.使用ioctl配置SPI总线,如SPI总线极性和相位、通信速率、数据字长等。选择模式为单线模式或双线模式。当SPI总线为双线模式时,发送数据为单线模式,接收数据为双线模式。 d.向SPI总线发送数据以及从SPI总线读取数据。 (注:如果单次传输数据大于64Byte,驱动程序会自动启用DMA传输功能。) e打印发送和接收速率。 F。验证读写数据,然后打印误码率。
FPGA端实现SPI Slave功能a FPGA将SPI Master发送的2KByte数据保存到BRAM中。 b.当SPI Master发起读取数据时,FPGA从BRAM中读取2KByte,并通过SPI总线传输给SPI Master。 C。当SPI总线为双线模式时,接收数据支持双线模式,但发送数据不支持双线模式。
图4 ARM端程序流程图
测试结果(1) SPI单线模式根据官方数据手册,理论上最大SPI总线通信时钟频率为100MHz。本次测试指定SPI总线通信时钟频率最大值为100MHz,SPI单线模式理论速率为:(100000000/1024/1024/8)MB/s 11.92MB/s。实测SPI单线模式写入速率为:10.924MB/s,SPI单线模式读取速率为:10.924MB/s。
(2)SPI双线模式根据官方数据手册,理论上最大SPI总线通信时钟频率为100MHz。本次测试指定SPI总线通信时钟频率最大值为100MHz,则SPI单线模式理论速率为:(100000000/1024/1024/8)MB/s 11.92MB/s;那么SPI双线模式的理论速率为:(100000000/1024/1024/4)MB/s 23.84MB/s。实测SPI单线模式写入速率为11.631MB/s,SPI双线模式读取速率为17.807MB/s。
2rt_spi_rw案例
2.1 案例描述案例功能:基于Linux-RT系统,演示T3/A40i(ARM Cortex-A7)与PGL25G/Spartan-6(FPGA)处理器之间的SPI通信(单线模式)。
ARM端实现SPI Master功能a打开SPI 设备节点。例如:/dev/spidev0.0。 b.使用ioctl 配置SPI 总线。如SPI总线极性和相位、通信速率、数据字长等。 c创建一个实时线程。 d.向SPI总线发送数据以及从SPI总线读取数据。 e.打印发送和接收速率以及传输时间。 F。验证读写数据,然后打印误码率。
FPGA端实现SPI Slave功能a FPGA将SPI Master发送的2KByte数据保存到BRAM中。 b.当SPI Master发起读取数据时,FPGA从BRAM中读取2KByte,并通过SPI总线传输给SPI Master。
图5 ARM端程序流程图
测试结果(1) 非轮询模式根据官方数据手册,理论上最大SPI总线通信时钟频率为100MHz。本次测试指定SPI总线通信时钟频率最大值为100MHz,理论速率为:(100000000/1024/1024/8)MB/s 11.92MB/s。实测传输4Byte数据的最小时间为49us,最大时间为662us,平均时间为227us;写入速率为0.017MB/s,读取速率为0.017MB/s。
(2)轮询方式根据官方数据手册,理论最大SPI总线通信时钟频率为100MHz。本次测试指定SPI总线通信时钟频率最大值为100MHz,理论速率为:(100000000/1024/1024/8)MB/s 11.92MB/s。实测传输4Byte数据最小耗时14us,最大耗时59us,平均耗时14us;写入速率为0.239MB/s,读取速率为0.239MB/s。
3sdio_测试用例
3.1 案例描述案例功能:演示T3/A40i (ARM Cortex-A7) 和PGL25G/Spartan-6 (FPGA) 处理器之间的SDIO 通信。
ARM端实现SDIO Master功能a打开SDIO设备节点,如:/dev/generic_sdio0。 b.向SDIO总线发送数据以及从SDIO总线读取数据。 C。打印发送和接收速率。 d.验证读写数据,然后打印误码率。
FPGA端实现SDIO Slave功能a FPGA将SDIO Master发送的2KByte数据保存到BRAM中。 b.当SDIO Master发起读取数据时,FPGA从BRAM中读取2KByte,并通过SDIO总线传输给SDIO Master。
图6 ARM端程序流程图
测试结果:本次测试指定SDIO总线通信时钟频率为25MHz(最大50MHz),则理论通信速率为:(25 x 4/8)MB/s=12.5MB/s。实测写入速率为5.113MB/s,读取速率为5.440MB/s,误码率为0.0%。
4csi_测试用例
4.1 案例描述案例功能:演示T3/A40i (ARM Cortex-A7) 和PGL25G/Spartan-6 (FPGA) 处理器之间的CSI 通信案例。
ARM端功能a)基于Linux子系统V4L2。 b) 通过CSI总线收集指定帧号数据。 c) 计算所花费的总时间。 d) 打印平均采集率并验证最后一帧图像的数据。
FPGA 端功能a) 将测试数据(0x00 ~0xFF)写入FIFO。 b) 从FIFO 中读取数据,通过CSI 总线以行帧格式发送到ARM 端,分辨率为1024 x 512。使用的CSI 总线为CSI0,支持的最高分辨率为1080P30,数据位宽度为8位。功能框图和程序流程图如下图所示。
图7 功能框图
图8 ARM端程序流程图
测试结果:FPGA端CSI_PCLK设置为65MHz,将测试数据写入FIFO的时钟FIFO_WR_CLK设置为59MHz。由于FPGA 端需要将数据写入FIFO,然后再从FIFO 中读出后再发送,因此每行、每帧之间的间隔会受到FIFO 写入速率的影响,因此CSI 通信的实际理论传输带宽应该为:(59MHz x 8bit/8)MB/s=59MB/s。实测传输速率为55.1MB/s,误码率为0.0%