温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

verilog中的task和funtion

发布时间:2020-10-21 17:29:24 来源:网络 阅读:2798 作者:lihaichuan 栏目:开发技术

 

任务和函数主要有以下一些不同:
(1)函数只能与主模块共用一个仿真单位时间,而任务可以定义自己的仿真时间单位。
(2)函数不能启动任务,可以启动其它函数。而任务可以启动其他任务和函数。
(3)函数至少有一个输入变量(不能有inout或out)等,而任务可以没有或有任意个(输入或输出变量)。
(4)函数返回一个值,而任务不返回值。
函数的目的是通过返回一个值来响应输入信号的值。任务却能支持多种目的,能计算多个结果值,这些值只能通过被调用的任务的输出或总线端口送出。
任务不可综合,函数可综合。
函数的使用规则:
(1)函数的定义不能包含有任何的时间控制语句,即任何用#,@,wait来标识的语句。
(2)函数不能启动任务。
(3)定义函数至少有一个输入变量。
(4)在函数的定义中必须有一条赋值语句给函数中的一个内部变量赋以函数的结果值,该内部变量具有和函数名相同的名字。
1、函数和任务都要用begin和end。
如:task light;
              output color; //声明端口顺序,任务调用时也要按这个顺序对应
              input [31:0] tics;
              begin   
                            #(10*tics) color=off; //函数体只有一句,begin和end可有可无
              end
       endtask
       task light;
              output color;
              input [31:0] tics;
              begin   
                            #(10*tics); color=off; //函数体有两句(以上),begin和end必须有
              end
       endtask
2、上述任务可写成这样,把端口声明写成这样。
       task light(output color,input [31:0] tics);
              begin   
                            #(10*tics); color=off; //函数体有两句(以上),begin和end必须有
              end
       endtask
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI