版主: 51FPGA |
iamacb1
最后登陆时间:2015-01-13 22:09:50 |
首先,我们需要配置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); |
共1条 1/1 1 |