| ||
Xilinx的Vivado采用原理图的设计方式,比较直观适合大型项目,我们自己的code都需要封装成user IP。
这里主要介绍怎么把多个关联管脚合并成类似bus的大端口
第一大部分 选择source文件
先新建一个project,把要package的v文件加进去,一般都会先做功能仿真
Tools->Create and Package IP,我个人喜欢用第一项current project;
第二项block design用来封装多层嵌套的大IP;
第三项是封装指定文件夹下的source文件,也非常好用;
第四项是新建一个AXI4接口的IP,比如说我要自己写AXI-HP的接口就用这个;

建个文件夹verilog_IP,存自己的IP,每个IP再建个子文件夹

第二大部分 端口分组合并
Parameter页除了第一个Width是传递参数,其他都是状态机的参数,可以全部删掉

Ports页会自动把能识别的clk和rst都分类好,但不是我们想要的分类,要删

选中右键 Remove Interface

接下来就是信号分组,也叫bus interface
分两种情况,需要跟xilinx的IP对接的标准接口要用Add Bus Interface,我们自己定义的接口用Create Interface Definition来新建;

前面的port是打算引出芯片的nand接口,选中右键Create Interface Definition,名称nand_x8
后面的bram0和bram1都是要跟标准AXI_BRAM接口对接的,各自选中右键Add Bus Interface
先是标准接口,默认是aximm_rtl,要换成bram

打开浏览进入Chooser页,选Advanced页的bram接口

选好后如下,General页,这里Mode选master,跟你代码的in/out有关

然后Port Mapping页,逐个接口map,主要依据in/out/inout类型关联。接口太多先search筛选

接着是user定义的接口
如果你有多个相同的bus接口,可以每个都新create,也可以先create一个,然后后面几个用Add Bus Interface的方式。
在Chooser中的User子项找到nand_x8接口,然后逐个map。建议用后面一种,因为在你把IP引出port的时候命名会保持原值,否则你还得逐个改信号名。
补充:请把Location的位置改成自己IP下的文件夹,放在Roaming系统文件夹下下次就找不到了。

最终的界面就清爽了,折叠成了3个bus接口,可以再右键Edit

参考二

最终框图。输入脚在左,输出脚在右

参考二

确认下名字和路径,全部OK后点Packaged IP就完成了

第三大部分 调用 IP
然后你在IP Catalog中是可以选中新IP的

如果后续再建project时,搜不到自己的IP,请按照下面的方式添加IP路径

IP的更新也有很多注意事项,在下一篇中详细说明。
/2