问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

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

发布网友 发布时间:2022-05-14 14:44

我来回答

1个回答

热心网友 时间:2023-09-02 11:05

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,也要从这两个角度来考虑。

*********************************************************************************
从仿真的角度来说,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型都可以。但一般的,整个设计的外部输出(即最顶层模块的输出),要求是寄存器输出,较稳定、扇出能力也较好。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
26个字母在国际音标中的发音 自粘是什么意思? LeonaLewis的《Lovebird》歌词 描写春雨的句子和段落(形容春雨滋润万物的句子) 如何安装声音、语音和音频设备 2022哪个牌子面膜收缩毛孔紧致好?2022收缩面膜排行榜 平安的小额信贷问题 我借2万的话每月还款一共是多少(两年或三年的),就... 描写春雨的优美句子(关于春雨的神仙短句) 春雷开头的精美句子 龙口中宇热管理系统科技有限公司是国家级专精特新“小巨人”吗? verilog里函数的input是和谁对应的? Verilog HDL 数据/命令总线 设置为 inout 类型 其硬件结构要设计成为一个三态缓冲门 具体该如何设计? verilog input直连output怎么写代码? Verilog inout 问题 孕妇可以喝黑茶吗 孕妇喝黑茶注意事项 FPGA在分配管脚的时候,inout 型的两个信号A和B,他们要直接连在一起,在程序中怎么写? 在FPGA的开发中,如何对inout信号进行赋值,除了用assign语言之外? verilog中inout数据高阻是啥意思 verilog的一个关于inout端口的问题 verilog中input问题 在FPGA的开发中,如何对inout信号进行赋值? verilog的inout端口 verilog中的inout类型是怎么用的? verilog中inout的使用 联系实际谈谈班队工作者应该具备什么样的能力素养? 【合集】*1台最近热播电视剧,【免费高清】在线观看百度网盘资源 盘点中央1台电视剧,【在线观看】免费百度云资源 抖音卖爱奇艺会员需要办营业执照么 跪求中央1台正在播电视剧,【在线观看】免费百度云资源 开抖店卖箱包需要营业执照吗 孕妇可以喝茶吗晚期 如何用verilog语言在fpga中实现双向数据总线? Verilog中输入变量能用REG型吗?是不是input a;和reg a;在一个程序中就是连在一起的?可以用reg b;再b=a吗 verilog input dout 怎么单独赋值 Verilog中含inout变量编译后分配引脚时出现一个程序中并没有的管脚分配变量是怎么回事?求指教谢谢 最近使用verilog对FPGA进行编程,遇到一个问题。当把一些的信号(比如输入信号,或INOUT信号)引出到测试脚 怎么做拿那种黑屏背景然后跳文字的视频?该用什么软件做?有没有模板? 法人年报举办单位签字是啥 什么是企业年度报告?为什么法人企业要进行企业年度报告填报工作_百度问一问 法人坐牢公司年报怎么办? 法人在看守所怎么申请年报? 网购怎样才能买到好货,买之前联系客服时要不要问他质量保证什么的 网购要在什么地方才能买到好货? 淘宝网上怎样选好货? 网购电饭煲 有好货推荐吗 千杯酒已喝下去都不醉是什么歌 “沙不怕风吹”是哪首歌里的,谁唱的? beyond岁月无声,想表达什么意思 beyond歌曲 Windows 7如何恢复系统隐藏文件?