cuter

Vivado轻松实现IP封装

0
阅读(11110) 评论(32)

Vivado轻松实现IP封装

1、新建一个测试工程

工程化的设计方法是离不开工程的,第一步往往都是新建工程,后面我会学习去工程化的开发方法,可能会更加高效。


2、利用向导完成IP封装

2.1、启动IP向导


方法为:ToolsàCreate and Package IP…,如图1所示。


1 创建或者打包IP

点击Create and Package IP…命令,弹出向导,如图2所示。

2 创建和封装IP向导

直接NEXT,进入下一界面,如图3所示。选择操作类型,我们这里不是新建IP,也不是要打包当前工程,而是要把runled_src文件夹下封装成一个IP,所以选择第2项。NEXT


3 选择操作类型为封装特定目录

接下来一步要注意了,选择你要打包的资源所在的文件夹,我这里是把要打包的3个文件放在了my_ip/runled_src下面,所以选择了这个路径,如图4所示。

4 待打包资源所在文件夹

接下来,向导提示需要为IP工程制定一个名字和存储地址,如图5所示。这里采用默认名称即可,这个工程是临时的,IP封装完之后就会消失,再次编辑IP时才会再重新建立。


5 临时工程名称、存储路径

NEXT,接下来就是最后一步了,是一些提示信息,大家可以自己看一下。点击Finish结束向导。

6 summary

2.2IP参数设置

注意,这里已经进入了edit_ip_project工程,是为打包IP核新建的那个工程,我们在上面指定了名称和路径(见图5.

对打包后的IP进行一些参数配置,如供应商,分类(默认是BaseIP,使用时要到该分类下查找我们封装的IP)等信息,这里不一一详述了,需要时,自行修改即可。

7 IP参数设置

下一步:不做属性上的修改,直接进入最后一步(单击Review and Package),点击图8中的Package IP按钮,开始打包。

8 开始打包

打包完成后,edit_ip_project工程会自动关闭,返回我们建立的测试工程。


3、查看IP封装结果

Flow Navigator子窗体下找到Project Manager à IP Catalog,单击IP Catalog,右侧会弹出IP Catalog子窗体,将BaseIP目录展开,发现runled_top_v1_0已经成功导入。

到这里,封装已经完成了,本文要叙述的主题也已经完毕。

 

 ------------------------------------------------------分割线---------------------------------------------------------------

但由于是第一次使用,不太放心,所以测试一下,接下爱来各小节是测试用的,不想看的可以直接略过。

4、测试

建立一个Block Design,将runled_top_v1_0添加进去,添加输入输出端口,最终结果如图9所示。 

图9 Block Design

5、添加约束、综合、实现、生成Bitstream

约束文件:

#In the following the XDC constraint is matched to the origanal UCF constraint, XDC above, UCF below # Commented
 
set_property PACKAGE_PIN Y9 [get_ports {iClk}]
set_property IOSTANDARD LVCMOS33 [get_ports {iClk}]
 
#NET GCLK          LOC = Y9   | IOSTANDARD=LVCMOS33;  # "GCLK"
 
# Bank 33, Vcco = 3.3V
#set_property IOSTANDARD LVCMOS33 [get_ports -filter { IOBANK == 33 } ]
set_property PACKAGE_PIN T22 [get_ports {oLed[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {oLed[0]}]
#NET LD0           LOC = T22  | IOSTANDARD=LVCMOS33;  # "LD0"
set_property PACKAGE_PIN T21 [get_ports {oLed[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {oLed[1]}]
#NET LD1           LOC = T21  | IOSTANDARD=LVCMOS33;  # "LD1"
set_property PACKAGE_PIN U22 [get_ports {oLed[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {oLed[2]}]
#NET LD2           LOC = U22  | IOSTANDARD=LVCMOS33;  # "LD2"
set_property PACKAGE_PIN U21 [get_ports {oLed[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {oLed[3]}]
#NET LD3           LOC = U21  | IOSTANDARD=LVCMOS33;  # "LD3"
set_property PACKAGE_PIN V22 [get_ports {oLed[4]}]
set_property IOSTANDARD LVCMOS33 [get_ports {oLed[4]}]
#NET LD4           LOC = V22  | IOSTANDARD=LVCMOS33;  # "LD4"
set_property IOSTANDARD LVCMOS33 [get_ports {oLed[5]}]
set_property PACKAGE_PIN W22 [get_ports {oLed[5]}]
#NET LD5           LOC = W22  | IOSTANDARD=LVCMOS33;  # "LD5"
set_property PACKAGE_PIN U19 [get_ports {oLed[6]}]
set_property IOSTANDARD LVCMOS33 [get_ports {oLed[6]}]
#NET LD6           LOC = U19  | IOSTANDARD=LVCMOS33;  # "LD6"
set_property IOSTANDARD LVCMOS33 [get_ports {oLed[7]}]
set_property PACKAGE_PIN U14 [get_ports {oLed[7]}]
#NET LD7           LOC = U14  | IOSTANDARD=LVCMOS33;  # "LD7"
 
# Bank 34, Vcco = Vadj
#set_property IOSTANDARD LVCMOS18 [get_ports -filter { IOBANK == 34 } ]
set_property IOSTANDARD LVCMOS18 [get_ports {iRst_n}]
set_property PACKAGE_PIN P16 [get_ports {iRst_n}]
#NET BTNC          LOC = P16  | IOSTANDARD=LVCMOS18;  # "BTNC"


生成Bitstream以便进行板级测试。

 

6、测试

利用Vivado内置的Hardware Manager向导将Bitstream烧写进FPGA,流水灯顺利出现,OK

 

版权声明:

本文由博主“cuter”发布。欢迎转载,但不得擅自更改博文内容,也不得用于任何盈利目的。转载时不得删除作者简介和版权声明。如有盗用而不说明出处引起的版权纠纷,由盗用者自负。

博客官方地址:

ChinaAET:http://blog.chinaaet.com/cuter521

EDN China: http://bbs.ednchina.com/BLOG_cuter521_356737.HTM

  1. 厉害了我的哥

  2. ***此内容已被管理员屏蔽***

  3. IP locked 怎么unlocked?
  4. 博主 有没有新建带中断的IP核?
  5. 谢谢博主的博客,最近也在学习这个zedboard。。。。从你这,学到了很多东西。。
  6. 匿名用户匿名用户
    @匿名用户(61.183.23.29 )

    应该不会删除的,你打开Vivado之后,右键看一下.V文件的路径,就能找到了

  7. 匿名用户匿名用户
    大哥,封装了,把我原来的.v文件全删了,能还原吗?
  8. @cuter
    谢谢,等你有时间再向你请教哈
  9. @guuch

    抱歉,我现在在外面参加公司的活动,不方便上网写东西,等我这边详细样例的话要到明天或者后天。showornot是顶层模块的一个参数,自己定义的
  10. @cuter

    你好,我试了一下,我只能按照你的第一张图有显示,可是后面两种我没有“ShowOrNot”选项?请问这个“ShowOrNot”选项是怎么设置的?谢谢

    第一张图,

    第二张图





  11. @guuch

    有的,选中你想设置的端口,右键在弹出的对话框中就可以设置端口是否可见了。

    看我做的效果图吧:

    首先是勾选ShowOrNot参数的端口情况:

    然后是取消勾选ShowOrNot:

  12. @匿名用户(166.111.139.12 )

    我只找到了vivado内置的一些接口,比如HDMI、UART、video timing等,可以把自己的信号映射到这些端口,添加总线接口的操作是选中下图所示的“IP Ports and Interfaces”,然后点击红色方框内的"+"按钮,就可以添加总线接口了,剩下的步骤自己试试吧!至于能不能直接修改xml文件来定义自己的接口,还需要尝试!

  13. @cuter 我想封装IP的时候,对有些端口做出选择(可以让他在默认情况不出现,勾选情况下才出现的端口),请问有这个功能么?
  14. @匿名用户(166.111.139.12 )

    今晚我会看一下这个问题
  15. 匿名用户匿名用户
    您好 我按照上面得方法已经成功了,有个小疑问 就是我端口比较多,看vidado自带的ip 把端口都分组了 就像axi之类了 slave1 slave2分组方式,只看到xml里面有端口定义但是这里可以怎么去修改好呢 求指导