学习内容
本文首先进行自定义IP的AXI总线IP的设计,然后在SDK下编写代码进行DDR的读写数据的测试。
开发环境
vivado 18.3&SDK
PYNQ-Z2开发板
系统框图
首先对本次工程进行简要说明:本次工程使用AXI-Full接口的IP进行DDR的读写测试。在我们的DDR读写IP中,我们把读写完成和读写错误信号关联到PL端的LED上,用于指示DDR读写IP的读写运行状态。然后使用PL部分消抖处理后的按键进行启动AXI总线工作,控制数据写入。通过AXI互联模块连接到AXI_HP0端口,由PS端口进行数据的读取操作,并通过串口进行读写数据的监控。
自定义IP设计
首先打开Vivado软件,在Tasks这里选择New IP lacation
点击next,对IP的信息进行设置,这里我们使用默认配置即可。设置好我们IP要保存的位置。
点击Tools中的创建和封装新的IP选项,
点击NEXT ,选择我们的封装类型。因为这里我们是直接进行打开IP设计的界面,前两个选项是可以在我们的vivado当前工程下面进行封装设计,这里我们只进行了IP设计没有建立工程,所以前两个选项是无法选中的。我们也可以通过工程界面,进入点击Tools中的创建和封装新的IP选项。
这里是用DDR读写IP来做主机,控制数据写入,PS作为从机进行读取IP中写入的数据。
可以直接选中进行编辑IP,用户可以根据自己的设计进行修改编辑IP的功能,这里没有对IP进行修改处理,所以可以直接保存选择第一个添加到IP库中即可。
若修改相应的逻辑功能打开IP,在对应位置编辑添加代码即可。
添加完成综合后对IP进行重新打包。DDR读写IP设计完成,创建的 IP 核将通过 AXI4 Master 端口向 Slave 端指定的 4K 存储空间中连续写入 1024 个数据, 写入的数值从 1 累加到 1024, 每个数据占 32bit。然后进行硬件平台的构建。
硬件平台构建
首先,添加ZYNQ7 IP核,以及添加已经完成设计的ddr读写IP核。
添加用户自定义IP
用户自定义的IP可通过以下步骤完成添加。点击Settings,
在project settings选择IP,依次点击,在IP库那里点击加号,把对应的IP目录文件夹添加后,点击OK或者Apply即可完成添加,在IP库中就可以找到用户设计的IP。
完成IP和ZYNQ7 IP的导入后,如下图:
双击打开zynq删除多余的接口,这里只需要保留uart,并打开Slave HP0端口、时钟、复位端口。
配置完,选择自动连接接口,完成部分连接设计。
整体设计图如下,