当前位置: 首页 > news >正文

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

functiontask
只能用于组合逻辑组合逻辑和时序逻辑都可以,但只有组合逻辑才能综合
可以有/无返回值,缺失则返回一位寄存器类型数据无返回值
只能出现在过程块内,不能出现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、基本类型&#xff1a;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 动态规划&#xff08;未懂&#xff09;1.2 中心扩展&#xff08;已懂&#xff09;1.3 Manacher&#xff08;未懂&#xff09;2、第二个参考答案2.1 暴力求法&#xff08;已懂&#xff09;2.2 反转法&#xff08;未懂&#xff09;2.3 动态规划&…...

使用 Docker run 命令简化容器化

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

腾讯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 下文件描述符标志和文件状态标志区别

简述 文件描述符标志&#xff0c;是体现进程的文件描述符的状态&#xff0c;fork进程时&#xff0c;文件描述符被复制&#xff1b;目前只有一种文件描述符&#xff1a;FD_CLOEXEC文件状态标志&#xff0c;是体现进程打开文件的一些标志&#xff0c;fork时不会复制file 结构&am…...

学弟:如何在3个月内学会自动化测试?

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

C-NCAP 2025主动安全ADAS测试研究

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

【Apifox】测试工具自动编写接口文档

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

解决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报如下错误&#xff1a; xialiangzhideMacBook-Pro:~ xialz$ bre…...

Linux软件安装---Tomcat安装

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

提示工程师是什么工作?

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

WXSS-WXML-WXS语法

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

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响应式布局是同一页面在不同的屏幕上有不同的布局&#xff0c;即只需要一套代码使页面适应不同的屏幕。 1.百分比布局 1.有父元素就相对于父元素 2.没有父元素就相对于视口的大小 举一…...

Javase学习文档------数组

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

百度高德地图JS-API学习手记:地图基本设置与省市区数据加载

无论是百度还是高德地图开发&#xff0c;还是高德地图开发。官方的给的案例启示很多&#xff0c;copy再修改下&#xff0c;就完成了 概述-地图 JS API | 高德地图API 地图 JS API | 百度地图API SDK 这个大致看一下&#xff0c;我想。有点GIS基础都能完成地图开发。 个人认…...

c语言—指针详解***内存地址***指针字节数***注意事项

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 给大家跳段街舞感谢支持&#xff01;ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ…...

VMware虚拟机之WindowsXP系统超详细下载安装与使用教程

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

【VMD-SSA-LSSVM】基于变分模态分解与麻雀优化Lssvm的负荷预测【多变量】(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

AI辅助架构设计:让快马平台智能规划trae状态管理方案

用AI辅助设计trae状态管理方案&#xff1a;以博客后台系统为例 最近在开发一个博客后台管理系统时&#xff0c;遇到了状态管理的难题。系统需要处理文章列表、编辑草稿、用户评论和系统设置等多种数据&#xff0c;如何合理组织这些状态让我头疼不已。幸运的是&#xff0c;在In…...

4月底就要交论文,现在开始降AI率来得及吗?完整应急方案

4月底就要交论文&#xff0c;现在开始降AI率来得及吗&#xff1f;完整应急方案 今天是4月1日。 如果你的论文要在4月底提交&#xff0c;现在翻出来一查&#xff0c;AI率50%&#xff0c;或者知网标红一片——你可能已经开始冒冷汗了。 先别慌。来得及&#xff0c;但要马上开始&a…...

深入解析RS485接口:从硬件设计到工业应用

1. RS485接口基础解析 第一次接触RS485时&#xff0c;我也被它复杂的电气特性搞得一头雾水。直到在工厂里亲眼看到它如何稳定地穿过嘈杂的电机区域传输数据&#xff0c;才真正理解这个老牌工业接口的魅力。RS485本质上是一种差分信号传输标准&#xff0c;采用双绞线进行平衡传…...

LangChain框架使用说明

LangChain框架的安装与环境配置 LangChain的安装可通过Python包管理器快速完成。核心库包括langchain、langchain-community和langchain-core&#xff0c;建议使用以下命令进行完整安装&#xff1a; pip install langchain langchain-community langchain-core openai环境配…...

知识获取受限?5款开源工具助你合法解锁付费内容

知识获取受限&#xff1f;5款开源工具助你合法解锁付费内容 【免费下载链接】bypass-paywalls-chrome-clean 项目地址: https://gitcode.com/GitHub_Trending/by/bypass-paywalls-chrome-clean 你是否曾在学术研究关键时刻被期刊付费墙阻挡&#xff1f;是否因新闻网站的…...

3分钟搞定加密音乐:Unlock-Music浏览器解密终极指南

3分钟搞定加密音乐&#xff1a;Unlock-Music浏览器解密终极指南 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库&#xff1a; 1. https://github.com/unlock-music/unlock-music &#xff1b;2. https://git.unlock-music.dev/um/web 项目地址: https:/…...

让AI成为开发伙伴:调用快马模型为养龙虾系统添加智能预测与问答功能

最近在开发一个养龙虾的智能决策系统&#xff0c;发现很多功能模块如果纯手写会非常耗时。尝试用AI辅助开发后&#xff0c;效率提升了不少&#xff0c;这里分享下具体实现思路和踩坑经验。 生长预测模块的实现 这个模块需要根据历史水温、投喂量等数据预测龙虾未来一周的生长情…...

LuckyLilliaBot架构解析:NTQQ OneBot API插件的深度技术实现指南

LuckyLilliaBot架构解析&#xff1a;NTQQ OneBot API插件的深度技术实现指南 【免费下载链接】LuckyLilliaBot NTQQ的OneBot API插件 项目地址: https://gitcode.com/gh_mirrors/li/LuckyLilliaBot LuckyLilliaBot是一款基于OneBot 11协议的开源QQ机器人框架&#xff0c…...

逆向思维:从资源困境到自由获取,猫抓如何重塑你的网页体验

逆向思维&#xff1a;从资源困境到自由获取&#xff0c;猫抓如何重塑你的网页体验 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你是否曾面对心仪…...

基于计算机网络原理优化DeepSeek-OCR 2的分布式部署

基于计算机网络原理优化DeepSeek-OCR 2的分布式部署 最近在帮一个客户做文档智能处理系统&#xff0c;他们每天要处理几十万份PDF文档&#xff0c;包括合同、报告、发票等各种格式。单机版的DeepSeek-OCR 2虽然效果不错&#xff0c;但处理速度完全跟不上业务需求。客户那边催得…...