0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Verilog设计中函数和任务的作用分析

OpenFPGA 来源:OpenFPGA 作者:OpenFPGA 2022-03-15 11:01 次阅读

使用Verilog可以方便地实现复杂的设计。现在,设计复杂性增加,设计需要针对低功率、高速和最小面积进行优化~

任务和函数在Verilog中用于描述常用的功能行为。与其在不同的地方复制相同的代码,不如根据需求使用函数或任务,这是一种良好且常见的做法。为了便于代码维护,最好使用子例程之类的函数或任务。

从给定字符串中计算1的个数

以下示例描述用于从给定字符串中计算1的个数任务。以下是使用任务时需要记住的要点:

任务可以由时间控制语句甚至延迟操作符组成。

任务可以有输入和输出声明。

任务可以由函数调用组成,但函数不能由任务组成。

任务可以有输出参数,在调用时不用于返回值。

任务可用于调用其他任务。

在编写可综合RTL时,不建议使用任务。

任务用于编写行为或可仿真模型。

示例7.6是从给定字符串中计算1的个数的说明。在本例中,任务与参数“data_in”、“out”一起使用,任务的名称为“count_1s_in_byte”。在大多数协议描述中,需要对输入字符串执行一些操作。在此示例中,字符串为8位输入“data_in”,输出结果为4位“out”。不建议使用任务生成综合逻辑。

9585004a-a3ea-11ec-952b-dac502259ad0.png

示例7.6任务的Verilog RTL

使用函数计数1的个数的模块

以下示例描述用于从给定字符串中计算1的个数函数。以下是使用该功能时需要记住的要点:

函数不能由时间控制语句甚至延迟运算符组成。

函数至少有一个输入参数声明。

函数可以由函数调用组成,但函数不能由任务组成。

函数在零模拟时间内执行,并在调用时返回单个值。

在编写可综合 RTL时,不建议使用函数。

函数用于编写行为或可仿真模型。

函数不应具有非阻塞赋值。

示例7.7是从给定字符串中计算1个数的说明。在本例中,函数与参数“data_in”一起使用。函数名为“count_1s_in_byte”。在大多数协议描述中,需要对输入字符串执行一些操作。在此示例中,字符串为8位输入“data_in”,输出结果为4位“out”。不建议使用该函数生成综合逻辑。

95a00264-a3ea-11ec-952b-dac502259ad0.png

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Verilog
    +关注

    关注

    28

    文章

    1325

    浏览量

    109293

原文标题:Verilog复杂逻辑设计指南-函数和任务

文章出处:【微信号:Open_FPGA,微信公众号:OpenFPGA】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Verilog函数定义的问题

    Verilog定义函数的时候,有位宽的定义,我想问下诸位大侠,这个定义可以不要吗?这个位宽是不是该函数处理数据的能力的一种?还是有其他用途。请诸位大神赐教
    发表于 07-20 10:00

    关于verilog的生成块和任务

    本帖最后由 耶稣牛肚 于 2017-1-4 20:27 编辑 自学verilog,看到生成块和任务的时候有一些迷茫,希望大神讲解一下。生成块书上说本质是将多条重复语句化为一条起到简化的作用
    发表于 01-04 20:25

    请问UCOS系统内部任务的时钟节拍任务的主要作用是什么?

    UCOS系统内部任务的时钟节拍任务主要作用是什么,多久运行一次,任务没有用到延时函数
    发表于 09-03 23:55

    Verilog系统任务的相关资料推荐

    Verilog数字系统设计十任务函数实验2文章目录Verilog数字系统设计十前言一、Verilog系统
    发表于 02-09 06:05

    任务函数的区别?

    Verilog数字系统设计九任务函数实验1文章目录Verilog数字系统设计九前言一、任务函数
    发表于 02-09 07:47

    深入分析uCOS的任务堆栈

    堆栈作用的就是用来保存局部变量,从本质上讲也就是将CPU寄存器的值保存到RAM中。在uCOS中,每一个任务都有一个独立的任务堆栈。为了深入理解任务堆栈的
    发表于 12-01 01:25 573次阅读

    verilog实现定时器函数

    使用Verilog描述硬件的基本设计单元是模块(module)。构建复杂的电子电路,主要是通过模块的相互连接调用来实现的。模块被包含在关键字module、endmodule之内。实际的电路元件。Verilog中的模块类似C语言中的函数
    发表于 12-08 17:20 9755次阅读

    FreeRTOS任务应用函数介绍

    任务应用函数是一组辅助类函数,一般用于调试信息输出、获取任务句柄、获取任务状态、操作任务标签值等
    的头像 发表于 03-19 10:22 2269次阅读

    Verilog HDL语言中任务函数的比较

    其中,返回值的类型和位宽是可选项,如果缺省会返回一位寄存器类型数据。Verilog HDL认为函数的定义隐式地声明了与函数同名的寄存器。函数的定义把
    的头像 发表于 07-02 10:24 1982次阅读

    Verilog数字系统设计——任务函数二(系统任务readmemb或readmemh)

    Verilog数字系统设计十任务函数实验2文章目录Verilog数字系统设计十前言一、Verilog系统
    发表于 12-05 19:06 7次下载
    <b class='flag-5'>Verilog</b>数字系统设计——<b class='flag-5'>任务</b>和<b class='flag-5'>函数</b>二(系统<b class='flag-5'>任务</b>readmemb或readmemh)

    Verilog数字系统设计——任务函数一(斐波那契数列)

    Verilog数字系统设计九任务函数实验1文章目录Verilog数字系统设计九前言一、任务函数
    发表于 12-05 19:06 9次下载
    <b class='flag-5'>Verilog</b>数字系统设计——<b class='flag-5'>任务</b>和<b class='flag-5'>函数</b>一(斐波那契数列)

    Verilog系统函数和边沿检测

    “ 本文主要分享了在Verilog设计过程中一些经验与知识点,主要包括Verilog仿真时常用的系统任务、双向端口的使用(inout)、边沿检测”
    的头像 发表于 03-15 13:34 1787次阅读

    Verilog中关于文件操作的系统任务

    Verilog提供了很多对文件操作的系统任务函数,例如打开关闭文件、向文件写入值、从文件读出值等等。
    的头像 发表于 12-05 13:57 1003次阅读

    Verilog任务函数的区别

    函数一样,任务(task)可以用来描述共同的代码段,并在模块内任意位置被调用,让代码更加的直观易读。
    的头像 发表于 06-01 16:38 1008次阅读
    <b class='flag-5'>Verilog</b><b class='flag-5'>任务</b>与<b class='flag-5'>函数</b>的区别

    FreeRTOS中其他任务API函数

    1、函数 uxTaskPriorityGet() 此函数用来获取指定任务的优先级,要使用此函数的话宏 INCLUDE_uxTaskPriorityGet 应 该定义为 1。 2、
    的头像 发表于 07-06 16:54 668次阅读