注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

瘋人院

lunatic asylum

 
 
 

日志

 
 

verilog HDL语言-任务  

2010-12-26 21:46:26|  分类: EDA |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
verilog HDL语言中如果传给任务的变量值和任务完成后接受结果的变量已定义,就可以用一条语句启动任务。任务完成以后控制就传回启动过程。如任务内部有定时控制,则启动的时间可以与控制返回的时间不同。任务可以启动其他的任务,其他的任务又可以启动别的任务,可以启动的任务数是没有限制的。不管有多少任务启动,只有当所有的启动任务完成以后,控制才能返回。

定义任务Task的语法如下:
任务:task<任务名字>;
<端口及数据类型声明语句>
<语句1>
<语句2>
<语句3>
...
<语句n>
endtask

task中声明语句的语法与模块定义中的对应声明语句的语法是一致的。任务的调用中,变量传递启动任务并传递输入/输出变量,其语法如下:
任务的调用:
<任务名>(端口1,端口2,...,端口n);

下面为一个例子:
//定义交通灯开启时间的任务
task light;
output color;
input[31:0] tics;
begin 
repeat(tics)
@(posedge clock);
color=off;
end
endtask

//任务调用:
always
begin
red=on;
light(red,red_tics);
green=on;
light(green,green_tics);
amber=on;
light(amber,amber_tics);
end
任务调用light(red,red_tics)时,变量(red,red_tics)和任务定义的I/O变量(color,tics)之间是一一对应的。当任务启动时,由red传入的变量赋给color,而当任务完成后的输出又通过tics赋给red_tics。

与任务相比较,函数的使用有比较多的约束,下面是函数的使用规则:
1,函数的定义不能包含有任何的时间控制语句,即任何#,@或wait来标示的语句。
2,函数不能启动任务。
3,定义函数时至少要有一个输入参量。
4,在函数的定义中必须有一条赋值语句给函数中的一个内部变量赋以函数的结果值,该内部变量具有和函数名相同的名字。
  评论这张
 
阅读(356)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017