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();      //这样任务被调用,任务所执行的逻辑才能正常执行



 

  • 7
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值