平台:vivado2017.4
芯片:xc7k325tfbg676-2 (active)
关于xilinx的AXI Central DMA Controller。简称CDMA,关于CDMA,在xilinx官方网站上是这样对其介绍的。
Xilinx LogiCORE™ IP AXI Central Direct Memory Access (CDMA) 内核是与 Vivado® Design Suite 一起使用的 Xilinx 软 IP 内核。AXI CDMA 使用 AXI4 协议在内存映射的源地址和目标地址之间提供高带宽直接内存访问(DMA)。可选的 Scatter Gather(SG)功能可用于从系统 CPU 卸载控制和阵列任务。 初始化、状态和管理寄存器可通过适用于 Xilinx MicroBlaze™ 处理器的 AXI4-Lite 从接口访问。
关于此IP的详细说明,可以参见XILINX文档PG034。
话不多说,首先看看这个IP的仿真。
新建BD工程。
在BD工程中创建CDMA的IP核,打开此IP的example design。保留在当前设计文件夹下。
打开工程查看RTL原理图。可以看到CDMA仿真主要为三个部分。CDMAIP部分和数据搬移的源地址uo_read以及数据搬移的目的地址uo_write。
具体的操作过程为。
- 通过AXI4_FULL向uo_read存储器中写入数据0000_0000,0101_0101,....1f1f_1f1f写入到BRAM-0中缓存。
- 通过axi_traffic_gen向CDMA配置寄存器。配置寄存器地址0写入0x00027008,配置寄存器地址8写入0x00000000,配置寄存器地址10写入0x00000040。
地址
写入值
含义
0
0x00027008
设置CDMA模式为SG模式,设置完成中断使能,设置中断延时,设置错误中断使能,设置中断阈值为2
8
0x00000000
当前描述符指针指向地址
10
0x00000040
尾部描述符指针指向地址
- CDMA根据上述设置的描述符指针,从SG_ABC中获取描述符表。描述符表1:
描述符表2:0x0000_0040
0x0000_0000
0x0000_0000
0x0000_0000
0x0000_0000
0x0000_0000
0x0000_0040
0x0000_0000
Pg034中有描述符详细说明。根据描述符的定义,表一说明下一个描述符起始地址为0x0000_0040,数据的源地址为0x0000_0000数据搬移的目的地址位0x0000_0000。一次传输的数据为0x0000_0040即256Byte,即传输16个32位的BRAM数据。链表2同理。0x0000_0040
0x0000_0000
0x0000_0040
0x0000_0000
0x0000_0000
0x0000_0000
0x0000_0040
0x0000_0000
- 启动数据搬运,首先从u0-read中读出数据。
- 启动数据搬运,将数据搬移到目的地址。
- 一次DMA传输完毕,更新链表状态。向描述符地址1C写0x8000_0000表示已完成。
到此CDMA部分的仿真完毕。从这里可以看出来,CDMA可以很方便的完成在内存中的数据搬移。
下面就此,我们准备对XAPP1171工程项目进行分析。该项目是在xilinx官方开发板KC705上的项目。先更新在这里。