作者:Adam Taylor
上周的博客中我们完成了硬件的搭建,并且把硬件部分导入到SDK,见Adam Taylor’s MicroZed Chronicles Part 67: AXI DMA II,下一步通过写一个简单的程序来实现将XADC核的数据进行导入。
首先,我们需要配置AXI DMA核来实现数据的传输。
AXI DMA核可以实现以下数据传输,其中一些比较复杂:
• 简单的连续传输
• 简单的连续中断传输
• 不连续传输
• 不连续中断传输
我们需要使用Vivado通过对AXI DMA核进行例化来实现不连续传输。但是我们这次不使用不连续传输的例子,而是使用简单的连续传输来演示DMA的基本流程。
为了实现上述功能,我们需要做以下工作:
• 初始化XADC核
• 初始化AXI DMA核
• 配置XADC核
1. 设置时序为安全模式
2. 根据需求设置或关闭提醒
3. 使能时序通道
4. 设置ADC分频系数
5. 设置成需要的时序模式
• 配置XADC连接
• 配置 AXI DMA核
1. 定义存储地址
2. 等待DMA的复位结束
3. 解除DMA的中断
4. 开始数据交换. 进行如下操作:
1. AXI DMA核例化
2. 定义存储地址
3. 定义需要传输的字节数
4. 定义传输方向
• 等待DMA传输空闲
• 检测在存储地址是否存储有期望的值
上述过程演示了DMA的使用过程,但是由于要处理器要等待DMA的传输完成,导致处理器效率低下。基于中断操作的则是处理器可以继续进行其它操作。当传输完成后,DMA控制核会给出信号表示传输完成。在上述几期的课程中,我们已经使用过XADCPS.h 和 SYSMON.h对XADC进行了多次配置。并且为了是AXI DMA可以正常工作,我们需要AXIDMA.h库对其进行配置。该库提供了许多有用的函数。AXIDMA的配置和初始化类似于那些需要XXX_LookupConfig和XXXX_Cfg的ps外设。驱动文件放在以下文件夹下BSP->ps7_Cortex_a9_0->libsrc->axidma_v8_0->src:
简单的数据传输可通过如下函数进行:
XAxiDma_SimpleTransfer(&AxiDma,(u32) RX_BUFFER_BASE,0x100, XAXIDMA_DEVICE_TO_DMA);
工程代码可在github论坛下载,链接如下: https://github.com/ATaylorCEngFIET/MicroZed-Chronicles
在下一期博客中,我们可以知道如何使用Zynq约束,什么是约束,我们为什么需要它。
前几期的博客可以通过点击MicroZed Archive.访问。
原文链接:
http://forums.xilinx.com/t5/Xcell-Daily-Blog/Adam-Taylor-s-MicroZed-Chro...
© Copyright 2014 Xilinx Inc
如需转载,请注明出处
本视频基于Xilinx公司的Artix-7FPGA器件以及各种丰富的入门和进阶外设,提供了一些典型的工程实例,帮助读者从FPGA基础知识、逻辑设计概念
本课程为“从零开始大战FPGA”系列课程的基础篇。课程通俗易懂、逻辑性强、示例丰富,课程中尤其强调在设计过程中对“时序”和“逻辑”的把控,以及硬件描述语言与硬件电路相对应的“
课程中首先会给大家讲解在企业中一般数字电路从算法到流片这整个过程中会涉及到哪些流程,都分别使用什么工具,以及其中每个流程都分别做了
@2003-2020 中国电子顶级开发网