Verilog中模块的地址调用有两种方法,一种是通过位置调用,另一种是通过名称调用。*
一.*我们先看一下按位置调用及程序仿真结果。
1.我们首先找一个编写程序调用模块
此图有一个外置模块和一个内置模块,我们使用内置模块调用外置模块的输入输出端口
2.编写一个程序
按位置调用top_module模块的端口用于对应我们编写的实例化模块mod_a模块
接下来看一下仿真结果:
通过仿真可以看出没有任何结果输出,这是为什么呢?
原来是我们将输入输出端口写反了,在按位置调用的时候需要先写输出端口,再写输入端口;
3.修改后的程序
此时我们修改了输入输出的端口位置,再来看一下仿真结果:
此时我们的仿真结果的有输出且结果正确。 因此,在使用按位置调用的时候我们需要格外注意端口的方向和顺序。这种按位置调用有一个不足的点,当我们的端口位置发生变化的时候,我们实例化的模块将会中断,不在调用。
二.现在来看一下如何按名称调用
1.老规矩,先上图
此模块也是一个实例化调用,和上文一样,就不多赘述了;直接看程序和结果;
2.程序和结果
此时我们可以看到按名称调用这种写法比较冗长,但是程序可读性较强。
仿真结果显示我们的程序没有问题,输出结果也正确。
按名称调用需要注意两点:
1.使用此种调用端口的顺序不受影响,也就是说无论你书写顺序如何变化,都不会影响输出结果,因为端口是一一对应的;
2.要特别注意端口前面的句号,如果忘写了则程序不能调用且会报错。