FPGA基础知识-任务和函数

news2024/11/18 3:32:35

目录

学习目标

学习内容

1.任务和函数的区别

2.任务

3.函数

学习时间

学习总结


学习目标:

1.理解任务和函数之间的区别。

2.理解定义任务所需的条件,学会任务的声明和调用。

3.理解定义函数所需的条件.学会函数的声明和调用。


学习内容:

提示:这里可以添加要学的内容

1.任务和函数的区别

     在 Verilog中,任务和函数用于不同的日的。我们将在下面的几节中,对两者进行更详细的讨论。但是,在学习之前,理解两者之间的区别是很重要的,中,我们对两者的不同点进行了概括。 在verilog中,任务和函数用于不同的日的.我们将在下面的几节中,对两者进行更详细的讨论.但是,在学习之前,理解两者之间的区别是很重要的,我们对两者的不同点进行了概括。

     任务可以具有输人、输出和输入J输出(双向)变量,而函数只有输入变量。另外,可以在任务和函数中声明局部变量,如寄存器、时间、整数、实数和事件,但是不能声明线网类型的变量。在任务和函数中只能使用行为级语句,但是不能包含always和 initial 块。设计者可以在always块、initial块以及其他的任务和函数中调用任务和函数。 

2.任务

       任务使用关键字task和endtask进行声明.如果子程序满足下面任意一个条件,则必须使用任务而不能使用函数:

1.于程序中包含有延迟、时序或者事件控制结构。

2.没有输出或者输出变量的数目大于1。

3.没有输入变量。

    根据所使用的变量类型,使用关键字input,output 或inout对任务的端口进行声明。input(输入)类型和 inout(输入/输出)类型的变量从外部传递到任务中,input(输入)类型的变量在任务所包含的语句中进行处理。当任务执行完成时,output (输出)类型和inout(输人/输出)类型的变量传回给任务调用语句中相应的变量。除了在模块中,任务也可以在其他任务或函数中被调用(函数能调用另一个函数,但不能调用另一个任务。

     虽然在任务中也使用关键字input,output 或inout进行输人/输出变量的声明,就像在模块中声明端口一样,但是两者在本质上是有区别的:模块的端口用来和外部信号相连接,而任务的IO〔输入/输出)变量则用来向任务中传入或从任务中传出变量。

3.函数

   1.Verilog使用关键字function和endfunction 来进行函数声明。对于一个子程序来说,如果下面的所有条件全部成立,则可以使用函数来完成。

  2.在子程序内不含有延迟、时序或者控制结构。·子程序只有一个返回值。

 3.·至少有一个输入变量。·没有输出或者双向变量。不含有非阻塞赋值语句。

       函数具有-些独特的性质。当函数声明的时候,在 Verilog 的内部隐含地声明了一个名为function_identifier(函数标识符)的寄存器类型变量,函数的输出结果将通过这个寄存器类型变量被传递回来。函数的调用通过指明函数名和输人变量来进行。在函数执行结束时,返回值被传回到调用处。可选项range_or_type(类型或范围)说明了内部寄存器的位宽。如果没有指定返回值的类型或位宽、则默认位宽为1。Verilog 中的函数和FORTRAN中的函数非常类似。

   注意在函数声明中必须至少有一个输入声明,同时由于隐含的寄存器变量function_identifier

包含了函数的返回值,因此函数是没有输出变量的。另外,在函数中不能调用任务,只能调用其他函数。


 

学习时间:

20230616


学习总结

提示:这里统计学习计划的总量

      任务和函数都用来对设计中多处使用的公共代码进行定义。使用任务和函数可以将模块分割成许多个可独立管理的子单元,增强了模块的可读性和可维护性。它们和C语言中的子程序起着相同的作用

      任务可以具有任意多个输人、输人/输出( inout)和输出变量。在任务中可以使用延迟、事件和时序控制结构,在任务中可以调用其他的任务和函数;

     可重入任务使用关键字automatic进行定义,它的每--次调用都对不同的地址空间进行操作。因此,在被多次并发调用时仍然可以获得正确的结果;

      函数只能有一个返回值、并且至少要有一个输入变量。在函数中不能使用延迟、事件和时序控制结构。在函数中可以调用其他函数,但是不能调用任务;

     递归函数使用关键字automatic进行定义,递归函数的每一次调用都拥有不同的地址空间。因此对这种函数的递归调用和并发调用可以得到正确的结果;

    任务和函数都包含在设计层次中,可以通过层次名对它们进行调用。

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

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

相关文章

JavaScript之ES6高级语法(四)

本文是我在学习过程中记录学习的点点滴滴,目的是为了学完之后巩固一下顺便也和大家分享一下,日后忘记了也可以方便快速的复习。 ES6高级语法(四) 前言一、深浅拷贝1.1、浅拷贝1.2、深拷贝1.2.1、递归实现深拷贝1.2.2、js库lodash里面cloneDee…

你们软件测试面试最难的一道题是什么?

在测试面试时,面试官往往会出一个简单的场景让大家进行测试点设计来考察大家的测试设计能力,题目看似简单实则蕴藏杀机,测试人员需要根据自己的工作年限做出不同的回答方可过关。 如果你工作1-2年,那么你只需要回答功能方面的测试…

源来Intel——开放原子全球峰会

文章目录 Intel的开源之路AI领域边缘人工智能在中国的发展趋势边缘人工智能领域的挑战生态系统解决方案英特尔针对边缘人工智能的产品总结 英特尔基础软件赋能中国生态Intel : 软件优先 推动中国市场中国Linux操作系统生态Intel全力投入中国开源社区开发国产Linux厂商&#xff…

I2C中的时钟同步与仲裁

时钟同步和仲裁 在单主设备中,不需要时钟同步和仲裁。而在多设备时,多个主设备可以同时在空闲的总线上开始发送数据,这时就需要仲裁决定哪一个来控制总线并完成它的数据传输,有时候也需要时钟同步来协同设备间的工作。而这正是通过…

Android音视频开发实战02-Jni

一 JNI 1.1 什么是JNI JNI是Java Native Interface的缩写,是Java提供的一种机制,用于在Java代码中调用本地(C/C)代码。它允许Java代码与本地代码进行交互,通过JNI,Java应用程序可以调用一些原生库或者操作…

Maven编译常见问题收集

1、父pom里面有引入lombok依赖&#xff0c;为什么子pom有用到lombok&#xff0c;依然识别不到呢 这是因为父pom引入依赖的时候&#xff0c;把 <dependency></dependency>依赖标签&#xff0c;最外层包 在了<dependencyManagement></dependencyManagemen…

Python学了基本语法 下一步该干什么 ?

刚入门Python,学习了基本语法后&#xff0c;你可以开始编写简单的程序了。接下来&#xff0c;你可以学习Python的标准库和第三方库&#xff0c;掌握更多的编程技巧和知识&#xff0c;提高自己的编程能力。同时&#xff0c;也可以通过实践项目来巩固所学知识&#xff0c;提高自己…

web3描述以太坊与区块链之间的操作关系

好通过前面两篇文章 Web3.0概念 web3带大家简单建立区块链概念 大家开始明白 web3.0是基于区块链为基础开发的 我们讲区块链多次提到以太坊 EVM 那这个东西到底是什么呢&#xff1f; 就现在的情况来讲 从零到一去搭建一个区块链环境 那可太难了 所以 以太坊一开始 确实是做一…

关于GPT-3和GPT-4,你需要知道都在这里

友情提示 提示&#xff1a;本文约3500个文字&#xff0c;字数较长&#xff0c;可直接点击序号进入相关目录阅读字数 文章目录 友情提示前言一、什么是 GPT-3、GPT-4 和 ChatGPT&#xff1f;二、对未来的担忧三、什么时候可以用GPT4&#xff1f;四、GPT-4用在什么地方五、GPT-4能…

json_decode返回NULL

json_decode返回NULL 最近在调用某公司的API时&#xff0c;将对方返回的数据&#xff0c;使用PHP的json_decode函数解析&#xff0c;但是返回NULL,最终排查为对方传送来的json格式有误 打印$_REQUEST&#xff0c;数据结构大致如下&#xff1a; 1 2 3 4 5 6 7 8 9 10 array (…

Android 面试延伸技术点有哪些,你能答上几个?

1、如何进行单元测试&#xff0c;如何保证 App 稳定 &#xff1f; 参考回答&#xff1a; 要测试 Android 应用程序&#xff0c;通常会创建以下类型自动单元测试 本地测试&#xff1a;只在本地机器 JVM 上运行&#xff0c;以最小化执行时间&#xff0c;这种单元测试不依赖于 An…

JavaScript之ES6高级语法(三)

本文是我在学习过程中记录学习的点点滴滴&#xff0c;目的是为了学完之后巩固一下顺便也和大家分享一下&#xff0c;日后忘记了也可以方便快速的复习。 ES6高级语法(三&#xff09; 前言一、原型对象1.1、constructor 属性1.2、对象原型 二、原型继承三、原型链 前言 今天学习的…

【C++】红黑树的概念与模拟实现

红黑树的概念与模拟实现 红黑树的概念红黑树的性质红黑树节点的定义红黑树的迭代器红黑树的插入红黑树和AVL树的比较红黑树的模拟实现 红黑树的概念 红黑树&#xff0c;是一种二叉搜索树&#xff0c;但在每个结点上增加一个存储位表示结点的颜色&#xff0c;可以是Red或Black。…

计算机组成原理(0)概述

前言 没有想好到底是要怎么学习&#xff0c;看哪个视频课&#xff0c;看到1.2 计算机的基本组成1.2-a1_哔哩哔哩_bilibili 是15年录的视频读PPT课本不一样就更不想看了&#xff0c;但是CSAPP难度大&#xff08;主要是广度&#xff0c;所以可能不很适用于考试或计组的学习&…

java代码审计和安全漏洞修复

java代码审计和安全漏洞修复 本文目录 java代码审计和安全漏洞修复开源&#xff1a;奇安信代码卫士官网使用gitee服务使用 非开源&#xff1a;思客云找八哥错误类型以及修改方法1.硬编码2. 路径操作3. 路径操作 - Zip文件条目覆盖4. SQL注入5. SQL注入 - Hibernate6. XML外部实…

视频与图片检索中的多模态语义匹配模型 ——原理、启示、应用与展望

前言 三多前笔者在《万字长文漫谈视频理解》[1]一文中&#xff0c;曾经将自己对视频理解的认识进行过简单总结&#xff0c;幸而获得了朋友们的认可&#xff0c;能让读者认可是笔者最为骄傲的成就。现在看来文中观点有不少纰漏狭隘之处&#xff0c;特别是近年来多模态模型的流行…

6.5this关键字

1. 关键字&#xff1a;this 1.1 this 是什么&#xff1f; 首先。this在Java中是一个关键字&#xff0c;this 指代的是本类的引用对象 1.2 什么时候使用 this 1.2.1 实例方法或构造器中使用当前对象的成员 1、在实例方法或构造器中&#xff0c;我们在使用get和set方法中使用…

行为型设计模式06-迭代器模式

&#x1f9d1;‍&#x1f4bb;作者&#xff1a;猫十二懿 ❤️‍&#x1f525;账号&#xff1a;CSDN 、掘金 、个人博客 、Github &#x1f389;公众号&#xff1a;猫十二懿 迭代器模式 1、迭代器模式介绍 迭代器模式是一种行为型设计模式&#xff0c;它提供了一种方法来访问聚…

HydroD 实用教程(九)时域水动力分析

目 录 一、前言二、前处理三、定义/提交作业3.1 创建分析作业3.2 定义输入数据3.3 设置执行指令3.4 指定输出格式3.5 提交求解计算 四、输出文件五、结果后处理5.1 绘制力/位移时程5.2 傅里叶变换与导荷5.3 播放时域结果动画 六、参考文献 一、前言 SESAM &#xff08;Super El…

扫描仪连续扫描提示有一个问题阻值扫描该文档。请重试,错误的解决办法

故障现象: 用户新安装的联想M7650DNA一体多功能激光打印机,安装完所有驱动后;打印、复印都正常,只有扫描不正常,扫描多张后就会提示:有一个问题阻值扫描该文档。请重试,或者参阅“帮助和支持”或扫描仪附带的信息,了解有关疑难解答的信息。如下图:故障。 开始怀…