0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

不同情况下,在Verilog中什么时候用wire,什么时候用reg

电子工程师 来源:FPGA设计论坛 作者:FPGA设计论坛 2020-09-28 11:26 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

Verilog中何时用wire,何时用reg?

Verilog HDL中的变量可以定义为wire型和reg型,这两种类型的变量在定义时要设置位宽,缺省为1位,变量的每一位可以取0、1、x、z,其中x代表未预置初始状态,z代表高阻状态。
reg相当于存储单元,wire型相当于物理连线,即reg型变量保持最后一次的赋值,而wire型变量需要持续的驱动。

那么,在Verilog HDL中何时用wire,何时用reg型变量呢?
wire为连线,本身不带逻辑性,所以输入什么输出就是什么
若变量放在begin…end内,则声明为reg型;否则,声明为wire型
在always块中的变量,只能是reg型
使用wire型变量时,必须搭配assign
input、output、inout声明的变量,默认都是wire型

若wire和reg用错了,编译器会提醒,一般不用太担心,下面再从仿真和综合的角度解释一下。


简单来说,硬件描述语言有两种用途:仿真、综合,对于wire和reg的理解,也可以从这两个角度来考虑。

从仿真的角度来说,HDL语言面对的是编译器,相当于软件思路,这时:
wire对应于连续赋值,如assign
reg对应于过程赋值,如always块、initial块

从综合的角度来说,HDL语言面对的是综合器,要从电路的角度来考虑,这时:
wire型的变量综合出来一般是一根导线。
reg变量在always块中有两种情况:(1) always后的敏感表中是(a orb or c)形式的,也就是不带时钟边沿的,综合出来还是组合逻辑。(2) always后的敏感表中是(posedgeclk)形式的,也就是带边沿的,综合出来一般是时序逻辑,会包含触发器。


在设计中,一般来说我们并不知道输入信号是来自上一级寄存器的输出还是组合逻辑的输出,那么对于本级而言就是一根导线,也就是wire型。而输出信号则由你自己来决定是寄存器输出还是组合逻辑输出,wire型和reg型都可以,但通常整个设计的外部输出(即最顶层模块的输出)是寄存器输出,这样电路比较稳定。

责任编辑:xj

原文标题:在Verilog中何时用wire,何时用reg?

文章出处:【微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Verilog
    +关注

    关注

    30

    文章

    1370

    浏览量

    114140
  • Reg
    Reg
    +关注

    关注

    0

    文章

    20

    浏览量

    11792
  • Wire
    +关注

    关注

    0

    文章

    24

    浏览量

    16232

原文标题:在Verilog中何时用wire,何时用reg?

文章出处:【微信号:gh_9d70b445f494,微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    为什么sconscript这么写,没有构建文件的情况下,反而会构建所有文件?

    在有一个文件夹有返回的时候,构建关系正常。 没有任何选择的情况下,构建关系异常。(这时候应该所有文件划伤×且不编译) 这是我sconscript的写法
    发表于 09-24 07:41

    快问快答:什么时候需要多通道气密性检测设备?选择几个通道合适

    当生产线的节拍越来越快,单通道气密性检测仪开始成为瓶颈时,多通道气密性检测设备就进入了您的视野。但问题是:什么时候需要多通道?选择几个通道?如何权衡成本与效率?精诚工科多通道气密性检测设备扫地机
    的头像 发表于 09-08 11:31 401次阅读
    快问快答:<b class='flag-5'>什么时候</b>需要多通道气密性检测设备?选择几个通道合适

    wifi8什么时候出?wifi8是什么意思?wifi8解读

    (OBSS:overlapping basic service sets ) 的场景,也可将95%的数据包延迟减少 25%,并将 MAC 协议数据单元 (MPDU:MAC Protocol Data Unit) 丢失率减少 25%;  降低AP功耗并改善点对点通信 wifi8
    的头像 发表于 06-10 15:25 2710次阅读

    LuatIO:一键可视化,让GPIO配置成为物联网开发的“丝滑体验”!

    38个GPIO,这38个GPIO又可以复用为各种各样的功能,如上表所示。 比如PIN66: 什么时候用作I2C0_SDA? 什么时候用作I2C1_SDA? 什么时候用作GPIO19? 什么时候
    的头像 发表于 06-04 16:28 504次阅读
    LuatIO:一键可视化,让GPIO配置成为物联网开发的“丝滑体验”!

    将DMACB寄存器的RC位设置为1来DMA传输结束时重新加载计数器,什么时候将需要重新加载的值存储FM3

    我尝试通过将 DMACB 寄存器的 RC 位设置为 1 来 DMA 传输结束时重新加载计数器。 什么时候将需要重新加载的值存储 FM3
    发表于 04-30 07:33

    为什么adc芯片不写输入时钟范围,实际使用应该怎么给?什么时候与处理器同源?

    为什么adc芯片不写输入时钟范围,实际使用应该怎么给?什么时候与处理器同源?
    发表于 04-15 06:10

    DLPC6401什么时候可以只用Nand Flash或者EEPROM单独对DLP进行配置?

    DLPC6401什么时候可以只用Nand Flash或者EEPROM单独对DLP进行配置?
    发表于 02-28 07:47

    DLPC3432如何确认各种情况下HS的Sub-LVDS的速率?

    工程师您好,我使用DLPC3432+DLPA2000+.23qHD DMD的系统,想问一如何确认各种情况下HS的Sub-LVDS的速率? datasheet说HS最大600MHz,LS固定120MHz。 传输速率是一直不变
    发表于 02-21 06:39

    不管是LTC6912还是AFE5801通过SPI总线对reg进行写的时候写的过程,AFE5801还在工作状态吗?

    不管是LTC6912还是AFE5801通过SPI总线对reg进行写的时候写的过程,AFE5801还在工作状态吗?被写的这个reg里的
    发表于 02-11 07:24

    ADS1204 CLKSEL置1时,如何采集数据?怎么知道什么时候是最高位?什么时候是最低位?

    当CLKSEL置1时,如何采集数据?意思是怎么知道什么时候是最高位?什么时候是最低位?
    发表于 02-06 06:51

    adc08100测试输入的时候,为什么输入零的时候还是有输出?

    adc08100测试输入的时候,为什么输入零的时候还是有输出???
    发表于 01-17 07:21

    ADS1115的Config Register什么时候配置比较好?

    请问一大家: 1、ADS1115的Config Register 什么时候配置比较好,因为我需要采集双通道AD 2、写入的时候是不是要先写ADDR,然后Pointer
    发表于 01-10 10:30

    ADS1254模拟SPI的方式读取数据,读取到的数据呈现下降沿趋势,为什么?

    为什么呢?(搞了好久还是没搞明白……) 还有我想请教一这个芯片什么时候去采样,DOR里的数据是否是当前采样点的数据。
    发表于 01-09 07:23

    AMC1304M05怎么读取DOUT数据?

    想用此芯片做电表的数据采集,不知道什么时候开始读这个数据,什么时候开始读都可以吗?时钟信号可以I0口模拟吗?有没有demo程序?网上资料太少,搞了几天都没有搞明白。
    发表于 12-24 06:22

    请问AFE4400读取的数据什么时候才会出现0?

    我目前的是AFE4400,读取的是红光、红外光和去环境红光,我想知道读取的数据什么时候才会出现0?随着光照增强,是不是接受到的数据会变得更大?我读取数据的时候,完全屏蔽掉接收端能够读到0,但是
    发表于 12-20 10:03