Verilog中的function与task

function和task的定义与调用都包含在一个module的内部,可以在一个module内把很大的程序模块分解成如果较小的任务和函数,使之便于理解和调试。
不过并没有降低资源的使用率,只是让代码看起来更简洁、更加的模块化。(参考https://blog.csdn.net/qq_37147721/article/details/84889832)

function

  1. 定义
function [返回值类型或位宽] function_id;
  input_declaration
  other_declarations
  begin
    procedural_statement;
  end
endfunction

函数返回值的类型或位宽,是一个可选项,若没有指定,默认缺省值为 1 比特的寄存器数据;
function_id 为所定义函数的名称,并在函数结构体内部隐式地生成一个内部变量,该寄存器变量和函数同名并且位宽也一致。函数通过在函数定义中对该寄存器的显式赋值来返回函数计算结果;
对函数的调用也是通过函数名完成的,函数调用的返回值就是通过函数名变量传递给调用语句。

定义时要注意:
(1) 和模块定义不一样,第一行的function语句中没有列出端口名列表;
(2) 函数定义只能在模块中完成,不能出现在过程块中(always,initial)

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值