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中常见的使用错误及解决方法。

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

    关注

    31

    文章

    5597

    浏览量

    129510
  • Verilog
    +关注

    关注

    30

    文章

    1372

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    分享1-Wire接口数字温度传感器IC型号

    英尚微电子通过研究设计,开发出一种适用于温度测量的简洁高效的嵌入式测温方案。方案采用1-Wire接口的数字温度传感器,以其简洁高效的特性,成为众多嵌入式测温方案的优选。其中,应用于方案的1-Wire接口数字温度传感器IC典型的
    的头像 发表于 12-02 16:34 548次阅读
    分享1-<b class='flag-5'>Wire</b>接口数字温度传感器IC型号

    verilog testbench运行测试用例时,运行到make run_test出错怎么解决?

    按照胡老师书上的在verilog testbench运行测试用例时,在运行到make run_test步骤时出错,查了很多方案没有解决。
    发表于 11-11 06:52

    三坐标和激光跟踪仪的不同之处

    激光跟踪仪和三坐标测量机(CMM)是工业领域两大高精度测量设备,但它们在原理、适用范围和典型场景上存在显著差异。下面从核心区别与应用领域两方面进行系统分析:一、核心区别对比1.测量原理与工作方式激光跟踪仪基于球坐标系,通过激光束追踪目标反射镜(靶球),实时测量距离与角度,动态捕捉目标点坐标。支持无靶标扫描(如LeicaATS600)。特点:非接触或轻接触、动
    的头像 发表于 07-21 15:07 1236次阅读
    三坐标和激光跟踪仪的<b class='flag-5'>不同之处</b>

    如果在WL_REG_ON/BT_REG_ON为低时输入PCIe REFCLK,会有什么问题吗?

    如果在WL_REG_ON/BT_REG_ON为低时输入PCIe REFCLK,会有什么问题吗? 我想知道当 VBAT/VDDIO 处于开启状态且 WL_REG_ON/BT_REG_ON
    发表于 07-17 07:34

    尾纤和光纤具体有什么不同之处

    尾纤和光纤在通信领域中都是重要的传输介质,但它们在结构、功能、应用场景等方面存在明显区别,以下是详细对比: 一、定义与结构 光纤 定义:光纤是一种由玻璃或塑料制成的细长柔性纤维,用于传输光信号。 结构:通常由纤芯(光信号传输的核心部分)、包层(反射光信号,防止泄漏)和涂覆层(保护纤芯和包层)组成。 特点:光纤是光信号传输的完整介质,通常以长距离传输为主,长度可达数公里甚至更长。 尾纤 定义:尾纤是一种短距离的光纤连接
    的头像 发表于 07-01 10:28 1876次阅读
    尾纤和光纤具体有什么<b class='flag-5'>不同之处</b>呢

    DS28E16 1-Wire SHA-3安全认证器威廉希尔官方网站 手册

    计数器和唯一的64位ROM识别码(ROM ID)。唯一的ROM ID用作加密运算的基本输入参数,也作为应用的电子序列号。器件通过单触点1-Wire®总线通信。通信采用1-Wire协议,ROM ID作为多器件1-
    的头像 发表于 05-13 15:18 886次阅读
    DS28E16 1-<b class='flag-5'>Wire</b> SHA-3安全认证器威廉希尔官方网站
手册

    verilog模块的调用、任务和函数

    在做模块划分时,通常会出现这种情形,某个大的模块包含了一个或多个功能子模块,verilog是通过模块调用或称为模块实例化的方式来实现这些子模块与高层模块的连接的.
    的头像 发表于 05-03 10:29 1405次阅读
    <b class='flag-5'>verilog</b>模块的调用、任务和函数

    FPGA Verilog HDL语法之编译预处理

    Verilog HDL语言和C语言一样也提供了编译预处理的功能。“编译预处理”是Verilog HDL编译系统的一个组成部分。Verilog HDL语言允许在程序中使用几种特殊的命令(它们不是一般
    的头像 发表于 03-27 13:30 1240次阅读
    FPGA <b class='flag-5'>Verilog</b> HDL语法之编译预处理

    一文详解Verilog HDL

    Verilog HDL(Hardware Description Language)是一种硬件描述语言,用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。现实生活多用于专用集成电路
    的头像 发表于 03-17 15:17 4033次阅读
    一文详解<b class='flag-5'>Verilog</b> HDL

    使用STM32F103控制两步进电机同时进行不同的运动(软件指令驱动),与控制一个电机的不同之处在哪里?

    使用STM32F103控制两步进电机同时进行不同的运动(软件指令驱动),与控制一个电机的不同之处在于哪里?
    发表于 03-10 08:22

    DS2431 1024位1-Wire EEPROM威廉希尔官方网站 手册

    DS2431是一款1024位1-Wire® EEPROM芯片,由四页存储区组成,每页256位。数据先被写入一个8字节暂存器,经校验后复制到EEPROM存储器。该器件的特点是,四页存储区相互独立
    的头像 发表于 02-26 15:38 1895次阅读
    DS2431 1024位1-<b class='flag-5'>Wire</b> EEPROM威廉希尔官方网站
手册

    DS28EC20 20Kb 1-Wire EEPROM威廉希尔官方网站 手册

    协议。各个器件均具有不可修改的、64位唯一ROM注册码,由工厂光刻入芯片。该注册码可用于在多节点1-Wire网络环境寻址器件。
    的头像 发表于 02-26 14:33 1287次阅读
    DS28EC20 20Kb 1-<b class='flag-5'>Wire</b> EEPROM威廉希尔官方网站
手册

    DS9490 USB至1-Wire/iButton适配器威廉希尔官方网站 手册

    和网络。有关合适的1-Wire网络电缆的列表,请参阅DS1402x1-Wire网络线缆数据表的连接矩阵表。这两个适配器都基于DS2490 USB-to-1-Wire桥接芯片。
    的头像 发表于 02-26 10:45 1175次阅读
    DS9490 USB至1-<b class='flag-5'>Wire</b>/iButton适配器威廉希尔官方网站
手册

    Verilogsigned和$signed()的用法

    吗?其实不是的,因为有符号数和无符号数据的加法强结果和乘法器结构是一样的,signed的真正作用是决定如何对操作数扩位的问题。 2、verilog的加法和乘法操作前,会先对操作数据扩位成结果相同的位宽,然后进行加法或者乘法处理。比如a/b都为4位数据,c为5位数据,c
    的头像 发表于 02-17 17:47 1325次阅读
    <b class='flag-5'>Verilog</b><b class='flag-5'>中</b>signed和$signed()的用法

    浅谈Verilog和VHDL的区别

    Verilog和VHDL是两种广泛使用的硬件描述语言(HDL),它们用于描述和模拟数字电路系统的行为和结构。这两种语言的主要作用是帮助工程师设计、仿真和验证集成电路(IC)和系统级芯片(SoC)的硬件模块。
    的头像 发表于 02-17 14:20 3015次阅读
    浅谈<b class='flag-5'>Verilog</b>和VHDL的区别