vivado 一步一步生成自己的自定义IP核

基于AXI-Lite的用户自定义IP核设计

这里以用户自定义led_ip为例:

1.建立工程

和设计一过程一样

这样我们就进入了主界面

2.创建IP

Tools –》Create and Package IP

vivado 一步一步生成自己的自定义IP核

来到IP创建欢迎界面:Next

vivado 一步一步生成自己的自定义IP核

接下来我们要选择AXI4 peripheral,如下图

vivado 一步一步生成自己的自定义IP核

Next之后,我们可以看到IP的信息,可以自己修改某些信息:

vivado 一步一步生成自己的自定义IP核

然后修改一下Name,其余的保持默认:

vivado 一步一步生成自己的自定义IP核

下面要勾选一下Generate Drivers

vivado 一步一步生成自己的自定义IP核

然后Next之后,我们选第二个:如下图

vivado 一步一步生成自己的自定义IP核

点击finish,就进入了编辑IP的界面

3.编辑IP

vivado 一步一步生成自己的自定义IP核

既然是自定义IP核,那么我们需要修改led_ip_v1_0.v

双击文件,在15行添加output wire [3:0]led, 如下图所示:

vivado 一步一步生成自己的自定义IP核

添加用户定义的port

接下来,将我们用户的port,连接到led_ip_v1_0_S_AXI,在48行:

.LED(LED),

vivado 一步一步生成自己的自定义IP核

在led_ip_v1_0_S_AXI模块中还没有LED端口,因此展开source文件:

vivado 一步一步生成自己的自定义IP核

双击图上文件:在15行添加output wire [3:0]led,

如下图所示:

vivado 一步一步生成自己的自定义IP核

接下来就是新建用户逻辑文件了,user_logic.v

vivado 一步一步生成自己的自定义IP核

编写verilog文件:

vivado 一步一步生成自己的自定义IP核

然后这个用户逻辑模块要在led_ip_v1_0_S_AXI中例化:

例化如下:在397行左右:

vivado 一步一步生成自己的自定义IP核

保存所有文件,然后编译,在IP封装之前,确保无误:

果然编译出错,是上面有些写成了led,有些写成了LED,全部修改成LED吧:图我就不重新贴了:这次编译通过了

vivado 一步一步生成自己的自定义IP核

编译成功后,这里我们选择cancal了,就是不Run Implementation了、

接下来就是:

4.封装IP

点击左侧的Package IP

vivado 一步一步生成自己的自定义IP核

现在就一个一个来看,在IP Identification中

vivado 一步一步生成自己的自定义IP核

在IP Compatibility,可以看到已经支持zynq了,如果要添加family 右键添加即可

vivado 一步一步生成自己的自定义IP核

IP File Groups

点击红色框中的,有两警告,忽略之

vivado 一步一步生成自己的自定义IP核

在IP Customization Parameter中同样点击红色框中内容

vivado 一步一步生成自己的自定义IP核

在IP Ports里面可以看到LED这个端口了

vivado 一步一步生成自己的自定义IP核

Review and Package

可以IP核路径,点击Re-Package IP

vivado 一步一步生成自己的自定义IP核

然后出现一个警告,忽略,点击ok

这样我们就完成了自定义IP的设计和封装,然后也就回到了project_2主界面,注意之前的界面一直是在edit Ip的这个界面完成的、