Aurora 8B/10B

目录

  • 1. Overview
  • 2. Feature List
  • 2. Block Diagram
  • 3. PDU Transmission Procedure
    • 3.1. User Interface
      • Framing Interface
      • Streaming Interface
    • 3.2. Clock Compensation
    • 3.3. Aurora 8B/10B Frame Gen
    • 3.4. 8B/10B Transmission Code
  • 4. PDU Reception Procedure
  • 5. Flow Control
    • 5.1. User Flow Control(UFC)
    • 5.2. Native Flow Control(NFC)
  • 6. Status and Control Ports
  • 7. Transceiver Interface
  • 8. Clock and Reset Ports

本篇blog将介绍由xilinx开发的Aurora 8B/10B链路层协议,并介绍aurora ip使用。

pg046 - Aurora 8B/10B v11.1 LogiCORE IP Product Guide
sp002 - Aurora 8B/10B protocol spec
ug476 - 7 Series FPGAs GTX GTH TransceiversUser Guide
FPGA高速接口设计指南 - 知乎
Xilinx平台Aurora IP介绍(汇总篇)- CSDN
一天上手Aurora 8B/10B IP核----汇总篇
Aurora 8B/10B IP核(一)——Aurora概述及数据接口 - 电子发烧友
Xilinx FPGA平台GTX简易使用教程(汇总篇)- CSDN
AURORA 8B/10B IP 核详解- CSDN


1. Overview

Aurora 8B/10B协议是一个用于在点对点串行链路间移动数据的可扩展轻量级链路层协议(由Xilinx开发提供)。

该协议能够方便对接GT等高速收发器,在AURORA的基础上可以运行诸如Ethernet和TCP/IP等常用逻辑层协议,或其他自定协议,可扩展性高。

Aurora 8B/10B常用于FPGA之间通信,可应用在多个GT收发器之间传输数据,最多可实现16个GT(包括GTX、GTP、GTH等)。可配置成单工or全双工模式。吞吐量可从480Mbit/s扩展到84.48Gbit/s,取决于GT的数量及线速率。

下图是典型的基于Aurora 8B/10B协议的全双工串行通信流程图。两个aurora channel cores通过多组lanes连接,实现相互通信。每组lane表示一根串行发送数据线和一个串行接收数据线,常说的GTH4X或GTH8X指的就是4组lanes或8组lanes。

在这里插入图片描述

Xilinx的Aurora 8B/10B IP核可以在连接到另一个aurora之后自动初始化链路,并将数据以frame或stream的形式收发。传输的用户数据(Protocol Data Units,PDU)可以是任意大小,aurora会对其进行打包,并通过8B/10B规则进行重编码,以检测错误。如果用户不传输数据,aurora也会发送IDLE数据以保持通信、防止电子干扰。同时可通过流量控制(Flow control)对数据传输速率进行控制。

8B/10B编码是将8bit数编码成10bit数进行传输,以尽量平衡0和1的个数以实现DC平衡,同理还有64B/66B编码。

如果aurora建链失败,或是数据检验错误,将会进行复位并重新建链

2. Feature List

Aurora 8B/10B协议定义了以下内容:

物理层接口:电气特性、时钟编码、符号编码(symbol coding)

初始化与错误处理:定义了通讯双方通讯前的初始化操作,同样定义了通讯双方在出现错误时的操作(复位和重建链)

数据分段(data striping):定义了通讯数据如何映射到多个通道

链路层(link layer):链路层定义了用户数据的封装方式(帧头、帧尾、pad等)

流控(flow control):流控机制解决通信双方速率不一致所带来的缓存不足的问题

Aurora 8B/10B协议未定义的内容:

错误指示和恢复:Aurora 8B/10B协议没有定义检测用户pdu错误的机制,也没有定义在8B/10B编码之外从错误中恢复的机制

数据交换:Aurora 8B/10B协议没有定义寻址方案,因此不能支持链路层复用或交换

2. Block Diagram

Aurora 8B/10B IP核如下图所示

在这里插入图片描述
其中

● GT Transceiver:Aurora 8B/10B 协议的物理层实现。千兆比特高速收发器(Gigabit Transceiver, GT),用于大容量高速率数据收发,其线速率从500Mb/s到13.1Gb/s不等。

Aurora 8B/10B核例化时自动调用所需的GT接口,每个GT对应1组lane,其内部的物理编码子层(Physical Coding Sublayer,PCS)可实现Aurora协议所需的IDLE序列产生、8B/10B编解码、lane状态监视等功能。而物理媒体连接子层(Physical Medium Attachment, PMA)可将10bit数据串行差分发送出去,或是将收到的串行数据解串对齐形成10bit数据。

● Lane Logic: 每条Lane都包含一个GT,每个Lane驱动1个GT,可实现处理编解码及错误检测等。

● Global Logic: 执行通道初始化的绑定和验证阶段。 可生成Aurora协议所需的随机空闲字符,并监控所有lane逻辑模块的错误。

● RX User Interface: 接收端用户接口,使用AXI4-Stream格式将数据从channel传到用户端,并可进行接收流控。

● TX User Interface: 发送端用户接口,使用AXI4-Stream格式将数据从用户端传到channel,并进行发送流控功能。核中具有标准时钟补偿(Clock Compensation)模块,可实现时钟补偿字符的周期性传输。

3. PDU Transmission Procedure

用户层接口是基于AMBA AXI4-Stream格式进行交互的,也可添加流控功能。

启用以下接口需要在IP核中设置

高级可拓展接口 4.0 - 流传输(Advanced eXtensible Interface 4 - Stream, AXI4-Stream)

3.1. User Interface

Framing Interface

可以选择帧格式对用户数据封装,接口如下

Group Signal Direction Width(bits) Clock Domain Description
USER_DATA_S_AXI_TXs_axi_tx_tdatainput8nuser_clk发送数据。此处n表示待发送数据的字节数,且8n=Lanes个数×Lane位宽
s_axi_tx_treadyoutput1user_clk
s_axi_tx_tlastinput1user_clk
s_axi_tx_tkeepinputnuser_clk指示数据中哪个字节是有效的,仅在last拉高时该数据有效
s_axi_tx_tvalidinput1user_clk
USER_DATA_M_AXI_RX m_axi_rx_tdataoutput8nuser_clk
m_axi_rx_tlastoutput1user_clk
m_axi_rx_tkeepoutputnuser_clk指示数据中哪个字节是有效的,仅在last拉高时该数据有效
m_axi_rx_tvalidoutput1user_clk

对于用户待发送的数据PDU,核通过AXI4-Stream协议获取PDU,获取过程中s_axi_tx_tvalid为高表示数据有效,用户可将其拉低暂停交互,但Aurora IP会自动插入IDLE字符,如下图所示。

在这里插入图片描述

Streaming Interface

流式接口去掉了last和keep信号,该接口下Aurora 核将进行流水传输,始终可用于写入。当s_axi_tx_tvalid拉低则Aurora IP会自动插入IDLE字符,

Group Signal Direction Width(bits) Clock Domain Description
USER_DATA_S_AXI_TXs_axi_tx_tdatainput8nuser_clk发送数据。此处n表示待发送数据的字节数,且8n=Lanes个数×Lane位宽
s_axi_tx_treadyoutput1user_clk
s_axi_tx_tvalidinput1user_clk
USER_DATA_M_AXI_RX m_axi_rx_tdataoutput8nuser_clk
m_axi_rx_tvalidoutput1user_clk

3.2. Clock Compensation

同时,Aurora核也可能会在获取PDU过程中将s_axi_tx_tready拉低,以插入时钟补偿(Clock Compensation),每个lane每发送10000bytes就要发送12byte的时钟补偿符号。

也就是说,如果lane位宽是2bytes,则获取PDU达到5000个user_clk,就要插入6个user_clk进行时钟补偿。如果lane位宽是4bytes,则获取PDU达到2500个user_clk,就要插入3个user_clk进行时钟补偿,

在这里插入图片描述

3.3. Aurora 8B/10B Frame Gen

当Aurora核采样到s_axi_tx_tlast就知道PDU发送完毕,根据s_axi_tx_tkeep的值对PDU修正,之后将PDU转化成Aurora 8B/10B数据帧。过程如下:

在这里插入图片描述

  1. Padding:如果形成的帧是奇数个bytes,则在PDU末尾加入1byte的pad数据,数值为0x9C

  2. Link Layer Encapsulation:在帧头(Start Of Frame, SOF)处填入2bytes的起始通道协议码组(Start of Channel Protocol code group, SCP),再在帧尾(End Of Frame, EOF)处填入2bytes的终止通道协议码组(End of Channel Protocol code group, ECP),对于中途s_axi_tx_tvalid拉低的情形,则插入2bytes空闲码组(IDLE code group)。这一步形成的叫 链路层数据(Link Layer Payload)

  3. 8B/10B Encoding:之后将数据送入GT高速接口进行8B/10B编码,并将每个byte数据按照一个表格重编码成10bit的数据。8B/10B编码尽量实现0、1平衡,并使数据有足够多的跳变以回复时钟。

  4. Serialization and Clock Encoding:再将Aurora 8B/10 数据帧进行串行化和时钟编码,差分发送

3.4. 8B/10B Transmission Code

4. PDU Reception Procedure

5. Flow Control

双方在通信的时候,如果发送方的发送速率太快,会导致接收方处理不过来,如果接收方缓存FIFO满了发送方还在疯狂发送数据,就会导致数据丢失。因此流控的意义就在于控制发送方的发送速率,让接收方与发送方处于一种动态平衡。

目前支持的流控机制有两种:Native Flow Control(本地流控);User Flow Control(用户流控)。

5.1. User Flow Control(UFC)

5.2. Native Flow Control(NFC)

本地流控机制是,用户通过NFC接口可以控制接收方Aurora 核通过TX向发送方发送NFC数据,以控制发送方发送IDLE多少拍,以防止接收方的RX FIFO溢出。

所以用户端需要编写监控模块,输入是RX FIFO状态,输出是NFC控制数据,连接到Aurora 核的NFC接口。注意该模块需要考虑检测RX FIFO状态,到发送方响应NFC这个过程的延迟有多久。

接口如下

Group Signal Direction Width(bits) Clock Domain Description
NFC_S_AXI_TXs_axi_nfc_tx_tdatainput4user_clk指定发送方要发送的IDLE时钟周期个数
s_axi_nfc_tx_treadyoutput1user_clk
s_axi_nfc_tx_tvalidinput1user_clk
NFC_M_AXI_RX m_axi_nfc_rx_tdataoutput8nuser_clk获取发送方要发送的IDLE时钟周期个数
m_axi_nfc_rx_tvalidoutput1user_clk

其中s_axi_nfc_tx_tdata数值和IDLE周期个数关系如下表

在这里插入图片描述
需要说明的是,当接收方收到用户的NFC请求,但又有PDU需要发送给发送方时,NFC优先发送,即优先级:NFC > PDU。如下图所示

在这里插入图片描述

当发送方收到接收方发来的NFC请求时,会解析NFC Codes使s_axi_tx_tready拉低。如下图所示需要插入2拍IDLE,故拉低2拍。

在这里插入图片描述

如果是immediate NFC mode就如同上图那样,发送端一旦解析完毕NFC请求后,立刻拉低s_axi_tx_tready。如果是completion mode,发送端就会在解析完毕NFC请求后,待当前PDU发送完毕后,再发IDLE。

6. Status and Control Ports

7. Transceiver Interface

8. Clock and Reset Ports

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里云无影云电脑/云桌面收费价格表_使用申请方法

阿里云无影云电脑配置具体收费价格表,4核8G企业办公型云电脑可以免费使用3个月,无影云电脑地域不同价格不同,无影云电脑费用是由云桌面配置、云盘、互联网访问带宽、AD Connector 、桌面组共用桌面session 等费用组成,阿里云百科分…

最小二乘拟合圆柱

目录 一、算法原理二、代码实现 本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、算法原理 由圆柱面的几何特性可得,圆柱面上的点到其轴线的距离恒等于半径 r 0 r_0 r0​,…

【脚踢数据结构】常见排序算法

(꒪ꇴ꒪ ),Hello我是祐言QAQ我的博客主页:C/C语言,Linux基础,ARM开发板,软件配置等领域博主🌍快上🚘,一起学习,让我们成为一个强大的攻城狮!送给自己和读者的…

让你专注于工作的电脑桌面日程提醒软件

在现代职场中,上班族们常常在繁忙的工作中会遇到各种各样的事情干扰。比如,当我们专注于完成重要的报告时,却又有同事来询问问题;在准备去会议事项时,手机却突然收到了一系列的短信和通知。这些干扰不仅浪费了我们的时…

寄存柜让物品存储变得更简单

寄存柜是一种提供临时性物品寄存服务的设备,通常用于超市、商场、机场、火车站、学校、影院、体育馆等公共场所为用户提供便捷的寄存服务。 寄存柜的种类: 1.行李寄存柜:专门用于旅行者寄存行李和物品的柜子,通常位于机场、火车站…

每天一道leetcode:127. 单词接龙(图论困难建图广度优先遍历)

今日份题目&#xff1a; 字典 wordList 中从单词 beginWord 和 endWord 的 转换序列 是一个按下述规格形成的序列 beginWord -> s1 -> s2 -> ... -> sk&#xff1a; 每一对相邻的单词只差一个字母。 对于 1 < i < k 时&#xff0c;每个 si 都在 wordList 中…

PSP - 开源可训练的蛋白质结构预测框架 OpenFold 的环境配置

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/132334671 Paper: OpenFold: Retraining AlphaFold2 yields new insights into its learning mechanisms and capacity for generalization Open…

在思科(Cisco)设备上配置 DHCP 服务器

DHCP广泛用于LAN环境中&#xff0c;从集中式服务器动态分配主机IP地址&#xff0c;从而显着减少IP地址管理的开销。DHCP 还有助于节省有限的 IP 地址空间&#xff0c;因为不再需要将 IP 地址永久分配给主机&#xff0c;只有连接到网络的主机才会使用 IP 地址。DHCP 服务器将路由…

“维度削减+逻辑回归”:如何使用PCA大幅提升乳腺癌的预测成功率?

一、引言 乳腺癌是女性中最常见的恶性肿瘤之一&#xff0c;也影响着全球范围内许多人们的健康。据世界卫生组织&#xff08;WHO&#xff09;的数据&#xff0c;乳腺癌是全球癌症发病率和死亡率最高的肿瘤之一&#xff0c;其对个体和社会的危害不可忽视。因此&#xff0c;早期乳…

ShowMeBug CEO李亚飞受邀参加深圳青年创新创业系列沙龙电子信息专场

7月13日下午&#xff0c;由深圳市科技交流服务中心&#xff08;深圳市科技专家委员会办公室&#xff09;主办&#xff0c;深圳新一代产业园承办的“2023深圳青年创新创业系列沙龙——电子信息专场”活动举行。ShowMeBug CEO李亚飞受邀参加此次活动。 深圳市科学技术协会党组成员…

pdf格式文件下载不预览,云存储的跨域解决

需求背景 后端接口中返回的是pdf文件路径比如&#xff1a; pdf文件路径 &#xff08;https://wangzhendongsky.oss-cn-beijing.aliyuncs.com/wzd-test.pdf&#xff09; 前端适配是这样的 <ahref"https://wangzhendongsky.oss-cn-beijing.aliyuncs.com/wzd-test.pdf&…

【仿写tomcat】二、扫描java文件,获取带有@WebServlet注解的类

tomcat仿写 项目结构扫描文件servlet注解map容器servlet工具类启动类调用 项目结构 扫描文件之前当然要确定一下项目结构了&#xff0c;我这里的方案是tomcat和项目同级 项目的话就仿照我们平时使用的结构就好了&#xff0c;我们规定所有的静态资源文件都在webApp目录下存放…

qiiuzhiji4

本篇是从慧与离职后到2023年8月21日这段时间的经历 2023/7/31至2023/8/21 本篇初次写于2023年8月21日 从慧与离职后基本上就是在专心找工作了&#xff0c;但是有在这段时间找工作经历的人都明白&#xff0c;IT行业不复以往了。尤其是对于我这样的普通二本学历的人来说&#xff…

Ubuntu系统下搭建QtCreator开发环境详细过程(Qt简介;Linux下安装QtCreator)

关于Qt的相关介绍&#xff0c;可以参考QT从入门到实战x篇&#xff0c;Qt 5.9 C开发指南&#xff0c;对于重复部分&#xff0c;本栏目不做详细介绍。关于Linux的基础&#xff0c;本人将重新整理一个栏目&#xff0c;就叫Linux基础吧&#xff0c;有需要的可以后期关注下。 文章目…

发布python模仿2023年全国职业的移动应用开发赛项样式开发的开源的新闻api,以及安卓接入案例代码

python模仿2023年全国职业的移动应用开发赛项样式开发的开源的新闻api&#xff0c;以及原生安卓接入案例代码案例 源码地址:keyxh/newsapi: python模仿2023年全国职业的移动应用开发赛项样式开发的开源的新闻api&#xff0c;以及安卓接入案例代码 (github.com) 目录 1.环境配…

Fast DDS (2)

1、结构&#xff1a; Fast DDS的架构如下图所示&#xff0c;可以看到以下不同环境的层模型&#xff1a; 应用层&#xff1a;利用Fast DDS API 在分布式系统中实现通信的用户应用程序。Fast DDS层&#xff1a;DDS 通信中间件的稳健实现。它允许部署一个或多个 DDS 域&#xff…

leetcode303. 区域和检索 - 数组不可变(java)

前缀和数组的应用 区域和检索 - 数组不可变题目描述前缀和数组代码演示 区域和检索 - 数组不可变 难度 - 简单 原题链接 - 区域和检索 - 数组不可变 题目描述 给定一个整数数组 nums&#xff0c;处理以下类型的多个查询: 计算索引 left 和 right &#xff08;包含 left 和 righ…

Python支持下最新Noah-MP陆面模式站点、区域模拟及可视化分析技术教程

详情点击公众号链接&#xff1a;Python支持下最新Noah-MP陆面模式站点、区域模拟及可视化分析技术教程 Noah-MP 5.0模型&模型所需环境的搭建 陆面过程的主要研究内容&#xff08;陆表能量平衡、水循环、碳循环等&#xff09;&#xff0c;陆面过程研究的重要性。 图 1 陆面…

MySQL语法及常用数据类型

一、SQL语言概述 对数据库进行查询和修改操作的语言叫做SQL。SQL的含义就是结构化查询语言&#xff08;Structured Query Language&#xff09;。SQL包含以下4个部分&#xff1a; 1、数据定义语言&#xff08;DDL&#xff09;&#xff1a;DROP、CREATE、ALTER等语句&#xff…

jenkins 日志输出显示时间戳的方式

网上很多方式比较片面&#xff0c;最新版插件直接使用即可无需更多操作。 使用方式如下&#xff1a; 1.安装插件 Timestamper 2.更新全局设置 系统设置-找到 Timestamper 勾选 Enabled for all Pipeline builds 也可修改时间戳格式。 帮助信息中显示 When checked, timesta…