我是靠谱客的博主 着急星月,最近开发中收集的这篇文章主要介绍【学习笔记-FPGA】verilog语言的task语句用法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

个人笔记。

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语句用法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部