一. 为什么要封装IP
-
IP封装后只能用不能改,也看不到源码,便于保护知识产权
-
封装之后不会再花时间综合源文件,节省了综合时间
二. ISE如何封装IP
步骤如下:
1)打开ISE,新建工程,添加源文件
2)去除Synthesize的-iobuf属性
iobuf指的是在输入输出端口添加缓冲,一般只需要在最外侧的端口添加,内部模块间的互联端口不需要添加,而IP不会作为最顶层模块,所以此处需要取消iobuf的勾选。
3)点击综合,生成*.ngc文件
ngc文件是一种二进制文件,无法通过文本编辑器打开看到内部代码,这使得使用者拿到ngc文件无法直接使用,因为看不到IP的端口信息,也就不知道怎么去实例化IP,所以,ngc文件需要搭配一个IP端口文件一起使用。而ISE也需要一个与ngc文件同名的而仅包含模块端口的文件才能去调用ngc文件。否则会报错,如下图所示。
Instantiating * from unknown module *
或者是 can’t find module *
4)生成IP端口文件
只需要将源文件的顶层文件端口复制过来即可,文件名保持不变。
5)整理IP相关文件并压缩保存
将 *.ngc文件 + 仅包含端口的*.v文件 + * IP使用说明.pdf文件(如果有的话) 整理在一个文件夹中,然后压缩。
三. ISE使用ngc文件 + 仅包含端口的同名v文件
可见,ISE将仅包含端口的*.v文件视为一个black box(黑盒),所以,也可以说使用ngc文件和black box文件。
如果本文对你有所帮助,欢迎点赞、转发、收藏、评论让更多人看到,赞赏支持就更好了。
如果对文章内容有疑问,请务必清楚描述问题,留言评论或私信告知我,我看到会回复。
徐晓康的博客持续分享高质量硬件、FPGA与嵌入式知识,软件,工具等内容,欢迎大家关注。