概述
个人笔记。
task-endtask在verilog中就是一个任务语句,个人认为相当于c语言中的任务函数。任务是通过调用来执行的,可以在initial语句和always语句中调用使用。
任务定义:
task tesk;
input
[7:0]
A;
output
reg
[7:0] outvalue;
begin
case(A)
"a":begin
outvalue[7:0]<=8'h00;
end
endcase
end
endtask
形式如上,其中tesk是任务名,input [7:0] A是输入端口说明, output reg [7:0] outvalue是输出端口说明,根据任务需要可以选择写不写输入输出端口说明,endtask是结束任务标志。
任务调用:其形式tesk(端口1,端口2,端口3,...),以上面为例其调用为tesk("a",out),且必须在initial语句和always语句中调用。
以案例为例:
task tesk1;
input
[7:0]
A;
//输入端口
output
reg
[7:0] outvalue;
//输出端口
begin
case(A)
"a":begin
outvalue[7:0]<=8'h00;
end
endcase
end
endtask
task tesk2;
output reg [7:0] outvalue;
//输出端口
begin
outvalue[7:0]<=8'h01;
end
endtask
task tesk3;
output
reg [15:0]
tesk3_buf;
//输出端口
begin
tesk1("a",tesk3_buf[7:0]);
//调用tesk1
tesk2(tesk3_buf[15:8])
//调用tesk2
end
reg
[15:0]
out;
always @(posedge i_clk or negedge nrst)
begin
tesk3(out[15:0]);
//调用tesk3
end
此案例任务tesk3调用了tesk1、tesk2,但tesk3并不是在always中所以调用无效,在always语句中调用了tesk3任务因此tesk1、tesk2任务有效。其中reg [15:0] out在外部定义。
最后
以上就是着急星月为你收集整理的【学习笔记-FPGA】verilog语言的task语句用法的全部内容,希望文章能够帮你解决【学习笔记-FPGA】verilog语言的task语句用法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复