• 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

     

     1 //实现len个时钟周期延时
     2 task delay(len);
     3 
     4     integer i,len;
     5     begin
     6             for(i= 0;i<len;i = i+1)
     7             begin
     8                 @( posedge    clk );
     9 
    10             end
    11     end
    12 endtask
    13 //产生一位的时序
    14 task spi_bit();
    15     begin
    16             sclk = 0;
    17             delay(5);
    18             sclk = 1;
    19             delay(5);
    20             sclk    = 0;
    21     end
    22     endtask
    23 //产生len位的时钟
    24     task    spi_data(len);
    25             integer    len,i;
    26             begin
    27                     cs_n    = 0;
    28                     for(i = 0;i < len ; i = i + 1)
    29                     begin
    30                             @( posedge    clk)
    31                             spi_bit();
    32                     end
    33                     
    34                     delay(5);
    35                     cs_n = 1;
    36             
    37     
    38      end
    View Code
    1 //在initial语句中的调用
    2 initial
    3     begin
    4             #0
    5                     sclk    = 0;
    6                     mosi    =    1'bz;   
    7             #200
    8                     spi_data(10);
    9     end
    View Code
  • 相关阅读:
    实现MAXIMO7.5工作流任务箱任务颜色提示功能
    MAXIMO 快速查找实现
    DELPHI 通过方法名执行方法
    MAXIMO收件箱中,检修路线修改为其它名称
    在Linux 上手工创建 oracle 11g R2 数据库
    解决 maximo7.X 设备树子节点显示不全
    C++转换构造函数和隐式转换函数
    类或者结构体用无参构造函数创建对象时不需要带括号, 否则会当成函数声明
    今天我注册自己的博客啦,吼吼吼。。
    css3学习
  • 原文地址:https://www.cnblogs.com/zhongguo135/p/9179322.html
Copyright © 2020-2023  润新知