task

Posted zhongguo135

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了task相关的知识,希望对你有一定的参考价值。

任务就是一段封装在“task-endtask”之间的程序。任务是通过调用来执行的,而且只有在调用时才执行,如果定义了任务,但是在整个过程中都没有调用它,那么这个任务是不会
执行的。

定义任务的语法如下:

任务:

task <任务名>;
      <端口及数据类型声明语句>
      <语句1>
      <语句2>
      ...
      <语句n>
endtask

 

task程序的一些写法

task send_data(len);//任务名字和长度,任务的声明,类似C语言
       integer len,i;//变量声明区
       begin//必须加begin和end
                for(i=0;i<len;i=i+1)//循环语句
                begin
                        @(posedge sclk);//for循环的时候一定要按照节拍来工作。如果注视掉本行,在波形图上i_data和i_addr都为零不动了。因为瞬间溢出成0
                        i_addr<=i[7:0];//可以用阻塞赋值也可以用非阻塞赋值。阻塞赋值就是直接赋过去,非阻塞赋值会延时一拍。
                        i_data<=i[7:0];//截取低8位
                        //用case语句产生一个协议,当地址为0时,i_data=0xff;
                        //当地址为1时,i_data=0x55;
                        //当地址为2时,i_data=0x00;
                        //其他地址全部保留赋值为0xff;
                end
                i_addr<=0;
            i_data<=0;
       end  
endtask

 

以上是关于task的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode:Task Scheduler分析和实现

使用Task.Wait而不是等待异步编程

Task运行过程分析1

Faster 情感分析-task03

膨胀类片段时出错

IFE_part1(task1-7)_blog.html总结