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

    文章

    1351

    浏览量

    110066

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

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

收藏 人收藏

    评论

    相关推荐

    关于verilog的生成块和任务

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

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

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

    深入分析uCOS的任务堆栈

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

    FreeRTOS任务应用函数介绍

    * constpulTotalRunTime ); 该函数向TaskStatus_t结构体填充相关信息,系统每一个任务的信息都可以填充到TaskStatus_t结构体数组,数组大
    的头像 发表于 03-19 10:22 2554次阅读

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

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

    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 2324次阅读

    RTL建模函数任务讨论

    函数任务可以在使用它们的模块或接口中定义。定义可以出现在调用函数任务的语句之前或之后完成,函数任务
    的头像 发表于 11-09 09:26 1100次阅读

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

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

    Verilog任务函数的区别

    函数一样,任务(task)可以用来描述共同的代码段,并在模块内任意位置被调用,让代码更加的直观易读。
    的头像 发表于 06-01 16:38 1571次阅读
    <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 1048次阅读

    verilog函数任务对比

    verilog函数任务均用来描述共同的代码段,并且在模式内任意位置被调用,提高代码效率,让代码更加的直观,提高代码可读性。但是在实际使用的过程
    的头像 发表于 02-12 18:43 877次阅读

    verilog function函数的用法

    Verilog 是一种硬件描述语言 (HDL),主要用于描述数字电子电路的行为和结构。在 Verilog 函数 (Function) 是一种用于执行特定
    的头像 发表于 02-22 15:49 5456次阅读

    veriloginput和output作用

    以完成各种计算和控制任务。本文将详细介绍input和output在Verilog作用及其使用方式。 一、input的作用及使用方式
    的头像 发表于 02-23 10:29 3100次阅读