3057|4

69

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

炼狱传奇-task_function之战 [复制链接]

1.    task(任务)与function(函数)的不同
任务与函数主要有以下四点不同:
l  函数只能与主模块共用一个仿真时间单位,而任务定义自己的仿真时间单位。
l  函数不能启动任务,任务可以启动其他任务和函数。
l  函数至少要有一个输入变量,而任务可以没有或有多任何类型的变量。
l  函数返回一个值,而任务不返回值。
2.     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)之间是一一对应的,当任务启动时,由vw传入的变量赋给了ab,而当任务完成之后的输出又通过c赋给x,下面举一个具体程序来介绍,代码如下:
测试代码如下:

仿真波形图如下:

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

3.     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,仿真的波形跟设计的完全一样。

此帖出自FPGA/CPLD论坛

最新回复

师兄可以看到我的回复吗。写的代码确实不错,注释特别详细  详情 回复 发表于 2016-3-26 23:35
点赞 关注
 

回复
举报

2144

帖子

3

TA的资源

五彩晶圆(中级)

沙发
 
不错 注释详细
此帖出自FPGA/CPLD论坛

点评

谢谢支持  详情 回复 发表于 2015-3-3 14:25
个人签名电工
 
 

回复

69

帖子

0

TA的资源

一粒金砂(中级)

板凳
 


谢谢支持

此帖出自FPGA/CPLD论坛
 
 
 

回复

14

帖子

0

TA的资源

一粒金砂(初级)

4
 
师兄可以看到我的回复吗。写的代码确实不错,注释特别详细
此帖出自FPGA/CPLD论坛

点评

可以的哦,谢谢支持  详情 回复 发表于 2016-3-27 09:13
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(中级)

5
 
一纸玫瑰 发表于 2016-3-26 23:35
师兄可以看到我的回复吗。写的代码确实不错,注释特别详细

可以的哦,谢谢支持
此帖出自FPGA/CPLD论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表