FPGA_verilog语法整理

FPGA_verilog语法整理

verilog的逻辑值

在这里插入图片描述

verilog的常数表达

位宽中指定常数的宽度(表示成二进制数的位数),单引号加表示该常数为几进制的底数符号。

二进制底数符号为b,八进制为 o,十进制为d,十六进制为 h
在这里插入图片描述
在这里插入图片描述

verilog的变量声明

wire与reg

用于声明数据类型

wire型数据常用来表示以assign关键字指定的组合逻辑信号,模块的输入输出端口类型都默认为wire型,wire相当于导线,默认初始值是z。
reg型表示的寄存器类型,用于always模块内被赋值的信号,必须定义为reg型,常用于时序逻辑电路,reg相当于存储单元,默认初始值是x。

对于reg
如果这个条件是时钟的上升沿或下降沿,那么这个硬件模型就是一个触发器;
如果这个条件是某一信号的高电平或低电平,那么这个硬件模型就是一个锁存器;
如果这个条件是赋值语句右侧任意操作数的变化,那么这个硬件模型就是一个组合逻辑。

assign与always

assign(连续赋值)相当于连线,一般是将一个变量的值不间断地赋值给另一个变量,就像把这两个变量连在一起,所以习惯性的当做连线用,比如把一个模块的输出给另一个模块当输入。
always(过程赋值)
1.电平触发,例如always @(a or b or c),a、b、c均为变量,当其中一个发生变化时,下方的语句将被执行。
2.第二种是沿触发,例如always @(posedge clk or negedge rstn),即当时钟处在上升沿或下降沿时,语句被执行。

always @(posedge clk or negedge rstn)//当时钟处在上升沿或下降沿时,语句被执行

寄存器型变量

在这里插入图片描述寄存器型变量可以在接下来将要介绍的 always 和 initial 语句中实现过程赋值(Procedural Assignment)。这种方式称为过程赋值。过程赋值分为阻塞式和非阻塞式赋值两种。
在这里插入图片描述
非阻塞赋值–类似于于移位寄存器
在这里插入图片描述

阻塞式赋值是一种按照代码顺序进行赋值的方式。在先赋值的代码赋值完成之前阻塞后续代码的赋值,因此得名阻塞式赋值。阻塞式赋值使用 = 运算符。(串行)
非阻塞式赋值中所有代码不会互相阻塞,同时进行赋值。非阻塞式赋值使用 <= 运 算符。(并行)

网络型变量

在这里插入图片描述

assign < 网络型变量> = < 表达式>;
< 网络类型> (符号) ( 位宽) < 变量名> = < 表达式>;

verilog中的运算符

在这里插入图片描述
在这里插入图片描述

位运算符

在这里插入图片描述

逻辑运算符

在这里插入图片描述

逻辑语句

条件分支语句if和case

【格式】
if (< 表达式>) < 语句序列>
if (< 表达式>) < 语句序列> else < 语句序列>
【例】
if (a > b) begin
… // 符合a>b 条件的语句
end else if (a == b) begin
… // 符合a==b 条件的语句
end else begin
… // 其他条件(a<b)下的语句
end
case (< 表达式>)
< 表达式> : < 语句序列>
< 表达式>, < 表达式>, … : < 语句序列>
default : < 语句序列>
endcase
【例】
case (data[3:0])
4'h0 : begin
… // data[3:0] 为4'h0 时的语句
end
4'h1, 4'h2 : begin
… // data[3:0] 为4'h1 或4'h2 时的语句
end
default : begin
… // 默认语句
end
endcase

if 和 case 语句可以在 initial 或 always 语句声明的过
程块中使用

循环语句 for 与 while

【格式】
for (< 赋值语句>; < 表达式>; < 赋值语句>) < 语句序列>
【例】
for (i = 0; i < 10; i = i + 1) begin
… // 重复执行10 次
end
【格式】
while (< 表达式>) < 语句序列>
【例】
while (i < 10) begin
… // i 小于10 时重复执行
end

always过程块

always @(< 事件表达式>) < 语句序列>
always #< 常数表达式> < 语句序列>

当指定 always 语句中的事件表达式时,所指定的事件触发时执行其中的语句序列。
事件可以是特定信号的变化、信号的上升沿
(posedge)、信号的下降沿(negedge)等。always 语句中如果使用常数,则会在每经过该常数时间便执行一次 always 中的语句序列。
这个功能主要是在仿真时使用。always 过程中可以使用寄存器变量赋值、if、case、for、while 等语句。

使用 always 语句描述组合电路

事件表达式中写入通配符 *。这样一来,任何输入信号变化
时都会执行过程块中的代码。

【格式】
always @(*) begin
… // 组合电路的描述
end
【例】
module adder (
input wire [31:0] in_0,
input wire [31:0] in_1,
output reg [31:0] out
);
always @(*) begin
out = in_0 + in_1;
end
endmodule

使用 always 描述时序电路

【格式】
always @(< 边沿> < 信号> [or …]) begin
… // 记述时序电路
end

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

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

相关文章

Kimichat用于学习教育场景的7种高级方法

●AI作为导师 你是一个乐观、鼓励学生的导师&#xff0c;通过解释观点和问学生问题来帮助学生理解概念。下面每一步只一步步的执行&#xff0c;不要全部执行。 #向学生介绍自己&#xff0c;作为他们的AI导师&#xff0c;很高兴帮助他们解答任何问题。一次只问一个问题。 #首…

sqli-labs靶场学习(一)

一.知识点 1.数据库 数据库是一个用于存储和管理数据的仓库。数据按照特定的格式存储&#xff0c;可以对数据库中的数据进行增加、修改、删除和查询操作。数据库的本质是一个文件系统&#xff0c;按照一定的逻辑结构组织数据&#xff0c;以方便高效地访问和维护。 2.数据库管…

光伏无人机勘探技术应用分析

光伏无人机勘探与传统勘探想必&#xff0c;具有智能化作业、测控精度高、环境适应性强等明显优势&#xff1b;卫星勘探辅助其能更快速甚至实时完成测绘拼图&#xff1b;在进行勘察时&#xff0c;可根据需要自由更换机载设备&#xff1b;自动诗经建模使数据更直观&#xff0c;工…

深度学习每周学习总结P5(运动鞋识别)

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制 –来自百度网盘超级会员V5的分享 目录 0. 总结1. 数据导入及处理部分2. 加载数据集3.模型构建部分3.1 模型构建3.2 公式推导 4. 设置超参…

Web开发:ASP.NET CORE的前端demo(纯前端)

目录 一、建立项目 二、删除无用文件 三、样式添加 四、写一个登录页面 五、登录主界面 一、建立项目 二、删除无用文件 三、样式添加 将你的图片资源添加在wwwroot下方&#xff0c;例如pics/logo.png 四、写一个登录页面 将Privacy.cshtml改为 Forget.cshtml &#xff0…

【数学】深度学习中的概率基础知识记录

基于 Deep Learning (2017, MIT) 书总结了必要的概率知识 原blog 以及用到的Ipython notebook 文章目录 1 概述2 知识2.1 离散变量和概率质量函数&#xff08;PMF&#xff09;2.2 连续变量和概率密度函数&#xff08;PDF&#xff09;2.3 边缘概率2.4 条件概率2.5 条件概率的链式…

爬虫 //获取元素中的数据

// <!--jsoup解析工具所需依赖--> // <dependency> // <groupId>org.jsoup</groupId> // <artifactId>jsoup</artifactId> // <version>1.10.3</version> // </depende…

Android view点击监听

转载简书&#xff1a;Android无痕埋点&#xff08;1&#xff09;— 点击监听 - 简书

阿里云ECS服务器安装docker

首先查看阿里云ECS的服务器的版本 cat /etc/redhat-release如果是Alibaba Cloud Linux release 3,请执行以下命令 添加docker-ce的dnf源。 sudo dnf config-manager --add-repohttps://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo安装Alibaba Cloud Linux 3专…

MongoDB 索引全攻略

目录 一、索引介绍 1.1 单字段索引 1.2 复合索引 1.3 多键索引 1.4 主键索引 1.5 TTL 索引 1.6 地理空间索引 1.7 哈希索引 1.8 创建索引时注意事项 1.9 索引效果查看 二、索引实现原理 2.1 为什么使用 B-Tree 三、执行计划 一、索引介绍 任何数据库都有索引这一核心功能&…

Yolov8项目实践——基于yolov8与OpenCV实现目标物体运动热力图

概述 在数据驱动和定位的世界中&#xff0c;对数据进行解释、可视化和决策的能力变得日益重要。这表明&#xff0c;使用正确的工具和技术可能是项目成功的关键。在计算机视觉领域&#xff0c;存在许多技术来解释从视频&#xff08;包括录像、流媒体或实时视频&#xff09;中获…

SpringMVC核心流程解析

SpringMVC核心流程解析 DispatcherServlet的继承关系请求流程分析获取HandlerChain(ControllrtMethod拦截器)获取HandlerAdapter handlerMappings的初始化过程 DispatcherServlet的继承关系 DispatcherServlet本质是一个servlet&#xff0c;既然是servlet&#xff0c;一个请求…

Apache Storm详细配置

Apache Storm是一个分布式实时大数据处理系统&#xff0c;能够并行地对实时数据执行各种操作。它广泛应用于各种需要实时数据处理和分析的场景&#xff0c;例如网站统计、推荐系统、预警系统以及金融系统等。Storm的核心特性包括其简单性、可伸缩性和容错性&#xff0c;它保证了…

Linux 系统中用户、用户组和文件权限管理的常用命令 useradd、usermod、groupadd、groupmod、chmod

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 1. useradd useradd 是 Linux 系统中用于创建新用户账户的命令。管理员通常用它来添加新的系统用户&#xff0c;为他们设置初始配置&#xff0c;如主目录、登录 Shell 等。这个命令具有多个选项&#x…

[Algorithm][滑动窗口][水果成篮][最大连续的一个数 Ⅲ][将x减到0的最小操作数]详细讲解

目录 1.水果成篮1.题目链接2.算法原理讲解3.代码讲解 2.找到字符串中所有字母异位词1.题目链接2.算法原理讲解3.代码实现 3.串联所有单词的字串1.题目链接2.算法原理讲解3.代码实现 3.最小覆盖字串1.题目链接2.算法原理讲解 1.水果成篮 1.题目链接 水果成篮 2.算法原理讲解 …

机器学习|决策树|如何计算信息增益|方法总结

如是我闻 &#xff1a;那你说决策树这块还能考点啥呢&#xff0c;也就是算算属性的信息增益&#xff08;Information Gain&#xff09;了&#xff0c; 信息增益是一种评估特征&#xff08;属性&#xff09;在分类任务中重要性的方法&#xff0c;它基于熵的概念来计算。熵是一个…

notepad++快捷键和宏录制

想要一个删除行的快捷键, 发现没有 有个现成的快捷键 CtrlL : 剪切当前行 , 不是我想要的效果 宏录制很方便,于是就录制一个删除行的宏,设置快捷键为: CtrlD 录制宏: 1, 点击"开始录制" 2, 依次按键: End , Space , Shift Home , Delete , Delete 3, 点击"停止…

Java集合进阶——数据结构

1.栈 模型&#xff1a; 栈模型和一个杯子差不多&#xff0c;一端开口&#xff0c;一端封闭&#xff0c;开口的那端叫栈顶&#xff0c;封闭的那端叫栈底&#xff0c;如图所示 介绍&#xff1a; 元素进入栈中叫进栈/压栈&#xff0c;元素出来叫出栈&#xff0c;元素进栈后会先来…

Appian发布最新版本:通过AI流程自动化推动业务发展

Appian公司于2024年4月16日在弗吉尼亚州麦克莱恩宣布推出Appian平台的最新版本。此版本引入了Process HQ&#xff0c;这是一个集流程挖掘和企业AI于一体的系统&#xff0c;结合了Appian的数据平台。Process HQ为企业运营提供前所未有的可见性&#xff0c;支持数据驱动的决策和流…

CERLAB无人机自主框架: 2-动态目标检测与跟踪

前言&#xff1a;更多更新文章详见我的个人博客主页【MGodmonkeyの世界】 描述&#xff1a;欢迎来到CERLAB无人机自主框架&#xff0c;这是一个用于自主无人飞行器 (UAV) 的多功能模块化框架。该框架包括不同的组件 (模拟器&#xff0c;感知&#xff0c;映射&#xff0c;规划和…