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

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

3天内不再提示

valid-ready握手协议和enable-xoff协议对比

冬至子 来源:芯时代青年 作者:尼德兰的喵 2023-12-04 10:32 次阅读

这一篇主要对比下valid-ready握手协议和enable-xoff协议,当然这个对比仅限于同时钟域下的信号传输。

工作中接触的第一个模块采用的接口协议就是典型的enable-xoff协议,这种协议的典型特点是通过enable信号标记数据有效,通过xoff信号进行反压,比较典型的波形如下:

图片

上面的波形中呢,data_en就是使能信号,为1时表明上游的传输数据有效;data_xoff为反压信号,为1时表明下游的接收端无法接收数据,此时数据传输不会立即停止,而是会继续传输N拍,N的大小称为过冲。

还有另外一种常见场景:

图片

这种波形的特点是,数据不再是单拍有效的,而是若干拍组成一个“包”,data_sop是包头标志,data_eop为包尾标志,data_sop和date_eop之间(左右均包含)data_en有效的数据即为整个包的数据。这种包传输很常见的场景是包头为多层ID,包尾为ECC校验,中间为payload:

图片

这种包传输起反压时,可能有两种场景:一是过冲若干拍,二是过冲若干个包。具体的要求就要看上下游模块的协议要求了。这种场景比较复杂暂不过多讨论,只看一下最见到的单拍enable-xoff接口,可以发现其与valid-ready最大的区别在于,后者ready拉低时数据传输时强制停止的,只有valid和ready同时高有效才完成了一个数据的传输。

而前者则不然,enable信号高有效时就完成了一个数据的传输,而xoff为1后(起反压,类似于ready拉低的效果)仍然会过冲几个数据,直到enable拉低后才停止数据传输。

单纯从代码实现的角度看,valid-ready型接口的valid信号必然是会看上一拍是否握手,如果握手了就可以立刻开始下一个数据的发送(而不需要关心本拍ready的情况),不握手就一直维持高有效;而enable-xoff则是在感知到xoff后主动停止发送(单接口上不一定是立即停止),直到xoff降为0后再重新开始发送数据(而不能维持enable信号为1)。

比较典型的enable-xoff就是两个fifo级联的电路结构,从这个结构也能看出为什么xoff为高后接口不会立即停止数据发送而是会过冲几个数据。在这种结构中,下级的fifo将afull(将满)信号作为xoff输入给上一级,afull信号参与fifo0的rd_en逻辑中,当afull为1时rd_en会为0。

图片

那么显然,即使fifo0在第一时间停止数据发送了,那么由fifo0到fifo1的路上还有4个寄存器呢呀,极端场景这4个寄存器里都有有效数据,那么下级的fifo1是必须得能够把数据收下来的(要不然不就丢数了吗),所以fifo1入口的接口协议就是:xoff为1之后,最多允许过冲4个数据(包括xoff为1的当拍)。

顺便延伸一下,那么这个时候fifo1的afull水线应该设为多少呢?应当是N-4,N为fifo深度对吧。那么继续深入一下,N的值最小应该为多少?答案是,N最小值应该为8,大于8肯定是没有关系的。为什么要这么设置呢,我们来看一下下游阻塞-恢复场景(不纠结于具体的时序,只看行为):

图片

下游阻塞 -> fifo将满,起反压 -> fifo接收路径上的过冲,等待下游通流 -> 下游通流,fifo出数 -> fifo不再将满,撤销反压 -> 上游恢复发送数据,那么如果在fifo1里面将满水线以下的数据发送完成之前,上游的数据没能补充过来(路上有流水),那么必然会造成下游的断流现象,也就是非阻塞断流。这对于对带宽、延迟、抖动有要求的芯片而言是不可接受的。

因此fifo的将满水线必须设置合理,太浅会丢数,太深会断流。对于验证而言,这里的性能验证也是重中之重,而这一关过去后还有包反压过冲场景的性能问题以及反压流水场景:

图片

反正哪个都够忙上一阵的,这个不是重点也就不赘述了。说了这么多,其实valid-ready和enable-xoff接口的差异已经说的也比较清楚了:

在芯片设计中,"valid-ready握手接口"和"enable-xoff使能接口"都是用于控制数据传输和通信的接口,但它们在功能和用途上有一些差异。

Valid-Ready握手接口:

"Valid" 和 "Ready" 是两个信号线,用于在数据传输过程中进行握手和同步。

"Valid" 信号表示数据是否有效。当数据准备好并可以传输时,"Valid" 信号置高。

"Ready" 信号表示接收方是否准备好接收数据。当接收方准备好接收数据时,"Ready" 信号置高。

握手的基本原则是:当发送方的 "Valid" 信号为高且接收方的 "Ready" 信号也为高时,数据可以传输。

Enable-XOFF使能接口:

"Enable" 和 "XOFF" 是两个信号线,用于控制数据流的启用和停止。

"Enable" 信号用于启用数据传输,当 "Enable" 为高时,数据传输可以进行。

"XOFF" 信号用于停止数据传输,当 "XOFF" 为高时,数据传输被暂停。

通常,"XOFF" 信号用于流量控制,以避免数据过载,允许接收方在处理数据之前进行暂停。

在实际应用中,选择使用哪种接口取决于项目的需求和设计目标。"Valid-Ready握手接口"通常用于高速数据。

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

    关注

    30

    文章

    5037

    浏览量

    117765
  • FIFO芯片
    +关注

    关注

    0

    文章

    10

    浏览量

    8746
  • 信号传输
    +关注

    关注

    4

    文章

    333

    浏览量

    19813
  • 时钟域
    +关注

    关注

    0

    文章

    49

    浏览量

    9455
收藏 人收藏

    评论

    相关推荐

    TCP协议和UDP协议的区别有哪些

    计算机网络简答题1、TCP 协议和 UDP 协议的区别有哪些?(1)TCP 属于面向连接的协议,UDP 属于面向无连接的协议 ;(2)TCP 可以保证数据可靠、有序的传输,可以进行流量
    发表于 08-06 08:43

    TCP协议和UDP协议的区别有哪些?

    TCP协议和UDP协议的区别有哪些?IP地址与MAC地址的区别是什么?ARP协议的工作原理是什么?二层交换机与路由器有什么区别?
    发表于 11-12 06:34

    ARM系列 -- AXI协议资料汇总(一)

    前两条好理解,重点看一下第三条。之前讲过,为了避免死锁,协议规定发送方的VALID不能依赖接收方的READY;反过来,接收方的READY可以等待,也可以不等待发送方的
    发表于 04-08 09:34

    pd充电协议和qc充电协议兼容吗?

    pd充电协议和qc充电协议兼容吗
    发表于 09-26 08:04

    基于CAN的较高层协议和协议

    基于CAN的较高层协议和协议
    发表于 10-18 16:38 21次下载
    基于CAN的较高层<b class='flag-5'>协议和</b>子<b class='flag-5'>协议</b>

    什么是握手信号? 什么是握手协议?

    什么是握手信号? 什么是握手协议? RS -232通行方式允许简单连接三线:Tx、Rx和地线。但是对于数据传输,双方必须对数据定
    发表于 10-14 10:26 5208次阅读

    什么是询问握手身份验证协议

    什么是询问握手身份验证协议 CHAP(询问握手身份验证协议)是用于远程登录的身份验证协议,通过三次握手
    发表于 04-03 16:06 2587次阅读

    基于CAN的较高层协议和协议

    基于CAN的较高层协议和协议
    发表于 12-14 16:39 13次下载

    【理论】通信的硬件层协议和软件层协议

    众所周知通信协议就是一种数据传输的协议规范,从软硬件层面可以分为硬件层通信协议和软件层通信协议,本文通过对通信的硬件层协议和软件层
    发表于 12-05 15:51 8次下载
    【理论】通信的硬件层<b class='flag-5'>协议和</b>软件层<b class='flag-5'>协议</b>

    AXI4协议五个不同通道的握手机制

    AXI4 协议定义了五个不同的通道,如 AXI 通道中所述。所有这些通道共享基于 VALIDREADY 信号的相同握手机制
    的头像 发表于 05-08 11:37 809次阅读
    AXI4<b class='flag-5'>协议</b>五个不同通道的<b class='flag-5'>握手</b>机制

    TCP协议和UDP协议最核心的区别是什么?

    对于TCP协议和UDP协议,大家应该都有所耳闻。TCP协议和UDP协议都工作在传输层,他们的目标都是在应用之间传输数据。
    发表于 06-15 09:37 352次阅读
    TCP<b class='flag-5'>协议和</b>UDP<b class='flag-5'>协议</b>最核心的区别是什么?

    握手协议中的Valid及data打拍技巧

    AXI 协议使用的是valid-ready握手的方式去传输数据。
    发表于 06-27 16:12 852次阅读
    在<b class='flag-5'>握手</b><b class='flag-5'>协议</b>中的<b class='flag-5'>Valid</b>及data打拍技巧

    tcp/ip协议和opc协议对比详解

    TCP/IP协议和OPC协议是两种重要的网络协议,它们在不同的网络层级上运行,并为数据传输和通信提供了不同的功能。
    的头像 发表于 10-21 10:11 612次阅读

    validready信号有哪三种情况

    信号一旦置起就不能置低,直到完成握手,至少传输一周期数据。 协议另外规定:发送方不能通过等待接收方 READY信号来确定置起 VALID 信号的时机。 通俗来讲就是设计发送方逻辑时,不
    的头像 发表于 10-31 15:44 868次阅读
    <b class='flag-5'>valid</b>与<b class='flag-5'>ready</b>信号有哪三种情况

    Valid-Ready握手协议的介绍与时序说明

    "Valid-Ready" 握手协议是一种常用于数字电路中的接口协议,用于控制数据的传输和处理。
    的头像 发表于 12-04 10:37 554次阅读
    <b class='flag-5'>Valid-Ready</b><b class='flag-5'>握手</b><b class='flag-5'>协议</b>的介绍与时序说明