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…...
AI辅助架构设计:让快马平台智能规划trae状态管理方案
用AI辅助设计trae状态管理方案:以博客后台系统为例 最近在开发一个博客后台管理系统时,遇到了状态管理的难题。系统需要处理文章列表、编辑草稿、用户评论和系统设置等多种数据,如何合理组织这些状态让我头疼不已。幸运的是,在In…...
4月底就要交论文,现在开始降AI率来得及吗?完整应急方案
4月底就要交论文,现在开始降AI率来得及吗?完整应急方案 今天是4月1日。 如果你的论文要在4月底提交,现在翻出来一查,AI率50%,或者知网标红一片——你可能已经开始冒冷汗了。 先别慌。来得及,但要马上开始&a…...
深入解析RS485接口:从硬件设计到工业应用
1. RS485接口基础解析 第一次接触RS485时,我也被它复杂的电气特性搞得一头雾水。直到在工厂里亲眼看到它如何稳定地穿过嘈杂的电机区域传输数据,才真正理解这个老牌工业接口的魅力。RS485本质上是一种差分信号传输标准,采用双绞线进行平衡传…...
LangChain框架使用说明
LangChain框架的安装与环境配置 LangChain的安装可通过Python包管理器快速完成。核心库包括langchain、langchain-community和langchain-core,建议使用以下命令进行完整安装: pip install langchain langchain-community langchain-core openai环境配…...
知识获取受限?5款开源工具助你合法解锁付费内容
知识获取受限?5款开源工具助你合法解锁付费内容 【免费下载链接】bypass-paywalls-chrome-clean 项目地址: https://gitcode.com/GitHub_Trending/by/bypass-paywalls-chrome-clean 你是否曾在学术研究关键时刻被期刊付费墙阻挡?是否因新闻网站的…...
3分钟搞定加密音乐:Unlock-Music浏览器解密终极指南
3分钟搞定加密音乐:Unlock-Music浏览器解密终极指南 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目地址: https:/…...
让AI成为开发伙伴:调用快马模型为养龙虾系统添加智能预测与问答功能
最近在开发一个养龙虾的智能决策系统,发现很多功能模块如果纯手写会非常耗时。尝试用AI辅助开发后,效率提升了不少,这里分享下具体实现思路和踩坑经验。 生长预测模块的实现 这个模块需要根据历史水温、投喂量等数据预测龙虾未来一周的生长情…...
LuckyLilliaBot架构解析:NTQQ OneBot API插件的深度技术实现指南
LuckyLilliaBot架构解析:NTQQ OneBot API插件的深度技术实现指南 【免费下载链接】LuckyLilliaBot NTQQ的OneBot API插件 项目地址: https://gitcode.com/gh_mirrors/li/LuckyLilliaBot LuckyLilliaBot是一款基于OneBot 11协议的开源QQ机器人框架,…...
逆向思维:从资源困境到自由获取,猫抓如何重塑你的网页体验
逆向思维:从资源困境到自由获取,猫抓如何重塑你的网页体验 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你是否曾面对心仪…...
基于计算机网络原理优化DeepSeek-OCR 2的分布式部署
基于计算机网络原理优化DeepSeek-OCR 2的分布式部署 最近在帮一个客户做文档智能处理系统,他们每天要处理几十万份PDF文档,包括合同、报告、发票等各种格式。单机版的DeepSeek-OCR 2虽然效果不错,但处理速度完全跟不上业务需求。客户那边催得…...
