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

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

3天内不再提示

比较Verilog中Wire和Reg的不同之处

汽车玩家 来源:CSDN 作者:MangoWen 2020-03-08 17:18 次阅读

wire 和reg是Verilog程序里的常见的两种变量类型,他们都是构成verilog程序逻辑最基本的元素。正确掌握两者的使用方法是写好verilog程序的前提。但同时,因为他们在大多数编程语言中不存在,很多新接触verilog语言的人并不能很清楚的区别两种变量的不同之处。这里简单对他们做一个比较,方便在编程时区别使用。

功能和状态

Wire主要起信号间连接作用,用以构成信号的传递或者形成组合逻辑。因为没有时序限定,wire的赋值语句通常和其他block语句并行执行。

Wire不保存状态,它的值可以随时改变,不受时钟信号限制。

除了可以在module内声明,所有module的input 和output默认都是wire型的。

Reg是寄存器的抽象表达,作用类似通常编程语言中的变量,可以储存数值,作为参与表达式的运算,通常负责时序逻辑,以串行方式执行。

Reg可以保存输出状态。状态改变通常在下一个时钟信号边沿翻转时进行。

赋值方式

Wire有两种赋值方式

1.在定义变量时赋初值,方式是用=。如果之后没有再做赋值,初值会一直保留,(是否可以给逻辑?)

wire wire_a = 1’b0;

2.用assign语句赋值,等式右边可以是wire,reg,一个常量或者是逻辑运算

Wire wire_a;
Wire wire_b;
Wire wire_c;
Reg reg_a;
assign wire_b = wire_a;
assign wire_c =reg_a;
assign wire_d =wire_b & wire_c;

如果不赋值,wire的默认状态是高阻态,即z。

对reg的使用通常需要有触发条件,在always的block下进行。触发条件可以是时钟信号上升沿。赋值语句可以是=或者

Wire wire_a;
Wire wire_b;
Reg reg_a;
Reg reg_b;
Always @( posedge clk)
Begin
Reg_b =reg_a;
Reg_c = wire_a | wire_b;
end

Reg在声明时候不赋初值。未赋值的reg变量处于不定态,即x。

使用方式

在引用一个module时,输入端口可以是wire型,也可以reg型。这里可以把对input的赋值看作一个assign语句,使用的变量相当于等号右边的变量,所以两者都可以。

而对于输出端口,必须使用reg型,而不能是wire型。同样用assign的角度考虑,module的输出在等号右边,而使用的变量成了等号左边,assign语句等号左边只能是wire型。

位宽

这是个使用注意事项。所有的wire和reg在声明时如果不做特殊声明,只有1位。这个对于熟悉其他编程语言的人是一个容易犯错的地方。

执行

wire wire_a = 4’he;

语句最后得到的wire_a是0x1,而不是0xe。因为wire_a只取了0xe的最低位的值而省略掉了其他值。所以正确的语句应该是

wire[3:0] wire_a = 4’he;

这样wire_a输出的结果才是一个0xe。

小结

这篇文章从功能,变量状态,赋值方式,使用方式等角度讨论了wire和reg变量类型的区别。并且给出了一个在verilog中常见的使用错误及解决方法。

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

    关注

    30

    文章

    5025

    浏览量

    117703
  • Verilog
    +关注

    关注

    28

    文章

    1325

    浏览量

    109296
收藏 人收藏

    评论

    相关推荐

    光纤和光缆有何不同之处

    很多人会有这样的疑问,光纤和光缆有何不同之处?主要是因为光纤和光缆这两个名词容易引起混淆。在严格的定义下,光纤和光缆是两种不同的东西,然而在现实生活中,许多人仍然会混淆这两者。为了更好地理解光纤和光缆之间的区别,我们一起来看一下。
    的头像 发表于 01-15 17:01 382次阅读

    Linux系统文件比较工具集合

    在Linux系统中,文件比较是一种常见的任务,用于比较两个文件之间的差异。文件比较可以帮助我们找出两个文件的不同之处,或者确定它们是否完全相同。在Linux中,有多种方法可以进行文件
    的头像 发表于 01-02 13:53 315次阅读

    单模和多模光纤跳线有哪些不同之处

    单模和多模光纤跳线有哪些不同之处? 单模和多模光纤跳线是两种不同类型的光纤连接方式,它们在传输性能、工作距离、适用场景等方面存在着一些不同之处。下面将详细介绍单模和多模光纤跳线的区别,以供
    的头像 发表于 12-07 10:09 1277次阅读

    噪音抑制与主动降噪:有何不同之处

    噪音抑制与主动降噪:有何不同之处
    的头像 发表于 11-30 17:29 309次阅读
    噪音抑制与主动降噪:有何<b class='flag-5'>不同之处</b>?

    单工通信、半双工通信和全双工通信三种方式的不同之处

    首先,不要被生涩的文字吓到了,通讯在我们日常中通讯是无处不在的,三种通讯方式也是随处可见。下面分别举例说明三种方式的不同之处以及在工业和电子设备上常用的一些案例。
    的头像 发表于 11-14 16:09 1907次阅读
    单工通信、半双工通信和全双工通信三种方式的<b class='flag-5'>不同之处</b>

    混频器与变频器的不同之处

    混频器和变频器都是电子电路中常见的元件,用于处理频率。它们有一些相似之处,也有一些不同之处
    的头像 发表于 11-13 09:34 476次阅读

    考虑x和z在verilog条件语句中的使用情况

    首先,考虑x和z在verilog条件语句中的使用情况,然后我们再考虑在verilog中用x和z给其他reg/wire赋值的情况。
    的头像 发表于 11-02 09:40 610次阅读
    考虑x和z在<b class='flag-5'>verilog</b>条件语句中的使用情况

    GTO与晶闸管的开通与关断有什么不同之处

    GTO与晶闸管的开通与关断有什么不同之处  GTO(Gate Turn-Off Thyristor)和晶闸管(Thyristor)是两种电力电子器件,它们都被广泛应用于交流电路的控制中。虽然这两种
    的头像 发表于 09-13 17:08 2011次阅读

    贴片Y电容内部构造是什么样子的,和传统插件Y电容有什么不同之处

    传统的Y电容主要是插件形式的,自从科雅推出JK-ET系列贴片Y电容以来,很多人搞不明白,贴片Y电容内部构造是什么样子的,和传统插件Y电容有什么不同之处
    的头像 发表于 08-27 10:29 821次阅读
    贴片Y电容内部构造是什么样子的,和传统插件Y电容有什么<b class='flag-5'>不同之处</b>?

    使用Verilog HDL描述寄存器的硬件

    刚接触数字集成电路设计,特别是Verilog HDL语言的同学,往往不理解什么时候变量需要设置为wire型,什么时候需要设置成reg型。
    发表于 07-13 15:53 592次阅读
    使用<b class='flag-5'>Verilog</b> HDL描述寄存器的硬件

    C语言指针和引用的不同之处及使用场合

    指针和引用的不同之处是什么?
    发表于 06-14 09:14 180次阅读
    C语言指针和引用的<b class='flag-5'>不同之处</b>及使用场合

    FPGA设计 Verilog HDL实现基本的图像滤波处理仿真

    shiftRegSize=pixel_depth*((block_height-1)*frame_width+block_width); reg[shiftRegSize-1:0] shiftReg;wire
    发表于 06-07 14:48

    Verilog最常用的2种数据类型

    Verilog 最常用的 2 种数据类型就是线网(wire)与寄存器(reg),其余类型可以理解为这两种数据类型的扩展或辅助。
    的头像 发表于 05-29 16:27 1202次阅读
    <b class='flag-5'>Verilog</b>最常用的2种数据类型

    高格解读:GB 31241-2022与旧标准的不同之处

    GB 31241-2022与旧版标准的不同之处
    的头像 发表于 05-17 16:13 807次阅读
    高格解读:GB 31241-2022与旧标准的<b class='flag-5'>不同之处</b>

    今日说“法”:如何防止regwire型信号在使用逻辑分析仪时被优化

    芯片内部结构的层次,这样就可以在相应的子模块查找需要观察的信号。默认情况下,Chipscope只能观察reg类型的信号。但是通过设置属性也是可以观察wire型信号的。使用不同的综合工具需要添加的属性也
    发表于 05-16 17:48