我是靠谱客的博主 追寻发夹,最近开发中收集的这篇文章主要介绍Verilog 中 task的使用方法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

任务(task):相当于是一个函数,在主程序中不调用该任务,该任务是不会执行的。

任务的写法:

task task_name(

input   a;            //定义输入端口

output   b;         //定义输出端口

);

//这里写任务需要执行的操作,该段代码中不能包含always块和initial块。

 

endtask

任务的调用:虽然任务中不能出现always和initial块,但是调用任务却是在initial和always块中调用的。

调用:  task_name(端口1,端口2,。。。。);

 

示例:

task tx_bit(
//定义tx_bit任务
input [7:0] data
//任务中定义输入端口为8位data数据输入
);
integer i;
for(i=0; i<10; i=i+1) begin
case(i)
0: rx <= 1'b0;
1: rx <= data[0];
2: rx <= data[1];
3: rx <= data[2];
4: rx <= data[3];
5: rx <= data[4];
6: rx <= data[5];
7: rx <= data[6];
8: rx <= data[7];
9: rx <= 1'b1;
default: rx <= 1'b1;
endcase
#560;
end
endtask
task tx_byte();
//定义tx_byte任务
integer i;
for(i=0; i<4; i=i+1) begin
tx_bit(8'h55);
//在任务中调用之前的tx_bit任务,并传入数据8‘h55
end
endtask
//经过以上两个任务中的调用,但是实际中任务仍然不会执行,要使任务在程序中执行则必须在initial或always中调用它
//调用任务
always @(posedge clk or negedge rst_n)
tx_byte();
//这样任务被调用,任务所执行的逻辑才能正常执行

 

最后

以上就是追寻发夹为你收集整理的Verilog 中 task的使用方法的全部内容,希望文章能够帮你解决Verilog 中 task的使用方法所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部