精华内容
下载资源
问答
  • 首先对veriog中wire型寄存器和reg型寄存器进行了简单介绍,然后介绍了两者的区别
  • verilog语言中wire型变量和reg 型变量的区别

    万次阅读 多人点赞 2018-08-28 16:23:41
    参考:... ... wire与reg类型的区别wire型数据常用来表示以assign关键字指定的组合逻辑信号。模块的输入输出端口类型都默认为wire型。默认初始值是z。 ...reg型表示的...

    参考:https://blog.csdn.net/u013025203/article/details/53410715

    有关多路选择器的一篇参考:http://www.elecfans.com/d/668818.html

    wire与reg类型的区别:

    wire型数据常用来表示以assign关键字指定的组合逻辑信号。模块的输入输出端口类型都默认为wire型。默认初始值是z。

    reg型表示的寄存器类型。always模块内被赋值的信号,必须定义为reg型,代表触发器。

    默认初始值是x。

    reg 类型不一定是寄存器变量,例如组合逻辑中reg类型变量。

    reg相当于存储单元,wire相当于物理连线。

    Verilog 中变量的物理数据分为线型和寄存器型。这两种类型的变量在定义时要设置位宽,缺省为1位。变量的每一位可以是0,1,X,Z。其中x代表一个未被预置初始状态的变量或者是由于由两个或多个驱动装置试图将之设定为不同的值而引起的冲突型线型变量。z代表高阻状态或浮空量。

    线型数据包括wire,wand,wor等几种类型在被一个以上激励源驱动时,不同的线型数据有各自决定其最终值的分辨办法。

    两者的区别是:寄存器型数据保持最后一次的赋值,而线型数据需要持续的驱动

     

    输入端口可以由net/reg驱动,但输入端口只能是net,如a = b & c,输入端口a 只能是net型,但其驱动b,c可以是net/reg型;输出端口可以使net/reg类型,输出端口只能驱动net,如a = b & c,模块的输出端口b,c可以是net/reg型,但它们驱动的a必须是net型;若输出端口在过程块(always/initial)中赋值则为reg型,若在过程块外赋值则为net型。用关键词inout声明一个双向端口, inout端口不能声明为寄存器类型,只能是net类型。

     

    wire表示直通,即只要输入有变化,输出马上无条件地反映;reg表示一定要有触发,输出才会反映输入。

    不指定就默认为1位wire类型。专门指定出wire类型,可能是多位或为使程序易读。wire只能被assign连续赋值,reg只能在initial和always中赋值。wire使用在连续赋值语句中,而reg使用在过程赋值语句中。

    在连续赋值语句中,表达式右侧的计算结果可以立即更新表达式的左侧。在理解上,相当于一个逻辑之后直接连了一条线,这个逻辑对应于表达式的右侧,而这条线就对应于wire。在过程赋值语句中,表达式右侧的计算结果在某种条件的触发下放到一个变量当中,而这个变量可以声明成reg类型的。根据触发条件的不同,过程赋值语句可以建模不同的硬件结构:如果这个条件是时钟的上升沿或下降沿,那么这个硬件模型就是一个触发器;如果这个条件是某一信号的高电平或低电平,那么这个硬件模型就是一个锁存器;如果这个条件是赋值语句右侧任意操作数的变化,那么这个硬件模型就是一个组合逻辑。

    wire型的变量综合出来一般是一根导线;

    reg变量在always块中有两种情况:    always后的敏感表中是(a or b or c)形式的,也就是不带时钟边沿的,综合出来还是组合逻辑   always后的敏感表中是(posedge clk)形式的,也就是带边沿的,综合出来一般是时序逻辑,会包含触发器(Flip-Flop)

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

     

    Notes:七七八八的也看不太懂,总之wire赋值用assign,reg在always内使用。

    ————————————————————————————————————————————————

    1、从仿真角度来说,HDL语言面对的是编译器,相当于使用软件思路,此时:

        wire对应于连续赋值,如assign;

        reg对应于过程赋值,如always,initial;

     

    2、从综合角度,HDL语言面对的是综合器,相当于从电路角度来思考,此时:

         wire型变量综合出来一般情况下是一根导线。

         reg变量在always中有两种情况:

             (1)always @(a or b or c)形式的,即不带时钟边沿的,综合出来还是组合逻辑;

             (2)always @(posedge clk)形式的,即带有边沿的,综合出来一般是时序逻辑,会包含触发器(Flip-Flop)

     

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

     

    4、Verilog中何时要定义成wire型?

        情况一:assign语句

           例如:

                   reg   a,b;

                   wire  out;

                   ......

                  assign   out = a & b;

          如果把out定义成reg型,对不起,编译器报错!

       情况二:元件实例化时必须用wire型

             例如:

              wire   dout;

             ram   u_ram

           (

            ....

           .out(dout);

           )

          wire为无逻辑连线,wire本身不带逻辑性,所以输入什么就的输出什么。所以如果用always语句对wire变量赋值,对不起,编译器报错。

          那么你可能会问,  assign    c = a & b;   不是对wire的赋值吗?

          并非如此,综合时是将  a & b综合成 a、b经过一个与门,而c是连接到与门输出线,真正综合出来的是与门&,不是c。

     

    5、何时用reg、何时用wire?

         大体来说,reg和wire类似于C、C++的变量,但若此变量要放在begin...end之内,则该变量只能是reg型;在begin...end之外,则用wire型;

         使用wire型时,必须搭配assign;reg型可以不用。

         input、output、inout预设值都是wire型。

         在Verilog中使用reg型,并不表示综合出来就是暂存器register:在组合电路中使用reg,组合后只是net;在时序电路中使用reg,合成后才是以Flip-Flop形式表示的register触发器。

     

    6、reg和wire的区别:

         reg型数据保持最后一次的赋值,而wire型数据需要持续的驱动。wire用在连续赋值语句assign中;reg用于always过程赋值语句中。

        在连续赋值语句assign中,表达式右侧的计算结果可以立即更新到表达式的左侧,可以理解为逻辑之后直接连接了一条线,这个逻辑对应于表达式的右侧,这条线对应于wire;

         在过程赋值语句中,表达式右侧的计算结果在某种条件的触发下放到一个变量当中,这个变量可以声明成reg型,根据触发条件的不同,过程语句可以建模不同的硬件结构:

        (1)如果这个条件是时钟上升沿或下降沿,那硬件模型就是一个触发器,只有是指定了always@(posedge or negedge)才是触发器。

        (2)如果这个条件是某一信号的高低电平,那这个硬件模型就是一个锁存器。

        (3)如果这个条件是赋值语句右侧任意操作数的变化,那这个硬件模型就是一个组合逻辑。

     

    7、过程赋值语句always@和连续赋值语句assign的区别:

        (1)wire型用于assign的赋值,always@块下的信号用reg型。这里的reg并不是真正的触发器,只有敏感列表内的为上升沿或下降沿触发时才综合为触发器。

        (2)另一个区别,举例:

              wire     a;

              reg      b;

             assign     a = 1'b0;

             always@(*)

                     b = 1'b0;

             上面例子仿真时a将会是0,但是b的状态是不确定的。因为Verilog规定,always@(*)中的*指的是该always块内的所有输入信号的变化为敏感列表,就是说只有当always@(*)块内输入信号发生变化,该块内描述的信号才会发生变化。

            像always@(*)  b= 1'b0; 中由于1‘b0是个常数,一直没有变化,由于b的足组合逻辑输出,所有复位时没有明确的值--即不确定状态,又因为always@(*)块内没有敏感信号变化,此时b信号一直保持不变,即不确定是啥,取决于b的初始状态。

    展开全文
  • verilog语言中,reg型wire型区别

    千次阅读 多人点赞 2018-09-15 18:45:43
    对于初学者来说,首先一个大问题就是在读程序时候,变量类型reg型wire型的区分。 最近做了点仿真工作,对两种类型的变量有一些自己的见解,写一写,交流学习。 自己的理解: wire型相当于是一根连线。 reg型...

    对于初学者来说,首先一个大问题就是在读程序时候,变量类型reg型wire型的区分。

    最近做了点仿真工作,对两种类型的变量有一些自己的见解,写一写,交流学习。

    自己的理解:

    wire型相当于是一根连线

    reg型相当于是储存器

    在wire型相当于连线的基础上我们很容易就可以理解,当连线的来源端发生改变时,wire变量立即随之发生改变。

    由此:wire型变量存在于begin...end语句之外。只能用assign语句进行赋值。(assign语句和时钟无关,只要等号右侧变量改变,左侧变量就会随之发生改变)

    reg型相当于储存器的基础上,可以看做是一个一个的寄存器,当触发条件达成时,寄存器的内容才发生改变,否则一直保持上一个状态。

    由此:reg型变量存在于begin...end语句之中。一般在always,initial语句中。

    如果变量类型使用错误或者位置错误,vivado会提示错误,所以也不用担心。

    接下来是我在仿真中遇到的一点总结:

    模块的输入端口可以由wire/reg型驱动,但是输入端口只能是wire型。

    模块的输出端口只能驱动wire型,输出端口可以是wire/reg型。

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

    手机打字,就不贴图了。大家可以自己尝试一下。

    //========================================================//

    另,通过看相关的帖子,还有在综合上的考虑。

    从综合的角度来说,HDL语言面对的是综合器(如DC等),要从电路的角度来考虑。
    这时:
    1、wire型的变量综合出来一般是一根导线;
    2、reg变量在always块中有两种情况:
    (1)、always后的敏感表中是(a or b or c)形式的,也就是不带时钟边沿的,综合出来还是组合逻辑
    (2)、always后的敏感表中是(posedge clk)形式的,也就是带边沿的,综合出来一般是时序逻辑,会包含触发器(Flip-Flop)

     

    展开全文
  • verilog中wire和reg类型的区别

    千次阅读 2020-09-21 21:41:33
    wire型数据常用来表示以assign关键字指定的组合逻辑信号,模块的输入输出端口类型都默认为wire型,wire相当于物理连线,默认初始值是z。 reg型表示的寄存器类型,用于always模块内被赋值的信号,且必须定义为reg型,...

    一、基本概念

    wire型数据常用来表示以assign关键字指定的组合逻辑信号,模块的输入输出端口类型都默认为wire型,wire相当于物理连线,默认初始值是z

    reg型表示的寄存器类型,用于always模块内被赋值的信号,且必须定义为reg型,代表触发器,常用于时序逻辑电路,reg相当于存储单元,默认初始值是x

    二、深入理解

    1、从仿真角度来说,HDL语言面对的是编译器,相当于使用软件思路,此时:

    • wire对应于连续赋值,如assign;

    • reg对应于过程赋值,如always,initial;

    2、从综合角度来看,HDL语言面对的是综合器,相当于从电路角度来思考,此时:

    • wire型变量综合出来一般情况下是一根导线;

    • reg变量在always中有两种情况:
      1)always @(a or b or c)形式的,即不带时钟边沿的,综合出来还是组合逻辑;
      2)always @(posedge clk)形式的,即带有边沿的,综合出来一般是时序逻辑,会包含触发器(Flip-Flop

    3reg型数据保持最后一次的赋值,而wire型数据需要持续的驱动。

    • 在连续赋值语句assign中,表达式右侧的计算结果可以立即更新到表达式的左侧,可以理解为逻辑之后直接连接了一条线,这个逻辑对应于表达式的右侧,这条线对应于wire
    • 在过程赋值语句中,表达式右侧的计算结果在某种条件的触发下放到一个变量当中,这个变量可以声明成reg型。

    三、区别总结

    1使用场景区别:

    • wire一般是用在组合逻辑中,reg用在时序逻辑中。但是在always中,变量必须定义成reg型,即使always块也可以实现组合逻辑。那么这里刚好说明一下,其实always块不止能实现时序逻辑,还能实现组合逻辑:
      (1)如果这个条件是时钟上升沿或下降沿,那硬件模型就是一个触发器,只有是指定了always@(posedge or negedge)才是触发器。
      (2)如果这个条件是某一信号的高低电平,那这个硬件模型就是一个锁存器。
      (3) 如果这个条件是赋值语句右侧任意操作数的变化,那这个硬件模型就是一个组合逻辑。
    • wire用于连续赋值assign语句中;reg用于过程赋值always,initial语句中;

    2在端口信号和内部信号上的使用区别

    信号可以分为端口信号和内部信号。出现在端口列表中的信号是端口信号,其它的信号为内部信号。

    • 对于端口信号,一旦定义为input或者output端口,默认就定义成了wire类型,输入端口只能是net类型(wire/tri)。输出端口可以是net类型,也可以是reg类型。若输出端口在过程块中赋值则为reg类型;若在过程块外赋值(包括实例化语句),则为net类型。

    • 内部信号类型与输出端口相同,可以是net或reg类型。判断方法也与输出端口相同。若在过程块中赋值,则为reg类型;若在过程块外如assign赋值,则为net类型。

    • inout是一个双向端口, 不能声明为reg类型,只能是wire类型。

    展开全文
  • Verilog中reg和wire区别

    千次阅读 2020-06-21 10:14:45
    Verilog中reg和wire区别 wire表示直通,即输入有变化,输出马上无条件地反映(如与、非门的简单连接)。 reg表示一定要有触发,输出才会反映输入的状态。 reg相当于存储单元,wire相当于物理连线。reg表示一定要有...

    Verilog中reg和wire的区别

    wire表示直通,即输入有变化,输出马上无条件地反映(如与、非门的简单连接)。
    reg表示一定要有触发,输出才会反映输入的状态。

    reg相当于存储单元,wire相当于物理连线。reg表示一定要有触发,没有输入的时候可以保持原来的值,但不直接实际的硬件电路对应。

      两者的区别是:寄存器型数据保持最后一次的赋值,而线型数据需要持续的驱动。wire使用在连续赋值语句中,而reg使用在过程赋值语句(initial ,always)中。wire若无驱动器连接,其值为z,reg默认初始值为不定值 x 。
    
      在连续赋值语句中,表达式右侧的计算结果可以立即更新表达式的左侧。在理解上,相当于一个逻辑之后直接连了一条线,这个逻辑对应于表达式的右侧,而这条线就对应于wire。在过程赋值语句中,表达式右侧的计算结果在某种条件的触发下放到一个变量当中,而这个变量可以声明成reg类型的。根据触发条件的不同,过程赋值语句可以建模不同的硬件结构:如果这个条件是时钟的上升沿或下降沿,那么这个硬件模型就是一个触发器;如果这个条件是某一信号的高电平或低电平,那么这个硬件模型就是一个锁存器;如果这个条件是赋值语句右侧任意操作数的变化,那么这个硬件模型就是一个组合逻辑。
    
      对组合逻辑输出变量,可以直接用assign。即如果不指定为reg类型,那么就默认为1位wire类型,故无需指定1位wire类型的变量。当然专门指定出wire类型,可能是多位或为使程序易读。wire只能被assign连续赋值,reg只能在initial和always中赋值。
    
      输入端口可以由wire/reg驱动,但输入端口只能是wire;输出端口可以是wire/reg类型,输出端口只能驱动wire;若输出端口在过程块中赋值则为reg型,若在过程块外赋值则为net型(wire/tri)。用关键词inout声明一个双向端口, inout端口不能声明为reg类型,只能是wire类型。
    
      默认信号是wire类型,reg类型要申明。这里所说的默认是指输出信号申明成output时为wire。如果是模块内部信号,必须申明成wire或者reg.
    
      对于always语句而言,赋值要申明成reg,连续赋值assign的时候要用wire。
    

    模块调用时 信号类型确定方法总结如下:

    •信号可以分为端口信号和内部信号。出现在端口列表中的信号是端口信号,其它的信号为内部信号。

    •对于端口信号,输入端口只能是net类型。输出端口可以是net类型,也可以是register类型。若输出端口在过程块中赋值则为register类型;若在过程块外赋值(包括实例化语句),则为net类型。

    •内部信号类型与输出端口相同,可以是net或register类型。判断方法也与输出端口相同。若在过程块中赋值,则为register类型;若在过程块外赋值,则为net类型。

    •若信号既需要在过程块中赋值,又需要在过程块外赋值。这种情况是有可能出现的,如决断信号。这时需要一个中间信号转换。

    下面所列是常出的错误及相应的错误信息(error message)

    •用过程语句给一个net类型的或忘记声明类型的信号赋值。

           信息:illegal …… assignment.
    

    •将实例的输出连接到声明为register类型的信号上。

           信息:<name> has illegal output port specification.
    

    •将模块的输入信号声明为register类型。

           信息:incompatible declaration, <signal name> ……
    

    本文转载自tureno2011,如有冒犯请通知我删除。

    欢迎使用Markdown编辑器

    你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。

    新的改变

    我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:

    1. 全新的界面设计 ,将会带来全新的写作体验;
    2. 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
    3. 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
    4. 全新的 KaTeX数学公式 语法;
    5. 增加了支持甘特图的mermaid语法1 功能;
    6. 增加了 多屏幕编辑 Markdown文章功能;
    7. 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
    8. 增加了 检查列表 功能。

    功能快捷键

    撤销:Ctrl/Command + Z
    重做:Ctrl/Command + Y
    加粗:Ctrl/Command + B
    斜体:Ctrl/Command + I
    标题:Ctrl/Command + Shift + H
    无序列表:Ctrl/Command + Shift + U
    有序列表:Ctrl/Command + Shift + O
    检查列表:Ctrl/Command + Shift + C
    插入代码:Ctrl/Command + Shift + K
    插入链接:Ctrl/Command + Shift + L
    插入图片:Ctrl/Command + Shift + G
    查找:Ctrl/Command + F
    替换:Ctrl/Command + G

    合理的创建标题,有助于目录的生成

    直接输入1次#,并按下space后,将生成1级标题。
    输入2次#,并按下space后,将生成2级标题。
    以此类推,我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。

    如何改变文本的样式

    强调文本 强调文本

    加粗文本 加粗文本

    标记文本

    删除文本

    引用文本

    H2O is是液体。

    210 运算结果是 1024.

    插入链接与图片

    链接: link.

    图片: Alt

    带尺寸的图片: Alt

    居中的图片: Alt

    居中并且带尺寸的图片: Alt

    当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

    如何插入一段漂亮的代码片

    博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.

    // An highlighted block
    var foo = 'bar';
    

    生成一个适合你的列表

    • 项目
      • 项目
        • 项目
    1. 项目1
    2. 项目2
    3. 项目3
    • 计划任务
    • 完成任务

    创建一个表格

    一个简单的表格是这么创建的:

    项目Value
    电脑$1600
    手机$12
    导管$1

    设定内容居中、居左、居右

    使用:---------:居中
    使用:----------居左
    使用----------:居右

    第一列第二列第三列
    第一列文本居中第二列文本居右第三列文本居左

    SmartyPants

    SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

    TYPEASCIIHTML
    Single backticks'Isn't this fun?'‘Isn’t this fun?’
    Quotes"Isn't this fun?"“Isn’t this fun?”
    Dashes-- is en-dash, --- is em-dash– is en-dash, — is em-dash

    创建一个自定义列表

    Markdown
    Text-to- HTML conversion tool
    Authors
    John
    Luke

    如何创建一个注脚

    一个具有注脚的文本。2

    注释也是必不可少的

    Markdown将文本转换为 HTML

    KaTeX数学公式

    您可以使用渲染LaTeX数学表达式 KaTeX:

    Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n1)!nN 是通过欧拉积分

    Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t   . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=0tz1etdt.

    你可以找到更多关于的信息 LaTeX 数学表达式here.

    新的甘特图功能,丰富你的文章

    Mon 06 Mon 13 Mon 20 已完成 进行中 计划一 计划二 现有任务 Adding GANTT diagram functionality to mermaid
    • 关于 甘特图 语法,参考 这儿,

    UML 图表

    可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图:

    张三 李四 王五 你好!李四, 最近怎么样? 你最近怎么样,王五? 我很好,谢谢! 我很好,谢谢! 李四想了很长时间, 文字太长了 不适合放在一行. 打量着王五... 很好... 王五, 你怎么样? 张三 李四 王五

    这将产生一个流程图。:

    链接
    长方形
    圆角长方形
    菱形
    • 关于 Mermaid 语法,参考 这儿,

    FLowchart流程图

    我们依旧会支持flowchart的流程图:

    Created with Raphaël 2.2.0 开始 我的操作 确认? 结束 yes no
    • 关于 Flowchart流程图 语法,参考 这儿.

    导出与导入

    导出

    如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。

    导入

    如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
    继续你的创作。


    1. mermaid语法说明 ↩︎

    2. 注脚的解释 ↩︎

    展开全文
  • 相信很多我一样刚开始接触verilog语言的小白都会有这样的困惑,wire型变量和reg型变量到底有什么区别?什么情况下使用wire定义变量、什么情况下使用reg定义变量?下面就详细分析两者在使用中的区别。 1.wirereg...
  • 下面简要讲述一下wire型和reg型数据的使用问题。 首先我面需要明确,reg为寄存器数据,wire为连线型数据。 在程序设计中,正确的使用wirereg需要牢记以下几点: 1)连续赋值语句(assign)只能使用wire类型; 2)...
  • 萌新食用:Verilog中wire和reg数据类型的区别 最近恰好在学习数电相关知识扯到Verilog中的wire与...reg型表示的寄存器类型,用于always模块内被赋值的信号,必须定义为reg型,代表触发器,常用于时序逻辑电路,默认初
  • Verilog 中 wire reg 数据类型区别

    万次阅读 多人点赞 2016-12-17 23:44:35
    两者差别很大,完全不能取消。...但reg可以综合成register,latch,甚至wire(当其只是中间变量的时候),可以用于组合逻辑或者时序逻辑,能存储数据,有驱动能力,在always @模块表达式左侧被赋值。 两
  • wire 和reg是Verilog程序里的常见的两种变量类型,他们都是构成verilog程序逻辑最基本的元素。正确掌握两者的使用方法是写好verilog程序的前提。但同时,因为他们在大多数编程语言中不存在,很多新接触verilog语言的...
  • verilog HDL中wire和reg类型的区别

    万次阅读 多人点赞 2018-09-25 17:11:08
    本文参考 夜煞CSDN 的CSDN 博客 ,有改动 ...wire型数据常用来表示以assign关键字指定的组合逻辑信号,模块的输入输出端口类型都默认为wire型,wire相当于物理连线,默认初始值是z。 reg型表示...
  • FPGA wire和reg区别总结

    2019-01-27 11:39:14
    wire表示直通,即输入有变化,输出马上无条件地反映(如与、非门的简单连接...两者的区别是:寄存器数据保持最后一次的赋值,而线型数据需要持续的驱动。wire使用在连续赋值语句中,而reg使用在过程赋值语句(init...
  • verilog HDL中wire和reg区别 wire表示直通,即输入有变化,输出马上无条件地反映(如与、非门的简单连接)。 reg表示一定要有触发,输出才会反映输入的状态。 reg相当于存储单元,wire相当于物理连线。reg表示...
  • reg相当于存储单元,wire相当于物理连线 Verilog 中变量的物理数据分为线型寄存器。这两种类型的变量在定义时要设置位宽,缺省为1位。变量的每一位可以是0,1,X,Z。其中x代表一个未被预置初始状态的变量或者是...
  • wire与reg区别?什么时候用wire?什么时候用reg? 简单来说硬件描述语言有两种用途:1、仿真,2、综合。 对于wire和reg,也要从这两个角度来考虑。...1、wire型的变量综合出来一般是一根导线; 2、reg变量在al
  • verilog中reg和wire类型的区别和用法

    万次阅读 多人点赞 2018-06-11 10:05:16
    reg相当于存储单元,wire相当于物理连线Verilog 中变量的物理数据分为线型寄存器。这两种类型的变量在定义时要设置位宽,缺省为1位。变量的每一位可以是0,1,X,Z。其中x代表一个未被预置初始状态的变量或者是...
  • Verilog端口类型设置为wire还是reg型 Verilog需要在描述模块功能时或者例化模块时声明端口类型,常见的端口类型有...在例化模块时,被例化模块的input可以为wire或者reg型,output只能为wire型,inout只能为wire型...
  • 当我们使用Verilog时,对于信号定义为reg型还是wire型比较混乱,那么今天我们就来讲一讲如何快速的进行信号定义。 在Verilog中,wire永远是wire,就是相当于一条连线,用来连接电路,不能存储数据,无驱动能力,是...
  • Verilog基本语法之wire和reg

    千次阅读 2021-04-21 16:02:29
    Verilog基本语法之wire和reg Verilog语法之多,初期学习我们只需要掌握常用的语法就OK了,今天谈谈数据类型:wire和regwire:线型 ②reg:寄存器 ...
  • wire定义: wire为无逻辑线,本身只做连线,不带逻辑,输入什么就是什么。用always语句对wire语句赋值,综合就会报错。 用到wire的情况: 1、assign 语句 例如: reg a,b; wire and_result; … assign and_result =a...
  • verilog中wire和reg的用法区别wire(组合逻辑)reg(组合时序逻辑)可以相互替代的情况 看到一个文档,很详细的讲了wire和reg区别,随便记录一下 wire(组合逻辑) wire在verilog设计中表示简单的...5.assign只允许wire型
  • wire与reg区别?什么时候用wire?什么时候用reg? 简单来说硬件描述语言有两种用途:1、仿真,2、综合。 对于wire和reg,也要从这两个角度来考虑。...1、wire型的变量综合出来一般是一根导线; 2、reg变量在al
  • wire 和reg

    2019-05-27 19:37:38
    wire型数据常用来表示以assign关键字指定的组合逻辑信号。模块的输入输出端口类型都默认为wire型。默认初始值是z。 reg型表示的寄存器类型。always模块内被赋值的信号,必须定义为reg型,代表触发器。 默认初始值是x...
  • VHDL中的wire和reg赋值

    千次阅读 2020-11-25 19:32:57
    reg[15:0] year;//年 year=4'd2020; 然后报错: Error (10170): Verilog HDL syntax error at clock.v(32) near text “=”; expecting “.”, or “(” 但是 reg[15:0] yea=4'd2020;//年 这样写又没有报错,迷迷...
  • Verilog中wire和reg数据类型的区别

    千次阅读 2013-08-02 22:35:33
    如果信号的数据类型没有定义,综合器将其默认为wire型。 wire表示直通,即只要输入有变化,输出马上无条件地反映;reg表示一定要有触发,输出才会反映输入。 不指定就默认为1位wire类型。专门指定出wire类型,可能是...
  • regwire与logic的区别

    2021-06-01 19:45:38
    wire型数据常用来表示用以assign关键字指定的组合逻辑信号。Verilog程序模块中输入、输出信号类型默认时自定义为wire型wire型信号可以用做任何方程式的输入,也可以用做“assign”语句或者实例原件的输出。 1、...
  • 在Verilog编程中常常遇到输出端口的类型问题,究竟是输出wire类型和reg类型,常常困扰着大家,针对这两种类型,两种类型综合出来的电路完全不同,wire是线网reg是寄存器类型。 区分的方法可以这样简单粗暴的来...
  • wire和reg区别

    千次阅读 2014-11-13 22:19:44
    每次写verilog代码时都会考虑把一个变量是设置为wire类型还是reg类型,因此把网上找到的一些关于这方面的资料整理了一下,方便以后查找。 wire表示直通,即只要输入...wire只能被assign连续赋值,reg只能在initialal

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,067
精华内容 1,226
关键字:

wire型和reg型的区别