verilog中reg和wire类型的区别和用法

上传人:宝路 文档编号:2777850 上传时间:2017-07-27 格式:DOC 页数:2 大小:30.50KB
返回 下载 相关 举报
verilog中reg和wire类型的区别和用法_第1页
第1页 / 共2页
verilog中reg和wire类型的区别和用法_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

《verilog中reg和wire类型的区别和用法》由会员分享,可在线阅读,更多相关《verilog中reg和wire类型的区别和用法(2页珍藏版)》请在金锄头文库上搜索。

1、reg 相当于存储单元,wire相当于物理连线Verilog 中变量的物理数据分为线型和寄存器型。这两种类型的变量在定义时要设置位宽,缺省为 1 位。变量的每一位可以是 0,1,X ,Z 。其中 x 代表一个未被预置初始状态的变量或者是由于由两个或多个驱动装置试图将之设定为不同的值而引起的冲突型线型变量。z 代表高阻状态或浮空量。线型数据包括 wire,wand,wor等几种类型在被一个以上激励源驱动时,不同的线型数据有各自决定其最终值的分辨办法。两者的区别是:即存器型数据保持最后一次的赋值,而线型数据需要持续的驱动输入端口可以由 net/reg 驱动 ,但输入端口只能是 net;输出端口可以

2、使net/reg 类型,输出端口只能驱动 net;若输出端口在过程块中赋值则为 reg 型,若在过程块外赋值则为 net 型用关键词inout声明一个双向端口, inout端口不能声明为寄存器类型,只能是 net 类型。*wire 表示直通,即只要输 入有变化,输出马上无 条件地反映;reg 表示一定要有触发,输出才会反映输入。不指定就默认为 1位 wire类型。专门指定出 wire 类型,可能是多位或为使程序易读。wire 只能被assig n 连续赋值,reg 只能在 initial 和alway s 中赋值。wire 使用在连续赋值语句中,而 reg 使用在过程赋值语句中。在连续赋值语句

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

4、ire;输出端口可以使wire/reg 类型,输出端口只能驱动 wire;若输出端口在过程块中赋值则为 reg 型,若在过程块外赋值则为 net 型。用关键词 inout 声明一个双向端口, inout 端口不能声明为 reg 类型,只能是 wire 类型;输入和双向端口不能声 明为寄存器类型。 简单来说硬件描述语言有两种用途:1、仿真,2、综合。对于 wire 和 reg,也要从这两个角度来考虑。*从仿真的角度来说,HDL 语言面对的是编译器(如Model sim 等),相当于软件思路。这时:wire 对应于连续赋值,如 assignreg 对应于过程赋值,如 always,initial*

5、从综合的角度来说,HDL 语言面对的是综合器(如 DC 等),要从电路的角度来考虑。这时:1、wire 型的变量综合出来一般是 一根导线;2、re g 变量在 always块中有两种情况:(1)、always 后 的敏感表中是(a or b or c )形式的,也就是不带时钟边沿的,综合出来还是组合逻辑(2)、always 后的敏感表 中是(posedge clk)形式的,也 就是带边沿的,综合出来一般是时序逻辑,会包含触发器(FlipFlop )在设计中,输入信号一般来说你是不知道上一级是寄存器输出还是组合逻辑输出,那么对于本级来说就是一根导线,也就是 wire 型。而输 出信号则由你自己来决定是寄存器输出还是组合逻辑输出,wire型、reg 型都可以。 但一般的,整个设计的外部输出(即最顶层模块的输出),要求是寄存器输出,较稳定、扇出能力也较好。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号