下面以我之前写的一个串口程序为例。
将代码拷贝到一个目录下,该目录不能有中文和目录。
然后打开vivado软件。
选择创建和封装IP。
因为是要封装IP,选择第二个
为ip指定一个路径。
为IP设定工程名和工程路径。
这样,就创建好了IP工程。可以看到软件会自动导入设计,并将顶层代码给设置成顶层。
右边部分就是设置IP。
第一个是配置一些IP信息,可以在这里填入一些信息。
在categories,可以更改IP的类型,这样的话,方便以后查找。
第二项是配置IP在哪些器件上可以用。
可以添加器件。
第三个是代码的一些文件
包含综合和仿真。
第四个是定义IP的参数。
在顶层代码中,使用parameter定义了两个参数,所以软件会默认把这两个参数给加进参数列表中。
在这里,我们填加两个信号,
is_tx_enable: 发送使能
is_rx_enable: 接收使能
两个信号是用来选择发送和接收是否使能的。因为有可能我们只会用到串口的一个功能。
然后进入参数设置列表。
这里有几个设置,第一个设置是设置参数的类型,第二个是设置参数的默认值。这里因为是一个使能信号,所以设定为bool型,默认是false。
然后再添加ix_rx_enable信号。
下面一个是设置端口的。如图,软件很自动的把顶层的信号给设置成端口。在这里,是可以设置这些IO端口是使能还是不使能的,这个时候就需要用到在上面定义的参数了。
在参数列表中,定义了一个is_tx_enable信号,这个信号有效的时候,使能发送,那么发送的端口就有效,否则发送的端口就无效。
以后设置发送的一些端口。
在端口选项选择yes,表示端口是可以配置的。然后再下面的框中填入表达式
Is_tx_enable == 1 。说明档参数is_tx_enable为1的时候,端口是有效的。
依次设置其他的一些管脚。
对发送和接收的部分都设置为参数使能。
下一个是地址和内存配置,这个目前还不知道有什么用。这里也不需要,跳过。
最后一个就是IP的界面配置设置。当我们用IP的时候,会出现一个图形化界面,来对IP进行配置,这个就是实现这样的功能的。
下面是默认的参数,可以看到这里默认有两个参数,视图里面只有时钟和复位管脚,因为我们定义了两个使能参数对发送和接收使能管脚配置,而参数默认为是false的,所以发送和接收的管脚都没有使能。
添加参数
这里可用的参数就是我们之前在参数配置界面添加的那两个,将两个都加进来。
这个时候参数那边就多了两个了。我们使能其中一个,is_tx_enable。
可以在视图看到发送的管脚加入了进来。
最后对封装的IP进行打包就可以了。
这样,就对我们的IP给封装好了。。。然后就直接在使用中调用就可以了。
首先要在工程设置中加入IP的位置。
然后在设计中直接添加IP就可以了。
选择我们封装的IP
就出现了
然后双击对IP进行配置
这样,一个IP就调用配置了。
接下来就对IP进行连线,和生成外部管脚,并对管脚加约束就可以了。
可以看到,vivado软件比ISE在IP方面要好用多了。而且使用也比较简单。