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

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

3天内不再提示

设置AMD以太网IP核的Pause帧处理

XILINX开发者社区 来源:XILINX开发者社区 2023-10-18 09:15 次阅读

目前 AMD以太网 IP 核,如软核 10G/25G,40G/50G 或者硬核 CMAC,MRMAC,DCMAC 等等,都采用的是同一种 Pause 帧处理方式。

这篇文章主要介绍了用户应当如何设置以太网 IP 的相关参数,使其能够有效处理以太网的 Pause 帧。

按照 IEEE802.3 协议,一个 Pause 帧是一个最小长度,即 64bytes 长的以太网帧,目标地址(DA)为一个广播地址 01-80-C2-00-01,Type 为 8808,Opcode 为 0001(Global)或者 0101(Priority)。具体细节请参考 IEEE802.3 协议。

PFC 结构如下所示:

a45d6d10-6d00-11ee-939d-92fbcf53809c.png

AMD 以太网 IP,可以灵活的设置这些以太网 Pause 帧参数。例如通过设置如下 TX 侧的参数,包括 GPP(Global Pause Packet)的目标地址(DA),Ether Type,Opcode 等,这样 IP 会产生你所期望的任意数据包,作为你要的 Pause 帧发送出去。

a4650412-6d00-11ee-939d-92fbcf53809c.png

同样,IP 也需要在 RX 侧做相应的设置,这样才能识别出 Pause 帧并进行处理。接下来重点介绍,如何在 RX 侧设置 Pause 帧的处理。

首先,IP 遵循如下 3 个 Steps,对收到的以太网帧进行处理:

Step1,如果通过了,则该以太网帧被认为是控制包,进入 Step2,并且不再出现在用户数据侧显示;只有将 ctl_rx_forward_control 设为 1 的时候,即使是控制包,IP 仍然会将其跟其它数据包一起输出到 RX 用户侧;如果 Step1 没通过,则该以太网帧为普通 RX 数据包。

Step2,如果通过了,则该以太网帧被确认为全局 Pause 帧;如果没通过,则进入 Step3。

Step3,如果通过了,则该以太网帧被确认为 Priority Pause 帧;如果没通过,则不是 Pause 帧,为其它类型控制帧。

a479fb7e-6d00-11ee-939d-92fbcf53809c.png

也就是说,这里有四种特殊的以太网帧,分别是两种控制包 Global Control Packet(gcp),Priority Control Packet(pcp),和两种 Pause 帧 Global Pause Packet(gpp),Priority Pause Packet(ppp)。

IP 需要首先判断收到的是否是控制包(即 gcp 或 pcp),如果是,则先判断是否是 Global Pause 帧,再判断是否是 Priority Pause 帧。这几步判断,IP 都给了相应的参数,供用户设置,每一个条件,用户都可以选择是否要作检查。

文档里给出了 IP 是如何做判断的相关代码,如下:(由于某些新的 IP 文档尚未完善,如 DCMAC,如果缺失这部分内容,也是可以参考其它 IP 文档里的这一段内容)。

a48327b2-6d00-11ee-939d-92fbcf53809c.png

接下来,选取 Step2 中的两句,具体解释下,如何理解这个代码。其它部分可以类推。

a49ac322-6d00-11ee-939d-92fbcf53809c.png

先来看图中第二句,判断该以太网数据包为 Global Pause 帧(gpp),首先要满足 Step1,然后是由上图中第二句代码(assign global_pause_packet)后面的所有项“与”(&&)起来的,就是说要满足后面所有的项,分别是 DA 符合,SA 符合,Etype 符合,Opcode 符合,并且使能了该功能(即设置ctl_rx_enable_gpp=1)。

再来看第一句,Opcode 符合(assign opcode_match_gpp),是由后面两个条件“或”起来。这里要注意,为什么是或,第一个条件是该功能使能取反,也就是说,如果你设置使能不打开的话,这个条件是直接满足的;这就意味着,不打开这个使能表示代码不检测这个条件,任意数据都会被当作满足条件,所有数据包都会被认作 Pause 帧;使能打开后,才会要求后面的第二个条件符合才行,第二个条件即 RX 收到的数据包的该段数据,满足你设置的 ctl_rx_opcode_gpp,按照协议你应当将其设置为 0001。

总之,在设置完这些 Pause 帧相关参数后,就可以使用以太网 IP 的流控功能了。通过 stat_tx_pause 确认 IP 是否成功发出 Pause 帧,并通过 stat_rx_pause 确认 IP 是否能收到 Pause 帧。如果仍然无法成功接收到 Pause 帧,不要忘了将 ctl_rx_forward_control 设为 1,并在用户侧接收数据的地方,检查 IP 实际收到的数据包,并逐条对照之前的。






审核编辑:刘清

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

    关注

    40

    文章

    5467

    浏览量

    172893

原文标题:开发者分享|设置 AMD 以太网 IP 核的 Pause 帧处理

文章出处:【微信号:gh_2d1c7e2d540e,微信公众号:XILINX开发者社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    什么是Pause以太网MAC的pause流控介绍

    Pause是一种报文类型。在IEEE802.3协议中规定中,pause是一种控制,用于控制数据流停止发送,在MAC 发送侧产生
    的头像 发表于 09-15 10:48 7351次阅读
    什么是<b class='flag-5'>Pause</b><b class='flag-5'>帧</b>?<b class='flag-5'>以太网</b>MAC的<b class='flag-5'>pause</b>流控介绍

    以太网中的格式及不同端口速率下的quanta值介绍

    PAUSE以太网在全双工模式下,MAC控制子层发出的流量控制
    的头像 发表于 02-29 10:04 2706次阅读
    <b class='flag-5'>以太网</b>中的<b class='flag-5'>帧</b>格式及不同端口速率下的quanta值介绍

    求助,怎样控制altera的以太网IP呢?

    本人想使用altera的以太网IPtse,发现Quartus里面并没有告诉怎样控制这个。请问大家是怎样控制这个
    发表于 01-22 14:55

    使用10G以太网MAC IP

    您好,如果我想使用10G以太网MAC IP,那么可用的10G支持板。问候维诺德库马尔
    发表于 04-02 10:08

    vivado三速以太网IP怎么用

    vivado的三速以太网IP接口太多了,完全不知道应该怎么用,哪位大佬能发我一份设计或者仿真吗?简单的就好
    发表于 04-15 12:58

    莱迪思和Flexibilis推出FPGA以太网交换IP

    莱迪思半导体公司和FLEXIBILIS Oy日前宣布了即可获取Flexibilis以太网交换(FES)IP。三速(10Mbps/100Mbps/1Gbps)FES IP
    发表于 06-16 08:44 622次阅读
    莱迪思和Flexibilis推出FPGA<b class='flag-5'>以太网</b>交换<b class='flag-5'>IP</b><b class='flag-5'>核</b>

    以太网结构

    以太网结构
    发表于 01-21 12:00 4次下载

    基于Avalon总线的非标准以太网控制器IP设计_薛毅

    基于Avalon总线的非标准以太网控制器IP设计_薛毅
    发表于 03-19 11:33 1次下载

    千兆以太网IP接口和万兆以太网IP接口

    对于IP输出数据的解析最好的工具就是其自带的仿真文件,里面既将接收的数据进行了解析,又将发送给IP的数据进行了封装,这对于了解数据结构和协议是十分有帮助的,
    发表于 07-09 14:07 3921次阅读

    万兆以太网IP SAN的融合

    IP SAN存储融合到万兆以太网络中,将大大增加了IP SAN网络的通信带宽,提高主机访问存储的速度,同时由于以太网灵活易实施的特点,万兆
    的头像 发表于 01-24 15:16 3277次阅读

    Xilinx平台以太网接口(一)TCP/IP基础

    在完成以太网通信实验之前,必须要对以太网基础知识进行了解。时间充裕的可以看看《图解TCP/IP》作为扫盲。本文重点对以太网结构进行介绍。
    的头像 发表于 02-19 17:54 2455次阅读
    Xilinx平台<b class='flag-5'>以太网</b>接口(一)TCP/<b class='flag-5'>IP</b>基础

    深入探究以太网PAUSE处理流程及长距离链路控制阈值

    在产生PAUSE时,典型的实现不会尝试猜测PAUSE的特定持续时间,而是依赖于X-ON和X-OFF的行为,这种方法必须将PAUSE中Ti
    发表于 03-11 11:32 2433次阅读
    深入探究<b class='flag-5'>以太网</b><b class='flag-5'>PAUSE</b><b class='flag-5'>帧</b><b class='flag-5'>处理</b>流程及长距离链路控制阈值

    以太网结构是怎样的

    以太网(Ethernet Frame)是以太网(Ethernet)协议用于在局域(LAN)中传输数据的基本单位。理解以太网
    的头像 发表于 10-08 10:00 1476次阅读

    以太网格式和功能详解

    以太网(Ethernet Frame)是以太网(Ethernet)协议用于在局域(LAN)中传输数据的基本单位。理解以太网
    的头像 发表于 10-08 10:03 2444次阅读

    ALINX发布100G以太网UDP/IP协议栈IP

    ALINX近日宣布,基于AMD 100G以太网MAC IP,成功开发出全新的100G以太网UDP/IP协议栈
    的头像 发表于 01-07 11:25 295次阅读