APP下载

国产复旦微SOC平台AXI_DMA的应用研究

2020-03-02申伟李浩徐彬彬刘秋生李朝亮

科技创新导报 2020年23期

申伟 李浩 徐彬彬 刘秋生 李朝亮

摘  要:国内SOC芯片日益崛起,而国产SOC平台的应用尚未普及。ARM+FPGA架构中,CPU与FPGA通过AXI总线协议进行数据交流,小批量的数据可以通过AXI_lite进行交互,对于大容量的数据需要采用AXI_stream协议。本文进行了复旦微FMQL系列芯片AXI_DMA的应用研究与测试,并与赛灵思ZYNQ_7000系列进行了传输性能对比。

关键词:SOC平台  AXI_DMA  FPGA  LINUX

中图分类号:TP368                             文献标识码:A                    文章编号:1674-098X(2020)08(b)-0119-03

Abstract: Domestic SOC chips are rising day by day, but the application of domestic SOC platforms has not been popularized. In the ARM+FPGA architecture, the CPU and FPGA exchange data through the AXI bus protocol. Small batches of data can interact through AXI_lite. For large-capacity data, the AXI_stream protocol is required. In this paper, the application research and test of Fudan Micro FMQL series chip AXI_DMA is carried out, and the transmission performance is compared with Xilinx ZYNQ_7000 series.

Key Words: SOC; AXI_DMA; FPGA; LINUX

FMQL45_FFG900芯片为复旦微电子旗下的一款SOC芯片。该芯片采用PS+PL架构,四核APU,GP接口带宽支持64位,且有更丰富的外设管脚。可应用于汽车辅助驾驶、无线通信、视频、医疗、工业控制等。AXI_DMA是为内存与AXI4_Stream外设之间提供高带宽的直接存储访问,可将CPU从数据搬移任务中解放出来,大大提高数据传输效率。

1  AXI接口互联及握手机制

AXI协议提供单一的接口定义,能用在下述三种接口之间:master/interconnect、slave/interconnect、master/slave。在AXI总线使用过程中可以使用共享地址与数据总线,共享地址总线,多数据总线,multilayer多层,多地址总线,多数据总线。在大多数系统中,地址通道的带宽要求没有数据通道高,因此可以使用共享地址总线,多数据总线结构来对系统性能和互联复杂度进行平衡。

AXI所采用的是一种READY,VALID握手通信机制,即主从模块进行数据通信前,新根据操作对各所用到的数据、地址通道进行握手。主要操作包括传输发送者A等到传输接受者B的READY信号后,A将数据与VALID信号同时发送给B。

AXI总线还定义了在进出低功耗节电模式前后的握手协议。规定如何通知进入低功耗模式,何时关断时钟,何时开启时钟,如何退出低功耗模式。这使得所有IP core在进行功耗控制的设计时,有据可依,容易集成在统一的系统中。

2  AXI_DMA

AXI_DMA主要包含四个模块。AXI_DMA引擎结构如图 1所示。

数据模块用来实现存储器接口和流接口的转换;Scatter/Gather模块用来实现设置DMA对非连续内存访问的支持;状态寄存器主要用来寄存DMA的工作状态等信息,用户可通过 AXI GP接口读取这些状态信息;配置寄存器模块主要用来对AXI_DMA通过GP接口进行初始化的配置以使其能正常工作。

Direct Register Mode具备DMA的基本功能,给出源(目的)地址和传输长度之后就可以开启一次传输。配置完一次寄存器之后只能完成存储器连续地址空间的读写,在此模式下发送数据为MM2S_LENGTH寄存器所填写的长度。

当发送数据大于收数据时会产生中断,中断处理函数中读取状态寄存器发现S2MM_DMASR[DMAIntErr]错误提示,此错误正好是填写的收数据缓冲空间小于需要收的数据空间(自环下为发空间)。读取内存数据查看实际已经传输了填写的收数据空间的数据。当发送数据小于收数据时会产生中断,读取S2MM_LENGTH寄存器,收取数据为发送数据长度,收数据中断由tlast信号触发,表示收数据完成,软件可以读取S2MM_LENGTH寄存器查看真实收到的数据包大小。

3  FMQL AXI_DMA实现及测试

PL搭建与LINUX系统文件制作:选择AXI_DMA IP CORE,搭建FPGA BD工程,短接收发通道,加入ILA监测信号。编译生成BIT、HDF文件。通过FMQL开发环境PROCISE解析PL配置,生成设备树源文件夹、FSBL工程,IAR编译生成flsb.out用于第一阶段启动配置。由复旦微提供的BSP包编译生成u-boot.、内核镜像、设备树、根文件系统。由PROCISE工具打包生成BOOT.bin。

AXI_DMA驱动软件实现:数据发送模块用来将数据从PS 搬迁到PL,数据接收模块负责将PL数据搬迁到PS。收发数据在大体流程上基本一致,最大的差别在于通道的申请上,收发数据需要申请两个相对独立的DMA通道,填写收发地址和回调函数注册时也需要对应到相应通道上去。數据收发流程如图2所示,接收部分与此类似。

PS控制AXI_DMA: PS采用内存映射的方式将外设的寄存器映射进PS的内存空间,可采用指针操作的方式对外设的寄存器进行访问。

设备树修改:FMQL设备树关于DMA部分修改PS中断号为25、26。

测试:PS应用测试程序下发不同大小的数据包,通过PL侧自环,PS读数据通道将AXI_DMA数据取回效验。对比结果总结见表 1。

4  结语

国产复旦微FMQL系列芯片PS与PL数据交互性能不亚于ZYNQ 7000系列,在时钟频率100MHZ和总线位宽为32位的情况下,实测PS与PL数据传输传输速率最高可达370MB/s左右。增加总线位宽、时钟频率、突发长度可以得到更高的传输速率。AXI_DMA传输速率随着帧长增加而增加,适用于大包数据传输。

参考文献

[1] 吴汶泰,詹璨铭.基于Zynq的AXI总线数据传输软件优化[J].通信技术,2017,50(7):1576-1580.

[2] 杨海学,吴凡,李林,等.XCZU9的高速大容量数据采集存储系统设计[J].单片机与嵌入式系统应用,2019,19(12):84-87.

[3] 庄琼. 基于AXI总线的DMA高速通道及驱动的设计与实现[D].成都:电子科技大学,2019.

[4] 陈卓然,张宇.基于ARM+FPGA的心电信号疲劳驾驶检测方法的研究[J].科技创新导报,2019,16(31):46,48.

[5] 曾俊,李雪江,杨胜.基于FPGA的集成式温度采集装置设计[J].科技创新导报,2019,16(35):49-50,52.

[6] 杨博,楚要钦,景德胜,等.基于AXI4总线的So C中离散量信号控制IP核的设计与验证[J].信息通信,2020(3):90-92.