【每日一题】关于任务和函数的区别,下列说法错误的是( )
【每日一题】同学们,上午好。
为了提高大家学习能动性与专业技术水平,我将会不定时在群里进行不同主题提问,这就要你们活动活动脑子啦,日积月累达到能力提升哟~
今日题目:关于任务和函数的区别,下列说法错误的是( )。A 函数可以包含时延和时序控制 B 函数不能调用任务 C 函数必须带有至少一个输入 D 函数只能返回一个值
希望同学们积极思考,踊跃参与答题哦~
同学们,晚上好。我来公布答案啦~
今日题目:关于任务和函数的区别,下列说法错误的是( )。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关键字来对函数可重用性声明。没有进行可重用性声明的函数不可以多次或者递归调用,进行了可重用性声明的函数可以递归调用。
页:
[1]