基于ZYNQ的AXI DMA驱动测试

        使用ZYNQ的板卡开发涉及较多的便是FPGA与ARM间交互的问题,可通过AXI协议总线进行通信,而设计手段可有所不同,其一可在FPGA端自行编写AXI接口协议,使用FPGA代码设定起始的地址、方向和长度。其二是调用Xilinx官方提供的AXI DMA核搬运数据,需要在Vitis(SDK)中编写对应的驱动代码,驱动代码包括数据传输的起始地址、方向和长度。本篇文章主要分享第二种方式实现FPGA与ARM间的交互。

        AXI DMA在搬运数据时无需CPU干预,大大提高了系统的效率以及系统稳定性。而 FPGA与ARM间的传输通过中断响应来判断传输状态,本次使用ZU3EG芯片进行实验,在BD平台共搭建了8个AXI DMA核,均开启32位宽的读写通道(由于芯片PL-PS的中断最多16个),用来通知CPU传输完成。搭建的硬件如图1所示,为了测试使用AXI DAM在FPGA与ARM间搬运数据的情况,使用ILA对输入输出信号进行抓取。

图1 FPGA硬件搭建

        如图2为上板抓取的ARM传输给FPGA端的数据波形,其中数据是由0~2047的32位宽的测试数据,在传输的过程中产生了间断,是由于ARM未准备好发送数据导致,若在FPGA端设计电路需要考虑这一情况,然而在数据写入ARM端DDR时,由于AXI DMA具有缓存数据的作用,因此可直接在FPGA端编写输出接口无需再调用FIFO缓存数据。经测试16路数据经过数据的对比,所有的数据均能正确回环。

        关于FPGA与ARM间的数据搬运能够按照预期

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值