1、输入端口:
从模块内部来讲,输入端口必须为线网数据类型,从模块外部来看,输入端口可以连接到线网或者reg数据类型的变量。
自我理解:
在设计时,输入接口如果是reg的话,那要接收数据就需要clk或电平来控制才能将数据打入模块内部,这样可能会导致有些速度较快的数据接收不到,因此只能定义成wire型,来实时将输入数据打入模块内部。从例化上来看,输入数据的时候只要是一根线就可以,那么wire肯定可以在例化到输入端口,而reg的输出也是一根线,所以同样可以。
2、 输出端口:
从模块内部来讲,输出端口可以是线网或者reg数据类型,从模块外部来看,输出必须连接到线网类型的变量(显式,隐式),而不能连接到reg类型的变量。
自我理解:
从模块内部来看,输出的数据是用线接出去的,所以可以用wire接出去,也可以用reg的输出口接出去,而在模块例化的时候,如果用reg,与上面理解相同,要将数据有效打入reg,然后供顶层使用,就需要clk或电平来触发,为了避免这种情况,我们都是直接用wire将输出口接到顶层。
3、输入/输出端口(必须为wire)
从模块内部来讲,输入/输出端口必须为线网数据类型;从模块外部来看,输入/输出端口也必须连接到线网类型的变量。