- 概述
- task使用
- function使用
- task和function比较
1.概述
task和function具备将程序中反复使用的语句结构聚合起来的能力,功能类似于C语言的子函数;通过task和function语句结构来替代重复性大的语句可以有效地简化程序结构。
2.task
2.1 task基本语法
- task声明:
task <任务名>;
端口及数据类型生命语句
begin 过程语句; end
endtask
- task调用:
<任务名> (端口1,端口2,...,端口N);
- “端口及数据类型声明语句”包括此任务的端口定义语句和变量类型定义语句,任务接受的输入值和返回的输出值都通过此端口,而且端口命名的排序很重要,一旦确定就不要随意改动了;
- “过程语句”是一段用来完成任务操作的过程语句,其调用必须在主程序的过程结构中;
- 任务语句中不能出现由always或initial引导的过程语句结构;
- 在任务中无法描述时序电路,可综合的任务语句结构只能描述组合电路;
- 任务调用使用任务名旁标注端口表,**任务调用时和定义时的端口变量的位置应该完全对应
2.2 task使用demo
- 设计中使用,通过task生成比较单元:
module Ex(C1,D1,C2,D2,S,D);
input[3:0] C1,D1,C2,D2;
input S;
output[3:0] D;
reg[3:0] out1,out2;
task CMP;
input[3:0] A,B;
output[3: