Verilog中端口应该设置为wire形还是reg形

初学Verilog时,一直搞不清Verilog描述模块时端口应该取什么类型;是reg形?还是wire形?模块对应测试文件的端口类型为什么又与模块的端口类型不一样?因此有必要进行学习与整理:

先写结论:
verilog中的端口具有三种传输方向:input、output、和inout,所有的端口均默认为wire类型;

模块描述时,input端口只能为线网形,output端口可以为线网/reg,inout端口只能为线网形;

模块调用时(实例化模块时对应端口的信号),连接模块input端口的信号可以为线网/reg形,连接模块output端口的信号只能为线网,连接模块inout端口的信号也只能为线网形;

如何理解:
模块描述时:

Verilog描述模块时,所处的角度实际为芯片(模块)内部,描述了模块内部对输入信号进行处理最后输出处理结果的过程;

因此:

模块的输入从模块内部看,就是外界输入的一根信号线,外界来什么模块就接收什么,因此模块描述时input端口只能为线网类型;
模块的输出从模块内部看,就是处理结果向外界的输出,可以直接输出(如组合逻辑)也可以寄存一会再输出(如时序逻辑),因此模块描述时output端口可以为线网类型/reg形;
同理,模块描述时inout端口只能为线网类型;
模块调用时:

模块调用时如测试文件实例化模块,以及顶层文件实例化模块时,所处的角度实际为芯片(模块)外部,描述了其采用何种信号与芯片(即底层模块)连接,进行驱动或得到输出。

因此:

模块的输入从模块外部看,输入信号作为模块的激励,外界想输入什么就输入什么,想何时输入就何时输入,因此模块调用时input端口可以为线网类型/reg形;
模块的输出从模块外部看,模块外部看来输出端口就是模块通向外界的一根输出导线,模块外部只能被动接收,因此模块调用时output端口只能为线网类型;
同理,模块调用时inout端口只能为线网类型;
参考文献:
Verilog端口连接规则
————————————————
版权声明:本文为CSDN博主「CLL_caicai」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/CLL_caicai/article/details/104457700

  • 7
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值