图示:
1、 首先建立一个module,命名为top
2、将连接后的整体输入和输出写入module
例如 :
3、点击要调用的子模块
选择View HDL Instaniation Template:
(instance name由用户自己定义)复制进top模块下:
!!!注意:最后要构成整体的里面的连线,要用wire <名字>;标注出来,要不然仿真会出错,如上图wire clk_1HZ,使分频后的时钟信号作为CONTROL模块的时钟输入。将调用的子模块都这样写入top模块即可完成模块的调用,构成一个新模块,或者理解为将这几个子模块封装起来,只留出了输入和输出,即为第一张图所示。
总结以下3个观点:
1 各个子模块的设计可以相互独立,不必写在同一个文件里
2 例化子模块的时候,不需要手打,采用“view HDL instantiaion Template”!例化更为方便。
3 线端子进行连接的时候,定义wire ,采用assign赋值的方式即可完成。
4 一定注意不要落下子模块间的连线,一定要用 wire <名字>声明一下。
fpga开发
vivo16年出的手机
精选推荐
广告
Verilog子模块调用教程
126下载·1评论
2014年11月23日
SV验证-1建立顶层文件
100阅读·0评论·2点赞
2022年11月13日
子模块到顶层模块——例化与调用
1.7W阅读·0评论·13点赞
2018年5月7日
verilog图像处理顶层文件和仿真文件
247阅读·0评论·0点赞
2022年11月4日
ISE tips
119阅读·0评论·0点赞
2013年5月31日
parameter 顶层模块和子模块之间的parameter 不一致
860阅读·0评论·0点赞
2019年7月1日
再现神预言:这也许是2023年黑马的行业,将造就大批千万富翁!
00:46
12天提升收入
广告
看谁是顶层module呀,module们都是并行的,只是在语言上看着是顺序的,一般都是状态机,各个模块要等到状态到来时才开始执行。他没有什么入口。说直白点,就是你新建一个test.v,在这个test.v里调用你加进来的那些.v文件就可以了。
如果是QII的IP核,在QII软件中通过Megacore Wizard加入,就可以了。如果是第三方的IP核,你应该有他的全部代码。把所有代码都加入到你的工程中,在需要的位置,例化顶层文件,连接好所有的接口,就行。
我想,如果你需要使用这个IP,那么你对这个IP的顶层接口应该了解,对它的功能,应该知道。只要把它当做一些模块加入进来就好了。
如果是没有代码的网表文件,那就在工程中加入网表文件并例化。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)