请详细解释verilog中task 与 function 的异同
时间: 2023-06-03 07:07:29 浏览: 172
简谈FPGA verilog中的function用法与例子
Task 和 function 都是在 Verilog 编程语言中定义子程序(subroutine)的关键字,但是它们在使用上有一些不同之处。
相同点:
1. 都可以通过关键字 defintion 来定义;
2. 都可以接受参数;
3. 都可以返回值;
4. 都可以被其他模块或实例调用;
5. 都可以嵌套定义使用。
异同点:
1. task 定义一个类似于可以同时执行的代码块,而 function 定义只能是输出一个数值;
2. task 可以包含多条语句和过程调用,而 function 只能包含一条语句或一个表达式;
3. task 可以修改被引用的数据变量(当任务执行结束后结果仍然在下次任务执行时保留),而 function 不会修改被引用的变量。 function 本质上是一种“纯净的”函数,当您使用它计算表达式时,它不会影响器件状态,也不会影响其他基于芯片的计算机系统中的电路元素。
4. task 在执行前可以不需要返回某个值,而 function 在执行前必须返回某个值。
综上所述,task 可以自由地执行一系列操作,而 function 则主要用于计算并返回特定的值,因此使用上有一些区别。
阅读全文