Verilog 中定义信号为什么要区分 wire与reg 和 reg 两种类型

你的位置:
Verilog语言中reg变量和wire变量的问题
[i=s] 本帖最后由 cxbtiger 于
14:40 编辑
最近在看一些书籍上的Verilog代码时,发现一个小问题,如下。如果一个module的某个输出端口需要在always块中赋值,很多代码的做法是将该信号定义为wire类型,而同时在程序中再定义一个对应的reg型变量,在always模块中对后面这个定义的reg型变量赋值,而使用assign将reg型变量的值赋给输出端口。
举例如下:
input clk,
input rst_n,
output txd
always @(posedge clk or negedge rst_n) begin
if(!rst_n) begin
txd_reg <= 1'b1;
else begin
assign txd = txd_reg
请问,这样处理有什么优点呢?为什么不将需要赋值的输出端口直接定义为reg型变量,在always块中直接对其赋值呢?Verilog 中定义信号为什么要区分 wire 和 reg 两种类型 _ 延安汽车网
Verilog 中定义信号为什么要区分 wire 和 reg 两种类型
而 reg 类型只有在满足敏感列表条件时才会计算。而如今随着 SV 的推出 Verilog 都已经到 2005 了,而且在非阻塞赋值中也存在一种并行的概念(同样条件下 B &lt,A 的值不会直接到 C 去)。而 wire 只需要输入就足够了,但这属于综合工具对代码描述的硬件行为的一种解读;= B 的时候,仿真器看到 wire 和 reg 会区别处理(实际上至今也是这样)、C &lt这是一个历史遗留问题,Verilog 只是一个用来做仿真的 HDL,不可综合;= A。在那个年代。always @ (*) 当中这个敏感列表依然存在。反过来看 wire,但当初的这一习惯继承了下来。在 Verilog 被 Cadence 买下之前(大约上世纪八九十年代的样子),是依靠输入和敏感列表的。虽然 reg 不一定综合出来 register。不知道你有没有发现,reg 类型信号的跳变,仿真器依然会依照敏感列表的指示去干活,不论你的敏感列表是不是*。这样区分两种类型也是为了更好地模拟真实硬件中时序逻辑和组合逻辑的行为。仿真器对 wire 类型会在每个 delta time 都进行计算并赋值
但输入端口只能是net。其中x代表一个未被预置初始状态的变量或者是由于由两个或多个驱动装置试图将之设定为不同的值而引起的冲突型线型变量;reg驱动, inout端口不能声明为寄存器类型,只能是net类型:即存器型数据保持最后一次的赋值。z代表高阻状态或浮空量reg相当于存储单元。
线型数据包括wire,wand,wor等几种类型在被一个以上激励源驱动时,不同的线型数据有各自决定其最终值的分辨办法。
两者的区别是,而线型数据需要持续的驱动 输入端口可以由net&#47;输出端口可以使net/reg类型,输出端口只能驱动net;若输出端口在过程块中赋值则为reg型,wire相当于物理连线
Verilog 中变量的物理数据分为线型和寄存器型。这两种类型的变量在定义时要设置位宽,缺省为1位。变量的每一位可以是0,1,Z,X,若在过程块外赋值则为net型
用关键词inout声明一个双向端口
reg代表寄存器:数据传送时需要额外的时钟周期;wire代表线:数据立刻就能从一端传到另外一端可以继续追问
reg代表寄存器:数据传送时需要额外的时钟周期; wire代表线:数据立刻就能从一端传到另外一端 可以继续追问
首先要先清楚一点,verilog是硬件描述语言,其最终是为了生成一个电路,所以它的变量类型是根据实际电路来决定的。 从名字理解: wire,线型,实际上在电路中的作用就是一根连线; reg,寄存器型,在电路中就作为寄存器存在。 连线和寄存器是构...
模块间的连接都是用wire的 因为out已经是reg了,模块连接时就是用一根线wire把reg里的值引出来
wire表示直通,即输入有变化,输出马上无条件地反映(如与、非门的简单连接)。 reg表示一定要有触发,输出才会反映输入的状态。 reg相当于存储单元,wire相当于物理连线。reg表示一定要有触发,没有输入的时候可以保持原来的值,但不直接实际的...
对于testbench而言,端口应当和被测试的module一一对应。端口分为input,output和inout类型产生激励信号的时候,input对应的端口应当申明为reg, output对应的端口申明为wire,inout端口比较特殊; 一般用initial块给信号赋初值,initial块执行一...
这是一个历史遗留问题。在 Verilog 被 Cadence 买下之前(大约上世纪八九十年代的样子),Verilog 只是一个用来做仿真的 HDL,不可综合。在那个年代,仿真器看到 wire 和 reg 会区别处理(实际上至今也是这样)。不知道你有没有发现,reg 类型信...
返回主页:
本文网址:http://www.0911auto.cn/view-.html404 Not Found
404 Not Found关于Verilog的output,应该是reg型,还是wire型?
[问题点数:40分,结帖人delacroix_xu]
本版专家分:123
结帖率 98.48%
CSDN今日推荐
本版专家分:1962
本版专家分:123
结帖率 98.48%
本版专家分:35
本版专家分:0
匿名用户不能发表回复!|
CSDN今日推荐verilog中reg和wire的区别_百度知道
verilog中reg和wire的区别
我有更好的答案
reg代表寄存器:数据传送时需要额外的时钟周期;wire代表线:数据立刻就能从一端传到另外一端可以继续追问
采纳率:47%
来自团队:
为您推荐:
其他类似问题
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。}

我要回帖

更多关于 wire和reg 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信