Verilog

Verilog 模块端口连接规则(reg/net)

Verilog设计中,任何一个模块都可以看作由输入端口和输出端口组成,而任意一个端口,又可以看成由互相连接的两个部分组成(端口内部和端口外部)。当在一个模块中调用(实例化)另一个模块时,端口之间的连接必须遵守一些规则1
Verilog总结:
1.普通模块声明中,reg变量只可作输出,不可作输入,简单来说,外部模块需要传递数据给内部模块时,内部模块做的只是接收而不需要暂存,reg变量对应寄存器,当外模块内有需要存储的数据时,在外模块内定义寄存器即可,而外模块和内模块互联一定是通过互连线直接连接,通过寄存器连接则显得没有必要。所以任何模块的输入端口一定对应net类型
2.对于内模块的输出变量,则根据需求以及电路种类(组合/时序),定义为reg类型或net类型
3.顶层模块例化子模块时,本身顶层模块是人为虚拟出来的,他并没有实际的输入,输出端口。声明连接变量时,子模块的输入端口对应的连接变量一般是reg类型(当然net类型同样合法)


  1. Verilog HDL数字设计与综合 (第二版) Samir Palnitkar ↩︎