Verilog基本语法之数据类型

news2024/11/25 7:23:59

Verilog 是一种用于数字逻辑电路设计的硬件描述语言,可以用来进行数字电路的仿真验证、时序分析、逻辑综合。

既是一种行为级(可用于电路的功能描述)描述语言又是一种结构性(可用于元器件及其之间的连接)描述语言。

数据类型及常量、变量

数据类型
数据类型是用来表示数字电路中的数据存储和传送单元
4种基本的数据类型
integer (整形) parameter类型 reg wire(线网)

常量

在程序运行的过程中,其值不允许被改变
包括:
数字(包括整形,x和z值,负数)
parameter常量(或称符号常量)

1.整数型常量
二进制 (b/B)
十进制 (d/D)
十六进制 (h/H)
八进制 (o/O)

整常数的3种表达方式
[图片]

注:位宽表示二进制时的宽度

2.x和z值
x表示不定值(8’b1001xxxx或8’h9x);
z表示高阻值(8’b1001zzzz或8’h9z);
每个字符代表的二进制的宽度取决于所用的进制;
当用二进制表示时,以表明位宽的数若用x或者z表示某些位,则只有在最左边的x或z具有扩展性例如:8’bzx = 8’bzzzz_zzzx 8’b1x = 8’b0000_001x
?是z的另一种表示符号,建议在case语句中使用?表示高阻态z。
[图片]

3.负数
在位宽前边加一个负号,表示负数;
如:-8’d5 //5的补数 =8’11111011
负号不能放在位宽和进制之间,也不能放在进制和数字之间

4.parameter常量(符号常量)
用parameter来定义一个标示符,代表一个常量,称为符号常量
格式:
parameter 参数名1 = 表达式, 参数名2 = 表达式;
parameter 参数型数据的确认符,后边的为赋值语句表
每个赋值语句的右边必须为常数表达式,且只能包含数字或先前定义过的符号常量:
parameter addrwidth =16; //合法
parameter addrwidth = addrwidth * 2 //非法
常用参数来定义延时时间和变量宽度
可用字符串表示的任何地方,都可用定义的参数来代替;
参数是本地的,其定义只在本模块有效;
在模块或实例例化时,可通过参数传递改变在被引用模块或实例中已定义的参数
localparam 符号常量:
格式:
localparam 参数名1 = 表达式, 参数名2 = 表达式;
localparam 参数型数据的确认符,后边的为赋值语句表
parameter可作为在顶层模块中例化底层模块时传递参数的接口;
localparam的作用域仅仅限于当前module,不能作为参数传递的接口;
实例:
[图片]

变量

在程序运行过程中,其值可以改变的量,称为变量;
常用的有3种:
网络型(nets)
寄存器型(register)
数组(memory)

1.net型变量
输出始终随输入的变化而变化的变量(表示结构实体之间的物理连接)
常用的net变量为wire。
wire型变量
最常用的nets型变量,常用来表示以assign语句赋值的组合逻辑信号
模块中的输入/输出信号类型缺省为wire型
可用做任何方程式的输入,或“assign”语句和实例元件的输出。

2.register 型变量
对应具有状态保持作用的电路元件(如触发器,寄存器)
常用来表示过程块语句(initial always,task,function)内的指定信号
常用register型变量:
reg:常代表触发器
integer: 32位带符号整数型变量
real:64位带符号实数型变量
time:无符号时间变量
register变量与net变量的根本区别:register变量要被明确的赋值,并且在被重新赋值前一直保持原值
register变量必须通过过程语句块赋值,不能使用assign语句块赋值
在过程语句块内赋值的每个信号必须定义成register型。
reg型变量
在过程块中被赋值的信号,往往代表触发器,但不一定就是触发器(也可以是组合逻辑信号)

reg与wire的区别:
[图片]

边沿触发和电平触发的区别:
边沿触发:posedge定义为上升沿触发,只有在后面信号由低变高的时候才触发,negedge正好相反,为下降沿触发。
电平触发:当敏感信号发生变化是触发

3.memory型变量——数组
有若干个相同宽度的reg向量构成的数组
Verilog 通过reg型变量简历数组来对存储器建模
memory型变量可描述RAM,ROM和reg文件
memory型变量通过扩展reg型变量的地址范围来生成
reg [n-1:0] 存储器名[m-1:0]; 每个存储单元位宽为n,共有m个存储单元

例:
reg [n-1:0] rega; //一个n位的寄存器;
reg mema [n-1:0] ; //n个一位寄存器组成的存储器
赋值方式不同:
一个n位的寄存器可用一条赋值语句赋值,一个完整的存储器则不行,若要对某存储器中的存储单元进行读写操作,必须指明该单元在存储器中的地址!
例:
rega=0; //合法赋值语句
mema=0; // 非合法赋值语句
mema[8]=1;//合法赋值语句
mema[1023:0]=0; //合法赋值语句

想要了解更多,就关注IC修真院吧,后续为大家持续更新,如果想要获取全文档,也可直接领哦~

这里放个口:Verilog概述全文

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

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

相关文章

深度了解机器人行业全貌

产品分类 机器人主要可分为工业机器人、服务机器人和特种机器人,主要产品如下图所示。 机器人主要分类 资料来源:36氪、华泰证券《机械设备行业专题研究-商用服务机器人:曙光已现蓝海可期-220105》。 其中工业机器人的主要种类及应用领域如下图所示。 工业机器人主要类型及…

docker安装失败 应用程序无法启动,因为应用程序的并行配置不正确

问题描述 报错“应用程序无法启动,因为应用程序的并行配置不正确”。 配置:windows10 解决过程 网上的解决方案有三种: 启动windows服务Windows Modules Installer。运行sxstrace.exe。安装visual c相关依赖。下载visual studio installer…

Python基础 —— 输入输出

〇、概述 当我们编写代码时,必不可少地需要通过敲击键盘来向电脑输入数据,然后显示器将把我们想要的内容显示出来;这其中需要很多复杂的知识,为了简化操作,便有人将其封装成了 print() 和 input() 两个函数。 一、输出…

LiDAR SLAM 闭环——BoW3D论文详解

标题:BoW3D: Bag of Words for Real-Time Loop Closing in 3D LiDAR SLAM 作者:Yunge Cui,Xieyuanli Chen,Yinlong Zhang,Jiahua Dong,Qingxiao Wu,Feng Zhu 机构:中科院沈阳自动化研究所 来源:2022 RAL 现算法已经开源&#…

linux查看文件夹的命令

第一种: 最简单的查看方法可以使用ls -ll、ls-lh命令进行查看,当使用ls -ll,会显示成字节大小,而ls- lh会以KB、MB等为单位进行显示,这样比较直观一些。 ls -ll ls -lh 第二种: 通过命令du -h –max-de…

微信小程序视图层莫名出现”竖线“

写完视图层后&#xff0c;发现页面上莫名其妙的出现了一些“竖线”&#xff0c;如下图所示&#xff1a; 这段html代码是这样写的&#xff1a; <view class"other-des"><view class"section"><text class"section-num">{{cou…

服务器财务系统数据库被locked勒索病毒攻击后如何怎么办?如何快速解密恢复数据

在当今的数字化时代&#xff0c;信息安全问题已成为企业面临的重大挑战之一。企业的服务器财务系统数据库是企业最核心的资金管理和财务决策平台&#xff0c;一旦遭受勒索病毒攻击&#xff0c;重要财务数据并被锁定&#xff0c;可能导致严重的经济损失和业务中断。近期&#xf…

企业为什么需要软件的应用框架?

软件框架是可用来构建软件的结构。它充当系统的基础&#xff0c;使开发者不必从头开始创建&#xff0c;比如非必要的额外逻辑。框架还类似于模板&#xff0c;你可以对其进行修改并添加某些特性和更高级功能&#xff0c;然后创建许多人可以使用的复杂而普适的项目。 软件的应用…

python 笔记 math包

abs 绝对值 acos 反余弦函数 acosh 反双曲余弦函数 asin 反正弦函数 asinh 反双曲正弦函数 atan 反正切函数 atanh 反双曲正切函数 cos 余弦函数 cosh 双曲余弦函数 e 自然常数 exp e的几次方 fabs 绝对值 gcd 最大公约数 log log2 log10 modf 取小数、取整数部分 …

gitlab【安装部署、备份与恢复】

【1】安装依赖 [rootgit ~]# yum -y install install curl opessh-server postfix wget【2】安装软件包 [rootgit ~]# yum -y localinstall gitlab-ce-11.2.3-ce.0.el7.x86_64.rpm 【3】修改配置 [rootgit ~]# grep "^[a-Z]" /etc/gitlab/gitlab.rb external_ur…

【爬虫学习】1、利用get方法对豆瓣电影数据进行爬取

♥️作者&#xff1a;白日参商 &#x1f935;‍♂️个人主页&#xff1a;白日参商主页 ♥️坚持分析平时学习到的项目以及学习到的软件开发知识&#xff0c;和大家一起努力呀&#xff01;&#xff01;&#xff01; &#x1f388;&#x1f388;加油&#xff01; 加油&#xff01…

Z-NTFS2EXCEL 文件服务器权限可视化报告

Z-NTFS2EXCEL Z-NTFS2EXCEL是一个用于快速获取Windows文件服务器权限信息并进行确认或审计的程序。 github地址&#xff1a;https://github.com/ericzhong2010/Z-NTFS2EXCEL 使用示例 编辑ini配置文件 执行exe程序文件 检查与确认结果 作者信息 作者&#xff1a;Eric…

Docker学习笔记17

跨主机容器间网络&#xff1a; 实现跨主机容器间通信的工具&#xff1a; 1&#xff09;Pipework 2&#xff09;Flannel 3&#xff09;Weave 4&#xff09;Open V Switch &#xff08;OVS&#xff09; 5&#xff09;Calico 1. Weave&#xff1a; 在每个宿主机上布置一个特…

SwiftUI的优缺点

2019年WWDC大会上&#xff0c;苹果在压轴环节向大众宣布了基于Swift语言构建的全新UI框架——SwiftUI&#xff0c;开发者可通过它快速为所有的Apple平台创建美观、动态的应用程序。推荐大量使用struct代替类。 SwiftUI 就是⼀种声明式的构建界面的用户接口工具包。 SwiftUI使用…

NotePad++ 正则匹配文件路径

([a-zA-Z]:(([\\\\/])[^\\\\/:*?<>|])*([\\\\/])[^\\\\/:*?<>|]\\.[^\\\\/:*?<>|],)*[a-zA-Z]:(([\\\\/])[^\\\\/:*?<>|])*([\\\\/])[^\\\\/:*?<>|]\\.[^\\\\/:*?<>|]$CTRLH -> 标记 -> 输入上面正则匹配&#xff0c;勾选如下…

Pyqt5+PyQt-Fluent-Widgets+Pycharm环境安装

文章目录 1. Pyqt5环境安装2. Pycharm配置QtDesigner3. PyQt-Fluent-Widgets插件安装4. 在QtDesigner中使用PyQt-Fluent-Widgets 1. Pyqt5环境安装 使用miniconda创建一个新环境作为pyqt5的开发。这里使用的python3.8版本&#xff0c;网上说太高的python3.10版本无法同时安装py…

开源社 KCC@新加坡成立啦!

3年疫情结束&#xff0c;世界恢复了正常&#xff0c;新加坡作为亚洲领先的世界城市&#xff0c;吸引了越来越多来自世界的人才。大模型在人工智能领域的突破&#xff0c;让大家更加看到开源的能力。经过9年的发展&#xff0c;开源社在长期的伙伴支持下&#xff0c;开始了出海的…

RabbitMQ系列(10)--RabbitMQ发布确认模式的概念及实现

概念&#xff1a;虽然我们可以设置队列和队列中的消息持久化&#xff0c;但任然存在消息在持久化的过程中&#xff0c;即在写入磁盘的过程中&#xff0c;消息未完全写入&#xff0c;然后服务器宕机导致消息丢失的情况&#xff0c;发布确认就是为了解决这种情况的概念&#xff0…

前端技术搭建五子棋游戏(内含源码)

The sand accumulates to form a pagoda ✨ 写在前面✨ 功能介绍✨ 页面搭建✨ 样式设置✨ 逻辑部分 ✨ 写在前面 上周我们实通过前端基础实现了拼图游戏&#xff0c;今天还是继续按照我们原定的节奏来带领大家完成一个五子棋游戏&#xff0c;功能也比较简单简单&#xff0c;也…

探究工业运营中的三大工具:根因分析、过程优化和预测性维护

在工业运营领域&#xff0c;根本原因分析、过程优化工具和预测性维护正在彻底改变维护实践的方式。这些工具的战略性组合使得制造工厂能够提升实践水平、提高生产力&#xff0c;并实现持续的成功。本文将以PreMaint为基础&#xff0c;探讨这些工具之间的差异&#xff0c;以及如…