gaochy1126 发表于 2022-8-30 21:46

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 data   //任务中定义输入端口为8位data数据输入
);

        integer i;
        for(i=0; i<10; i=i+1) begin
                case(i)
                        0: rx <= 1'b0;
                        1: rx <= data;
                        2: rx <= data;
                        3: rx <= data;
                        4: rx <= data;
                        5: rx <= data;
                        6: rx <= data;
                        7: rx <= data;
                        8: rx <= data;
                        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();      //这样任务被调用,任务所执行的逻辑才能正常执行




原文链接:https://blog.csdn.net/xiaoxiangwei111/article/details/106557778

页: [1]
查看完整版本: Verilog 中 task的使用方法