您当前的位置: 首页 > 房地产

炼狱传奇taskfunction之战2020年

2020-02-16 20:38:02

炼狱传奇-task_function之战 - FPGA/CPLD - 电子工程

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)之间是一一对应的,当任务启动时,由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,仿真的波形跟设计的完全一样。

3. function说明语句l定义函数的语法:function 返回值的类型或范围 (函数名); 端口说明语句 变量类型说明语句 begin 语句 ………endendfunction注意: 返回值的类型或范围 这一项是可选项,如缺省则返回值位一位寄存器类型数据

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

冠心病高血压服用通心络胶囊怎么样

哪里治心绞痛最好

怎样预防骨质疏松

首荟通便胶囊通便快吗

希爱力他达拉非每日一次

月经有血块什么原因造成的
老是经间期出血怎么办
盆腔炎的早期症状
月经周期紊乱怎么办
月经后期的颜色
推荐阅读
图文聚焦