Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。
可以通过它抓各种协议,不同端口的包
Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。
可以通过它抓各种协议,不同端口的包
相信很多和我一样刚开始接触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,initial3.什么情况下使用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语句中使用
Abstract
Verilog初学者最常见的问题:『什么时候该用wire?什么时候又该用reg?』Introduction
大体上来说,wire和reg都类似于C/C++的变量,但若此变量要放在begin...end内,该变量就须使用reg,在begin...end之外,则使用wire。
另外使用wire时,须搭配assign;reg则不必。
input,ouput,inout预设值都是wire。若wire和reg用错地方,compiler都会提醒,所以不必太担心。
一个很重要的观念,在Verilog中使用reg,并不表示合成后就是暂存器(register)。若在组合电路中使用reg,合成后仍只是net,唯有在循序电路中使用reg,合成后才会以flip-flop形式表示成register。
简单来说硬件描述语言有两种用途:1、仿真,2、综合。
对于wire和reg,也要从这两个角度来考虑。
*********************************************************************************
从仿真的角度来说,HDL语言面对的是编译器(如Modelsim等),相当于软件思路。
这时:
wire对应于连续赋值,如assign
reg对应于过程赋值,如always,initial
*********************************************************************************
从综合的角度来说,HDL语言面对的是综合器(如DC等),要从电路的角度来考虑。
这时:
1、wire型的变量综合出来一般是一根导线;
2、reg变量在always块中有两种情况:
(1)、always后的敏感表中是(a or b or c)形式的,也就是不带时钟边沿的,综合出来还是组合逻辑
(2)、always后的敏感表中是(posedge clk)形式的,也就是带边沿的,综合出来一般是时序逻辑,会包含触发器(Flip-Flop)
在设计中,输入信号一般来说你是不知道上一级是寄存器输出还是组合逻辑输出,那么对于本级来说就是一根导线,也就是wire型。而输出信号则由你自己来决定是寄存器输出还是组合逻辑输出,wire型、reg型都可以。但一般的,整个设计的外部输出(即最顶层模块的输出),要求是寄存器输出,较稳定、扇出能力也较好。为什么在verilog中要定义wire?
有几种情况变量需要定义成wire。
第一。assign 语句
例如:
reg a,b;
wire and_result;
...
assign and_result =a&&b;
你可以试试把wire定义成reg。综合器会报错。
第二。元件例化时候的输出必须用wire
例如:
wire dout;
ram u_ram
(
...
.out(dout)
...
);
wire按照国外的教材上面的定义:
wire为无逻辑连线。只做连线,wire本身是不带逻辑性的,所以输入什么输出就是什么。所以你尝试着用always语句对wire变量赋值。综合器就会报错。
那么你可能会问。assign c =a&&b不是就是对wire的赋值吗?
其实并非如此。综合器综合时将a&&b综合成ab经过一个与门。而c只是连接到与门输出的线。正真综合出与门的是&&。而不是c。
wire与reg的区别?什么时候用wire?什么时候用reg?(转)
简单来说硬件描述语言有两种用途:1、仿真,2、综合。
对于wire和reg,也要从这两个角度来考虑。
从仿真的角度来说,HDL语言面对的是编译器(如Modelsim等),相当于软件思路。
这时:
wire对应于连续赋值,如assign
reg对应于过程赋值,如always,initial
从综合的角度来说,HDL语言面对的是综合器(如DC等),要从电路的角度来考虑。
这时:
1、wire型的变量综合出来一般是一根导线;
2、reg变量在always块中有两种情况:
(1)、always后的敏感表中是(a or b or c)形式的,也就是不带时钟边沿的,综合出来还是组合逻辑
(2)、always后的敏感表中是(posedge clk)形式的,也就是带边沿的,综合出来一般是时序逻辑,会包含触发器(Flip-Flop)在设计中,输入信号一般来说你是不知道上一级是寄存器输出还是组合逻辑输出,那么对于本级来说就是一根导线,也就是wire型。而输出信号则由你自己来决定是寄存器输出还是组合逻辑输出,wire型、reg型都可以。但一般的,整个设计的外部输出(即最顶层模块的输出),要求是寄存器输出,较稳定、扇出能力也较好。
为什么在verilog中要定义wire?
有几种情况变量需要定义成wire。
第一。assign 语句
例如:
reg a,b;
wire and_result;
…
assign and_result =a&&b;
你可以试试把wire定义成reg。综合器会报错。第二。元件例化时候的输出必须用wire
例如:
wire dout;ram u_ram
(
…
.out(dout)
…
);
wire按照国外的教材上面的定义:
wire为无逻辑连线。只做连线,wire本身是不带逻辑性的,所以输入什么输出就是什么。所以你尝试着用always语句对wire变量赋值。综合器就会报错。
那么你可能会问。assign c =a&&b不是就是对wire的赋值吗?
其实并非如此。综合器综合时将a&&b综合成ab经过一个与门。而c只是连接到与门输出的线。正真综合出与门的是&&。而不是c。Abstract
Verilog初學者最常見的問題:『什麼時候該用wire?什麼時候又該用reg?』Introduction
大體上來說,wire和reg都類似於C/C++的變數,但若此變數要放在begin…end內,該變數就須使用reg,在begin…end之外,則使用wire。另外使用wire時,須搭配assign;reg則不必。
input,ouput,inout預設值都是wire。
若wire和reg用錯地方,compiler都會提醒,所以不必太擔心。
一個很重要的觀念,在Verilog中使用reg,並不表示合成後就是暫存器(register)。若在組合電路中使用reg,合成後仍只是net,唯有在循序電路中使用reg,合成後才會以flip-flop形式表示成register。
转自:
https://www.cnblogs.com/thymon/archive/2010/06/09/1754541.html