当前位置: 首页 > news >正文

FPGA高速设计之Aurora64B/66B的应用与不足的修正

FPGA高速设计之Aurora64B/66B的应用与不足的修正

Aurora IP协议的特点

        首先基于网上找到的一些资料,来讲述下Aurora高速协议的特点与相关的应用。Aurora 协议在 2002 年由 Xilinx 公司首次提出,是由Xilinx提供的一个开源、免费的链路层串行传输通信协议,可扩展且轻量,可以实现点到点的串行数据传输。Aurora协议具有实现高性能数据传输系统的高效率和简单易用的特点。具体如下:

        可扩展,轻量级:部署快捷,可在一个或多个高速串行通道上点对点传输;

        链路层协议:独立于网络层,可直接传输工业标准协议封装的数据,例如TCP/IP、UDP等;

        短距通信:针对芯片间和板间通信应用,通过标准光接口可用于设备间通信;

        开源:免费使用和共享,可基于该协议标准开发独立应用。

        Aurora 协议针对 FPGA 间的高速数据传输,能够为物理层提供透明接口。与 RapidIO、PCIE 等协议只支持固定的传输速率不同,Aurora 协议的传输速率可以进行灵活配置,支持速度为 0.75~13.1 Gbps,并可随着 FPGA 及其内嵌高速串行收发器的发展而进一步提高,可通过通道绑定的方法实现更高的数据传输速度。

        Aurora 协议支持全双工和单工通道,使用的逻辑资源非常少,具有高带宽、无线帧尺寸和灵活组帧的特点。通过调用 Xilinx 公司的 Aurora IP  核,用户只需处理简单的用户接口即可,可以方便地实现器件间的单通道或多通道数据通信。

        Aurora 总线协议包括物理层和数据链路层两层,最初采用了 8B/10B 编码方式,后续为了提高总线带宽利用率,Xilinx 公司于 2008年又采用了 64B/66B 编码。为了区分两种编码方式,采用 8B/10B 编码方式的 Aurora协议称为 Aurora 8B/10B;采用 64B/66B 编码方式的 Aurora 协议称为 Aurora 64B/66B 。

        Aurora协议最大的优势即为开源和共享。Aurota协议为用户提供了一个透明的物理层接口,支持任何上层私有或符合工业标准的协议,如TCP/IP、以太网等,使得采用Aurora协议的高速串行总线接口能够在最短时间内与现有用户设计集成,而不大幅改动用户应用的设计。此外,Aurora协议也具有实现简单、占用物理资源少、通信效率高、速率可灵活配置等优点。

        Aurora协议仍然具有不完善之处,如不具备地址机制,不支持通道切换功能,未规定数据有效载荷内校正等。Aurora总线的应用领域目前仍然局限于FPGA相关的通信,应用范围仍然不够广泛。

Aurora IP协议与应用

Aurora协议分为8B/10B版本(SP002)和64B/66B版本(SP011),主要介绍了五个方面的内容:

物理层:针对信号电平、时钟编码、编码和符号代码等进行介绍。

链路层:描述了在传输过程中如何标记用户协议数据单元(user PDUs)的整个过程,以及在传输期间如何在数据中插入数据暂停,以及如何管理发射机和接收机之间的时钟速率差异。

初始化和错误处理:定义了为跨单通道和多通道通信而准备通道Partners*所需的步骤。它还描述了通道Partners在通道中出现比特错误时应该如何处理。

数据分割:描述了数据如何被映射到一条由多个串行数据线组成的数据通道上。

流量控制:Aurora协议定义了链路层的流量控制机制,并提供了转发更高层用户流量控制消息的加速机制。

        Aurora是一种简单,可扩展的开放式协议,支持下述或更多场景的应用:

        芯片间通信:使用Aurora协议的通信总线为高速串行总线,相对传统IC间的并行总线,可大大减少硬件设计中的布线复杂度和布线层数;

        板间通信:Aurora协议支持8B/10B编码或更高效率的64B/66B编码,使的Aurora可以与许多现有标准兼容。另外,aurora的数据传输率和通道个数是可自定义的,用户使用更加方便;

        单工模式:Aurora协议支持单工模式,在不需要全双工通信的场景可节省更多布线资源。

        ASIC设计:Aurora协议不仅仅应用于FPGA设计,还支持ASIC设计。Aurora的简单和开源特性使得它在FPGA和ASIC中都可以占用更小的资源和成本。

Aurora IP的配置

下图为vivado2018.3 KU+系列芯片中Aurora 64B/66B(不包括DRP重配置选项),IP的选项卡比较简洁明了,下面讲解下各个选项卡的作用。

  1. GT Type:KU+系列芯片拥有GTH,GTY两种GT口,其中GTY的速率较高32.75Gb/s,GTH仅有16.375Gb/s;
  2. Line Rate:高速收发器线速率,速率影响了高速收发器使用CPLL还是QPLL的输出作为参考时钟信号;
  3. Column Used:选择某一列GT口进行数据传输,与实际的FPGA的GT口位置相关,当前仅有left;
  4. Lanes:可以选择1~8lane进行高速传输,与器件相关;
  5. Start GT Quad/Lane:选择Quad与lane,当前器件2个Quad,8条lane;
  6. GT Refclk Selection:选择哪个Quad的时钟作为参考钟;
  7. GT Refclk MHz:高速收发器参考时钟频率;
  8. INIT clk:初始化时钟,对时钟来源没有要求,可以和DRP共用同一时钟;
  9. Generate Aurora without GT:不使用GT资源,只使用逻辑资源生成Aurora协议;
  10. Dataflow Mode:选择该IP工作模式,可选有仅发送、仅接收、收发单工,全双工,选择全双工模式可以进行环回实验;
  11. Interface:用户接口类型,Framing/Streaming前文分析过该IP支持两种用户接口,本文选择使用framing,即axi-stream数据格式 ;
  12. Flow Control:流量控制设置,支持两种流控模式,,简单情况下不使用流量控制传输;
  13. Little Endian Support:小端对齐。不勾选该选项时,图中数据信号的最高位是0,表示先传输高字节数据,采用大端对齐。勾选该选项后,数据位会颠倒,变成小端对齐,FPGA内部一般使用大端对齐,保持默认即可。

Aurora IP的第二个选项卡则为shared logic,可以将QPLL,时钟buffer等包含在IP中还是示例设计中,此处建议包含在example design,这样我们可以从示例工程学习到关键的时钟如何处理。

生成IP后,可在source-IP栏右键选择open example design。Xilinx官方的IP除了有配套手册外,还都提供了示例工程。通过手册得知IP的工作原理,通过示例工程去验证IP功能,然后在example design的基础上构建自己的代码。

Aurora IP的example design

打开示例工程后,会有一个工程与一个仿真,截图如下:

其中aurora_64b66b_0_exdes.v是一个完整收发模块,包含了协议层(aurora_64b66b_0_support.v),跨时钟同步设计(aurora_64b66b_0_cdc_sync.v),数据生成(aurora_64b66b_0_frame_gen.v)与检查(aurora_64b66b_0_frame_check.v),示例工程在TestBench中例化了两次该模块,即使用了两个高速收发器进行仿真,把高速收发器1的发送通道与高速收发器2的接收通道连接,从而形成数据闭环。

  由于两个模块产生相同数据,在仿真时可以只关注一个收发器的接收和发送通道数据,就能够观察接收和发送数据是否正确,也可以第二个aurora中的GT设置为收发直连,形成数据闭环。直接运行仿真,可以查看如下的关键信号。

找到axis相关的tx,rx信号data,valid,ready,keep,last,可以看到信号收发正确,还有两个关键信号是channel_up与lane_up当这俩信号被拉低,表明GT初始化成功,才能看到数据的收发,仿真持续时间为34.8us。

Aurora IP的问题

当前在两片FPGA进行aurora通信时,我们采用了如上图的配置,RX侧user_clk=156.25MHz,在axis-stream模式下我们一般要使用一个异步FIFO来跨时钟域,问题来了user_clk=156.25MHz,但我们使用数据的频率仅为100MHz,这样无论多大的FIFO都会发生数据丢失的行为,因为我们无法利用axis_ready信号告诉前级,数据即将溢出,即aurora协议无法接收rx侧的axis_ready信号,从而产生接收数据丢失的风险。此处有两种办法:第一种是我们在接收信号的板子上引出一根ready信号,告诉前级数据不要再发数据了,因为axis_valid &&axis_ready同步拉高,前级的aurora才会发数,这样就相当于人为控制数据的收发,比较灵活。需要注意的是:在设计ready信号时需要关注从后级传到前级的时延;第二种方式则为Flow Control模式,可以通过NFC控制流量,让GT口暂停发数,最多可设置为256拍后才发数据,此方法适用于可以预知下级接收的FIFO什么时候会溢出,然后通过计数暂停发数。

相关文章:

FPGA高速设计之Aurora64B/66B的应用与不足的修正

FPGA高速设计之Aurora64B/66B的应用与不足的修正 Aurora IP协议的特点 首先基于网上找到的一些资料,来讲述下Aurora高速协议的特点与相关的应用。Aurora 协议在 2002 年由 Xilinx 公司首次提出,是由Xilinx提供的一个开源、免费的链路层串行传输通信协议…...

如何通过PHP脚本自动推送WordPress文章至百度站长平台

想要提高网站在百度搜索中的曝光度?百度站长平台提供了一个非常方便的API接口,允许网站自动将新发布的内容推送至百度以加快收录。本文将带您一步步实现这一功能,帮助您的WordPress站点实现每日自动推送最新文章的URL至百度站长平台。 1. 前提条件 确保您有一个已安装并运行…...

ORA-01092 ORA-14695 ORA-38301

文章目录 前言一、MAX_STRING_SIZE--12C 新特性扩展数据类型 varchar2(32767)二、恢复操作1.尝试恢复MAX_STRING_SIZE参数为默认值2.在upgrade模式下执行utl32k.sql 前言 今天客户发来一个内部测试库数据库启动截图报错,描述是“上午出现服务卡顿,然后重…...

upload-labs通关练习---更新到15关

目录 环境搭建 第一关 方法一 修改文件类型 方法二 前端禁用JS绕过 第二关 方法一 修改Content-Type类型 方法二 修改上传文件类型 第三关 第四关 第五关 方法一 Windows大小写绕过 方法二 利用.user.ini 第六关 第七关 第八关 第九关 第十关 第十一关 第十二…...

WPF 应用程序中使用 Prism 框架时,有多种方式可以注册服务和依赖项

Prism 提供了更多的注册方式,适应不同的需求和场景。下面我会全面列出 IContainerRegistry 提供的所有常见注册方式,并附带相应的示例。1. 注册单例(Singleton) 注册单例类型服务,整个应用生命周期内只会创建一个实例&…...

【ESP32】ESP-IDF开发 | 低功耗管理+RTC唤醒和按键唤醒例程

1. 简介 ESP32支持5种低功耗模式,低功耗管理单元包括调压器、功耗控制器、电源开关单元、电源域隔离单元 (Isolation Cell) 等部分。 1.1 RTC单元 RTC单元是ESP32低功耗管理的核心,可用于管理低功耗模式的进入和退出,控制时钟源、PLL、电源开…...

Windows 局域网IP扫描工具:IPScaner 轻量免安装

IPScaner是一款258KB的工具,具备快捷修改IP、批量扫描、地址计算等功能,自动识别本机IP网段,快速查看IP使用情况,适用于监控维护、企业IT运维等场 软件功能介绍: 1)快捷修改本地IP、IP批量扫描、IP地址计算…...

HTML的浮动与定位

1. 浮动 浮动可以使一个元素脱离自己原本的位置,并在父元素的内容区中向左或向右移动,直到碰到父元素内容区的边界或者其它浮动元素为止。 值描述left元素向左浮动right元素向右浮动 普通文档流:浏览器在默认情况下规定一个块元素在父元素…...

【网络安全 | 漏洞挖掘】我如何通过路径遍历实现账户接管

未经许可,不得转载。 文章目录 不久前,我发现了一个我在高中时非常常用的知名应用程序,它在Intigriti上是一个私有程序,本文称之为REDACTED。 我开始参与REDACTED的漏洞赏金计划,这个应用程序在我开始进行黑客攻击之前我已经非常熟悉了。最初我并没有抱太高的期望。 我首…...

DB-GPT系列(四):DB-GPT六大基础应用场景part1

一、基础问答 进入DB-GPT后,再在线对话默认的基础功能就是对话功能。这里我们可以和使用通义千问、文心一言等在线大模型类似的方法, 来和DB-GPT进行对话。 但是值得注意的是,DB-GPT的输出结果是在内置提示词基础之上进行的回答&#xff0c…...

SpringCloud篇(服务拆分 / 远程调用 - 入门案例)

目录 一、服务拆分原则 二、服务拆分示例 1. 案例需求 2. 案例要求 3. 导入SQL语句 4. 实现思路 4.1. 创建父工程 cloud-demo 管理依赖 依赖导入思路 4.2. 创建子工程 order-servic 4.3. 创建子工程 user-servic 4.4. 创建 cloud_order 数据库和表并插入数据 4.5. …...

Rust 建造者模式

在DDD中,DTO(数据传输对象)->BO(业务对象)、BO(业务对象)->PO(持久化对象,有的叫DO,即和数据表映射的实体)等等情况要做转换,这里提供以下转换方式 1、from或者try_from trait实现对象转换 需要转换对象满足接收对象的所有…...

ANN DNN CNN SNN

这些缩写代表了不同类型的人工神经网络: • ANN(Artificial Neural Network):人工神经网络,是模仿人脑神经元之间连接和交互方式的计算模型。它由节点(或称为“神经元”)组成的网络,…...

go语言进阶之并发模式

并发模式 并发模式是指在程序设计中同时处理多个任务或进程的方式,以提高效率和响应性 for select循环模式 for select循环模式通常用于处理并发操作,尤其是在需要等待多个通道时。 select的执行过程主要是以下几步 阻塞等待,直到其中一…...

Spring Cloud LoadBalancer:负载均衡的服务调用

在微服务系统中,有时候一个服务会部署多个实例,在我们调用这类实例时,如何实现负载均衡的调用呢?这时候就要用到Spring Cloud的负载均衡组件LoadBalancer了 LoadBalancer简介 LoadBalancer是Spring Cloud官方提供的负载均衡组件,通过它能使客户端在多个服务实例之间分发传…...

微信小程序之轮播图

效果图 实现 <swiper class"banner" indicator-dots"true" indicator-color"rgba(255,255,255,1)" indicator-active-color"#ff0000" autoplay"true" interval"100" circular"true"><swi…...

羲和数据集收集器1.3

为了实现所要求的功能,我们需要进一步完善代码,使其能够处理多种格式的输入文件,并生成符合要求的 JSON 格式的输出文件。具体来说,我们完善了以下内容: 增强 extract_qa_pairs_from_content 函数:使其能够识别和处理不同格式的 QA 对。 确保输出文件的格式正确:每个 Q…...

UE--IOS打包失败 AutomationTool exiting with ExitCode=9 (9)

[Remote] Executing build UATHelper: 打包 (IOS): Setting up bundled DotNet SDK UATHelper: 打包 (IOS): /Users/zyh/UE5/Builds/DESKTOP-FKKSVFQ/Y/UE/UE_5.2/Engine/Build/BatchFiles/Mac/../../../Binaries/ThirdParty/DotNet/6.0.302/mac-x64 UATHelper: 打包 (IOS)…...

第8章利用CSS制作导航菜单

8.1 水平顶部导航栏 水平菜单导航栏是应用范围最广的网站导航设计&#xff0c;一般位于页面顶部。它适用性强&#xff0c;几乎适用于所有类型的网站&#xff0c;且设计难度低。若导航过于普通&#xff0c;无法承载复杂信息结构&#xff0c;在内容模块较多时&#xff0c;则需结…...

UNIX网络编程-TCP套接字编程

概述 TCP客户端/服务器程序示例是执行如下步骤的一个回射服务器&#xff1a; 客户端从标准输入读入一行文本&#xff0c;并写给服务器。服务器从网络输入读入这行文本&#xff0c;并回射给客户端。客户端从网络输入读入这行回射文本&#xff0c;并显示在标准输出上。 TCP服务器…...

AI大模型在测试领域应用案例拆解:AI赋能的软件测试效能跃迁的四大核心引擎(顺丰科技)

导语 5月份QECon深圳大会已经结束&#xff0c;继续更新一下案例拆解&#xff0c;本期是来自顺丰科技。 文末附完整版材料获取方式。 首先来看一下这个案例的核心内容&#xff0c;涵盖了测四用例设计、CI/CD辅助、测试执行、监控预警四大方面&#xff0c;也是算大家比较熟悉的…...

图片压缩工具 | 图片生成PDF文档

OPEN-IMAGE-TINY&#xff0c;一个基于 Electron VUE3 的图片压缩工具&#xff0c;项目开源地址&#xff1a;https://github.com/0604hx/open-image-tiny ℹ️ 需求描述 上一版本发布后&#xff0c;有用户提出想要将图片转换&#xff08;或者说生成更为贴切&#xff09;PDF文档…...

uniapp 安卓 APP 后台持续运行(保活)的尝试办法

在移动应用开发领域&#xff0c;安卓系统的后台管理机制较为复杂&#xff0c;应用在后台容易被系统回收&#xff0c;导致无法持续运行。对于使用 Uniapp 开发的安卓 APP 来说&#xff0c;实现后台持续运行&#xff08;保活&#xff09;是很多开发者面临的重要需求&#xff0c;比…...

C#中datagridview单元格value为{}大括号

使用数据库查询结果绑定datagridview数据源后&#xff0c;在对单元格的值进行处理的过程中出现报错&#xff0c;包括直接多cell.value.ToString()也报错&#xff0c;调试发现该单元格Value为“{}”&#xff0c;与null或""对比判断都没有结果&#xff0c;可使用Conver…...

【云安全】以Aliyun为例聊云厂商服务常见利用手段

目录 OSS-bucket_policy_readable OSS-object_public_access OSS-bucket_object_traversal OSS-Special Bucket Policy OSS-unrestricted_file_upload OSS-object_acl_writable ECS-SSRF 云攻防场景下对云厂商服务的利用大同小异&#xff0c;下面以阿里云为例 其他如腾…...

智能制造数字孪生全要素交付一张网:智造中枢,孪生领航,共建智造生态共同体

在制造业转型升级的浪潮中&#xff0c;数字孪生技术正成为推动行业变革的核心引擎。从特斯拉通过数字孪生体实现车辆全生命周期优化&#xff0c;到海尔卡奥斯工业互联网平台赋能千行百业&#xff0c;数字孪生技术已从概念验证走向规模化落地。通过构建覆盖全国的交付网络&#…...

机器学习:决策树和剪枝

本文目录&#xff1a; 一、决策树基本知识&#xff08;一&#xff09;概念&#xff08;二&#xff09;决策树建立过程 二、决策树生成&#xff08;一&#xff09;ID3决策树&#xff1a;基于信息增益构建的决策树。&#xff08;二&#xff09;C4.5决策树&#xff08;三&#xff…...

Github 2025-06-06 Java开源项目日报Top10

根据Github Trendings的统计,今日(2025-06-06统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Java项目10TypeScript项目1Java实现的算法集合:使用Gitpod.io进行编辑和贡献 创建周期:2883 天开发语言:Java协议类型:MIT LicenseStar数量…...

Spring Boot-面试题(52)

摘要&#xff1a; 1、通俗易懂&#xff0c;适合小白 2、仅做面试复习用&#xff0c;部分来源网络&#xff0c;博文免费&#xff0c;知识无价&#xff0c;侵权请联系&#xff01; 1. 什么是 Spring Boot 框架&#xff1f; Spring Boot 是基于 Spring 框架的快速开发框架&#…...

thinkphp8.1 调用巨量广告API接口,刷新token

1、在mysql中建立表sys_token; CREATE TABLE sys_token (id int UNSIGNED NOT NULL,access_token varchar(50) COLLATE utf8mb4_general_ci NOT NULL,expires_in datetime NOT NULL,refresh_token varchar(50) COLLATE utf8mb4_general_ci NOT NULL,refresh_token_expires_in …...