verilog任务与函数

1.任务

(1)task和function语句分别用来由用户定义任务和函数。
(2)任务和函数能将一个大的程序模块分解成小的。
(3)当希望能对一些信号进行一些运算并输出多个结果,宜采用任务结构,常将批量的操作以任务的形式独立出来,使设计简单明了。

任务定义
task my_task;
input a,b;
inout c;
output d,e;

<语句>
c=fool1;
d=fool2;
e=fool3;
endtask
任务调用
my_task(x,w,y,z)
1.任务的定义与调用在一个模块内
2.被调用时,需列出端口名列表,必须与I/O一一对应
3.一个任务可以调用其他任务与函数

2.函数

(1)函数的目的是通过返回一个用于某表达式的值,来响应输入信号。适于对不同变量采取同一运算的操作。
(2)函数在模块内部定义,通常在本模块调用,也能根据按模块层次分级命名的函数名从其他模块调用,而任务只能在同一模块定义与调用。

function<返回值位宽或类型说明>函数名;
端口声明;
局部变量定义;
其他语句;

函数调用
function[7:0] gefun;  //函数的定义
  input[7:0] x;
  <语句>
  gefun =count;
 endfunction
assign number =gefun(rega); //对函数的调用

1.函数不能包含时间控制语句
2.函数不能调用任务
3.函数至少有一个输入参量,不能有任何输入输出双向变量。
4.函数的定义必须有一条赋值语句,给函数的一个内部寄存器赋以函数的结果值,该内部寄存器与函数同名。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值