Verilog中的任务Task和函数Function

这篇具有很好参考价值的文章主要介绍了Verilog中的任务Task和函数Function。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

task和function说明语句分别用来定义任务和函数。

利用任务和函数可以把一个很大的程序模块分解成许多较小的任务和函数便于理解和调试。

输入、输出和总线信号的值可以传入、传出任务和函数。任务和函数往往还是大的程序模块中在不同地点多次用到的相同的程序段。

学会使用task和function语句可以简化程序的结构,使程序明白易懂,是编写较大型模块的基本功。

task和function说明语句的不同点

任务和函数有些不同,主要的不同有以下四点:

  • 1) 函数只能与主模块共用同一个仿真时间单位,而任务可以定义自己的仿真时间单位。
  • 2) 函数不能启动任务,而任务能启动其它任务和函数。
  • 3) 函数至少要有一个输入变量,而任务可以没有或有多个任何类型的变量。
  • 4) 函数返回一个值,而任务则不返回值。

函数的目的是通过返回一个值来响应输入信号的值。任务却能支持多种目的,能计算多个结果值,这些结果值只能通过被调用的任务的输出或总线端口送出。Verilog HDL模块使用函数时是把它当作表达式中的操作符,这个操作的结果值就是这个函数的返回值。下面让我们用例子来说明:

例如,定义一任务或函数对一个16位的字进行操作让高字节与低字节互换,把它变为另一个字(假定这个任务或函数名为: switch_bytes)。

任务返回的新字是通过输出端口的变量,因此16位字字节互换任务的调用源码是这样的:

 switch_bytes(old_word,new_word);

任务switch_bytes把输入old_word的字的高、低字节互换放入new_word端口输出。

而函数返回的新字是通过函数本身的返回值,因此16位字字节互换函数的调用源码是这样的:

 new_word = switch_bytes(old_word);

一 task语句

如果传给任务的变量值和任务完成后接收结果的变量已定义,就可以用一条语句启动任务。任务完成以后控制就传回启动过程。如任务内部有定时控制,则启动的时间可以与控制返回的时间不同。任务可以启动其它的任务,其它任务又可以启动别的任务,可以启动的任务数是没有限制的。不管有多少任务启动,只有当所有的启动任务完成以后,控制才能返回。

任务的定义

定义任务的语法如下:

任务:

task <任务名>;
     <端口及数据类型声明语句>
     <语句1>
     <语句2>
     .....
     <语句n>
endtask

这些声明语句的语法与模块定义中的对应声明语句的语法是一致的。

任务的调用及变量的传递

启动任务并传递输入输出变量的声明语句的语法如下:

任务的调用:

<任务名>(端口1,端口2,...,端口n);

下面的例子说明怎样定义任务和调用任务:

任务定义:文章来源地址https://www.toymoban.com/news/detail-426206.html

task my_task;
    input a, b;
    inout c;
    output d, e;
    …
    <语句> //执行任务工作相应的语句
    …
    c = foo1; //赋初始值

到了这里,关于Verilog中的任务Task和函数Function的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • React中的组件的渲染函数(Render Function)是什么?什么是React中的函数组件和类组件?如何在React中进行状态管理?

    React中的组件可以有多种形式的渲染函数,包括传统的render()方法,以及近年来兴起的函数组件和Hooks中的useState()和useEffect()。在这篇文章中,我将详细介绍渲染函数,以及如何在React中使用它们。 渲染函数(Render Function)是指组件在生命周期中的一个特殊方法,它的作用是根据

    2024年02月13日
    浏览(41)
  • 【JavaScript】深度理解js的函数(function、Function)

    学了这么久的JavaScript,函数在JavaScript中最常用之一,如果你不会函数,你就不会JavaScript。 函数就是Function对象,一个函数是可以通过外部代码调用的一个“子程序”,它是头等(first-class)对象,因为它们可以像任何其他对象一样具有属性和方法 。瞧瞧它的定义,注定它能

    2024年01月21日
    浏览(45)
  • function 函数

    f unction函数 的 名字 也是一个 标识符 ,通过 function 申明一个函数 function 函数名(){ 代码块 } 1、形参与实参 可以有 无数个, 实参按照 顺序赋值 给形参; 2、 实参个数 不一定 要与实参个数 相同, 没有实参赋值 的 形参 默认数值为 undefined ; 3、 arguments 能够获取到

    2023年04月12日
    浏览(41)
  • GO学习之 函数(Function)

    1、GO学习之Hello World 2、GO学习之入门语法 3、GO学习之切片操作 4、GO学习之 Map 操作 5、GO学习之 结构体 操作 6、GO学习之 通道(Channel) 7、GO学习之 多线程(goroutine) 8、GO学习之 函数(Function) 9、GO学习之 接口(Interface) 10、GO学习之 网络通信(Net/Http) 11、GO学习之 微框架(Gin) 12、GO学习

    2024年02月14日
    浏览(35)
  • Verilog HDL系统任务说明语句task

    task说明语句 如果传给任务的变量和任务完成后接受任务的变量已定义,就可以用一条语句启动任务,任务完成以后控制传回启动的过程。 1.1任务的定义 定义任务的语法如下: 1.2任务的调用及变量的传递 任务调用: 1.3例子 用两种不同的方法设计一个功能相同的模块,完成

    2024年02月03日
    浏览(48)
  • 什么是回调函数(callback function)?

    前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发者,这里都将为你提供一个系统而又亲切的学习平台。在这个

    2024年02月11日
    浏览(44)
  • 微软函数 for vba自定义函数Function

    \\\"XLAM\\\"    支持WPS、Office 2007及以上版本。 \\\"XLA\\\"    支持WPS、Office 2003及以上版本。 声明: 必须具有VBA运行环境。Office自带了VBA不必再安装;部分WPS须提前安装VBA插件(下载链接在下方)。 使用: 解压后,手动加载到 [开发工具] 下的 [EXCEL加载项] 中,然后在单元格输入 =\\\'函数名

    2024年03月15日
    浏览(53)
  • FlinkSQL聚合函数(Aggregate Function)详解

    使用场景: 聚合函数即 UDAF,常⽤于进多条数据,出⼀条数据的场景。 上图展示了⼀个 聚合函数的例⼦ 以及 聚合函数包含的重要⽅法 。 案例场景: 关于饮料的表,有三个字段,分别是 id、name、price,表⾥有 5 ⾏数据,找到所有饮料⾥最贵的饮料的价格,即执⾏⼀个 max(

    2024年02月04日
    浏览(40)
  • 矩母函数(Moment Generating Function)

    如果能求出一个随机变量的矩母函数,那么我们就可以通过求导来轻松地找到任意一个矩,而矩可以让我们了解分布的函数图像形状(类似于泰勒级数近似函数图像) 所有的矩并不总是可以唯一确定概率分布 复分析中拉普拉斯公式和傅里叶反演公式,用来确定什么时候可以

    2024年02月11日
    浏览(33)
  • 机器学习之损失函数(Loss Function)

    损失函数(Loss Function)是机器学习和深度学习中的关键概念,它用于衡量模型的预测与实际目标之间的差异或误差。损失函数的选择对于模型的训练和性能评估至关重要,不同的任务和问题通常需要不同的损失函数。 以下是一些常见的损失函数以及它们在不同任务中的应用

    2024年02月11日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包