任务与函数的声明与调用

本文详细介绍了Verilog中任务(task)和函数(function)的声明与调用规则。任务适用于包含延迟、时序控制或事件控制的子程序,可以有多个输出或无输入,并且可以被其他任务调用。自动任务(automatic task)允许任务的动态分配空间,确保每次调用的独立性。函数则适合无延迟、单返回值、至少一个输入且无输出或双向变量的场景,其返回值通过内部隐含的寄存器传递,函数内不能调用任务,只能调用其他函数。
摘要由CSDN通过智能技术生成

任务

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

1.子程序包含有延迟、时序或者事件控制结构;
2.没有输出或者输出变量的数目大于1;
3.没有输入变量。
根据所使用的变量类型,使用关键字input ,output, inout ,对任务端口进行声明。当任务执行完后,output类型和inout类型的变量传回给任务调用语句相应的变量。除了在模块中调用任务,也可以在其他任务中被调用,但是不能被函数调用。
task [ automatic ] task_identifier (task_port_list)
{ block_item_declaration }
statement
endtask

自动(可重入)任务

在task关键字钱添加automatic关键字,使这个任务成为可重入的,这样声明的任务也称自动任务。每次调用时,在动态任务中声明的所有模块项的存储空间都是动态分配的,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值