verilog之wire和reg
verilog之wire和reg
1、区别
wire为线,reg为寄存器。至少初期这两个名词的意思是这样的。wire在电路设计中指代的就是某个点的逻辑值,而reg则指代某个寄存器输出的逻辑值。这个理解可以覆盖大部分的使用。而不在这一范围内的就是使用always写组合逻辑。这时的reg具备的只有语法意义,而没有电路意义。always块内要求使用reg类型,拓展了always的用法,但是降低了verilog与电路的对应性。
在端口声明中,wire是输入的唯一类型。可以从电路来理解,reg变量只有存在被赋值的语句才有意义,如果使其作为模块的输入,那么这个reg变量就会需要在模块内写输入的赋值,显然不合理。没有赋值的reg就是wire。至于输出,则是可以选择reg和wire。reg可以使用,是模块内有reg的赋值语句。如果没有,编译器会警告然后将该端口在RTL视图中剥离。好像一些编译器会直接删除这部分语句。wire自然也可以。wire在模块内肯定有连线。
同样,在激励文件中,reg作为其他模块的输入,也是基于要在激励文件中编写其他模块的输入。输出则是默认wire类型。这里主要防止模块输出为reg。reg和reg在端口相连是非法的。这里可能是考虑到reg变量的赋值只能在always等结构中,端口处显然不存在这一结构。
2、使用
通过前面的总结可以看到使用中的结构是:
源文件:
module test(
input wire a,
output wire/reg b
);
//===========
endmodule
激励文件
module test_tb;
reg a_in;
wire b_out;
test U1(
.a(a_in),
.b(b_out)
);
//////////////
endmodule
上层文件:
module test_top(
//////////////////
);
reg/wire a_in;
wire b_out
test U2(
.a(a_in),
.b(b_out)
);
endmodule
小总结:在端口声明中,一定是reg数据向外输出,绝对不能出现数据向reg输入。wire则随便,可进可出。简而言之就是reg只出不进,wire可出可进。
3、作用
reg和wire作为verilog操作的基本类型,在设计和激励中都具有重要作用。了解这两个类型的区别,可以有效地减少设计中出现端口声明的错误现象发生。
verilog之wire和reg的更多相关文章
- verilog中wire与reg类型的区别
每次写verilog代码时都会考虑把一个变量是设置为wire类型还是reg类型,因此把网上找到的一些关于这方面的资料整理了一下,方便以后查找. wire表示直通,即只要输入有变化,输出马上无条件地反映 ...
- wire与reg的区别?转载大神!
本文转自:http://www.cnblogs.com/thymon/archive/2010/06/09/1754541.html //------------------------------- ...
- fpga中wire和reg的区别
wire表示直通,即只要输入有变化,输出马上无条件地反映:reg表示一定要有触发,输出才会反映输入.wire表示直通,即只要输入有变化,输出马上无条件地反映:reg表示一定要有触发,输出才会反映输入. ...
- [笔记][FPGA]如何使用SignalTap观察wire与reg值
0. 简介 在FPGA程序调试时,我们除了仿真还经常的会用到SignalTap进行板级调试,其可以真实有效的反应某些变量的变化,方便我们理解内在跳转,方便Debug的运行.SignalTap需要制定时 ...
- 数字逻辑实践5->Verilog语法 | wire 与 reg 的选择与特性
问题起因:最初学习数字逻辑设计理论的时候还没有注意到,在实验课上写代码的时候发现了一个问题: 对于源码模块的变量定义,何时定义为reg.何时定义为wire?它们各自又有什么特性和物理意义? 1. wi ...
- Chisel3 - 基本数据类型
https://mp.weixin.qq.com/s/bSrM-wLRn7O_75xYKeoaEQ Chisel中的基本数据类型,不是Verilog中的Wire和Reg.Wire和Register ...
- 如何使用SignalTap II觀察reg與wire值? (SOC) (Verilog) (Quartus II) (SignalTap II)
Abstract撰寫Verilog時,雖然每個module都會先用ModelSim或Quartus II自帶的simulator仿真過,但真的將每個module合併時,一些不可預期的『run-time ...
- reg 和wire 区别
reg相当于存储单元,wire相当于物理连线 Verilog 中变量的物理数据分为线型和寄存器型.这两种类型的变量在定义时要设置位宽,缺省为1位.变量的每一位可以是0,1,X,Z.其中x代表一个未被预 ...
- Chisel3 - Wire & Reg
https://mp.weixin.qq.com/s/Y26N5P4XOr5e3uyi5XQY-w 不同于Verilog,Chisel中Wire和Reg并不是数据类型,而是数据容器,作为数据的一个 ...
- system verilog的一些总结(从其他博客复制来的)
转载自 http://blog.sina.com.cn/s/blog_e7fec2630101f5t9.html SystemVerilog是一种硬件描述和验证语言(HDVL),它基于IEEE 136 ...
随机推荐
- 普冉PY32系列(十一) 基于PY32F002A的6+1通道遥控小车II - 控制篇
目录 普冉PY32系列(一) PY32F0系列32位Cortex M0+ MCU简介 普冉PY32系列(二) Ubuntu GCC Toolchain和VSCode开发环境 普冉PY32系列(三) P ...
- Springboot集成Druid连接池并实现数据库密码加密
Druid介绍 Druid首先是一个数据库连接池.Druid是目前最好的数据库连接池,在功能.性能.扩展性方面,都超过其他数据库连接池,包括DBCP.C3P0.BoneCP.Proxool.JBoss ...
- At-abc342
AtCoder Beginner Contest 342 (已更新:C D) C 似曾相识的经典映射题--而只会map的蒟蒻成功又被卡住了 简单的用map映射无法处理如r->a,a->r这 ...
- Puppeteer介绍
Puppeteer是什么 Puppeteer是一个Node库,它提供了一个高级API来通过DevTools协议控制Chromium或Chrome. 可以使用Puppeteer来自动化完成浏览器的操作, ...
- 项目实战:Qt终端命令模拟工具 v1.0.0(实时获取命令行输出,执行指令,模拟ctrl+c中止操作)
需求 在Qt软件中实现部分终端控制命令行功能,使软件内可以又好的模拟终端控制,提升软件整体契合度. Demo演示 运行包下载地址: CSDNf粉丝0积分下载:https: ...
- Kotlin 协程四 —— Flow 和 Channel 的应用
目录 一. Flow 与 Channel 的相互转换 1.1 Flow 转换为 Channel 1.1.1 ChannelFlow 1.1.2 produceIn -- 将 Flow 转换为单播式 C ...
- 【Azure 存储服务】使用PowerShell脚本创建存储账号(Storage Account)的共享访问签名(SASToken) : New-AzStorageContainerSASToken
问题描述 使用PowerShell脚本如何来创建存储账号(Storage Account)的共享访问签名呢?查询到可以使用 New-AzStorageContainerSASToken 命令来生成Az ...
- redis 安装的参考文章
redis 安装 : https://www.runoob.com/redis/redis-install.html
- C++ Qt开发:QHostInfo主机地址查询组件
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍如何运用QHo ...
- 2024-03-09:用go语言,我们把无限数量的栈排成一行,按从左到右的次序从 0 开始编号, 每个栈的的最大容量 capacity 都相同。实现一个叫「餐盘」的类 DinnerPlates, Di
2024-03-09:用go语言,我们把无限数量的栈排成一行,按从左到右的次序从 0 开始编号, 每个栈的的最大容量 capacity 都相同.实现一个叫「餐盘」的类 DinnerPlates, Di ...