verilog语言中,reg型与wire型的区别

本文深入解析Verilog HDL中的wire与reg变量类型,阐述二者在电路设计中的作用与区别。wire型变量如同连线,实时响应变化;reg型变量类似储存器,依据触发条件更新状态。文章还探讨了它们在模块输入输出端口的应用,以及在仿真和综合过程中的行为表现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于初学者来说,首先一个大问题就是在读程序时候,变量类型reg型wire型的区分。

最近做了点仿真工作,对两种类型的变量有一些自己的见解,写一写,交流学习。

自己的理解:

wire型相当于是一根连线

reg型相当于是储存器

在wire型相当于连线的基础上我们很容易就可以理解,当连线的来源端发生改变时,wire变量立即随之发生改变。

由此:wire型变量存在于begin...end语句之外。只能用assign语句进行赋值。(assign语句和时钟无关,只要等号右侧变量改变,左侧变量就会随之发生改变)

reg型相当于储存器的基础上,可以看做是一个一个的寄存器,当触发条件达成时,寄存器的内容才发生改变,否则一直保持上一个状态。

由此:reg型变量存在于begin...end语句之中。一般在always,initial语句中。

如果变量类型使用错误或者位置错误,vivado会提示错误,所以也不用担心。

接下来是我在仿真中遇到的一点总结:

模块的输入端口可以由wire/reg型驱动,但是输入端口只能是wire型。

模块的输出端口只能驱动wire型,输出端口可以是wire/reg型。

在设计中,输入信号一般来说你是不知道上一级是寄存器输出还是组合逻辑输出,那么对于本级来说就是一根导线,也就是wire型。而输出信号则由你自己来决定是寄存器输出还是组合逻辑输出,wire型、reg型都可以。但一般的,整个设计的外部输出(即最顶层模块的输出),要求是寄存器输出,较稳定、扇出能力也较好。

手机打字,就不贴图了。大家可以自己尝试一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值