Verilog中端口应该设置为wire形还是reg形

2024-06-21 13:18

本文主要是介绍Verilog中端口应该设置为wire形还是reg形,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

初学Verilog时,一直搞不清Verilog描述模块时端口应该取什么类型;是reg形?还是wire形?模块对应测试文件的端口类型为什么又与模块的端口类型不一样?因此有必要进行学习与整理:

先写结论:
verilog中的端口具有三种传输方向:input、output、和inout,所有的端口均默认为wire类型;

模块描述时,input端口只能为线网形,output端口可以为线网/reg,inout端口只能为线网形;

模块调用时(实例化模块时对应端口的信号),连接模块input端口的信号可以为线网/reg形,连接模块output端口的信号只能为线网,连接模块inout端口的信号也只能为线网形;

如何理解:
模块描述时:

Verilog描述模块时,所处的角度实际为芯片(模块)内部,描述了模块内部对输入信号进行处理最后输出处理结果的过程;

因此:

模块的输入从模块内部看,就是外界输入的一根信号线,外界来什么模块就接收什么,因此模块描述时input端口只能为线网类型;
模块的输出从模块内部看,就是处理结果向外界的输出,可以直接输出(如组合逻辑)也可以寄存一会再输出(如时序逻辑),因此模块描述时output端口可以为线网类型/reg形;
同理,模块描述时inout端口只能为线网类型;
模块调用时:

模块调用时如测试文件实例化模块,以及顶层文件实例化模块时,所处的角度实际为芯片(模块)外部,描述了其采用何种信号与芯片(即底层模块)连接,进行驱动或得到输出。

因此:

模块的输入从模块外部看,输入信号作为模块的激励,外界想输入什么就输入什么,想何时输入就何时输入,因此模块调用时input端口可以为线网类型/reg形;
模块的输出从模块外部看,模块外部看来输出端口就是模块通向外界的一根输出导线,模块外部只能被动接收,因此模块调用时output端口只能为线网类型;
同理,模块调用时inout端口只能为线网类型;
参考文献:
Verilog端口连接规则
————————————————
版权声明:本文为CSDN博主「CLL_caicai」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/CLL_caicai/article/details/104457700

这篇关于Verilog中端口应该设置为wire形还是reg形的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1081331

相关文章

Java实现为PDF设置背景色和背景图片

《Java实现为PDF设置背景色和背景图片》在日常的文档处理中,PDF格式因其稳定性和跨平台兼容性而广受欢迎,本文将深入探讨如何利用Spire.PDFforJava库,以简洁高效的方式为你的PDF文档... 目录库介绍与安装步骤Java 给 PDF 设置背景颜色Java 给 PDF 设置背景图片总结在日常的

C#中通过Response.Headers设置自定义参数的代码示例

《C#中通过Response.Headers设置自定义参数的代码示例》:本文主要介绍C#中通过Response.Headers设置自定义响应头的方法,涵盖基础添加、安全校验、生产实践及调试技巧,强... 目录一、基础设置方法1. 直接添加自定义头2. 批量设置模式二、高级配置技巧1. 安全校验机制2. 类型

python库pydantic数据验证和设置管理库的用途

《python库pydantic数据验证和设置管理库的用途》pydantic是一个用于数据验证和设置管理的Python库,它主要利用Python类型注解来定义数据模型的结构和验证规则,本文给大家介绍p... 目录主要特点和用途:Field数值验证参数总结pydantic 是一个让你能够 confidentl

Java利用Spire.XLS for Java设置Excel表格边框

《Java利用Spire.XLSforJava设置Excel表格边框》在日常的业务报表和数据处理中,Excel表格的美观性和可读性至关重要,本文将深入探讨如何利用Spire.XLSforJava库... 目录Spire.XLS for Java 简介与安装Maven 依赖配置手动安装 JAR 包核心API介

Nginx中配置使用非默认80端口进行服务的完整指南

《Nginx中配置使用非默认80端口进行服务的完整指南》在实际生产环境中,我们经常需要将Nginx配置在其他端口上运行,本文将详细介绍如何在Nginx中配置使用非默认端口进行服务,希望对大家有所帮助... 目录一、为什么需要使用非默认端口二、配置Nginx使用非默认端口的基本方法2.1 修改listen指令

Linux实现查看某一端口是否开放

《Linux实现查看某一端口是否开放》文章介绍了三种检查端口6379是否开放的方法:通过lsof查看进程占用,用netstat区分TCP/UDP监听状态,以及用telnet测试远程连接可达性... 目录1、使用lsof 命令来查看端口是否开放2、使用netstat 命令来查看端口是否开放3、使用telnet

MySQL设置密码复杂度策略的完整步骤(附代码示例)

《MySQL设置密码复杂度策略的完整步骤(附代码示例)》MySQL密码策略还可能包括密码复杂度的检查,如是否要求密码包含大写字母、小写字母、数字和特殊字符等,:本文主要介绍MySQL设置密码复杂度... 目录前言1. 使用 validate_password 插件1.1 启用 validate_passwo

python设置环境变量路径实现过程

《python设置环境变量路径实现过程》本文介绍设置Python路径的多种方法:临时设置(Windows用`set`,Linux/macOS用`export`)、永久设置(系统属性或shell配置文件... 目录设置python路径的方法临时设置环境变量(适用于当前会话)永久设置环境变量(Windows系统

kkFileView启动报错:报错2003端口占用的问题及解决

《kkFileView启动报错:报错2003端口占用的问题及解决》kkFileView启动报错因office组件2003端口未关闭,解决:查杀占用端口的进程,终止Java进程,使用shutdown.s... 目录原因解决总结kkFileViewjavascript启动报错启动office组件失败,请检查of

Go语言编译环境设置教程

《Go语言编译环境设置教程》Go语言支持高并发(goroutine)、自动垃圾回收,编译为跨平台二进制文件,云原生兼容且社区活跃,开发便捷,内置测试与vet工具辅助检测错误,依赖模块化管理,提升开发效... 目录Go语言优势下载 Go  配置编译环境配置 GOPROXYIDE 设置(VS Code)一些基本