任务及函数的使用
任务和函数有些不同
主要的不同有以下四点:
- 函数只能与主模块共用同一个仿真时间单位,而任务可以定义自己的仿真时间单位。
- 函数不能启动任务,而任务能启动其它任务和函数。
- 函数至少要有一个输入变量,而任务可以没有或有多个任何类型的变量。
- 函数返回一个值,而任务则不返回值。
函数的目的是通过返回一个值来响应输入信号的值。任务却能支持多种目的,能计算多个结果值,这
些结果值只能通过被调用的任务的输出或总线端口送出。Verilog HDL模块使用函数时是把它当作表
达式中的操作符,这个操作的结果值就是这个函数的返回值。
task说明语句
如果传给任务的变量值和任务完成后接收结果的变量已定义,就可以用一条语句启动任务。任务完成
以后控制就传回启动过程。如任务内部有定时控制,则启动的时间可以与控制返回的时间不同。任务
可以启动其它的任务,其它任务又可以启动别的任务,可以启动的任务数是没有限制的。不管有多少
任务启动,只有当所有的启动任务完成以后,控制才能返回。
$random这一系统函数可以产生一个有符号的32bit随机整数。一般的用法是$random%b, 其中b>0。
这样就会生成一个范围在(-b+1):(b-1)中的随机数。如果只得到正数的随机数, 可采 用{$random}%b 来产生。
使用任务 task,其语法如下:
task <任务名>;
<端口及数据类型声明语句>
<语句 1>
<语句 2>
<语句 n&g