Verilog学习笔记1——关键词、运算符、数据类型、function/task、initial/always、generate
文章目录
- 前言
- 一、关键词
- 二、运算符
- 三、数据类型
- 1、基本类型:reg、wire、integer、parameter
- 四、条件语句
- 五、循环语句
- 1、for
- 2、generate
- 六、function和task
- 七、initial和always
- 1、initial和always相同点和区别
- 2、always和assign语句区别
前言
2023.4.4
2023.4.7 补充综合和不可综合的关键词
一、关键词
module/endmodule
input/output/inout
parameter
wire/reg
always/assign
begin/end
posedge/negedge
case/default/endcase
if/esle
for
二、运算符
位运算符和缩位运算符区别:缩位运算符结果为1bit,位运算符结果位数和操作数位数相同
三、数据类型
总共:19种
1、基本类型:reg、wire、integer、parameter
当信号没有定义类型时,缺省类型为wire,缺省值为高阻Z。
wire
:常和assign
用来描述组合逻辑,verilog中输入输出缺省类型为wire。
reg
:寄存器数据类型,缺省值是未知的,无符号数,但reg可以是负数也可以是正数。
在表达式的操作数中被当作是无符号数,假如是4bit的-1,则在实际运算时是-1的补码,也就是+15。
在always块内的每一个信号都必须是reg类型。
integer
:寄存器数据类型,有符号数,最小为32位,与宿主机的字的位数。
parameter
:定义常量,用来提高代码的可读性和可维护性
- reg 型和 wire 型的区别:reg 型保持最后一次的赋值,而 wire 型则需要持续的驱动。
- reg, integer, real,time 都是寄存器数据类型,定义在 Verilog 中用来保存数值的变量,和实际的硬件电路中的寄存器有区别。
- reg、integer是可综合的,time(64位)不可综合,real(32位)由仿真器决定。
四、条件语句
1、条件语句必须在过程块中使用,其他地方不可以。
2、0、z、X都是假,只有1条件才为真
3、出现锁存器的情况:
- if else没有写完整
- always里面,如果给定条件下变量没有被赋值,这个变量将一直保持原来的值,就会生成锁存器
- 有else不一定没有锁存器,没有else也不一定有锁存器。
4、case语句如果情况完备,可以不写default
五、循环语句
1、for
for
:for循环几次,就会把电路复制几次,循环次数越多,面积越大,综合越慢
2、generate
generate
:生成可配置的、可综合的RTL设计结构。在elaboration阶段、仿真之前执行,必须保证generate的所有表达式都是常量
应用场景:
- 多次实例化某个模块
- 条件generate,if-generate或者case-generate
- 断言
module n_bit_xor
#(parameter SIZE = 16)
(input [SIZE-1:0] a,input [SIZE-1:0] b,output [SIZE-1:0] y
);genvar i;generatefor(i=0;i<SIZE;i=i+1)begin:label //这里一定要写模块名称,否则会报错xor u_xor(y[i], a[i], b[i]);//会实例化生成label[0].u_xor、label[1].u_xor、label[2].u_xor//实例化后的层次路径为n_bit_xor.label[0].u_xorendendgenerate
endmodule
六、function和task
function | task |
---|---|
只能用于组合逻辑 | 组合逻辑和时序逻辑都可以,但只有组合逻辑才能综合 |
可以有/无返回值,缺失则返回一位寄存器类型数据 | 无返回值 |
只能出现在过程块内,不能出现initial和always | |
至少有一个输入 | 多个输入/输出/双向端口 |
只能调用函数 | 可以调用函数/任务 |
不包含时间控制语句 | 可包含时延控制语句(不可综合) |
七、initial和always
1、initial和always相同点和区别
之前在SV语法的这篇文章里面有:传送门
initial
:初始化仿真变量,作为电路的仿真信号来生成激励
always
:边沿触发和电平触发,可综合成寄存器或者锁存器
2、always和assign语句区别
- assign语句赋值的信号类型为wire,always块里面是reg类型,但是不是真的寄存器,只有当always的触发条件为时钟上升沿,才会被综合为触发器
- 当仿真时,a=0,但是b是不定态。因为b的触发条件是always内的所有输入信号发生改变,才会变化,而1‘b0始终是不变的
assign a = 1'b0;always@(*)b = 1'b0;
相关文章:

Verilog学习笔记1——关键词、运算符、数据类型、function/task、initial/always、generate
文章目录前言一、关键词二、运算符三、数据类型1、基本类型:reg、wire、integer、parameter四、条件语句五、循环语句1、for2、generate六、function和task七、initial和always1、initial和always相同点和区别2、always和assign语句区别前言 2023.4.4 2023.4.7 补充…...

探索LeetCode【0005】最长回文子串(未搞懂,未练习)
目录0、题目1、第一个官方答案1.1 动态规划(未懂)1.2 中心扩展(已懂)1.3 Manacher(未懂)2、第二个参考答案2.1 暴力求法(已懂)2.2 反转法(未懂)2.3 动态规划&…...

使用 Docker run 命令简化容器化
使用 Docker run 命令简化容器化 Docker run 是在 Docker 容器中运行应用程序的基本命令。在开始使用 Docker 之前,了解一些重要的命令非常重要。 在本博客中,我们将解释 Docker run 命令的基本语法,并探索其一些最常见的选项,以…...

腾讯TNN神经网络推理框架手动实现多设备单算子卷积推理
文章目录前言1. 简介2. 快速开始2.1 onnx转tnn2.2 编译目标平台的 TNN 引擎2.3 使用编译好的 TNN 引擎进行推理3. 手动实现单算子卷积推理(浮点)4. 代码解析4.1 构建模型(单卷积层)4.2 构建解释器4.3 初始化tnn5. 模型量化5.1 编译量化工具5.2 量化scale的计算5.3 量化流程6. i…...

基础解惑:Linux 下文件描述符标志和文件状态标志区别
简述 文件描述符标志,是体现进程的文件描述符的状态,fork进程时,文件描述符被复制;目前只有一种文件描述符:FD_CLOEXEC文件状态标志,是体现进程打开文件的一些标志,fork时不会复制file 结构&am…...

学弟:如何在3个月内学会自动化测试?
有小学弟问:如何在3个月内学会自动化测试? 老实说如果你现在上班,之前主要在做功能测试,或者编程基础比较弱的话,三个月够呛。 如果你是脱产学习,每天能保持6~8小时学习时间的话,可…...

C-NCAP 2025主动安全ADAS测试研究
中汽中心汽车测评管理中心(简称“中汽测评”)是负责运营C-NCAP、CCRT等测评项目的管理机构。中汽测评以引领汽车行业进步、支撑汽车强国建设为使命,通过独立、公正、专业、开放的测试评价,服务消费者,当好选车购车参谋…...

【Apifox】测试工具自动编写接口文档
在开发过程中,我们总是避免不了进行接口的测试, 而相比手动敲测试代码,使用测试工具进行测试更为便捷,高效 今天发现了一个非常好用的接口测试工具Apifox 相比于Postman,他还拥有一个非常nb的功能, 在接…...

解决brew安装opencv报错问题
目录1.报错12. 解决方案3. 报错24. 解决方案4.1 原因分析4.2 手动下载portable-ruby-2.6.8_1.el_capitan.bottle.tar.gz4.3 拷贝portable-ruby-2.6.8_1.el_capitan.bottle.tar.gz到指定目录1.报错1 mac本用brew报如下错误: xialiangzhideMacBook-Pro:~ xialz$ bre…...

Linux软件安装---Tomcat安装
安装Tomcat 操作步骤: 使用xftp上传工具将tomcat的 二进制发布包上传到Linux解压安装包,命令为tar -zxvf apache-tomcat*** -C /usr/local进入Tomcat的bin的启动目录,命令为sh startup.sh或者./startup.sh 验证Tomcat启动是否成功࿰…...

提示工程师是什么工作?
提示工程师是什么工作? 因为ChatGPT的爆火,大家都把眼光锁定在这个号称“ChatGPT新兴职业” 的“提示工程师”上。“提示工程师”是什么工作?为什么说未来所有职业 都需要提示工程的能力? 先解释一下“提示”,它最早…...

WXSS-WXML-WXS语法
目录: 1 WXSS编写程序样式 2 Mustache语法绑定 3 WXML的条件渲染 4 WXML的列表渲染 5 WXS语法基本使用 6 WXS语法案例练习 小程序的自适应单位rpx。在设计稿为iPhone6的时候1px2rpx wxml必须是闭合标签,或者单标签加/,否则会报错&#…...

POSIX正则表达式
维基百科 POSIX基本表达式 https://en.wikibooks.org/wiki/Regular_Expressions/POSIX_Basic_Regular_Expressions POSIX扩展正则表达式 https://en.wikibooks.org/wiki/Regular_Expressions/POSIX-Extended_Regular_Expressions 正则表达式 https://en.wikipedia.org/wiki/R…...

数据分析工具集合:Tableau入门及其他工具简介
目录 一、Tableau简介 1、下载链接 2、使用技巧 二、其他常用数据分析工具 1、Microsoft Excel简介 1.1、下载链接 1.2、使用技巧 2、Python简介 2.1、下载链接 2.2、常用库的安装方式和使用技巧 2.2.1、Pandas 2.2.2、NumPy 2.2.3、Matplotlib 3、R语言简介 3.…...

响应式布局的五种方法
响应式布局的五种方法1.百分比布局2.rem布局3. 媒体查询 media screen4. flex布局5.vw 和 vh响应式布局是同一页面在不同的屏幕上有不同的布局,即只需要一套代码使页面适应不同的屏幕。 1.百分比布局 1.有父元素就相对于父元素 2.没有父元素就相对于视口的大小 举一…...

Javase学习文档------数组
Java 数组是 Java 编程中非常基础和重要的一个知识点。 以下是 Java 数组的主要学习内容: 数组的几个特点 数组在声明时必须指定长度,且长度不可变:数组的长度在声明时就需要确定,一旦确定就不能修改。因此,在使用数组…...

百度高德地图JS-API学习手记:地图基本设置与省市区数据加载
无论是百度还是高德地图开发,还是高德地图开发。官方的给的案例启示很多,copy再修改下,就完成了 概述-地图 JS API | 高德地图API 地图 JS API | 百度地图API SDK 这个大致看一下,我想。有点GIS基础都能完成地图开发。 个人认…...

c语言—指针详解***内存地址***指针字节数***注意事项
创作不易,本篇文章如果帮助到了你,还请点赞支持一下♡>𖥦<)!! 主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步! 给大家跳段街舞感谢支持!ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ…...

VMware虚拟机之WindowsXP系统超详细下载安装与使用教程
文章目录前言一、WindowsXP虚拟机系统下载二、WindowsXP虚拟机系统安装三、WindowsXP虚拟机系统使用总结前言 本博客的主要内容为使用VMware虚拟机下载安装与使用WindowsXP系统,WindowsXP系统虽然早已过时,但是仍对我们的学习有着很大的帮助,…...

【VMD-SSA-LSSVM】基于变分模态分解与麻雀优化Lssvm的负荷预测【多变量】(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

积极心态,助力人生成功
无论生活中遇到多少困难和挫折,只要我们保持积极心态、努力拼搏,就有望最终实现自己的梦想和目标。...
ADRC线性跟踪微分器(ST+SCL语言)
ADRC自抗扰相关算法源代码和公式请参看下面文章链接: ADRC/Matlab一步步实现跟踪微分器TD(附完整PLC测试代码链接)_ladrc线性跟踪微分器差分方程_RXXW_Dor的博客-CSDN博客关于Adrc的理论分析不是本篇博客的重点,主要也是能力所限,相关理论大家可以看韩京清教授的论文,专栏…...

Linux C/C++ 崩溃诊断大师:解锁软件问题定位与修复的秘密武器
让崩溃成为历史:详解有效诊断与解决技巧引言崩溃信息的类型设置信号处理函数(Setting up signal handlers)信号来源和上下文信息使用 siginfo_t 结构体获取信号来源信息使用 ucontext 结构体获取上下文信息将崩溃信息写入日志标准的信号处理函…...

ChatGPT能代替Oracle DBA吗?用Oracle OCP(1z0-083)的真题测试一下。
让我们来看看ChatGPT不能通过Oracle OCP的考试? 文章目录引言测试过程总结和分析关于博主,姚远:Oracle ACE(Oracle和MySQL数据库方向)。Oracle MAA 大师。华为云MVP。《MySQL 8.0运维与优化》的作者。拥有 Oracle 10g和…...

《扬帆优配》二季度投资策略出炉 机构调仓换股露踪迹
随着多家上市公司公告发布,其发表的股东数据使得基金的最新持仓浮出水面。与此同时,组织也在密集调研中寻觅出资时机。站在二季度的起点,基金公司二季度出资策略渐次发表。多家基金公司以为,宏观经济将延续修正态势,仍…...

【SpringMVC】2—传统方式实现增删改查
⭐⭐⭐⭐⭐⭐ Github主页👉https://github.com/A-BigTree 笔记链接👉https://github.com/A-BigTree/Code_Learning ⭐⭐⭐⭐⭐⭐ 如果可以,麻烦各位看官顺手点个star~😊 如果文章对你有所帮助,可以点赞👍…...

图像阈值化
图像阈值化 图像阈值化简介 ⚫ 图像阈值化是图像处理的重要基础部分, 应用很广泛, 可以根据灰度差异来分割图像不同部分 ⚫ 阈值化处理的图像一般为单通道图像(灰度图) ⚫ 阈值化参数的设置可以使用滑动条来debug ⚫ 阈值化处理易光照影响, 处理时应注意 ⚫ 本节主要介绍…...

1.5 极限运算法则
思维导图: 我的理解: 如果一个数列{a_n}是一个无穷小,那么它的极限为0,即lim(n→∞)a_n0。同样地,如果另一个数列{b_n}也是一个无穷小,那么它的极限为0,即lim(n→∞)b_n0。 当我们考虑这两个无…...

首批因AI失业的人出现-某游戏公司裁掉半数原画师
如今各种AI爆火,不可避免的的会与某些功能撞车职业发生冲突,每一次生产力的变革,在带来技术进步与更高效率的同时,也都无可避免的会带来一波失业浪潮,当下的人工智能浪潮自然也不例外。 现在,第一批因为AI…...

字符串转换整数(atoi)
请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C 中的 atoi 函数)。 函数 myAtoi(string s) 的算法如下: 读入字符串并丢弃无用的前导空格 检查下一个字符(假设还未到字符…...