0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Verilog HDL语言中任务与函数的比较

FPGA之家 来源:FPGA之家 作者:FPGA之家 2021-07-02 10:24 次阅读

C语言类比,可以把任务理解成返回类型为void的子程序,把函数理解为带有返回值类型的子程序。

1、任务(task)

(1)任务定义的语法为:

task《任务名》; 《端口与类型说明》 《局部变量说明》 begin 《语句》 endendtask

需要注意的是,在第一行task语句中不能列出端口名列表;可以没有输入、输出端口和双向端口,也可以有一个或多个输入、输出端口和双向端口。

(2)任务的调用

《任务名》(端口1,端口2,。..,端口n);

任务的调用只能在过程块中进行。当被调用的任务具有输入或输出端口时,任务调用语句必须包含端口列表。这个列表内端口出现的顺序和类型必须与任务定义的顺序和类型一致。

2、函数(function)

函数的目的是通过返回一个值来响应输入信号的值。函数不能启动任务,但任务可以启动函数。在Verilog HDL中函数被当作操作符来使用,结果就是这个函数的返回值。

(1)函数的定义

function《返回值的类型和位宽》(函数名) 《端口与类型说明》 《局部变量说明》 begin 《语句》 endendfunction

其中,返回值的类型和位宽是可选项,如果缺省会返回一位寄存器类型数据。Verilog HDL认为函数的定义隐式地声明了与函数同名的寄存器。函数的定义把函数被返回值所赋值寄存器的名称初始化为与函数同名的内部变量。

(2)函数的调用

《函数名》(《输入表达式1》,《输入表达式2》,。..,《输入表达式n》);

其中,n个输入表达式要与函数定义结构中说明的各个端口一一对应,他们代表各个输入端口的输入数据,这些输入表达式的排列顺序及类型必须与各个输入端口在函数定义结构中的排列顺序及类型严格保持一致。

函数的调用不能单独作为一条语句出现,他只能作为一个操作出现在赋值语句内,不仅能够用于过程块内的赋值,还能够出现在assign语句中。

3、任务与函数的比较

(1)函数至少必须有一个输入端口,而任务可以有多个、一个或没有输入端口;

(2)函数不能有输出端口,而任务可以有多个、一个或没有输出端口;

(3)函数调用通过函数名返回一个返回值,而任务调用通过端口传递返回值;

(4)函数中不能调用任务,但任务中可以调用函数;

(5)函数调用不能作为一条语句出现,而任务调用可以;

(6)函数调用可以出现在过程块或者连续赋值语句中,而任务调用只能出现在过程块中。

文章出处:【微信公众号:FPGA之家】

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据
    +关注

    关注

    8

    文章

    6509

    浏览量

    87555
  • C语言
    +关注

    关注

    180

    文章

    7522

    浏览量

    127419

原文标题:Verilog HDL语言(3) : 任务和函数

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    fpga是用c语言还是verilog

    FPGA(现场可编程逻辑门阵列)开发主要使用的编程语言是硬件描述语言HDL),其中Verilog是最常用的编程语言之一。而C
    的头像 发表于 03-27 14:38 258次阅读

    verilog调用模块端口对应方式

    Verilog中的模块端口对应方式,并提供示例代码和详细解释,以帮助读者更好地理解和应用。 首先,我们来了解一下Verilog中的模块和模块端口。一个Verilog模块被定义为包含一组声明和语句的代码块,类似于C
    的头像 发表于 02-23 10:20 355次阅读

    如何给C语言中函数定义两个不同的名字?

    最近有位哥问我,如何给C语言中函数定义两个不同的名字?就是这两个名字都是指向同一个函数,同一个地址,而且两个名字都可以当做函数来用的那种。
    的头像 发表于 12-19 16:21 301次阅读

    c语言中函数函数体用什么符号括起来

    都知道函数是数学里的重要组成部分,数学中我们常见到函数的概念,但是你了解C语言中函数吗?其实函数就相当于一个子程序,那什么是子程序呢? 在
    的头像 发表于 11-24 15:52 292次阅读
    c<b class='flag-5'>语言中</b><b class='flag-5'>函数</b>的<b class='flag-5'>函数</b>体用什么符号括起来

    scanf在C语言中的作用

    scanf在C语言中的作用  scanf是C语言中的输入函数,用于从标准输入设备(如键盘)读取数据,并将其存储到变量中。它是C语言中最常用的标准库
    的头像 发表于 11-23 14:13 553次阅读

    c语言max函数在哪个库

    C语言的max函数并不属于标准C库,它通常是由程序员自己编写的一个宏定义。max函数用于比较两个数的大小,返回较大的数值。 为了提供更多详实的信息,下面将详细介绍C
    的头像 发表于 11-22 10:18 1470次阅读

    Verilog HDL语言的发展历史和主要能力

    Verilog HDL是一种硬件描述语言,以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。
    发表于 08-29 15:58 0次下载

    二十进制编码器及Verilog HDL描述 Verilog HDL程序的基本结构及特点

    节通过硬件描述语言Verilog HDL对二十进制编码器的描述,介绍Verilog HDL程序的基本结构及特点。
    的头像 发表于 08-28 09:54 1309次阅读
    二十进制编码器及<b class='flag-5'>Verilog</b> <b class='flag-5'>HDL</b>描述 <b class='flag-5'>Verilog</b> <b class='flag-5'>HDL</b>程序的基本结构及特点

    C语言中宏定义的应用

    在C语言中,宏定义是一种预处理指令,用于在代码中定义和使用常量、函数或代码片段的替代。
    发表于 08-17 15:33 385次阅读

    C语言中函数的基本知识

    函数是C语言中的基本构建块之一,它允许我们将代码组织成可重用、模块化的单元。
    发表于 08-16 18:25 378次阅读

    C语言中指针函数函数指针的概念及应用示例

    在C语言中,指针函数函数指针是强大且常用的工具。它们允许我们以更灵活的方式处理函数和数据,进而扩展程序的功能。
    发表于 08-16 16:14 332次阅读

    Verilog任务函数的区别

    函数一样,任务(task)可以用来描述共同的代码段,并在模块内任意位置被调用,让代码更加的直观易读。
    的头像 发表于 06-01 16:38 1001次阅读
    <b class='flag-5'>Verilog</b><b class='flag-5'>任务</b>与<b class='flag-5'>函数</b>的区别

    FPGA编程语言verilog语法2

    Verilog HDL是一种用于数字系统设计的语言。用Verilog HDL描述的电路设计就是该电路的V
    的头像 发表于 05-22 15:53 559次阅读
    FPGA编程<b class='flag-5'>语言</b>之<b class='flag-5'>verilog</b>语法2

    FPGA编程语言verilog语法1

    Verilog HDL是一种用于数字系统设计的语言。用Verilog HDL描述的电路设计就是该电路的V
    的头像 发表于 05-22 15:52 586次阅读
    FPGA编程<b class='flag-5'>语言</b>之<b class='flag-5'>verilog</b>语法1

    C语言中函数的返回值指向一个指针

    函数的返回值类型必须与函数体内的返回表达式的类型相匹配。如果类型不匹配,编译器会报错。此外,C 语言中函数只能返回一个值,如果需要返回多个值,可以使用结构体或指针等方式来实现。 返回
    的头像 发表于 04-26 11:01 1993次阅读
    C<b class='flag-5'>语言中</b><b class='flag-5'>函数</b>的返回值指向一个指针