自定义axi4_lite IP核封装
首先打开vivado新建一个简单得工程,按以下步骤,我用的vivado版本是2020.1的,但所有版本的vivado大体流程差别不大。
创建新的工程,点击next
根据实际情况起项目名称及项目存放地址,这里是对上一篇的GPIO进行封装,就取GPIO的名称。
默认选项一路Next
选择对应的芯片,我用的芯片是xczu3eg-sfvc784-1-i ,选好Next
再次确认信息,然后点击finish
到这步之后工程已经建立,一般有两种方式对自定义的AXI4_Lite IP进行封装。第一种是先用官方的AXI4_Lite,然后添加自己写好的代码,把原来官方生成的axi4_lite代码的删除。第二种就是直接自定义封装,把代码都加进去,相对会简单些。
点击Tools,选择Create and Package New IP...
点击Next
方法一:
修改IP核的名称,Next
选择Type为Lite,interface Mode 选择slave,点击Next。
选择Edit IP,点击finish。
接着添加已经完成的代码,点击next
导入文件完成,可以把原来生成的代码删除,如下图:
然后观察Packaging Steps,前两项已经有绿勾,我们直接点击File Groups,然后点击红框下的Merge changes from File Groups Wizard
然后接着点击下一项,对蓝框的内容进行删除。
上述步骤完成之后,会出现报错,可以先不管,然后点击下一项,把S00_AXI接口及相关的S00_AXI_RST和S00_AXI_CLK删除。
删除之后,发现错误消失了
然后对端口进行编辑如下:
把1,2步骤先勾选,然后把接口名称与实际代码接口名称相匹配,完成第三步,依次把实际代码的接口匹配成功
匹配完成之后如下:
为了保住连线自动完成,最好把AXI4_Lite_slave接口与时钟相关联:
接着回到Customization Parameter,对里头的参数进行重新编辑对寄存器地址的参数进行隐藏,IO_NUM可视化操作,完成后的结果如下:
最后要保证Addressing and Memory 的AXI4_Lite的地址跟接口对应得上,我的axi4_lite接口的名称是AXI4_Lite_slave,具体如何操作如下:
1.选中Addressing and Memory项,在右边空白处右键,点击红框项
点击next
选择匹配的AXI4_lite接口名称,我这已经选过了。
之后一直Next直到finish,把原来的S00_AXI接口的地址删除,就得到下图警告也没了:
最后的步骤就是封装IP核,点击左边最后一项Review and Package,点击Package IP则完成此次操作。
方法二:
工程上先把需要封装的代码添加完成,然后点击封装IP
选择红框的封装当前代码
此时IP核编辑的页面跳出来了,跟方法一类似:
选中Ports and Interfaces,添加相应的S_AXI总线,并与实际接口匹配:
接着是关联时钟,对GPIO的三态口添加接口,完成后如下图:
接着是最关键的一步,选中Addressing and Memory项,点击又框中的Addressing and Memory
这时我们选中S_AXI4_Lite
完成以上操作之后,IP核的编辑基本已完成,可以通过Customization GUI查看IP核的图形化界面。之后点击左边最后一项Review and Package,点击Package IP就完成IP的自定义过程。
以上便是对自定义AXI4_lite从机IP的封装方式,相对来说方法二更加简单些,下图是在添加Create block design下显示的结果