明德扬论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信扫一扫,快捷登录!

查看: 8061|回复: 1

【每日一题】关于任务和函数的区别,下列说法错误的是( )

[复制链接]
发表于 2020-4-13 10:07:14 | 显示全部楼层 |阅读模式

马上注册,看完整文章,学更多FPGA知识。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
【每日一题】

同学们,上午好。

为了提高大家学习能动性与专业技术水平,我将会不定时在群里进行不同主题提问,这就要你们活动活动脑子啦,日积月累达到能力提升哟~


今日题目:

关于任务和函数的区别,下列说法错误的是(     )。

A 函数可以包含时延和时序控制               

B 函数不能调用任务           

C 函数必须带有至少一个输入                    

D 函数只能返回一个值


希望同学们积极思考,踊跃参与答题哦~


MP801开发板 网络培训班 就业培训班 FPGA学习资料
吴老师18022857217
 楼主| 发表于 2020-4-13 19:28:52 | 显示全部楼层
同学们,晚上好。我来公布答案啦~

今日题目:

关于任务和函数的区别,下列说法错误的是(     )。

A 函数可以包含时延和时序控制               

B 函数不能调用任务           

C 函数必须带有至少一个输入                    

D 函数只能返回一个值


正确答案是:A



解析:
本题目主要考察了Verilog中任务和函数的特点

任务和函数有助于简化程序,往往在编写用于仿真Testbench中使用较多。在《IEEEStandard Verilog Hardware Description Language》中有详细对任务和函数用法的介绍和示例。

任务和函数的共同点:

1)任务和函数必须在模块内定义,其作用范围仅适用于该模块,可以在模块内多次调用。

2)任务和函数中可以声明局部变量,如寄存器,时间,整数,实数和事件,但是不能声明线网类型的变量。

3)任务和函数中只能使用行为级语句,但是不能包含always和initial块,设计者可以在always和initial块中调用任务和函数。


任务和函数的不同点:

1)函数能调用另一个函数,但是不能调用任务;任务可以调用另一个任务,也可以调用函数。所以B选项正确。

2)函数总是在仿真时刻0开始;任务可以在非零时刻开始执行。

3)函数一定不能包含任何延迟,事件或者时序控制声明语句;任务可以包含延迟,事件或者时序控制声明语句。所以A选项错误。

4)函数至少要有一个输入变量,也可以有多个输入变量;任务可以没有或者有多个输入,输出,输入输出变量。所以C选项正确。

5)函数只能返回一个值,函数不能有输出或者双向变量任务不返回任何值,或者返回多个输出或双向变量值。所以D选项正确。
由上述的特点决定:函数用于替代纯组合逻辑的Verilog代码,而任务可以代替Verilog的任何代码。

任务使用关键字task和endtask来进行声明,如果子程序满足下面任何一个条件,则必须使用任务而不能使用函数。自动(可重入)任务:Verilog任务中所有声明的变量地址空间都是静态分配的,因此如果在一个模块中多次调用任务时,可能会造成地址空间的冲突,为了避免这个问题,Verilog通过在task关键字后面添加automatic使任务称为可重入的,这时在调用任务时,会自动给任务声明变量分配动态地址空间,这样有效避免了地址空间的冲突。

函数使用关键字function和endfunction定义,对于子程序,如果满足下述所有条件则可以用函数来完成:跟任务调用一样,在模块中如果调用多次函数,也会碰到地址冲突的问题,因此也引入automatic关键字来对函数可重用性声明。没有进行可重用性声明的函数不可以多次或者递归调用,进行了可重用性声明的函数可以递归调用。
MP801开发板 网络培训班 就业培训班 FPGA学习资料
吴老师18022857217
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|MDYBBS ( 粤ICP备16061416号 )

GMT+8, 2024-11-23 05:34 , Processed in 0.061412 second(s), 22 queries .

Powered by Discuz! X3.4

本论坛由广州健飞通信有限公司所有

© 2001-2019 Comsenz Inc.

快速回复 返回顶部 返回列表