跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
编程语言

FPGA 光通信开发:Aurora 64B/66B 使用指南

FPGA 光通信中 Aurora 64B/66B 协议核的使用方法,包括接口定义、复位时序、初始化流程及配置参数。详细说明了 AXI-Stream 数据接口的握手机制、控制信号功能以及仿真与上板测试步骤,为开发人员提供了完整的工程实践参考。

刀狂发布于 2026/4/6更新于 2026/7/1450 浏览
FPGA 光通信开发:Aurora 64B/66B 使用指南

FPGA 光通信的开发过程中,最简便的方式为 Aurora 64B/66B,开发人员无需关注 2bit 同步头、加解扰等过程,开放给开发人员的主要是 AXI-Stream 用户数据接口。

Aurora 是一款可扩展的轻量级、高数据速率链路层高速串行通信协议,支持全双工或单工,支持 64B/66B、8B/10B 编码。

一、Aurora 64B/66B 使用介绍

该核的使用架构主要如下:借助 Xilinx IP 核,开发人员可根据用户接口实现多通道间的光通信。最大支持 16 lane。

文章配图

1.1 IP 核的介绍

参考 PG074,该核的内部结构如下:

文章配图

其中,Lane logic:每个 GT 收发器由一个 lane 逻辑模块实例驱动,初始化每个收发器,处理控制字符的编解码,并执行错误检测。 Global logic:全局逻辑模块执行通道绑定以进行通道初始化。在运行过程中,该通道跟踪 Aurora 64B/66B 协议定义的 Not Ready 空闲字符,并监控所有通道逻辑模块的错误。 RX user interface:AXI4-Stream 接收用户数据从通道移动到应用程序,并执行流控制功能。 TX user interface:AXI4-Stream 发送用户数据从应用程序移动到通道,并执行 TX 的流量控制功能。

1.1.1 接口

IP 核如下(不同版本界面有差异,但含义相同):

文章配图

主要的接口信息如下,具体含义可查看 PG074。

用户数据接口:USER_DATA_S_AXIS_TX(数据发送)、USER_DATA_M_AXIS_RX(数据接收) GT BANK 管脚:GT_SERIAL_RX、GT_SERIAL_TX、REFCLK 控制接口:CORE_CONTROL(回环模式等) 控制接口:CORE_STATUS 重配置端口:GT_DRP(比如动态切换线速率场景) 剩下的为复位、时钟接口: INIT_CLK:初始化时钟,来源不同于 GT BANK; USER_CLK/SYNC_CLK:用户时钟,LineRate × LaneNum x (64/66)/LaneWide,其中 USER_CLK 为用户收发数据时钟; pma_init 和 reset_pb:复位信号,后文介绍。

时钟关系如下:

文章配图

1.1.2 复位

复位接口为 pma_init 和 reset_pb,高电平复位释放前要求 INIT_CLK 和 REFCLK 保持稳定;先释放 pma_init(gt_reset),后释放 reset_pb(reset),reset_pb 的释放同步于 USER_CLK,pma_init 复位信号同步于 INIT_CLK。

pma_init 的复位会重置收发器的所有物理编码子层 (PCS) 和物理介质附件 (PMA) 子组件,即会先复位高速收发器,后复位内核逻辑。而 reset_pb 只会复位内核逻辑,不会复位底层的高速收发器。先释放 pma_init,后释放 reset_pb。

不同模式下,复位时序不一样,本文只介绍双工模式的复位时序:上电阶段复位、其他复位。

文章配图

文章配图

双工模式下的正常复位时序如上图所示,先把 reset_pb 拉高 128 个时钟周期,然后再拉高 pma_init 一段时间。之后先拉低 pma_init,最后拉低 Reset_pb 信号。

如下图所示:双工模式下 reset_pb 拉高的最短时间为 128 个 user_clk 周期。经过一段时间后,channel_up 被拉低,表示传输通道建立失效。

文章配图

如下图所示:双工模式下的 pma_init(gt_reset)复位时序,pma_init 至少拉高 128 个 init_clk 周期。经过一些时钟周期后,user_clk 会暂停产生时钟(因为 user_clk 的时钟来源是 GT 收发器 txoutclk,pma_init 复位从底层的物理层复位)。随后拉低 channel_up 信号,表示传输通道建立失效。

文章配图

1.1.3 初始化

初始化过程如下:

文章配图

Lane up 表示通道中的哪些通道已完成通道初始化。仅当所有通道和内部逻辑完成整个初始化过程后,channel_up 才会被拉高。Aurora 64B/66B 内核可以在 Channel_up 拉高之前接收数据,但 Channel_up 拉高之前不能发送数据,可把 Channel_up 取反用作全双工模式下发送端的复位信号。

1.1.4 控制及状态接口

loopback:回环模式,实际使用一般接到 0; 000:normal;001: Near-end PCS Loopback;010: Near-end PMA Loopback;100: Far-end PMA Loopback;110: Far-end PCS Loopback power down:高电平有效。当其为高时,GT 会进入非工作、低功耗的模式。使用的时一般直接拉低。 pll_not_locked 接 ~pll_locked ;

文章配图

lane_up:"1"状态指示各通道初始化成功,每位代表一个通道 channel_up:"1"状态指示通道初始化完成,通道已准备好进行数据传输 hard_err:主要是硬件类错误 soft_err:主要是软件类错误 frame_err:当前通道帧协议错误

1.1.5 数据接口

该核支持两类数据接口: Framing 接口:在 AXI4-Stream 的基础上 IP 核自动加入帧头、帧尾,并在固定时间内完成时钟补偿,但是会降低传输效率和使用较多资源。 Streaming 接口:简化的 AXI4-Stream 接口,只有数据有效、握手和数据信号,此种方式传输效率高,但无法保证传输的准确性。

本文只介绍 Frame 类型接口,即用户接口类型为 AXIS 模式。由于 64B/66 编码,aurora 的设计上在发送端需要 ready 信号握手。发送端用户只需要在发送、接收双方完成握手后,即可发送数据,通信双方均可通过握手信号来反压对方;接收端用户仅需要在 valid 信号有效时从总线上拿数据即可。

当 s_axi_tx_tready 反压与 s_axi_tx_tvalid 握手成功后,即可发送数据,使用 s_axi_tx_tlast 来表示当前发送最后一个数据,s_axi_tx_tkeep 来表示最后一个数据的有效字节。

文章配图

接收数据:当 m_axi_rx_tvalid 为高时,接收的数据是有效数据,可以拿来用了,m_axi_rx_tkeep 与 m_axi_rx_tlast 的用法与发送端对应的信号一致。

文章配图

1.2 IP 核配置

根据本人开发板原理图配置如下:

文章配图

GT Refclk:GT 参考时钟,板子时钟为 156.25Mhz Lane Rate:以 10.3125Gbps 作为测试 INIT clk:初始化时钟,根据工程自行选择设计 GT 位置及 lane 数目:根据板子原理图设计 Dataflow Mode:选择全双工 Interface:Framing 类型 流控:不使用

文章配图

Little Endian support:小端数据(小端:[15:0] 大端:[0:15]) 动态重配置接口类型 Debug 信号 CRC 功能

文章配图

Shared Logic:设置 IP 的逻辑放置的位置,如果 GT REFCLK 没被别的 serdes 使用,两种模式都行,否则建议 In example design 模式。 In core:在 IP 核内:support、复位、时钟等逻辑包含在 ip 内 In example design:在例子中,support、复位、时钟等逻辑都在 ip 外

1.3 参考例子

主要参考 support、复位、时钟的使用。

文章配图

support 模块:包含了对时钟、复位、IP 等的例化处理等一系列操作;在应用中此部分可不需要修改。 frame_gen 数据生成模块,采用 LFSR 的方式生成伪随机序列;在实际工程中替换为自己的数据模块即可。 frame_check 数据检验模块,对接收的数据进行检验以验证传输的正确性;在实际工程中替换为自己的数据模块即可。

二、工程设计、测试

2.1 工程设计

按照上述配置的上进行设计,收发数据流程为,当 Channel_up 拉高后,可通过 VIO 使能控制 data_test_module 测试数据模块产生测试数据。

data_test_module:当 FIFO 非空时写入递增数据,根据 AXIS 接口的 ready 反压信号读 FIFO 到 Aurora IP 核。

文章配图

2.2 仿真测试

对上述工程进行自回环收发仿真测试:

文章配图

初始化及收发过程:

文章配图

复位关系、状态信号:

文章配图

发数据:ready 和 valid

文章配图

收数据主要关注 data、valid、last、keep 等信号。

文章配图

2.3 上板测试

通过 VIO 使能控制 data_test_module 测试数据模块产生测试数据。

文章配图

接收到的数据:与发送数据一一对应。

文章配图

三、总结

目录

  1. 一、Aurora 64B/66B 使用介绍
  2. 1.1 IP 核的介绍
  3. 1.1.1 接口
  4. 1.1.2 复位
  5. 1.1.3 初始化
  6. 1.1.4 控制及状态接口
  7. 1.1.5 数据接口
  8. 1.2 IP 核配置
  9. 1.3 参考例子
  10. 二、工程设计、测试
  11. 2.1 工程设计
  12. 2.2 仿真测试
  13. 2.3 上板测试
  14. 三、总结
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Maven 高级特性:继承、聚合与私服配置
  • Python 面试高频考点:模块、装饰器与异步编程详解
  • JavaScript 数组核心方法详解
  • Openclaw 开源仿生机械爪原理与应用解析
  • C++ std::map 容器详解:键值对存储与操作
  • Python 中使用 SQLAlchemy ORM 进行数据库操作指南
  • Python 微信小程序班级学生奖惩成绩信息管理系统
  • VLA 模型真实世界分布式在线后训练系统 SOP 关键突破
  • Web 虚拟卡销售平台架构设计与核心实现
  • webdav-server 轻量级 WebDAV 服务器部署与配置指南
  • WebGIS 项目实战经验与技术应用展望
  • Git 版本管理:Checkout 回溯备份与标签管理
  • IntelliJ IDEA 运行 Tomcat 报错 Please, configure Web Facet first! 解决步骤
  • AnySplat: 无位姿前馈式 3DGS 重建技术解析
  • 前缀和算法实战:连续数组与矩阵区域和
  • C++ 零基础入门学习指南:基础语法与核心特性详解
  • 机器人 DH 参数模型与正运动学
  • Linux TCP 协议详解:报文结构、连接状态与流量控制
  • MacOS 部署 OpenClaw 并集成飞书实现 AI 自动化
  • 利用文心一言为智能体设计稳定的工作流提示词

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online