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

    文章

    5619

    浏览量

    130422
  • Verilog
    +关注

    关注

    31

    文章

    1374

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    探索DS2413:1-Wire双通道可寻址开关的卓越性能与应用

    探索DS2413:1-Wire双通道可寻址开关的卓越性能与应用 在电子设计领域,高效、可靠的I/O控制芯片一直是工程师们追求的目标。DS2413这款1-Wire双通道可寻址开关芯片,凭借其独特
    的头像 发表于 04-01 15:40 181次阅读

    太阳能光伏系统硬接地故障与间歇性接地故障的不同之处

    太阳能光伏系统的接地故障可分为持续性故障或间歇性故障。这篇小文介绍了上述两种故障的不同之处
    的头像 发表于 01-15 15:06 642次阅读
    太阳能光伏系统<b class='flag-5'>中</b>硬接地故障与间歇性接地故障的<b class='flag-5'>不同之处</b>

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

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

    半导体封装“焊线键合(Wire Bonding)”线弧相关培训的详解;

    如有雷同或是不当之处,还请大家海涵。当前在各网络平台上均以此昵称为ID跟大家一起交流学习! 半导体引线键合(Wire Bonding)是应用最广泛的键合技术,也是半导体封装工艺的一个重要环节,主要利用金、铝、铜、锡等金属导线建
    的头像 发表于 12-01 17:44 2579次阅读
    半导体封装“焊线键合(<b class='flag-5'>Wire</b> Bonding)”线弧相关培训的详解;

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

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

    实时时钟芯片与晶振的不同之处

    实时时钟芯片和晶振在电子设备中都扮演着提供时钟信号的重要角色,但它们的本质、功能和复杂程度却大相径庭。简单来说,晶振是产生稳定频率的“心脏”,而实时时钟芯片则是管理和分配这些“心跳”的“大脑”。
    的头像 发表于 07-24 17:04 1876次阅读
    实时时钟芯片与晶振的<b class='flag-5'>不同之处</b>

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

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

    DS28E10 1-Wire SHA-1认证器技术手册

    器件带有唯一的64位ROM注册码(ROM ID),由工厂刻入芯片。每次可向存储器写入4个字节,安全的低成本工厂编程服务可对器件数据进行预编程,这也包括SHA-1安全数据部分。器件通过单触点1-Wire®总线进行通信,遵循标准的1-Wire协议,ROM ID在多器件1-
    的头像 发表于 05-14 14:26 1594次阅读
    DS28E10 1-<b class='flag-5'>Wire</b> SHA-1认证器技术手册

    DS2465 DeepCover安全认证器具有SHA-256协处理器和1-Wire主机功能技术手册

    ,芯片内部用户可调定时器将系统主处理器从繁琐的1-Wire波形时序控制解放出来,支持标准和高速1-Wire通信。1-Wire总线可通过软件控制关断。强上拉功能通过1-
    的头像 发表于 05-14 14:09 1263次阅读
    DS2465 DeepCover安全认证器具有SHA-256协处理器和1-<b class='flag-5'>Wire</b>主机功能技术手册

    DS24L65 DeepCover安全认证器,具有SHA-256协处理器和1-Wire主机功能技术手册

    转换。对于1-Wire线驱动器,芯片内部用户可调定时器将系统主处理器从繁琐的1-Wire波形时序控制解放出来,支持标准和高速1-Wire通信。1-
    的头像 发表于 05-14 11:25 1152次阅读
    DS24L65 DeepCover安全认证器,具有SHA-256协处理器和1-<b class='flag-5'>Wire</b>主机功能技术手册

    DS2475带1-Wire主机的DeepCover ECDSA协处理器技术手册

    DeepCover 嵌入式安全解决方案将敏感数据隐藏在多层先进的物理安全保护之下,从而提供非常安全的密钥存储。 具有内置1-Wire ^®^ 主机(DS2475)的DeepCover椭圆曲线
    的头像 发表于 05-14 11:17 1147次阅读
    DS2475带1-<b class='flag-5'>Wire</b>主机的DeepCover ECDSA协处理器技术手册

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

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

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

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