前言
写这个文档的目的有两个:
1、目前Zyqn7000系列开发大多数都是基于Xilinx的Vivado,网上很少有ISE相关的例子,个人费了不少时间才摸索出在ISE上Zyqn相关开发流程,希望记录下来给有需求的童鞋参考;
2、目前关于DMA的使用大多数场景是用于PS里面数据的搬运,即使有用在PL里的场景,也大多数是通过AXI_HP口然后例化一个DMA_FIFO进行数据搬运,而在ISE里又恰恰缺少这个IP,这边采用了更为简单的直通方式进行AXI_GP口的验证。如果大家要熟悉DMA接口和AXI_GP接口,这个demo比网上大多数例程要简单。当然,将AXI_GP口换成AXI_HP口即可操作DDR里的地址空间。
demo的开发环境:
软件环境:ISE14.7
硬件环境:Zyqnxc7z010clg400-3,ALINX黑金AX7010开发板
1. 验证方案
验证需求:测试AXI_GP作为PS-PL接口时的master和slave功能。
方案分析:
1、在PL侧例化一个DMA IP,然后M_AXI_GP为master,DMA的S_AXI_LITE为slave,通过AXI_interconnect连接,这样PS即可配置DMA中的Register Module,进而配置DMA模块。如图一中的蓝色数据标识所示,这样即可验证master功能。
2、PS配置完DMA的Register Module后,DMA的M_AXI_MM2S和M_AXI_S2MM即可作为master,S_AXI_GP为slave,通过AXI_interconnect,这样DMA即可控制DataMover将PS中SRAM地址1的数据搬运到SRAM的地址2,具体数据流如图一中的红色数据标识所示,从而达到验证AXI_GP的slave功能。
图1 验证方案框图
2. 工程步骤
2.1 建立XPS工程
步骤1---打开XPS工具
步骤2---新建工程,记得填写好工程路径。
步骤3---选取好相关平台和器件,我们这里先选ZC702平台,下面自动会选定xc7z020,没关系,后面我们可以手动修改到xc7z010。
步骤4---把所有的外设都remove,点Finish,得到一个干净的PS系统。
步骤5---修改器件,把7020修改为7010,一个基本的工程即建立好了。
2.2 制作demo
步骤1---去除多余的IO外设,这里保留SD0和UART1。
步骤2 ---添加AXI_GP的master和slave
步骤3---添加DMA IP,记得如下图④的一样,勾选自动连线(因为自动连线只能连AXI_HP或者AXI_ACP模式,我们这个demo是要用AXI_GP模式,但是没办法,这个工具相对较傻,我们不勾选自动连的话后面生成的AXI interconnect ip将master侧信号分成两组分别连接M_AXI_MM2S和M_AXI_S2MM,我们只能采用这样傻瓜式的方式生成好后再去修改)。
步骤4---如下图所示,我们可以看到已经生成了两个axi_interconnect,PS里面也自动帮你生成了S_AXI_HP0口,我们需要在PS里删除这个口。
步骤5---修改DMA IP,将GS模式改为普通模式。
步骤6 ---连线。这是最重要的一步,ISE比较傻,不像Vivado一样可以自动去勾选连线,这里只能对着信号来连,时钟一般都是勾选到PS7_FCLK_CLK0。其余的则根据需求来连。我的demo连线如下:
步骤7---连线后的Design View大概如下面几个图所示(局部放大DMA模块)。我们可以看到DMA的M_AXIS_MM2S是直接连接的S_AXIS_S2MM,相当于直接打了个loop,就不需要dma fifo了。
步骤8---检查DRCS、综合生成网表、生成位流。注意这阶段耗时可能会比较紧,需要耐心等待,如果DRCS报错,肯定是上面步骤连线出问题了。
步骤9---Export Design,导出SDK工程。
2.3 SDK调试
步骤1---新建helloworld工程
步骤2---编辑测试代码,helloworld.c为主测试代码,需要对其进行修改。
步骤3---代码编译无错误。具体的代码详见附录1。
步骤4---加载位流。如果遇到加载问题,请检查board的sw开关是否正确,还有jtag驱动是否正确安装。
步骤5---开始调试
步骤6---打开UART显示。运行的时候会报下面的告警,是因为没有设置UART串口打开。
这时候,需要在Run -- Run Configurations里面设置好STDIO Connection才行,将串口显示。
步骤7---再次运行,得到最终结果。下面为串口的打印结果。
END。
3.附录
3.1附录1---测试C代码
3.2附录2---整个demo工程
附录1和2的附件详见https://download.csdn.net/download/xinxulsq/10493236