信号用wire类型还是reg类型定义

news2024/10/6 12:36:46

        wire类型就是一根线,线有两端,一端发生改变,经过线传递的信号当然也会发生改变,reg类型则不同,可以把reg类型理解为存储数据的寄存器,当满足一定条件时,数值才被激活发生改变。

那么,信号和输入输出端口何时用wire类型,何时使用reg类型呢?请看下图:

首先介绍一下模块的内部和外部,见代码:

module led_breath(
    //模块外部
	input	wire	rst_n,
	input	wire	clk,
	output	reg	    led
    );

    //模块内部
    reg	[15:0]	timer	[2:0];
    reg	[1:0]	breath_type;

endmodule

        输入输出(input output)端口常定义于模块的外部(我认为是额外定义的,即input output端口也属于信号),用于和其他模块交互,最终需要我们配置相关的约束文件,将引脚和他们相连进而运行代码。在括号之外的属于模块的内部的信号,属于模块的内部逻辑实现部分。

        所以对于模块内部来说,端口定义为wire或reg信号就比较好理解:我认为就可以把它们看作是变量,wire类型就是需要一次次assign赋值,例如说:规定了呼吸灯闪烁的频率为 wire 类型等于1/T,reg类型就是在always循环中自动赋值,例如说:reg类型,计时器当每次时钟翻转的时候激活,使加一。
        这也是很多教程所说的连续赋值(例如assign)是wire类型,过程赋值(例如always)是reg类型

        那么对于模块外部来说,input端口不是模块能改变的,只能接收外部引脚的输入所以只能定义为wire类型,对于output端口来说,模块可以让信号经过内部不同的操作之后,输出自己想要的值,所以可以定义为wire或reg类型,原理类似于模块内部的wire和reg类型。

        可以尝试着看以下代码:因为需要output端口的信号在模块中的操作不同,所以定义的wire/reg类型也就可以不同。

module example_module(
    input [3:0] a,         // 输入端口,隐含 wire 类型
    input [3:0] b,         // 输入端口,隐含 wire 类型
    output reg [3:0] sum,  // 输出端口定义为 reg 类型,因为它在 always 块中被赋值
    output wire carry      // 输出端口定义为 wire 类型,因为它是通过 assign 驱动的
);
    // 内部信号
    wire [4:0] result;  // result 是一个内部信号,用于存储加法结果

    // 组合逻辑
    assign result = a + b;

    // 时序逻辑,用于生成 sum
    always @(*) begin
        sum = result[3:0];  // 在 always 块中赋值,sum 必须是 reg 类型
    end

    // 组合逻辑生成 carry
    assign carry = result[4];  // carry 是通过 assign 语句赋值,因此是 wire 类型

endmodule

        总的来说,在模块内部,需要进行什么样的操作,就定义什么类型的信号(wire/reg),在模块外部,定于input端口就使用wire类型,定义ouput端口,原理类似于模块内部,根据信号的操作定义wire或者reg信号。

        本文权当记录自己对于verilog中wire类型和reg类型的理解。如有错误请一定指出,感谢阅读。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2191894.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

英国本科毕业论文写作如何确立论点

英国本科毕业论文关系到留学生是否能顺利毕业。因此,写好英国本科毕业论文也便成了留学生在毕业季的头等大事。那么应当怎么做才能更好地完成毕业论文呢?在本文中,英国翰思教育将从论点这个内容展开说说,如果高质量地完成毕业论文…

2024 uniapp入门教程 01:含有vue3基础 我的第一个uniapp页面

uni-app官网uni-app,uniCloud,serverless,快速体验,看视频,10分钟了解uni-app,为什么要选择uni-app?,功能框架图,一套代码,运行到多个平台https://uniapp.dcloud.net.cn/ 准备工作:HBuilder X 软件 HBuilder X 官网下载&#xf…

AI产品经理的崛起

“It will be unthinkable not to have artificial intelligence integrated into a product. Because everyone will expect it.” _Sam Altman, CEO & Co-founder (OpenAI)_正如Sam Altman所说的,2024年人工智能技术继续快速发展。我们看到了各种AI模型&#…

[Python] 《人生重开模拟器》游戏实现

文章目录 优化点一:多元化的天赋系统示例天赋:天赋选择代码: 优化点二:更加多样化的随机事件年龄阶段划分:随机事件代码: 优化点三:设定人生目标人生目标示例:人生目标代码&#xff…

ubunut声卡配置 播放视频没有声音的解决方法 alsamixer和pavucontrol的使用方法

文章目录 🌙ubuntu22.04网页没有声音,声卡提示Dummy Output方法一:切换内核🌙方法二:使用知乎的方法 🌙ubuntu22.04 连接蓝牙耳机,1秒后断连解决方法ubuntu声音操作alsamixerpavucontrol通过are…

高校校园交友系统小程序的设计

管理员账户功能包括:系统首页,个人中心,管理员管理,用户管理,基础数据管理,论坛管理,公告信息管理,轮播图信息管理 微信端账号功能包括:系统首页,用户&#…

15分钟学 Python 第40天:Python 爬虫入门(六)第一篇

Day40 :Python 爬取豆瓣网前一百的电影信息 1. 项目背景 在这个项目中,我们将学习如何利用 Python 爬虫技术从豆瓣网抓取前一百部电影的信息。通过这一练习,您将掌握网页抓取的基本流程,包括发送请求、解析HTML、存储数据等核心…

【青训入营】青海湖租车之旅

# 问题描述油价飞升的今天,我们尽量减少花费。我们出门旅游,有时候租车去旅游也是一种不错的方式。这次我们这次旅游是从「青海湖」到「景点 X」,景点 X 可以是「敦煌」、「月牙泉」等,线路的路径是唯一的,假设我们每走…

佳易王电玩店ps5计时计费系统软件倒计时语音提醒软件操作教程

一、前言 【试用版软件下载可以点击最下方官网卡片】 佳易王电玩店ps5计时计费系统软件倒计时语音提醒软件操作教程 1、时间显示:正常使用时间,直观显示在对应桌旁。 2、倒计时显示:右侧显示剩余多少分钟, 3、定时语音提醒&am…

zookeeper选举kafka集群的controller

zookeeper选举kafka集群的controller目录 文章目录 zookeeper选举kafka集群的controller目录前言一、实操体验controller的选举二、模拟controller选举四、删除controller节点 前言 kafka集群的controller是kafka集群中一个有特殊作用的broker,负责整个kafka集群的…

【网络原理】TCP保持“可靠传输”的秘密--确认应答与超时重传机制

💐个人主页:初晴~ 📚相关专栏:计算机网络那些事 在上一篇文章中,我们研究了UDP报文的结构,由于其报头中只有两个字节来记录报文长度,导致一次最多只能传输 64KB 的数据,这完全无法满…

Mamba 架构在医学图像分析中的全面综述:分类、分割、重建及其他应用

Mamba 是一种状态空间模型(State Space Model, SSM)的特例,作为医学图像分析中模板驱动深度学习方法的替代方案,正日益受到关注。尽管 transformer 是强大的架构,但它也存在一些缺陷,例如计算复杂度为平方级…

图元是什么,图元在组态设计中发挥什么作用

从事HMI设计的小伙伴,肯定听说过图元的这个概念,图元简单可以理解为构成图形的最近本元素,如线、面、几何体等等,在一些组态软件中,图元的的重要性甚至超过了界面,因为有了图元就意味着有了千变万化的界面&…

[ESP32]ESP-IDF使用组件添加U8g2图形库

U8g2 在ESP32使用u8g2的时候可以使用添加component的方式进行, 由于官方的component库没有, 这里我找到了一个可以使用的github库, 使用git的方式进行添加这一个库 具体的原理可以看[官方手册](https://docs.espressif.com/projects/esp-idf/zh_CN/stable/esp32/api-guides/to…

《Windows PE》4.1.4 手工重构导入表

接下来我们做一个稍微复杂一些的实验,实验需要四个程序: HelloWorld.exe:弹出MessageBox窗口(实验1已实现)。 Regedit.exe:添加注册表启动项。 LockTray.exe:锁定任务栏窗口。 UnLockTray.exe&…

各省份农林牧渔业总产值统计数据(2000-2022年)

数据来源 《中国统计年鉴》 农业、林业、牧业和渔业作为国民经济的重要组成部分,对于保障国家粮食安全、促进区域经济发展、实现农业农村现代化和乡村振兴具有重要意义。 2000年-2022年全国各省份农林牧渔业总产值统计数据(大数据).zip资源…

DBMS-3.1 SQL(1)——SQL概述和DDL

本文章的素材与知识来自李国良老师和王珊老师。 SQL概述 1.定义 2.SQL语句分类 数据定义语言DDL(Data Definition Language) 一.表 1.创建表 (1)语法 中括号内的项为可选项。分号标志着一条SQL语句的结束。SQL语句不区分大小…

【Spring Boot React】Spring Boot和React教程 完整版

【Spring Boot & React】Spring Boot和React教程 在B站找到一个不错的SpringBoot和React的学习视频,作者是amigoscode 【Spring Boot & React】Spring Boot和React教程 2023年更新版【Spring Boot React】价值79.9美元,全栈开发,搭…

付费计量系统实体和接口(1)

13.System entities and interfaces 系统实体和接口 See also Clause 4 for a discussion on general concepts and Clause 5 for generic entity model. 参见条目 4 讨论总体概念、条目 5 通用实体模型。 An entity specification should specify the embodied functions and …

【Unity踩坑】UWP项目安装包认证失败

问题:在Unity导出的VS项目,打包生成appx后,进行应用认证时失败。提示部分API不支持。 API __C_specific_handler in kernel32.dll is not supported for this application type. UnityPlayer.dll calls this API.API DXGIGetDebugInterface1 …