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

    文章

    5590

    浏览量

    129104
  • Verilog
    +关注

    关注

    30

    文章

    1370

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

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

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

    DS28E16 1-Wire SHA-3安全认证器技术手册

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

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

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

    DS2431 1024位1-Wire EEPROM技术手册

    DS2431是一款1024位1-Wire® EEPROM芯片,由四页存储区组成,每页256位。数据先被写入一个8字节暂存器,经校验后复制到EEPROM存储器。该器件的特点是,四页存储区相互独立
    的头像 发表于 02-26 15:38 1711次阅读
    DS2431 1024位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 1088次阅读
    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 1195次阅读
    <b class='flag-5'>Verilog</b><b class='flag-5'>中</b>signed和$signed()的用法

    浅谈Verilog和VHDL的区别

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

    光纤跳线铠装和非铠装有哪些不同之处

    光纤跳线铠装和非铠装在多个方面存在显著差异,以下是对这两者的详细比较: 一、构造差异 铠装光纤跳线:采用了多层材料设计,包括光纤、Kevlar纤维(或其他增强纤维)、铝箔、铜丝编织层和PVC护套等
    的头像 发表于 01-06 10:12 1185次阅读

    Verilog 电路仿真常见问题 Verilog 在芯片设计的应用

    。然而,在实际应用,设计师可能会遇到各种问题,这些问题可能会影响仿真的准确性和设计的可靠性。 Verilog电路仿真常见问题 仿真环境的搭建问题 仿真环境的搭建是进行Verilog仿真的第一步。设计师需要选择合适的仿真工具,并
    的头像 发表于 12-17 09:53 1618次阅读

    Verilog 与 ASIC 设计的关系 Verilog 代码优化技巧

    Verilog与ASIC设计的关系 Verilog作为一种硬件描述语言(HDL),在ASIC设计扮演着至关重要的角色。ASIC(Application Specific Integrated
    的头像 发表于 12-17 09:52 1464次阅读

    Verilog 测试平台设计方法 Verilog FPGA开发指南

    Verilog测试平台设计方法是Verilog FPGA开发的重要环节,它用于验证Verilog设计的正确性和性能。以下是一个详细的Verilog
    的头像 发表于 12-17 09:50 1565次阅读

    Verilog与VHDL的比较 Verilog HDL编程技巧

    Verilog 与 VHDL 比较 1. 语法和风格 VerilogVerilog 的语法更接近于 C 语言,对于有 C 语言背景的工程师来说,学习曲线较平缓。它支持结构化编程,代
    的头像 发表于 12-17 09:44 2713次阅读

    读写DATAOUT_CTL_REG的程序有什么错误吗?

    ); // 写入DATAOUT_CTL_REG设置值,设置为输出数据包含输入是否超出限度的信息。 AD_Conversion(); AD_Write(0xC8200000); // 读
    发表于 12-13 08:38