精华内容
下载资源
问答
  • 相信很多和我一样刚开始接触verilog语言的小白都会有这样的困惑,wire型变量和reg型变量到底有什么区别?什么情况下使用wire定义变量、什么情况下使用reg定义变量?下面就详细分析两者在使用中的区别。 1.wire和reg...

    相信很多和我一样刚开始接触verilog语言的小白都会有这样的困惑,wire型变量和reg型变量到底有什么区别?什么情况下使用wire定义变量、什么情况下使用reg定义变量?下面就详细分析两者在使用中的区别。

    1.wire和reg的本质是什么

    wire的本质是一条没有逻辑的连线,也就是说输入时什么输出也就是什么。wire型数据常用来表示以assign关键字指定的组合逻辑信号,模块的输入输出端口类型都默认为wire型,wire相当于物理连线,默认初始值是z(高组态)。
    如果你把wire定义的变量用在有逻辑性的语句中就会出现综合错误:
    例如:
    在always语句中使用wire型定义的变量赋值,综合器就会报错。

    reg型表示的寄存器类型,用于always模块内被赋值的信号,必须定义为reg型,代表触发器,常用于时序逻辑电路,reg相当于存储单元,默认初始值是x(未知状态)。reg型相对复杂些,其综合后的输出主要还看具体使用的场景:当在组合电路中使用reg,合成后的仍然是net网络;当在时序电路中使用reg合成后的才是register。

    2.wire和reg在硬件描述语言中的释义

    关于wire和reg在硬件描述语言中的释义一般需要分为以下两个部分来分析:
    从电路综合角度来说
    (1)wire型变量综合出来是一根导线
    (2)reg型在always语句模块中又分为两种情况
    (a) always后的敏感表中是(a or b or c)形式的,也就是不带时钟边沿的,综合出来还是组合逻辑
    (b) always后的敏感表中是(posedge clk)形式的,也就是带边沿的,综合出来一般是时序逻辑,会包含触发器(Flip-Flop)

    在设计中,输入信号一般来说你是不知道上一级是寄存器输出还是组合逻辑输出,那么对于本级来说就是一根导线,也就是wire型。而输出信号则由你自己来决定是组合逻辑输出还是寄存器输出,wire型、reg型都可以。但一般的,整个设计的外部输出(即最顶层模块的输出),要求是寄存器输出,较稳定、扇出能力也较好。

    从仿真分析角度来说
    wire对应于连续赋值,如assign
    reg对应于过程赋值,如always,initial

    3.什么情况下使用wire型变量

    (1)assign 语句中变量需要定义成wire型,使用wire必须搭配assign
    例如:
    reg a,b;
    wire result;

    assign result =a&&b;
    你可以试试把wire定义成reg,综合器会报错。

    (2)元件例化时候的输出必须用wire
    例如:
    wire dout;

    ram u_ram
    (

    .out(dout)

    );

    (3)input、output和inout的预设值都是wire

    4.什么情况下使用reg型变量

    (1)变量放在begin……end之内必须使用reg变量
    (2)在initial语句中使用

    展开全文
  • 在设计中,输入信号一般来说你是不知道上一级是寄存器输出还是组合逻辑输出,那么对于本级来说就是一根导线,也就是wire型。...为什么在verilog中要定义wire? 有几种情况变量需要定义成wire。第一。as...

    在设计中,输入信号一般来说你是不知道上一级是寄存器输出还是组合逻辑输出,那么对于本级来说就是一根导线,也就是wire型。而输出信号则由你自己来决定是寄存器输出还是组合逻辑输出,wire型、reg型都可以。但一般的,整个设计的外部输出(即最顶层模块的输出),要求是寄存器输出,较稳定、扇出能力也较好。


    为什么在verilog中要定义wire?

    有几种情况变量需要定义成wire。
    第一。assign 语句
    例如:
    reg a,b;
    wire and_result;
    ...
    assign and_result =a&&b;
    你可以试试把wire定义成reg。综合器会报错。

    第二。元件例化时候的输出必须用wire(文昊注:例化时输入用reg  例化模块的时候,模块的输入端和输出端是不是只能接wire型的变量?

    教父 (2014-5-26 12:10:34)
    这个看你的代码是怎么设计的了, 输出定义为wire, 输入信号如果只是模块之间的连线那就定义成wire, 如果中间你用时钟信号采样的话, 那就定义成reg。
    wgej1987 (2014-5-26 15:48:38)
    不懂你的意思,输入是什么你又不知道,模块输出一般都是reg输出,这样做容易分析timing吧。sv不是都用logic了吗
    zhuyuefeng2009 (2014-5-26 16:02:27)
    回复 3# wgej1987 我的意思是在例化的时候语法上的限制条件。比如有一个模块 A(input a,output b) 例化的时候 A fdff(.a(XXXX),.b(VVVV))XXXX和VVVV的类型有没有限制
    lddyx123 (2014-5-26 16:25:31)
    没有限制,寄存器类型也没问题。


    例如:
    wire dout;

    ram u_ram
    (
    ...
    .out(dout)
    ...
    );
    wire按照国外的教材上面的定义:
    wire为无逻辑连线。只做连线,wire本身是不带逻辑性的,所以输入什么输出就是什么。所以你尝试着用always语句对wire变量赋值。综合器就会报错。
    那么你可能会问。assign c =a&&b不是就是对wire的赋值吗?
    其实并非如此。综合器综合时将a&&b综合成ab经过一个与门。而c只是连接到与门输出的线。正真综合出与门的是&&。而不是c。

     更多详情可参考 http://www.cnblogs.com/thymon/archive/2010/06/09/1754541.html

    转载于:https://www.cnblogs.com/wenhaoele/p/5183144.html

    展开全文
  • Verilog基本语法之wire和reg

    千次阅读 2021-04-21 16:02:29
    Verilog基本语法之wire和reg Verilog语法之多,初期学习我们只需要掌握常用的语法就OK了,今天谈谈数据类型:wire和reg ①wire:线型 ②reg:寄存器型 ...

     

           Verilog语法之多,初期学习只需要掌握常用的语法就OK了,基本就可以用Verilog HDL语言去描述逻辑电路了,今天学习两种数据类型:wire和reg。在数字电路中信号只有两种形态,一种是传输,通过线wire),一种是存储,通过寄存器(reg)。因此,也就清楚wire和reg变量在Verilog HDL中的重要性了。下图是wire和reg变量的模型。

                                                                                        

            (1)wire(线型)变量:

            ①在物理结构上只是一根线,在Verilog HDL描述时,对线型变量赋值用assign即可,相对比较简单。

            wire是最常用的net型数据变量,net型数据相当于硬件电路中的各种物理连接,其特点是输出的值随输入值的变化而变化。net 型数据的值取决于驱动的值,对net型变量有两种驱动方式,一种方式是在结构描述中将其连接到一个门元件或模块的输出端;另一种方式是用持续赋值语句assign对其进行赋值。如果net型变量没有连接到驱动,则其值为高阻态z (trireg 除外)。Verilog 模块中的输入/输出信号在没有明确指定数据类型时都被默认为wire型。

    常用net型变量

    类型

    功能

    可综合性

    wire,tri

    连线类型

    wor, trior

    具有线或特性的多重驱动连线 

     

    wand, triand

    具有线与特性的多重驱动连线

     

    tril, tri0

    分别为上拉电阻和下拉电阻

     

    supply1, supply0

    分别为电源(逻辑1)和地(逻辑0)

    trireg

    具有电荷保持作用的连线,可用于电容的建模

     

             wire型变量定义:①wire a,b;                               //声明2个wire型变量a和b(一位)

                                             ②wire[7:0]  databus;               //databus(数据总线)的宽度是8位

                                                wire[19:0] addrbus;             //addrbus(地址总线)的宽度是20位                 

            (2)reg(寄存器型)变量:

            ①在物理结构上相对比较麻烦,左端有一个输入端口 D,右端有一个输出端口 Q, 并且 reg 型存储数据需要在CLK(时钟)沿的控制下完成,在 Verilog HDL 描述时也相对麻烦。在对reg 型变量进行赋值时,必须在 always 块内完成。

            reg型变量是最常用的variable型变量,variable型变量必须放在过程语句(如initial、 always) 中,通过过程赋值语句赋值;在always、initial等过程块内被赋值的信号也必须定义成variable型。variable型变量(reg)并不意味着一定对应着硬件上的一个触发器或寄存器等存储元件,在综合器进行综合时,综合器会根据具体情况确定是映射成连线还是映射为存储元件(触发器或寄存器)。

    常用variable型变量

    类型

    功能

    可综合性

    reg

    常用寄存器型变量

    integer

    32位带符号整型变量

    real

    64位带符号实型变量

     

    time

    64位无符号时间变量

     

           wire型变量定义:①reg a,b;                               //声明2个reg型变量a和b(一位)

                                           ②reg[7:0]  out;                      //out的宽度是8位

     

    部分转载:https://mp.weixin.qq.com/s/OBAFOS4az8Wc6_OPxIRrOw

     

       

     

                                           

                                                                

     

    展开全文
  • Wire

    2019-10-28 10:10:44
    Wire
  • reg与wire类型数据

    2021-01-18 22:10:00
    线网数据类型包括wire和tri型,常用wire型。 wire data; //定义1_bit的wire型数据data 二、寄存器类型 寄存器类型表示一个抽象的数据存储单元,通过赋值语句可以改变寄存器存储的值。 寄存器类型数据关键字为reg,...

    一、线网类型
    线网类型表示结构实体(如门)之间的物理连线,它不能存储值,其值由驱动它的元件决定。
    驱动线网变量有门、连续赋值语句和assign等,若无驱动元件连接到线网类型变量上,该变量就是高阻的,即为z。
    线网数据类型包括wire和tri型,常用wire型。

    wire data; //定义1_bit的wire型数据data
    wire [7:0] data1, data2; //定义两个8_bit数据
    

    二、寄存器类型
    寄存器类型表示一个抽象的数据存储单元,通过赋值语句可以改变寄存器存储的值。
    寄存器类型数据关键字为reg,reg的默认初始值为不定值x,reg只能在always和initial中赋值。
    在时序逻辑中,always带有时钟信号,寄存器变量对应触发器;在组合逻辑,always不带有时钟信号,寄存器对应为硬件连线,此时与wire一样。

    reg [31:0] data; //定义32_bit的reg型数据data
    
    展开全文
  • Patch Wire,称之为补丁线。这是先进工艺中的一种走线,用于修复Min Area,Min Step等DRC,不属于任何net。 还可以用来修复EM violation,对容易产生EM效应的金属线采用打patch wire的形式,起到加宽这一段金属线的...
  • wire 和reg是Verilog程序里的常见的两种变量类型,他们都是构成verilog程序逻辑最基本的元素。正确掌握两者的使用方法是写好verilog程序的前提。但同时,因为他们在大多数编程语言中不存在,很多新接触verilog语言的...
  • Wire:trade_mark: 该存储库是Wire的源代码的一部分。 您可以在或联系找到更多信息。 您可以在找到已发布的源代码。 有关许可信息,请访问随附的许可文件和第三方许可。 如果您编译我们不时提供的开源软件来开发...
  • 用于连接单元的连线是最常见的线网类型。...wire (或 tri) 0 1 x z0 0 x x 01 x 1 x 1x x x x xz 0 1 x z下面是一个具体实例:assign Cla = Pla & Sla;. . . assign Cla = Pla ^ Sla;在这个实例中,Cla
  • 在初学verilog语言时,常常对各种模块中的语句块、变量声明的使用条件不清楚,其中最典型的就是对reg型和wire型数据类型的区分,以及对always语句和assign语句使用条件的理解,在这篇文章中我将分享我的一些学习总结...
  • 萌新食用:Verilog中wire和reg数据类型的区别 最近恰好在学习数电相关知识扯到Verilog中的wire与reg类型数据的区别: 总的来说,其实就一句话:wire相当于物理连线,而reg相当于存储单元。 下面简单叙述一下具体差别...
  • 温度采集模块采用1-Wire总线结构及DS18B20温度传感器,DS18B20节约MCU的I/O资源,检测点可扩充性很强。并且DS18B20内部集成了A/D,可向MCU提供A/D转换后的数据(数字信号),从而大大提高了传感器传输的距离和抗干扰...
  • 使用Wire库中与Arduino进行通信 使用Wire库可以与使用I2C/TWI通信协议的设备进行通信。 在Arduino nano开发板上,SDA接口对应的是A4引脚,SCL接口对应的是A5引脚。 ...
  • 参考:... ... wire与reg类型的区别: wire型数据常用来表示以assign关键字指定的组合逻辑信号。模块的输入输出端口类型都默认为wire型。默认初始值是z。 reg型表示的...
  • 出现这个错误Duplicate Net Names Wire,主要原因是多张原理图的标识符(如Net Label)作用域的设置问题,在Project-》Project options中的Options选项下设置了一下Net Identifier Scope(网络标识符作用范围)...
  • Wire:trade_mark: 该存储库是Wire的源代码的一部分。 您可以在或联系找到更多信息。 您可以在找到已发布的源代码,并在最新版本的apk。 有关许可信息,请访问随附的许可文件和第三方许可。 如果您编译我们不时...
  • 什么时候用wire?什么时候用reg? 简单来说硬件描述语言有两种用途:1、仿真,2、综合。 对于wire和reg,也要从这两个角度来考虑。 从仿真的角度来说,HDL语言面对的是编译器(如Modelsim等),相当于软件思路。 这时...
  • verilog HDL中wire和reg类型的区别

    万次阅读 多人点赞 2018-09-25 17:11:08
    本文参考 夜煞CSDN 的CSDN 博客 ,有改动 ...wire型数据常用来表示以assign关键字指定的组合逻辑信号,模块的输入输出端口类型都默认为wire型,wire相当于物理连线,默认初始值是z。 reg型表示...
  • Quartus中使用SignalTap观察被优化的reg与wire信号参考博客我的理解笔者使用的方法不足之处 参考博客 可以先看一下参考博客,讲的还算很详细。...
  • Verilog 中 wire 和 reg 数据类型区别

    万次阅读 多人点赞 2016-12-17 23:44:35
    在Verilog中,wire永远是wire,就是相当于一条连线,用来连接电路,不能存储数据,无驱动能力,是组合逻辑,只能在assign左侧赋值,不能在always @ 中赋值; 但reg可以综合成register,latch,甚至wire(当其只是中间...
  • golang依赖注入——wire

    2021-01-07 21:36:54
    但是今天要介绍的是wire,一个编译期实现依赖注入的框架。 好,下面上货。 首先添加依赖 github.com/google/wire v0.3.0 然后编写下面的例子 package main import ( “fmt” ) type apple struct { name string
  • live-wire算法代码

    2018-06-08 14:13:11
    这个是985博士学长的项目用的代码中的live-wire算法,分割图片的
  • wire和reg的区别 reg相当于存储单元,wire相当于物理连线。 reg保持最后一次的赋值,而wire需要持续的驱动。 wire使用在连续赋值语句assign中,reg使用在过程赋值语句中(always、测试文件中的initial)。(除此...
  • 解决办法: 【工程】——>【工程参数】——>【Option】——>【网络标识范围】——>【Global】 还可能是模型出现了问题: 下图的40与41引脚的“标识”重名,所以最好把“标识”写在里面,名字写在外面 ...
  • Verilog中wire和reg数据类型的区别

    千次阅读 2017-02-12 17:26:06
    Verilog中wire和reg数据类型的区别 标签: Verilog wire regtestbench 2013-08-02 22:35 1374人阅读 评论(0) 收藏 举报  分类: Verilog(3)
  • wire shark

    2018-06-11 17:55:16
    非常好用的网络抓包分析工具 非常好用的网络抓包分析工具 非常好用的网络抓包分析工具 非常好用的网络抓包分析工具. 非常好用的网络抓包分析工具 非常好用的网络抓包分析工具
  • wire库文件

    2018-04-11 15:02:06
    IIC,ARDUIN I2C库存文件
  • 首先对veriog中wire型寄存器和reg型寄存器进行了简单介绍,然后介绍了两者的区别。
  • Wire提供了最全面的协作套件,其中包括Messenger,语音,视频,电话会议,文件共享和外部协作,所有这些都由最安全的端到端加密保护。 Wire为希望保护其通信和文档共享的组织提供了最强大的安全性。端到端加密使您...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 61,466
精华内容 24,586
关键字:

wire是什么