weiqi7777

Vivado封装自定义IP

0
阅读(6542)

Vivado可以将自己的verilog代码设计封装成IP,然后在设计中调用该ip.ip还可以配置参数。所用软件为2014.4

下面以我之前写的一个串口程序为例。

clip_image002

将代码拷贝到一个目录下,该目录不能有中文和目录。

然后打开vivado软件。

clip_image004

clip_image006

选择创建和封装IP。

clip_image008

因为是要封装IP,选择第二个

clip_image010

为ip指定一个路径。

clip_image012

为IP设定工程名和工程路径。

clip_image014

clip_image016

这样,就创建好了IP工程。可以看到软件会自动导入设计,并将顶层代码给设置成顶层。

右边部分就是设置IP。

clip_image018

第一个是配置一些IP信息,可以在这里填入一些信息。

clip_image020

在categories,可以更改IP的类型,这样的话,方便以后查找。

第二项是配置IP在哪些器件上可以用。

clip_image022

可以添加器件。

第三个是代码的一些文件

clip_image024

包含综合和仿真。

第四个是定义IP的参数。

clip_image026

在顶层代码中,使用parameter定义了两个参数,所以软件会默认把这两个参数给加进参数列表中。

在这里,我们填加两个信号,

is_tx_enable: 发送使能

is_rx_enable: 接收使能

两个信号是用来选择发送和接收是否使能的。因为有可能我们只会用到串口的一个功能。

clip_image028

clip_image030

然后进入参数设置列表。

clip_image031

这里有几个设置,第一个设置是设置参数的类型,第二个是设置参数的默认值。这里因为是一个使能信号,所以设定为bool型,默认是false。

然后再添加ix_rx_enable信号。

clip_image033

下面一个是设置端口的。如图,软件很自动的把顶层的信号给设置成端口。在这里,是可以设置这些IO端口是使能还是不使能的,这个时候就需要用到在上面定义的参数了。

clip_image035

在参数列表中,定义了一个is_tx_enable信号,这个信号有效的时候,使能发送,那么发送的端口就有效,否则发送的端口就无效。

以后设置发送的一些端口。

clip_image037

在端口选项选择yes,表示端口是可以配置的。然后再下面的框中填入表达式

Is_tx_enable == 1 。说明档参数is_tx_enable为1的时候,端口是有效的。

clip_image038

依次设置其他的一些管脚。

clip_image040

对发送和接收的部分都设置为参数使能。

下一个是地址和内存配置,这个目前还不知道有什么用。这里也不需要,跳过。

clip_image042

最后一个就是IP的界面配置设置。当我们用IP的时候,会出现一个图形化界面,来对IP进行配置,这个就是实现这样的功能的。

下面是默认的参数,可以看到这里默认有两个参数,视图里面只有时钟和复位管脚,因为我们定义了两个使能参数对发送和接收使能管脚配置,而参数默认为是false的,所以发送和接收的管脚都没有使能。

clip_image044

添加参数

clip_image046

这里可用的参数就是我们之前在参数配置界面添加的那两个,将两个都加进来。

clip_image047

clip_image049

这个时候参数那边就多了两个了。我们使能其中一个,is_tx_enable。

clip_image051

可以在视图看到发送的管脚加入了进来。

clip_image053

最后对封装的IP进行打包就可以了。

这样,就对我们的IP给封装好了。。。然后就直接在使用中调用就可以了。

首先要在工程设置中加入IP的位置。

clip_image055

然后在设计中直接添加IP就可以了。

clip_image057

选择我们封装的IP

clip_image058

就出现了

clip_image060

然后双击对IP进行配置

clip_image062

这样,一个IP就调用配置了。

clip_image064

接下来就对IP进行连线,和生成外部管脚,并对管脚加约束就可以了。

可以看到,vivado软件比ISE在IP方面要好用多了。而且使用也比较简单。