概述
任务(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的使用方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复