Xilinx 千兆以太网TEMAC IP核用户接口信号

用户接口包括AX14-Stream发送接口和AX14-Stream接收接口,下文简称为用户发送接口和用户接收接口,数据案度可以是易位或16位,其中,8位接口主要针对标准的以太网应用,它利用一个125MHz的时钟产生1Gbps的数据率;当使用16位宽时,可以在不提高时钟频率的条件下将用户接口的数据率提高到2Gbps。

1 用户发送接口功能和信号介绍

(1)用户发送接口信号描述

Vintex-6 FPGA的 TEMAC使用AX14-Stream接口与用户进行数据交互,AXI4-Stream标准的详细信息请参考ARM*AMBA* AXI4-Stream Protocol Specification v1.0。用户通过 AX14-Stream发送接口将数据发送到TEMAC核。需要注意的是,未单独声明的信号都是高电平有效。发送接口全部信号的简要说明如下表1所示。

表1 发送接口情号及描述

(2)用户发送接口信号时序

1)8位宽的用户接口时序

发送时,将数据帧置于tx axis mac_tdata数据接口总线上,并将tw_axis_mac_tvalid置为有效,用户侧等待,直到tx_axis_mac_tready信号有效时发送数据。如果tx_axis_mac_ tready信号一直有效,用户侧持续发送后续字节。

8位案的数据帧的正常发送时序如图1所示,其中,DA为6字节的目的地址:SA为6字节的源地址:L/T为2字节的长度/类型域;FCS为4字节的帧校验序列。所有信号和时钟_mac_ack同步,发送时首先将数据的首字节送入x_axis_mac_tdats总线,同时将w axis mac tvalid置为有效,维持信号的当前状态,等待MAC核发送的tx axis mac tready 信号变为有效。当to axis m_tready 信号有效时,表示MAC可以接收数据,此时用户接口陆续输入后续字节:当xaxis mac tready信号无效时,用户接口停止输入字节,继续等待txaxis mac tready信号变为有效。在图1中,用户接口在tx_axis_mac_tready信号为“1”时,先发送两个字节,等待x_axis_mac_tready信号再次为“1”时,发送后续的字节,帧传输完成的标志是在帧发送到最后一个字节时,t_axis_mac_tlast 置为有效。

图1 数据帧的正常发送时序(8位接口)

2)16位宽的用户接口时序

当选用16位宽的用户接口时,数据帧发送过程与8位宽接口时序基本一致,区别在于选用16位宽接口时增加了tu_axis_mac_tkeep[1:0]总线,用于指示toaxis mac tdata[15:0]总线两字节中有效的字节(16位时每个时钟周期发送两个字节数据),该指示位只对帧尾信号有作用。需要注意的是,tx_axis_mac_tdata[7:0]用于发送16位数据的高字节,tx_axis_ mac_tdata[15=8]用于发送16位数据的低字节,例如,图2中的DA地址为AA-BB-CC-DD EE-FF,tx_axis_mae_tdata[15:0]总线发送的数据时序依次为“BBAA”、“DDCC”和“FFEE”。在正常的帧发送过程中,tx_axis_mac_tkeep[1:0]一直置为“11”,表示tu_axis mac tdata [15:0]总线的两字节都有效:当发送数据帧尾时,tx axis mac tlast置为高,此时xxis mac_tkeep[1:0]合法值可取“11”或“01”,分别表示tx_axis_mac_tdata[15:0]总线的两字节都有效或只有高字节有效。

图2 数据帧的正常发送时序(16位楼口)

(3)IFG和统计功能

用户发送接口除了发送数据信号外,还包括帧间隔控制和发送统计矢量信号,帧间间隔调整和发送统计的相关附属信号如表2所示,

2 帧间间隔调整和发送统计的相关附属信号

1)帧间间隔调整

在半双工工作模式下,MAC核在向物理层传输数据之前,首先进行截波侦听,如是物理链路上有载该,说明有数据正在线路上传输,本端数据必须先等待;当信听到载波消失后,本端数据可以准备发送。CSMA/CD协议规定两帧数据之间必须存在间隔,即InterFrame Gsp(IFG),其间隔时间用于链路上的设备恢复状态,以便顺利接收下一帧数据。在全观工模式下,两端收发接口直接互连,不存在接收和发送信号冲突,此时不需要进行链路的载波侦听,MAC核只需要控制自身的发送接口,在以太网相邻两帧之间插入一定的空闲周期实现InterFrame Gap,MAC核的下一帧数据在空闲周期结束后再发送。

IPG空闲周期数由 tx_ifg_delay的值决定,最小值为IEEE802.3规定的12个发送时钟周期,当帧间间隔调整使能信号Interframe Gap Adjust Enable 置为0或 tx_ifg_delay的值小于12时,IFG的 x_ifg_delay都默认为12。在用户发送接口实现帧阒间隔调整功能的过程如图3所示。MAC核可以通过延迟将x_axis_mae tready信号延迟置为高。使得用户楼口的t_axis_mac_tdana 信号延缓发送数据,达到IFG规定的周期后,将 txaxis mae_trendy信号置为高,发送接口可以继续发送数据帧。

帧间间隔调整功能示例

2)发送统计失量时序

发送数据帧的信息统计由tx_statistics_vector内部的比特位完成,tx_statistics_vaid是其有效的指示信号,发送时序如图4 所示,tostatistics vector[31:0]在最后一帧给出统计矢量,u_statistics_valid为高时有效。

图4 经计矢量的发送时序

统计矢量的比特位定义。VLAN帧发送,帧发送的FCS等内容详见Xilinx LogiCORE IP Virtex-6FPGA Embedded Tri-Mode Ethemet MAC Wrapper v2.3(即UG800).

2 用户接收接口功能和信号介绍

(1)用户接收接口信号描述

AX14-Scream主要面向高速数据流传输,TEMAC核的用户侧采用AX14-Stream 楼口。用户接收接口信号及描述如表3所示。

表3  用户接收接口信号及描述

(2)用户接收接口信号时序

8位宽的接收接口数据帧正常传输时序如图5所示,所有信号和时钟emae_aelk同步。当收到一个数据帧时,对每个有效字节置rx_axis_mac_tvalid为高电平。在接收帧的最后一个字节时,_exis_mat_tlast有效。

图5  接收接口数据帧正常的输时序(8位)

16位宽接口的数据帧接收过程与8位宽时大致相同,区别在于16位宽接收接口增加了xaxis mae tkeep[1:0]总线。用于指示每个时钟周期所接收到的2字节数据是否有效。如图6所示为16位宽的接收接口信号时序图,正常接收过程中,rx_axis_mac tkeep(1:0]一直为*11”,直到rx axis mae tlast 置为高。此时rx axis mae tkeep置为“11”或“01”,图中 DA的顺序为AA-BB-CC-DD-EE-FF.L/T为0x00FE。此处需要注意的是, rn axis mac idata[7:0]接收的是高字节,nxaxis mac tdata[15:8]为低字节,字节内的比特位顺序不变。

图6 16位宽的接收接口信号时序

当rx_axis_mac_tlast 和 rx_axis_mac_tuser都置为有效时表示当前帧中包含错误,如图7所示。

图7 接收错误数据帧的口信号时序

TEMAC核接收到错误帧时,将x_axis_mac_taser 信号置高,接收帧错误的原国包括: FCS错误:

● 帧长度小于64字节的最小值限制:

● 接收到了Jumbo帧,但是Jumbo帧功能未选;

● 接收到了1519~1522字节长的VLAN帧,但是VLAN帧功能未选:

● 需要填充至最小帧长度但未填充;

● 帧接收时的物理搓口指示错误:

● 设定了帧过滤功能,检测到不匹配的数据帧:

● 在1000BASE-X或SGMII模式时,8BVIOB编码错误,

(3)接收统计矢量信号和时序

接收接口的统计矢量信号如表4所示,接收数据帧的信息统计由r_statistics ectar内部的比特位完成,r statistics valid是其有效的指示信号。

表4  接收接口的统计矢量信号

接收接口的统计矢量信号时序如图8所示,x_statistics_vector[27:0]在最后一帧给出统计矢量,当rx_statisties_valid信号置高时有效。

图8 接收接口的统计欠量信号时序

(4)流控功能和接口信号

在全双工模式下,TEMAC核可以通过暂停控制帧的发送和响应来实现流量控制功能。流量控制的需求示例如图9所示,图中右侧TEMAC核的参考时钟比标准的125MHz稍快,左侧TEMAC核的参考时钟比标准的125MHz稍慢,左侧TEMAC栋的接收速率无法匹配上右侧TEMAC核的发送速率,如果没有流量控制机制,将造成左侧 TEMAC核的接收 FIFO溢出。通过引入流控机制,在左侧的FIFO溢出前,通知右侧 TEMAC核停止发送数据,这样可以避免数据帧丢失或损坏。

图9 流量控制的需求示例

1)流量控制的基本原理与暂停控制帧格式

流量控制的基本原理是通过TEMAC核接收端向发送斕发送暂停控制帧,使得数据线路在特定的时间段内停止传输数据。以图9为例,当左侧TEMAC核中的FIFO接近饱和时,左侧TEMAC核可以发送暂停请求来控制流量,当右侧TEMAC核接收到左侧TEMAC核发送的暂停控制帧时,将会在暂师控制帧设定的暂停时间内停止发送数据。暂停控制帧格式如图10所示,在一个有效的暂停控制帧中,其长度为以太网的最小帧长度64字节;其目的地址为保留的组播地址Ox0180C2000001;源地址为发送暂停控制帧端口的48位MAC地址:MAC控制类型域为0x8808,表明该帧为暂停控制帧:暂停控制帧操作码为0x0001(即进行PAUSE操作);暂停时间长度为2字节,它是暂停发送方请求对方停止发送数据的时间长度,时间单位是pause_quantem(为当前速率下传输512位数据所用的时间,如1Gbps时为512ms),Pwuse Time 的范围值为0x0000-0xFFFF,通常设为0xFFFF:剩余字段填克为0(填充以达到最小帧长度),随后接FCS 域。

图10 暂停控制帧格式

2)流控制接口信号

表5描述了流控接口信号。

表5流控口信号及描述

3)流量控制的进行机制

(1)暂停控制帧的发送。当TEMAC核被配置为支持流控帧传输时,pause val总线用于传输暂停值,用户通过将pause rtq信号置为高来启动流擦帧的发送,暂停请求时序如图11所示。当对TEMAC核发出暂停请求时,若当前发送接口处于空闲状态,即未发送数据帧时,暂停控制帧立即被发送,反之,如果发送端在发送暂停请求的时刻处于发送忙状态,必须在当前帧发送完成后,暂停控制帧才被允许发送。

图23暂修请求时序

在暂施控制帧格式中,目的地址为IEEE802.3定义的多播地址,这样使得任何具有流控功能的TEMAC核都能响应:源地址为可配置的暂停控制帧MAC地址:paus0_req置高有效时,从pause_val[15:0]信号采样得到的数值被编码写入TEMAC控制参数段,用于选择暂停时间间隔(以pause_qeantum为单位时间》,

当TEMAC核被配置为不支持流控帧传输时,用户可以不利用TEMAC核内部自带的暂停控制帧发送功能。而采用通过用户逻辑连接到AX14-Stream发送接口实现,利用 AX14-Stream 後口直接发送暂停控制帧,任何类型的控制帧都可以通过发送端 AX14-Stream接口进行发送,其传输过程和以太网标准数据帧是一样的。

(2)暂停控制帧的接收。TEMAC核对接收到的数据帧都要进行校验,包括帧格式,帧校验及帧长度,若接收到的数据帧无法满足校验要求,则通过将naxis me tuser信号置高。指示接收的帧发生错误。当TEMAC核配置为支持暂停控制帧响应时, TEMAC核对接收到的正确数据帧执行相关帧格式解析功能,

a.目的MAC地址域是IEEE 802.3定义的控制多播地址(01-80-C2-00-00-01)或用户自配置的智停控制帧MAC地址;

b. 长度/类型城与MAC控制类型码匹配;

c. 接收帧的操作码(OPCODE)与以太网MAC控制操作码匹配。

如果以上3步匹配过程都正确,且帧长度正好是64字节,则表明该帧为暂停控制帧,其16位的MAC控制参数将作为pause_quantum的数目决定传输超迟时间,传输延迟可以通过对 AX14-Stream 楼口的t区_axis_mac_tready信号一直置为无效来实现,延缓数据渣的发送,等到暂停时段结束后再摄mas treadly置为有效。这样用户才可以再向MAC发送数据,从而达到流量控制的目的。对于上述3步匹配过程不全正确的接收帧,可以当作错误帧直接丢弃,或由用户逻辑负责解析、响应或丢弃。

当TEMAC核配置为不支持暂停控制帧响应时,可采用用户逻辑实现流控帧的识别和解析功能:对接收正确的帧进行3步匹配过程,若匹配正确,则接收到的帧为暂停控制帧,执行相应的暂停操作;若匹配不都正确,表明接收帧是非暂停控制帧,执行其他操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3031080.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Redis20种使用场景

Redis20种使用场景 1缓存2抽奖3Set实现点赞/收藏功能4排行榜5PV统计(incr自增计数)6UV统计(HeyperLogLog)7去重(BloomFiler)8用户签到(BitMap)9GEO搜附近10简单限流11全局ID12简单分…

基于MWORKS 2024a的MIMO-OFDM 无线通信系统设计

一、引言 在终端设备和数据流量爆发式增长的今天,如何提升通信系统容量、能量效率和频谱利用率成为5G通信的关键问题之一。大规模天线阵列作为5G及B5G无线通信关键技术通过把原有发送端天线数量提升一个或多个数量级,实现波束聚集、控制波束转向&#x…

深入学习指针3

目录 前言 1.二级指针 2.指针数组 3.指针数组模拟二维数组 前言 Hello,小伙伴们我又来了,上期我们讲到了数组名的理解,指针与数组的关系等知识,那今天我们就继续深入到学习指针域数组的练联系,如果喜欢作者菌生产的内容还望不…

OmniPlan Pro 4 for Mac中文激活版:项目管理的新选择

OmniPlan Pro 4 for Mac作为一款专为Mac用户设计的项目管理软件,为用户提供了全新的项目管理体验。其直观易用的界面和强大的功能特性,使用户能够轻松上手并快速掌握项目管理要点。 首先,OmniPlan Pro 4 for Mac支持自定义视图,用…

Java框架精品项目【用于个人学习】

源码获取:私聊回复【项目关键字】获取 更多选题参考: Java练手项目 & 个人学习等选题参考 推荐菜鸟教程Java学习、Javatpoint学习 前言 大家好,我是二哈喇子,此博文整理了各种项目需求 此文下的项目用于博主自己学习&#x…

Kafka应用Demo:生产者自定义消息分区方法

背景 没有设置消息键时Kafka默认的分区算法是轮循,设置了消息键将按消息键的hashcode计算分区值。这种方法可以保证未设置消息键时各分区负载均衡。也可以保证设置消息键后的消息放到同一个分区发送,以保证消息按顺序消费。 但在某些业务场景下&#xff…

Java练手项目 个人学习等选题参考

难度系数说明: 难度系数用来说明项目本身进行分析设计的难度 难度系数大于1的项目是非常值得反复学习的,从项目中成长 前言 大家好,我是二哈喇子,此博文整理了各种项目需求 要从本篇文章下的项目中学习的思路: 用的…

大型动作模型 (LAM):AI 驱动的交互的下一个前沿

1.概述 现在人工智能中几个关键的领域,包括生成式人工智能(Generative AI)、大型动作模型(Large Action Models, LAM)、以及交互式人工智能(Interactive AI)。以下是对这些概念的简要解释和它们…

​​​【收录 Hello 算法】5.1 栈

目录 5.1 栈 5.1.1 栈的常用操作 5.1.2 栈的实现 1. 基于链表的实现 2. 基于数组的实现 5.1.3 两种实现对比 5.1.4 栈的典型应用 5.1 栈 栈(stack)是一种遵循先入后出逻辑的线性数据结构。 我们可以将栈类比为桌面上的一摞盘子…

hypack如何采集多波束数据?(上)

多波束设备有3种:多波束阵列,比如Seabat T50P;相干声纳,比如EdgeTeck 6205;多个单波束并列,比如Ross Sweep System,见下图。 辅助传感器主要有:罗经(提供航向&#xff09…

ubuntu server 22.04 安装docker、docker-compose

ubuntu server 22.04安装docker有两种方式,第一种是使用ubuntu镜像源的软件包进行安装,第二种使用官方GPG密钥手动添加Docker存储库方式进行安装,两种方式都可以,但第二种方式略复杂,这里介绍第一种比较简单的安装方式…

JavaScript基础(六)

break & continue continue跳出本次循环&#xff0c;继续下面的循环。 break跳出终止循环。 写个简单的例子: <script> for (var i1; i<5; i){ if (i3){ continue; } console.log(i); } </script> 结果就是跳过i等于3的那次循环&#xff0c;而break: f…

XWiki 服务没有正确部署在tomcat中,如何尝试手动重新部署?

1. 停止 Tomcat 服务 首先&#xff0c;您需要停止正在运行的 Tomcat 服务器&#xff0c;以确保在操作文件时不会发生冲突或数据损坏&#xff1a; sudo systemctl stop tomcat2. 清空 webapps 下的 xwiki 目录和 work 目录中相关的缓存 删除 webapps 下的 xwiki 目录和 work …

线程同步--互斥锁,读写锁

线程同步 基本概念 线程的能力在于能够方便地通过全局变量或共享内存来交换信息&#xff0c;但这也带来了并发控制的复杂性&#xff0c;主要表现在如何安全地管理多个线程对共享资源的访问。这里涉及到几个关键的概念和技术&#xff1a; 临界区&#xff08;Critical Section…

Vue面试经验2

Vue 你说你在vue项目中实现了自定义指令&#xff0c;如何实现 全局指令在main.js入口文件中实现 使用方法&#xff1a;v-指令名称 每个钩子函数都有两个参数&#xff08;ele,obj&#xff09; ele:绑定指令的元素 obj:指令的一些信息&#xff08;比如绑定指令的值&#xff0c…

深度学习之前馈神经网络

1.导入常用工具包 #在终端中输入以下命令就可以安装工具包 pip install numpy pip install pandas Pip install matplotlib注&#xff1a; numpy是科学计算基础包 pandas能方便处理结构化数据和函数 matplotlib主要用于绘制图表。 #导包的代码&#xff1a; import numpy as n…

攻防世界(CTF)~web-supersqli(详细解题思路)

题目介绍 题目描述“随便注” 先看一下是否存在注入 判断闭合方式 输入1’ and 11-- -正常回显 输入1and 12-- -无回显,确认是单引号闭合 看一下列数 输入1 order by 2-- - 有回显 输入1 order by 3-- - 报错&#xff0c;由此判断两列 使用union联合注入发现select被过滤了&a…

MyBatis——使用MyBatis完成CRUD

CRUD&#xff1a;Create Retrieve Update Delete 1、insert <insert id"insertCar">insert into t_car(id,car_num,brand,guide_price,produce_time,car_type)values(null,1003,五菱宏光,30.0,2020-09-18,燃油车); </insert> 这样写显然是写死的&#…

python数据分析——pandas数据结构1

参考资料&#xff1a;活用pandas库 1、创建数据 &#xff08;1&#xff09;创建Series 在pandas中&#xff0c;series是一维容器&#xff0c;seires中的数据类型&#xff08;dtype&#xff09;必须相同。创建series最简单的方法是传入一个python列表。如果传入的是混合类型的…

[ES] ElasticSearch节点加入集群失败经历分析主节点选举、ES网络配置 [publish_address不是当前机器ip]

背景 三台CentOS 7.6.1虚拟机&#xff0c; 每台虚拟机上启动一个ElasticSearch 7.17.3&#xff08;下面简称ES&#xff09;实例 即每台虚拟机上一个ES进程&#xff08;每台虚拟机上一个ES节点&#xff09; 情况是&#xff1a; 之前集群是搭建成功的, 但是今天有一个节点一…