学习aurora64/66b.20240703

简介

The AMD LogiCORE™IP Aurora 64B/66B core是一种可扩展的轻量级高数据速率链路层协议,用于高速串行通信。该协议是开放的,可以使用AMD设备技术实现。

Aurora 64B/66B是一种轻量级的串行通信协议,适用于多千兆位链路 (如下图所示)。它用于使用一个或多个GTX、GTH或GTY收发器在设备之间传输数据。连接可以是全双工 (两个方向的数据) 或单工 (任一方向的数据)。

Aurora 64B/66B信道概览

Aurora 64B/66B内核在连接到Aurora64B/66B渠道合作伙伴时会自动初始化渠道。初始化后,应用程序可以通过通道传递数据作为帧或数据流。Aurora 64B/66B框架可以是任何尺寸。高优先级请求能够在任何时间中断这些帧。有效数据字节之间的间隙会自动填充闲置,以保持锁定并防止过多的电磁干扰。流控制在Aurora 64B/66B中是可选的,可用于限制linkpartner的传输数据速率,或通过通道发送简短的高优先级消息。流在Aurora 64B/66B中实现为单个无休止的帧。每当数据未被发送时,发送闲置以保持链路存活。过多的位错误、断开连接或设备故障会导致内核重置并尝试初始化新通道。Aurora 64B/66B核心可以支持多通道信道的接收中的最多两个符号偏斜。Aurora 64B/66B协议使用64B/66B编码。与8B的25% 开销相比,64B/66bencoding具有非常低 (3%) 的传输开销,因此理论上可以提高性能。

Aurora 64B/66B核心框图

通道逻辑: 通道逻辑模块的实例驱动每个GT收发器。该通道逻辑初始化每个单独的收发器,处理控制字符的编码和解码,并执行错误检测

通道逻辑: 通道逻辑模块的实例驱动每个GT收发器。该通道逻辑初始化每个单独的收发器,处理控制字符的编码和解码,并执行错误检测。

全局逻辑: 内核中的全局逻辑模块执行用于通道初始化的通道绑定。在操作期间,通道跟踪由Aurora 64B/66B协议定义的未就绪空闲特性,并监视所有通道逻辑模块的错误。

RX用户界面: AXI4-Stream接收 (RX) 用户界面将数据从通道移动到应用程序,并执行流量控制功能。

TX用户界面: AXI4-Stream传输 (TX) 用户界面将数据从应用程序移动到信道,并执行流量控制TX功能。标准时钟补偿模块嵌入在核心内部。该模块控制时钟补偿 (CC) 的周期性传输。

核操作的最大频率取决于支持的线路速率和设备的速度等级。

吞吐量:Aurora 64B/66B核心吞吐量取决于收发器的数量、收发器类型和所选收发器的目标线路速率。对于GTH收发器,吞吐量分别从单通道设计到16通道设计的0.48 Gbps到254.06 Gbps不等。note:为了在使用VIVADO的默认合成策略时获得更好的定时性能,请将线路速率从IP/收发器支持的最大线路速率降低约30%。当启用CRC_MODE时,将线路速率降低50%。使用另一种合适的合成策略,用户可以实现IP中支持的最大线路速率。 

端口说明:

顶层文件实例化Aurora 64B/66B lanemodule、TX和RX AXI4-Stream模块、全局逻辑模块以及GTX、GTH、orGTY收发器包装器。此顶级包装文件在示例设计文件中与时钟、复位电路、帧生成器和检查器模块一起实例化。

下图显示了Aurora 64B/66B AXI4-Stream数据接口位排序的n字节示例。

成帧用户界面 (如下图所示) 符合AMBA AXI4-StreamProtocol规范 (ARM IHI 0051A),并包含发送和接收成帧用户数据所需的信号。成帧接口的详细描述如下。

仅当s_axi_tx_tready和s_axi_tx_tvalid均被断言时,Aurora 64B/66B核心才对数据进行采样。用户应用程序可以在任何时钟周期 (带暂停的数据传输) 取消断言s_axi_tx_tvalid,以忽略该周期的AXI4-Stream输入。如果这发生在帧的中间,则通过Aurora 64B/66B信道发送空闲符号。AXI4-Stream数据仅在成帧时有效。忽略帧外的数据。要结束aframe,当数据的最后一个字 (或部分字) 在thes_axi_tx_tdata端口上时,断言s_axi_tx_tlast,并使用s_axi_tx_tkeep指定最后数据节拍中的有效字节数。(就是AXI-S的传输模式)

在framing中,每个帧以数据块开始,并以包含帧的最后字节的分隔符块结束。每当数据不可用时,就插入空闲块。块是8个字节的加扰数据或具有2位控制报头 (总共66位) 的控制信息。

(帧传输过程为AXI传输模式大致一致,具体内容在file:///D:/NKUiversity/相关论文/xilinx资料/pg074-aurora-64b66b-en-us-12.0.pdf。16-20页,之后有成帧效率)

流接口:

流接口 (如下图所示) 允许在没有帧分隔符的情况下进行数据传输,因此操作简单,同时使用的资源比framing interface少。

在数据流中,Aurora 64B/66B通道用作管道。流式Aurora 64B/66Binterface期望填充整个s_axi_tx_tdata端口宽度 (八个字节的整数倍) 的数据。当s_axi_tx_tvalid被取消断言时,除传输时钟补偿序列外,在保留的字之间会产生间隙。

当数据到达Aurora 64B/66B通道的RX端时,如果不立即读取,则会丢失。如果这是不可接受的,则必须将缓冲器连接到RX接口以保存数据,直到可以使用。

下图显示了一个典型的流数据传输,开始时没有断言两个就绪信号,以表明用户逻辑和核心都没有准备好传输数据。

在下一个时钟周期中,内核通过断言s_axi_tx_tready表示它已准备好传输数据。一个周期后,用户逻辑断言s_axi_tx_tvalid信号,并将数据放在s_axi_tx_tdata总线上,表明它已准备好传输数据。因为现在两个信号都被断言了,所以如下图所示的数据0从用户逻辑传输到核心。数据1按以下时钟周期传输。在本例中,内核释放它的就绪信号s_axi_tx_treready,并且直到下一个时钟周期才传输数据。当再次断言s_axi_tx_tready信号时,用户应用程序在下一个时钟周期取消断言s_axi_tx_tvalid,并且在断言两个信号之前不传输数据。

下图显示了一个典型的流数据接收示例,可以看到,在rx_valid有效的时候才会接收数据

时钟接口:

参考gtx收发器

流量控制接口:

状态、控制和收发器接口:

Aurora 64B/66B核心的状态和控制端口允许用户应用程序监控通道并使用GTX、GTH和GTY收发器的内置功能。介绍状态接口、控制接口、收发模块串口的示意图和端口说明。DRP接口允许通过符合AXI4-Lite协议或本机动态重新配置端口(DRP)接口读取和更新串行收发器参数和设置

   (接口说明在page 38-41)主要是动态重新配置高速收发器

reset_pb: 按钮重置。在example design 中作为的top层重置输入。驱动内核内部的支持重置逻辑所需。

pma_init:收发器PMA_INIT复位信号通过一个无抖动器连接到顶层。系统地重置收发器的所有物理编码子层(PCS)和物理介质附件(PMA)子组件。信号使用init_clk_in去抖动至少6个init_clk周期。有关详细信息,请参阅相关收发器用户指南中的重置部分。

可以理解为这两个信号都是复位信号。

drp_clk_in:用户可配置的参数仅适用到 7 系列 FPGA 设计。默认值为100兆赫。drp_clk频率可以从50 MHz 至 x MHz,其中 x 是设备和速度取决于等级。

init_clk_in:信号用于注册和去抖动pma_init信号。首选的init_clk范围是50 ~ 200mhz。核心设置的默认init_clk频率为50mhz,用于7系列设计,

note:收发器控制和状态接口中的端口必须按照相应的GT用户指南进行驱动。使用表12所示的输入信号:收发器控制和状态接口端口使用不当可能会导致IP核的不可预知行为

auror64B/66B内核中的错误信号:

设备问题和通道噪声可能导致极光64B/66B通道运行错误。64B/66B编码方法允许Aurora 64B/66B核心检测信道中发生的位错误。内核通过在检测到这些错误的每个周期中断言soft_err信号来报告这些错误。

该核心还监视每个高速串行GTX和GTH收发器的硬件错误,如缓冲区溢出和锁丢失。通过断言hard_err信号来报告硬件错误。灾难性的硬件错误也可以表现为软错误的爆发。Aurora 64B/66B协议规范(SP011)中描述的块同步算法决定是否将软错误突发视为硬错误。

无论何时检测到硬错误,内核都会自动重置自身并尝试重新初始化。在大多数情况下,当导致硬错误的硬件问题得到解决时,这允许重新建立Aurora 64B/66B通道。软错误不会导致重置,除非在短时间内出现某些触发块同步状态机的错误。

硬错误:1.TX溢出/下流:TX数据弹性缓冲区存在溢出或下流情况。当用户时钟和参考时钟源不在同一频率上工作时,就会出现这种情况。2.RX溢出/下流:RX数据时钟校正和通道绑定FIFO存在溢出或下流情况。当两个通道伙伴的时钟源频率不在±100ppm范围内时,就会出现这种情况

软错误:短时间内发生的软错误太多。1.如果检测到太多无效同步标头,对齐块同步状态机将自动尝试重新对齐。软错误不会转化为硬错误。2.无效的同步头:64位块上的2位头不是有效的控制头或数据头。3.无效的同步头:64位块上的2位头不是有效的控制头或数据头。

初始化:

上电、复位、硬错误后,内核自动初始化(下图)。通道两侧的核心模块执行Aurora 64B/66B初始化过程,直到通道准备好使用。lane_up总线指示通道中的哪些通道已经完成了过程的通道初始化部分。lane_up信号可以用来帮助调试多通道信道中的设备问题。Channel_up只有在核心完成整个初始化过程之后才会断言。

Aurora 64B/66B内核可以在断言channel_up之前接收数据。应该只使用用户界面m_axi_rx_tvalid信号来限定传入的数据。因为在断言channel_up之后才会发生传输,所以channel_up可以反转并用于重置驱动全双工信道的TX端的模块。如果用户应用模块需要在接收数据之前复位,则可以使用反向lane_up信号来实现此目的。在所有的lane_up信号被断言之前,数据不能被接收。

时钟:

良好的时钟对64B/66B核心的正确运行至关重要。核心需要一个低抖动参考时钟来驱动GTX、GTH或GTY收发器中的高速TX时钟和时钟恢复电路。核心还需要至少一个锁定频率的并行时钟,以便与用户应用程序进行同步操作。时钟架构图:

gt_refclk (clkp/clkn)是一个专用的外部时钟,由振荡器生成,并通过专用的IBUFDS提供。

时钟接口具体与开发板的连接还需要熟悉。明天再看看GTX收发器

(本文仅对用赛灵思手册的前半部分,后部分有IP核GUI页面的说明解释,调试以及迁移应用等,较为全面,暂时用不到,仅做学习之用)

加:

    正/负差分串行数据输出引脚。

Q AND A:

1.drp_clk是用来设置参数进行调试用,和gt_ref_clk无关(大概是这个意思)

2.采用init_clk 与开发板上的时钟没有关系,50mhz是允许最低的时钟频率,有最低的功耗,开发板上的时钟是提供给fpga一个时钟源。fpga内部自己可以规定时钟。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序禁止PC端打开防止白嫖广告或抓接口

前言 晓杰每日靠着微薄的小程序广告度日,继之前检测手机端微信跳过小程序广告插件检测后又发现小程序广告在电脑端经常没广告,导致收入备降!虽然每天只有几块钱的收入,哈哈哈!那么怎么做到禁止小程序使用电脑端微信打…

nginx的匹配及重定向

一、nginx的匹配: nginx中location的优先级和匹配方式: 1.精确匹配:location / 对字符串进行完全匹配,必须完全符合 2.正则匹配:location ^~ ^~ 前缀匹配,以什么为开头 ~区分大小写的匹配 ~* 不区分…

Unity | Shader基础知识(第十七集:学习Stencil并做出透视效果)

目录 一、前言 二、了解unity预制的材质 三、什么是Stencil 四、UGUI如何使用Stencil(无代码) 1.Canvas中Image使用Stencil制作透视效果 2.学习Stencil 3.分析透视效果的需求 五、模型如何使用Stencil 1.shader准备 2.渲染顺序 3.Stencil代码语…

【TypeScript】TS入门到实战(详解:高级类型)

目录 第三章、TypeScript的数据类型 3.1 TypeScript的高级类型 3.1.1 class 3.1.1.1 熟悉class类 3.1.1.2 class类继承的两种方式 3.1.1.3 class类的5种修饰符 3.1.2 类型兼容 3.1.3 交叉类型 3.1.4 泛型 3.1.4.1 创建泛型函数 3.1.4.2 泛型函数的调用 3.1.4.3 泛型…

c++纵横字谜

1.实现一个纵横字谜 2.支持14x14的网格 3.可以查看答案 4.猜测错误会提示答案信息 5.从txt读取词汇 6.每次游戏开始 随机生成纵横字谜 n’h

Jest是什么软件?

Jest是一个由Facebook开发的开源JavaScript测试框架,它专为JavaScript项目的测试而设计,特别适用于React和Node.js环境。Jest以其简单的配置、高效的性能和易用性而闻名,成为现代JavaScript项目中不可或缺的测试工具。以下是关于Jest的详细解…

Android Compose 十二:常用组件列表 上拉加载

列表 上拉加载 当前思路 判断 列表最后一个显示的条目 为 数据集合的长度-1 用来记录刷新状态 var refreshing by remember {mutableStateOf(false)}数据集合 val list remember{List(10){"条目》》${it}"}.toMutableStateList()}用来记录列表当前状态及状态变化…

探讨4层代理和7层代理行为以及如何获取真实客户端IP

准备工作 实验环境 IP角色192.168.1.100客户端请求IP192.168.1.100python 启动的HTTP服务192.168.1.102nginx服务192.168.1.103haproxy 服务 HTTP服务 这是一个简单的HTTP服务,主要打印HTTP报文用于分析客户端IP #!/usr/bin/env python # coding: utf-8import …

地理信息科学:生态保护的智慧经纬

在地球这颗蓝色星球上,每一片森林的呼吸、每一条河流的流淌,都是生命交响曲中不可或缺的音符。而地理信息科学(GIS),正是我们手中解读自然密码、护航生态平衡的精密仪器。今天,让我们深入探讨GIS如何在生物…

新加坡博士申请|中国社科院-新加坡社科大学联合培养工商管理博士

新加坡博士申请|中国社科院-新加坡社科大学联合培养工商管理博士 【项目名称】中国社会科学院大学与新加坡新跃社科大学工商管理博士项目 【学制】最短3年,最长不超过7年 【学位证书】新加坡新跃社科大学工商管理博士学位 【招生对象】企业高管、咨询顾问及其他有…

智能舌诊应用开发:结合通义千问与OpenAI库

项目介绍 所有的项目都是基于 TailwindCSS 实现了响应式,同时支持网页端和移动端的显示效果。 这期尝试开发的 AI 应用是使用通义千问的大模型 API,开发一个 AI 看舌苔的应用。 整个项目的操作流程比较简单,第一屏用户上传自己的舌头的照片…

【JavaWeb程序设计】页面编程

目录 一、使用divCSS实现页面的布局 1. HTML结构代码 2. CSS样式代码 3. 运行截图 二、使用各类标签制作一个静态页面 1. 我做的页面运行截图 2. HTML结构代码 3. CSS代码 一、使用divCSS实现页面的布局 以下代码实现如图的页面布局,请完善相关代码 1. HT…

Docker的架构原理

例子可以想象成一个买手机的场景 clien可以想象 你个人 docker deamon :店员 images: 样机 regisitry: 手机仓库 container: 使用的手机 首先我要在店员买一个手机,店员发现是样机,但是仓库有,&…

SwiftUI九创建watchOS应用

代码下载 这篇教程让可以应用之前所学到的SwiftUI知识,把Landmarks应用从iOS平台迁移到watchOS平台上。在拷贝可以共用的数据和视图文件之前,需要先给项目中添加一个对应watchOS的Target编译目标。在所有 assets 就绪后,将自定义SwiftUI视图…

【TS】TypeScript 中的 any 与 unknown:理解与实践

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 TypeScript 中的 any 与 unknown:理解与实践一、引言二、any&#x…

找不到msvcr110.dll是怎么回事?彻底解决msvcr110.dll丢失的方法

当您的电脑提示遇到msvcr110.dll丢失时,您知道如何解决此问题吗?事实上,解决此类dll文件丢失的问题相对较为简单。只要我们深入了解msvcr110.dll丢失的具体情况,便可轻松解决此问题。以下为您介绍msvcr110.dll修复方法。 一&#…

vue table表格 ( parseTime-格式化时间)

<el-table-column label"发布时间" width"420px" prop"bidPublishDatetime"><template slot-scope"scope"><span>{{ parseTime(scope.row.bidPublishDatetime, {y}-{m}-{d}) }}</span></template></…

从手工到智能:乐财业鹦鹉系统引领财税管理新纪元

随着税制改革的不断施行&#xff0c;我国数字经济顶层设计与地方推进举措相结合的政策体系已基本完善。中小企业的数字化转型尤为关键&#xff0c;也是大势所趋。 精益研发 数智创新 乐财业以敢于创新的精神&#xff0c;扎根在财税行业数字化的土壤&#xff0c;历时3年的精心研…

海豚调度监控:新增依赖缺失巡检,上游改动再也不用担心了!

&#x1f4a1; 本系列文章是 DolphinScheduler 由浅入深的教程&#xff0c;涵盖搭建、二开迭代、核心原理解读、运维和管理等一系列内容。适用于想对 DolphinScheduler了解或想要加深理解的读者。 祝开卷有益:) 用过 DolphinScheduler 的小伙伴应该都知道&#xff0c;Dolphin…

SpringBoot整合DataX数据同步(自动生成job文件)

SpringBoot整合Datax数据同步 文章目录 SpringBoot整合Datax数据同步1.简介设计理念 DataX3.0框架设计DataX3.0核心架构核心模块介绍DataX调度流程 2.DataX3.0插件体系3.数据同步1.编写job的json文件2.进入bin目录下&#xff0c;执行文件 4.SpringBoot整合DataX生成Job文件并执…