Verilog端口类型设置为wire还是reg型
Verilog需要在描述模块功能时或者例化模块时声明端口类型,常见的端口类型有wire和reg,常见的端口信号传输方向有input、output和inout,如无特殊说明端口类型默认为wire。
结论:
在描述模块功能时,input只能为wire型,output可以为wire或者reg型,inout只能为wire型;
在例化模块时,被例化模块的input可以为wire或者reg型,output只能为wire型,inout只能为wire型。
为什么?
在描述模块功能时,input相当于芯片的引脚,外界给什么就接收什么,所以input只能为wire型;output相当于芯片的输出,就是处理结果输出,可以直接输出(如组合逻辑)也可以寄存一会再输出(如时序逻辑),所以output可以为wire或者reg型;同理inout只能为wire型。
在例化模块时,被例化模块的inout作为模块的激励,外界想输入什么就输入什么,被例化模块的input可以为wire或者reg型;output就是模块通向外界的一根输出导线,模块外部只能被动接收,所以output只能为wire型;同理inout只能为wire型。