模块定义时的端口类型和例化时连接端口的信号类型可以不一致。
(1)模块定义时new_data为输入端口,必须为wire型,而例化时,连接此端口的信号类型可以为wire型,也可以为reg型
(2)show_cnt定义时为输出端口,可以为reg类型,也可以为wire类型,但是例化时连接此端口的信号类型必须为wire类型。
模块定义时:
例化时:
版权声明:本文为优快云博主「墨舞ing」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/m0_55879969/article/details/123471865
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型。
————————————————
版权声明:本文为优快云博主「执剑归零者」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/qq_41045973/article/details/115598909