reg类型变量综合电路_verilog中reg和wire类型的区别

本文详细介绍了Verilog中reg和wire类型的区别。reg作为存储单元,保持最后一次赋值,而wire则相当于物理连线,需要持续驱动。reg仅在initial和always块中赋值,wire在连续赋值语句中使用。输出端口在过程块内赋值为reg型,过程块外为net型,输入端口和inout端口只能为wire型。Verilog的变量类型在仿真和综合中有不同的考量。
摘要由CSDN通过智能技术生成

verilog

reg

wire

类型的区别

reg

相当于存储单元,

wire

相当于物理连线

Verilog

中变量的物理数据分为线型和寄存器型。这两种类型的变量在定义时要

设置位宽,缺省为

1

位。变量的每一位可以是

0

1

X

Z

。其中

x

代表一个未

被预置初始状态的变量或者是由于由两个或多个驱动装置试图将之设定为不同

的值而引起的冲突型线型变量。

z

代表高阻状态或浮空量。

线型数据包括

wire,wand,wor

等几种类型在被一个以上激励源驱动时,

不同的线

型数据有各自决定其最终值的分辨办法。

两者的区别是:

即存器型数据保持最后一次的赋值,

而线型数据需要持续的驱动

输入端口可以由

net/reg

驱动,但输入端口只能是

net

;输出端口可以使

net/reg

类型,输出端口只能驱动

net

;若输出端口在过程块中赋值则为

reg

型,若在过

程块外赋值则为

net

用关键词

inout

声明一个双向端口

, inout

端口不能声明为寄存器类型,

只能是

net

类型。

****************************************************************************************

******************************

wire

表示直通,即只要输入有变化,输出马上无条件地反映;

reg

表示一定

要有触发,输出才会反映输入。

不指定就默认为

1

wire

类型。专门指定出

wire

类型,可能是多位或为

使程序易读。

wire

只能被

assign

连续赋值,

reg

只能在

initial

always

中赋值。

wire

使用在连续赋值语句中,而

reg

使用在过程赋值语句中。

在连续赋值语句中,表达式右侧的计算结果可以立即更新表达式的左侧。

在理解上,

相当于一个逻辑之后直接连了一条线,

这个逻辑对应于表达式的右侧,

而这条线就对应于

wire

在过程赋值语句中,

表达式右侧的计算结果在某种条件

的触发下放到一个变量当中,

而这个变量可以声明成

reg

类型的。

根据触发条件

的不同,

过程赋值语句可以建模不同的硬件结构:

如果这个条件是时钟的上升沿

或下降沿,

那么这个硬件模型就是一个触发器;

如果这个条件是某一信号的高电

平或低电平,

那么这个硬件模型就是一个锁存器;

如果这个条件是赋值语句右侧

任意操作数的变化,那么这个硬件模型就是一个组合逻辑。

输入端口可以由

wire/reg

驱动,但输入端口只能是

wire

;输出端口可以使

wire/reg

类型,

输出端口只能驱动

wire

若输出端口在过程块中赋值则为

reg

型,

若在过程块外赋值则为

net

型。用关键词

inout

声明一个双向端口

, inout

端口不

能声明为

reg

类型,只能是

wire

类型;输入和双向端口不能声明为寄存器类型。

简单来说硬件描述语言有两种用途:

1

、仿真,

2

、综合。

对于

wire

reg

,也要从这两个角度来考虑。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值