zoukankan      html  css  js  c++  java
  • v3学院教你学习-task和function的异同

    task(任务)与function(函数)的不同
    任务与函数主要有以下四点不同:
    l 函数只能与主模块共用一个仿真时间单位,而任务定义自己的仿真时间单位。
    l 函数不能启动任务,任务可以启动其他任务和函数。
    l 函数至少要有一个输入变量,而任务可以没有或有多任何类型的变量。
    l 函数返回一个值,而任务不返回值。

    1. task语句说明
      

    l 任务的定义
    定义任务的语法如下:
    task<任务名>
    <端口及数据类型声明语句>
    <语句1>
    <语句2>
    …………
    <语句n>
    endtask
    l 任务的调用及变量的传递
    任务的调用:
    <任务名>(端口1,端口2,…..,端口n);
    下面举例子说明怎么定义任务与调用任务:
    任务定义:
    task my_task;
    input a,b;
    output c;
    <语句>
    ….
    endtask
    任务调用:my_task(v,w,x);
    任务调用变量(v,w,x)和任务定义的I/O变量(a,b,c)之间是一一对应的,当任务启动时,由v和w传入的变量赋给了a和b,而当任务完成之后的输出又通过c赋给x,下面举一个具体程序来介绍:
    代码如下:


    测试代码如下:

    仿真波形图如下:


    当start信号变成高电平的时候,即当state状态由0跳变到1时,
    调用load任务,把data_in的值寄存在save_data的同时状态机状态跳转到2,当状态跳转到2的时候,调用shift任务,把save_data的值往左移一位的同时状态机状态跳转到3,当状态跳转到3的时候,调用out任务,把save_data的值往data_out赋值的同时状态机状态跳转到0,仿真的波形跟设计的完全一样。

    1. function说明语句
      

    l 定义函数的语法:
    function<返回值的类型或范围>(函数名);
    <端口说明语句>
    <变量类型说明语句>
    begin
    <语句>
    ………
    end
    endfunction
    注意:<返回值的类型或范围>这一项是可选项,如缺省则返回值位一位寄存器类型数据
    l 举例说明
    下面举一个实际程序的例子,来说明一下function函数的实际定
    义与如何调用。
    程序代码如下:



    测试代码如下:

    仿真波形图如下:


    当start信号变成高电平的时候,即当state状态有0跳变到1时,调用load_data(data_in)函数,把data_in的值寄存在save_data的同时状态机状态跳转到2,当状态跳转到2的时候,调用shift(save_data)函数,把save_data的值往左移一位的同时状态机状态跳转到3,当状态跳转到3的时候,调用load_data(save_data)函数,把save_data的值往data_out赋值的同时状态机状态跳转到0,仿真的波形跟设计的完全一样。
    此文章为原创出自 V3学院 www.v3edu.org

  • 相关阅读:
    es使用java的api操作
    vip视频解析保存
    springboot项目中常遇到的问题-初学者最容易犯的错
    spring中使用@value注入static静态变量
    Hardware assisted virtualization and data execution protection must be enabled in the BIOS. See https://docs.docker.com/docker-for-windows/troubleshoot/#virtualization
    rabbitmq的简单使用
    微信朋友圈点赞功能
    SQLServer删除重复数据保留一条
    公司企业的网站备案工信部短信验证失败怎么办?证件不是营业执照,而是身份证号
    全部常用邮件端口25、109、110、143、465、995、993、994
  • 原文地址:https://www.cnblogs.com/laokai/p/6488866.html
Copyright © 2011-2022 走看看