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

    文章

    7366

    浏览量

    95183
  • C语言
    +关注

    关注

    183

    文章

    7650

    浏览量

    146457

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Verilog HDL语法学习笔记

    Verilog HDL 语 言 最 初 是 作为 Gateway Design Automation 公 司 ( Gateway DesignAutomation 公司后来被著名的 Cadence Design Systems 公司收购)模拟器产品开发的硬件建模
    的头像 发表于 03-04 15:04 5977次阅读
    <b class='flag-5'>Verilog</b> <b class='flag-5'>HDL</b>语法学习笔记

    FPGA 入门必看:Verilog 与 VHDL 编程基础解析!

    很多开发者第一次接触FPGA,都会有同样的疑问:FPGA是硬件,不是软件,怎么写程序?答案就是用硬件描述语言HDL),最常用的就是Verilog和VHDL。今天,我们就带你入门,搞清楚FPGA编程
    的头像 发表于 01-19 09:05 854次阅读
    FPGA 入门必看:<b class='flag-5'>Verilog</b> 与 VHDL 编程基础解析!

    C语言回调函数原来这么简单

    了解开发语言的朋友应该都会对回调函数有所了解,在很多的程序开发语言中都能看到回调的身影。很多场景下,当某个条件成立以后我们**代码执行某些指定的部分,这个时候可以考虑使用回调函数的方式
    发表于 12-30 06:45

    C语言中实现函数宏的三种方式

    (0) 不同的是,({}) 不能提前退出函数宏与支持返回值。({}) 毕竟不是 while 循环,不能直接使用 break退出函数宏是比较容易理解。那支持返回值是什么意思呢? 答案是 C
    发表于 12-29 07:34

    请问C语言中整形溢出的解决方法有哪些?

    C语言中整形溢出的解决方法有哪些?
    发表于 12-29 07:33

    单片机c语言中定义字节怎么定义?

    定义位可以用***it但是定义字节呢?还有就是比如汇编中的DPTR的DPH和DPL在c语言中怎样定义的呢?
    发表于 12-29 06:32

    请问C语言中整形溢出会产生哪些异常行为?

    C语言中整形溢出会产生哪些异常行为?
    发表于 12-26 07:05

    请问C语言中整形溢出对哪些应用场景影响较大?

    C语言中整形溢出对哪些应用场景影响较大
    发表于 12-24 08:24

    Typedef在C语言中的应用

    Typedef 在C语言中频繁用以声明一个已经存在的数据类型的同义字。也可以用预处理器做类似的事。例如,思考一下下面的例子: #define dPS struct s * typedef
    发表于 12-22 13:53

    C语言中可以嵌套汇编语言吗?

    请问C语言中可以嵌套汇编语言吗?
    发表于 12-15 08:14

    【产品介绍】Modelsim:HDL语言仿真软件

    概述ModelSim是业界最优秀的HDL语言仿真软件,它能提供友好的仿真环境,是业界唯一的单内核支持VHDL和Verilog混合仿真的仿真器。它采用直接优化的编译技术、Tcl/Tk技术、和单一内核
    的头像 发表于 11-13 11:41 797次阅读
    【产品介绍】Modelsim:<b class='flag-5'>HDL</b><b class='flag-5'>语言</b>仿真软件

    复杂的软件算法硬件IP核的实现

    函数功能的简短的描述。 HASM 语言包含了两种结构,一种是功能域一种是结构域。 功能域负责一些基本的运算操作,例如算术运算、逻辑运算还有数据传送操作,通常由组合逻辑实现,并且与 C 语言中
    发表于 10-30 07:02

    如何利用Verilog HDL在FPGA上实现SRAM的读写测试

    本篇将详细介绍如何利用Verilog HDL在FPGA上实现SRAM的读写测试。SRAM是一种非易失性存储器,具有高速读取和写入的特点。在FPGA中实现SRAM读写测试,包括设计SRAM接口模块
    的头像 发表于 10-22 17:21 4658次阅读
    如何利用<b class='flag-5'>Verilog</b> <b class='flag-5'>HDL</b>在FPGA上实现SRAM的读写测试

    C语言中的内联函数与宏

    在C编程中,内联函数和宏都用于避免函数调用的开销并编写可复用的逻辑部分,但它们在工作方式和安全性方面存在显著差异。
    的头像 发表于 07-25 15:10 2164次阅读
    C<b class='flag-5'>语言中</b>的内联<b class='flag-5'>函数</b>与宏

    Windows环境下32位汇编语言中文资料

    电子发烧友网站提供《Windows环境下32位汇编语言中文资料.rar》资料免费下载
    发表于 06-30 15:14 0次下载