信号类型, wire/reg--FPGA入门2

1. 信号类型和功能描述
https://blog.csdn.net/m0_59161987/article/details/129723048?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170260773016800192251853%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=170260773016800192251853&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-1-129723048-null-null.142v96control&utm_term=fpga%20wire%E5%9E%8B%E5%92%8Creg%E5%9E%8B&spm=1018.2226.3001.4187

2. 信号类型
数据类型主要包括两种,线网类型(net tye)和寄存器类型(reg type),在进行工程设计的时候也只会使用到这两种类型的信号

3. 信号位宽
定义信号类型的同时,必须定义好信号的位宽,默认信号位宽时一位(如果我们没有定义信号位宽即没有描述,那就是一位)
信号位宽取决于要改信号表示的最大值,该信号能表示的无符号最大值时:$ 2^n-1 $,其中 n 表示该信号的位宽
wire a; //表示位宽为 1 的信号类型
wire [7:0] a; //表示位宽为 8 的信号类型

4. 线网类型 wire
线网类型用于对结构化器件之间的物理连线的建模,由于现网类型代表的是物理连接线,因此其不存储逻辑值,必须由器件驱动。通常用 assign 进行赋值

wire 类型定义语法如下:

wire [msb: lsb] wire1, wire2 , …… , wiren

msb、lsb 定义了范围,表示了位宽,必须为常数值,例如 [7:0] 是 8 位位宽,也就可以表示成 8’b0 至 8’b1111_1111

如果没有定义范围,缺省值为 1

如果没有定义信号类型时,缺省为 wire 类型

数组按照降序方式进行定义,例如:[7:0] ,不要写成 [0:7]

5. 寄存器类型 reg
reg 是最常用的寄存器类型,寄存器类型通常用于对存储单元的描述,寄存器类型信号的特点是在某种触发机制下分配了一个值,在下一触发机制到来之前保留原值,但必须注意的是:reg 类型的变量不一定是存储单元,如在 always 语句中进行描述的必须是用 reg 类型的变量

reg 类型定义如下:

reg [msb: lsb] reg1, reg2, …… , regn

msb、lsb 定义了范围,表示了位宽,必须为常数值,例如 [7:0] 是 8 位位宽,也就可以表示成 8’b0 至 8’b1111_1111

如果没有定义范围,缺省值为 1

如果没有定义信号类型时,缺省为 wire 类型,不是 reg 类型

数组按照降序方式进行定义,例如:[7:0] ,不要写成 [0:7]

6. Wire & Reg区别

wire 对应于连续赋值,如 assign

reg 对应于过程赋值,如 always,initial

wire 型数据常用来表示以 assign 关键字指定的组合逻辑信号,模块的输入输出端口类型都默认为 wire 型,wire 相当于物理连线,默认初始值是 z,reg 型数据表示寄存器模型,用于 always 块、initial 语句中被赋值的变量

wire 使用在连续赋值语句中,reg 用在过程赋值语句(always、initial)中

wire 若无驱动器连接其值为z,reg 默认初始值为不定值 x

wire 表示直通,即输入有变化,输出马上无条件地反映(如与、非门的简单连接),reg 表示一定要有触发,输出才会反映输入的状态

wire 一般用在组合逻辑中,reg 一般用在时序逻辑中

reg 变量在 always 中有两种情况:

always @(a or b or c)形式的,即不带时钟边沿的,综合出来还是组合逻辑;

always @(posedge clk)形式的,即带有边沿的,综合出来一般是时序逻辑,会包含触发器(Flip-Flop)

always 块不止能实现时序逻辑,还能实现组合逻辑:
如果这个条件是时钟上升沿或下降沿,那硬件模型就是一个触发器,只有是指定了 always@(posedge or negedge)才是触发器

如果这个条件是某一信号的高低电平,那这个硬件模型就是一个锁存器

如果这个条件是赋值语句右侧任意操作数的变化,那这个硬件模型就是一个组合逻辑

对组合逻辑输出变量,可以直接用 assign。即如果不指定为 reg 类型,那么就默认为 1 位 wire 类型,故无需指定 1 位 wire 类型的变量。当然专门指定出 wire 类型,可能是多位或为使程序易读

reg 型数据保持最后一次的赋值,而 wire 型数据需要持续的驱动

在连续赋值语句 assign 中,表达式右侧的计算结果可以立即更新到表达式的左侧,可以理解为逻辑之后直接连接了一条线,这个逻辑对应于表达式的右侧,这条线对应于 wire

在过程赋值语句中,表达式右侧的计算结果在某种条件的触发下放到一个变量当中,这个变量可以声明成 reg 型

reg和wire类似于C、C++的变量,但若此变量要放在begin…end之内,则该变量只能是reg型;在begin…end之外,则用wire型

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

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

相关文章

module ‘tensorflow‘ has no attribute XXX 报错解决

问题描述: 粘了别人的tensorflow项目,运行总是报错module ‘tensorflow’ has no attribute什么什么 问题解决: 导入tensorflow的代码如下 import tensorflow as tf此时,某个某块报错,比如下面这个 那么就直接把tf.…

基于python实现原神那维莱特开转脚本

相信不少原友都抽取了枫丹大C那维莱特,其强力的输出让不少玩家爱不释手。由于其转的越快,越不容易丢伤害的特点,很多原友在开转时容易汗流浃背,所以特意用python写了一个自动转圈脚本,当按住鼠标侧键时,即可…

【Docker】WSL 2 上的 Docker 搭建和入门

▒ 目录 ▒ 🛫 导读开发环境 1️⃣ 安装安装Docker Desktop for Windows 2️⃣ 环境配置3️⃣ hello world第一次运行再次运行分析总结 📖 参考资料 🛫 导读 开发环境 版本号描述文章日期2023-12-14操作系统Win11 - 22H222621.2715WSL2 C:…

【NTN 卫星通信】Starlink,卫星互联网的技术革命(一)

1. 什么是Starlink Starlink是由Elon Musk创立的私人太空探索公司SpaceX提供的卫星互联网服务。它旨在为世界上传统互联网服务速度慢或不可用的偏远地区提供价格合理的高速互联网。 为什么Starlink很重要?   Starlink之所以重要,是因为它有可能为数百万…

C++入门【8-C++ 运算符】

C 运算符 运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。C 内置了丰富的运算符,并提供了以下类型的运算符: 算术运算符关系运算符逻辑运算符位运算符赋值运算符杂项运算符 本章将逐一介绍算术运算符、关系运算符、逻辑运算符、位运算符、赋…

第一次使用ThreadPoolExecutor遇到的问题

最近遇到个问题,因为业务需求将表中的五个字段改成了CLOB,结果出现了sql异常,修改方式就是将这五个字段单独拿出来查询,结果导致了查询慢的问题,由于sql年代久远,涉及十几张表的关联,加减乘除&a…

管理类联考——逻辑——真题篇——按知识分类——论证逻辑

文章目录 2023真题(2023-27)-论证逻辑-削弱-措施目的型-缩写:zl吃lj→cclj,jjhb真题(2023-28)-论证逻辑-假设-搭桥-缩写:学校专业化服务→学生创业→创业者收益榜名列榜首;培养创新新型人才与创新创业培训的桥梁真题(2023-30)-论证逻辑-结构相似题-缩写:A不一定B,C…

逆向获取某音乐软件的加密(js逆向)

本文仅用于技术交流,不得以危害或者是侵犯他人利益为目的使用文中介绍的代码模块,若有侵权请联系作者更改。 老套路,打开开发者工具,直接开始找到需要的数据位置,然后观察参数,请求头,cookie是…

【ET8框架入门】1.运行指南

主要学习网址 论坛地址为:https://et-framework.cn Git地址为:GitHub - egametang/ET: Unity3D Client And C# Server Framework 官方QQ群 : 474643097 多线程多进程框架设计-01预告_哔哩哔哩_bilibili 项目检出 检出项目切换到release8.0分支 Git…

零信任 SASE 办公安全解决方案:提升企业网络安全与灵活性

​零信任 SASE(Secure Access Service Edge)办公安全解决方案为企业带来了许多好处,相较于以前的解决方案有明显差异。这个方案的出现是为了应对企业面临的新的网络安全挑战和远程办公的需求。 1、统一的网络安全管理:SASE 将网络…

Java版商城:Spring Cloud+SpringBoot b2b2c实现多商家入驻、直播带货及免 费小程序商城搭建

1. 涉及平台 平台管理、商家端(pc端、手机端)、买家平台(h5/公众号、小程序、app端(ios/android)、微服务平台(业务服务) 2. 核心架构 spring cloud、spring boot、mybatis、redis 3. 前端框架…

Unity:Camera讲解之ClearFlags

Clear Flags四个选项讲解: 前三个都是常用的,第四个基本不会用。 skybox(天空盒): 主要是一种用于渲染游戏场景中天空的技术。它是一个包含6个纹理图片的立方体贴图,分别代表了从不同角度观察天空时所看到的前、后、上、下、左…

spring Aop之切点表达式

切点表达式用来定义通知(Advice)往哪些方法上切入。 切入点表达式语法格式: execution([访问控制权限修饰符] 返回值类型 [全限定类名]方法名(形式参数列表) [异常]) 访问控制权限修饰符: ● 可选项。斜体样式 ● 没写&#xff…

产品经理之如何编写可行性分析(医疗HIS项目详细案例模板)

目录 一.是什么? 二.目的 三.准备 四.文档的基本框架 项目的开展 产品的开展 项目人员安排及项目总成本费用估算 不确定性分析 可行性研究结论与建议 五.案例模板 前言 继上篇的竞品分析报告,本篇将继续分析可行性报告的书写,接下来也会继续分析需求文档,小伙伴们可…

DevEco Studio 项目鸿蒙(HarmonyOS)资源引用(自定统和系统)

DevEco Studio 项目鸿蒙(HarmonyOS)资源引用(自定统和系统) 一、操作环境 操作系统: Windows 10 专业版 IDE:DevEco Studio 3.1 SDK:HarmonyOS 3.1 二、资源访问 HarmonyOS应用资源分为两类,一类是应用资源&…

C# WPF上位机开发(键盘绘图控制)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 在软件开发中,如果存在canvas图像的话,一般有几种控制方法。一种是鼠标控制;一种是键盘控制;还有一…

.NET 8的正式发布,对Telerik开发工具意味着什么?

微软日前正式发布了.NET 8稳定版,这是一个长期支持(LTS)的版本,它可以使Android、Windows和macOS跨平台应用的开发过程高效流畅,同样的目标也驱使着Telerik UI不断进步和发展! Telerik DevCraft包含一个完整的产品栈来构建您下一个…

力扣二叉树--总结篇(2)

前言 总体回顾:11.18-12.14,中间有一个星期左右因为考试没有写题。37道题。 内容 这是第二阶段刷的题 从路径到构造二叉树,合并二叉树,再到二叉搜索树,公共祖先问题 看到二叉树,看到递归 都会想&#…

Navicat16 无限试用 亲测有效

Navicat16 无限试用 亲测有效 亲测有效!!! 吐槽下,有的用不了,有的是图片,更甚者还有收费的,6的一批 粘贴下面的代码,保存到桌面,命名为 trial-navicat16.bat echo off…

移动滑轨屏的运用是否对传统展览展示效果产生了哪些影响?

移动滑轨屏因其独特的展示外观和形式,也常被人们称为滑轨电视、电动滑轨,主要由滑动轨道、显示屏、感应装置、控制系统等组件结合实现,是一种解决了传统展览内容展示局限的多功能互动装置,能够呈现动态内容并与用户产生互动交流&a…