推荐答案
测试一下
题目
在Verilog中,关于task和function描述正确的是
A task可以有时间延迟,function不可以 B function可以有时间延迟,task不可以
C task和function都不可以有时间延迟 D task和function都可以有时间延迟
参考答案与知识点
参考答案
正确选项为A。在Verilog中,task和function的主要区别之一就是时序控制能力:task可以包含时间延迟(如#delay、@(posedge clk)等)、wait语句、事件控制等时序控制语句,因此可以在多个仿真时间步内执行;而function则必须在一个仿真时间步内完成计算,不能包含任何时序控制语句,包括延迟、事件控制、wait等。此外,function不能调用task,但task可以调用function;function必须至少有一个输入参数且只能返回一个值,而task可以有任意多个输入、输出和双向端口,且不返回值。因此,选项A正确。易错点:初学者容易混淆task和function的延迟特性,或者认为两者都不能有延迟,或者认为都可以有延迟。实际考试中常通过此类题目考察对两者区别的理解。
涉及知识点
- Verilog task可以包含时序控制
- Verilog function不能包含时序控制
- task与function的参数传递差异
- function必须返回一个值且至少有一个输入
- task可以调用function,反之不行