function&task

function

function与C语言定义子函数很像,以function关键字开头,以endfunctuon结束。

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

function后跟着返回值(函数名)及其位宽,然后定义输入input,可以有多个Input,但是只有一个输出,输出就是返回值。

然后以begin开始function的逻辑语句,如果逻辑比较复杂,则在begin之前,input之后定义中间变量。
begin里面可以调用过程赋值语句,如case,if-else等。

function是定义在一个module内部的,可以在always或者assign语句里调用。
调用方式为函数名接括号,括号内部依次填写定义的输入值。

functon通常用来描述组合逻辑,整个function内部的语句不能加入等待,不能有时延,如#200,wait,@posedge clk等,所以语句都是在一个时间点顺序执行完毕,在仿真上可以认为不消耗时间。
在这里插入图片描述
如果想定义多个输出,可以把增大返回值位宽,将多个输出连接成一个变量。

task

task与function类似,区别在于可以由多个input及多个output,函数描述部分可以加入延时。

function是定义在一个module内部的,可以在task内部可以直接访问module内部定义的reg类型的变量。task可以彼此调用,而且task内部还可以调用function。
在这里插入图片描述在task定义的描述语句中,可以使用出现不可综合操作符合语句(使用最为频繁的就是延迟控制语句),但这样会造成该task不可综合。
在task定义结构内不能出现 initial和 always过程块。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值