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

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

3天内不再提示

FPGA设计中几种常见的反压方式

CHANBAEK 来源: FPGA的现今未 作者: FPGA的现今未 2023-09-06 17:34 次阅读

FPGA的设计中,一个前级模块A向下游模块B发送数据,如下图所示,当下游模块B不能及时处理数据时,希望前级模块A停止发送数据,这个时候模块B会通过一个反压信号给到模块A,告诉模块A,不要再给我发数据了。这就是一种最常见,也是用得最普遍的一种发压场景。

图片

那究竟要如何设计反压呢?看似简单,其实也不简单,处理不好的话对系统的稳定性和性能会带来一定的影响。本文介绍几种常见的反压方式,并给出他们的一些优缺点。

立即反压

所谓立即反压,就是指下游模块给出反压后,前级模块立即停止发包,如下图所示:

图片

一共有7个数据,但是真正能被下游模块接收的数据只有6个,其中数据E在发送的时候因为ready无效,所以不能被接收。如果对axi_stream接口比较了解的话,可以看出,这就是axi_stream接口,只有在valid和ready同时有效的时候的数据才能被接收。

它的优点就是能立即反压,尤其是下游模块没有缓存的时候。另外就是这种接口是标准接口,和外部模块对接的时候不会有歧义。缺点就是因为需要立即反压,组合逻辑处理比较简单,如果用时序逻辑,控制起来不是很方便。

将满反压

如果下游接收模块有缓存,一般是fifo或者ram。当缓存快要满的时候,会给前级模块反压,这就是将满反压。如下图所示:

图片

这种反压的特点就是下游模块给出反压信号后,前级模块还可以继续写入一些数据,一般不超过5拍。上图中,虽然afull = 1了,但是前级模块还会继续写入2个数据,数据F和数据G。同时下游模块也要控制好缓存的水限,在给出反压信号后还要预留一定的缓存空间,具体多少,需要和前级模块配合好,笔者的经验,一般预留8个以上。

如下图所示缓存的深度为128,当数据写满100以后给出反压,此时缓存还可以写入28个数据,该缓存的水限就为100。

图片

这种将满反压的优点就是处理非常方便,只要下游模块不反压,就可以不停地写入数据,控制非常方便,另外下游模块缓存的深度和前级模块无关,一般用于项目内部模块之间。至于缺点,如果一定要找一个缺点,那就是下游模块必须有缓存,而立即反压可以不需要。

另外,对于缓存,到底是用ram还是用fifo,应该根据场景来确定,通常情况下用fifo可以满足大部分的应用场景。

整包反压

上述将满反压,如果反压频繁的话,会给前级模块的处理带来一点点的复杂度,为了简化这种反压带来的影响,还有一种叫整包反压。和将满反压相比,就是下游模块给出反压信号后,前级模块会把当前的数据报文全部发送给下游模块,如下图所示:

图片

当数据在传输的过程中,如果下游模块给出反压使得afull = 1,前级模块会继续发送报文,直到报文的eop为止。这种场景下,首先需要约定报文的最大长度,假定为MAX_LEN,那么对下游的缓存就会有要求,其容量至少为MAX_LEN,考虑到流水性能,其容量要为2*MAX_LEN,同时水限的设置要保证反压后的空间至少能存放一个报文。

这种方案的优点是控制简单,只要开始发送的时候不反压,就可以把当前的报文全部发送完。缺点就是当约定的MAX_LEN比较大时,需要较多的缓存开销。

小结

反压是FPGA设计中的一个最基本且重要的话题,在实际应用中,模块与模块之间的反压要做好“逐级反压”,当反压点与缓存较远的时候,尤其要考虑在途的数据,反压后的空间要能缓存住在途数据。除了上述的几种方案外,请求应答接口某种意义上也是一种反压的设计,只是性能较低罢了,一般不建议采用。

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

    关注

    1626

    文章

    21665

    浏览量

    601793
  • 模块
    +关注

    关注

    7

    文章

    2670

    浏览量

    47338
  • FPGA设计
    +关注

    关注

    9

    文章

    428

    浏览量

    26482
收藏 人收藏

    评论

    相关推荐

    常见的虚拟中性点的重构方式有哪几种

    什么是虚拟中性点?常见的虚拟中性点的重构方式有哪几种?电阻网络的虚拟中点与电机中点有何不同?直流母线虚拟中性点与电机中点有何不同?
    发表于 08-03 07:41

    伺服系统控制常见的加减速方式有哪几种

    伺服系统控制常见的加减速方式几种?分别是哪些?
    发表于 09-30 06:38

    电路保护的几种常见类型

    电路保护的几种常见类型1.过流保护2.过保护(电子通讯设备)3.过温保护4.过温过流保护5.过流过保护(处研发阶段)过保护器件的选型1
    发表于 01-14 09:09

    TFT液晶屏控制常见方式有哪几种

    TFT液晶屏控制常见方式有哪几种
    发表于 02-11 06:24

    单片机常见的复位方式有哪几种啊?

    单片机常见的复位方式有哪几种啊?
    发表于 01-02 20:17

    缸启动方式

    缸启动是指采用再热蒸汽进入汽轮机缸后,将汽轮机冲转的启动方式。以ALSTOM公司汽轮机为例,
    发表于 02-02 14:32 11次下载

    电池常见的充电方式有哪几种?

    电池常见的充电方式有哪几种? 1. 流充电:整个充电过程个中充电电流维持一定值不变 , 这种方法最常见。 2. 恒压充电:充电过程充电
    发表于 10-21 11:00 2038次阅读

    理解FPGA稳态

    理解FPGA稳态   本白皮书介绍FPGA 稳态,为什么会出现这一现象,它是怎样导
    发表于 02-04 11:01 787次阅读
    理解<b class='flag-5'>FPGA</b><b class='flag-5'>中</b>的<b class='flag-5'>压</b>稳态

    细数几种常见的自动驾驶的机器学习算法

    电子发烧友网站提供《细数几种常见的自动驾驶的机器学习算法.docx》资料免费下载
    发表于 09-22 14:13 2次下载

    熔丝FPGA配置和编程方法

    熔丝FPGA制造困难且多用在特殊用途领域,因此有关其位流文件的研究很少.本文首先介绍了熔丝FPGAFPGA CAD软件流程, 接着描
    发表于 11-18 11:19 1.1w次阅读
    <b class='flag-5'>反</b>熔丝<b class='flag-5'>FPGA</b>配置和编程方法

    FPGA配置方式的特点与区别(1)

    FPGA的配置方式有以下几种,JTAG,AS,PS,AP,FPP等几种
    的头像 发表于 11-25 07:02 5174次阅读

    木马病毒常见的入侵方式都有哪些

    木马病毒是比较常见,需要提防的病毒,它的入侵方式也是有好几种,今天小编就来讲讲,木马病毒常见的入侵方式
    发表于 10-14 17:05 6506次阅读

    浅谈FPGA单独下载固化文件的几种方式

    对于FPGA工程师除了日常的调试工作以外,批量生产时候指导生成人员下载我们生成的固化文件也是我们的工作,所以今天讲一讲FPGA单独下载的几种方式
    发表于 01-16 09:34 1889次阅读

    SiC SBD的高耐压()特性

    SiC SBD的高耐压()特性
    的头像 发表于 12-13 15:27 581次阅读
    SiC SBD的高耐压(<b class='flag-5'>反</b><b class='flag-5'>压</b>)特性

    bnc母头法兰的安装几种方式

      德索工程师说道BNC母头法兰的安装方式通常根据具体的应用场景和需求有所不同,但一般可以分为以下几种常见方式:   这种安装方式简单快捷,不需要复杂的焊接工艺。   通过
    的头像 发表于 08-17 09:26 356次阅读
    bnc母头法兰的安装<b class='flag-5'>几种</b><b class='flag-5'>方式</b>