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

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

FPGA 光通信的开发过程中,最简便的方式为 Aurora 64B/66B,开发人员无需关注 2bit 同步头,加解扰等过程,开放给开发人员的主要是 AXI-Stream 用户数据接口。 Aurora 是一款可扩展的轻量级、高数据速率链路层高速串行通信协议,支持全双工或单工,支持 64B/66B,8B/10B 编码。 一、Aurora 64B/66B 使用介绍 该核的使用架构主要如下:借助 xil…

灵魂伴侣发布于 2026/4/6更新于 2026/7/935K 浏览
FPGA 光通信开发:Aurora 64B/66B 使用指南

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

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

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

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

文章配图

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 Ednian 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、上板测试
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

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

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

更多推荐文章

查看全部
  • Android 开发常用快速开发框架与第三方库精选指南
  • LLaMA-Factory 大语言模型微调框架详解与使用指南
  • OpenClaw 自动化 AI 助理使用指南与技能配置详解
  • Claude Code 核心执行模式与权限控制解析
  • Stable Diffusion 潜空间扩散生成流程详解
  • TrendRadar 本地部署指南:Docker 配置、AI 模型接入与 MCP 服务对接
  • MySQL 与 MCP 集成:从环境构建到 AI 数据交互全流程
  • LangChain 链式应用实战:多种 Chain 类型详解与案例
  • Llama Factory 微调训练全过程详解
  • SLAM Toolbox 机器人定位与建图实践
  • LLM 基础篇(一):大模型理念与演进
  • Stable Diffusion 小清新真人模型 V4.5 使用指南
  • 大模型训练流水线并行(PP)性能评价指标与分析方法
  • Janus-Pro-7B 基于 Ollama 的一键部署与使用指南
  • WebMCP:浏览器原生 AI 交互协议解析与接入指南
  • LLaMA-Factory 本地部署环境配置与 WebUI 启动指南
  • Python 量化实战:使用 AKShare 抓取 A 股实时行情数据
  • C++ Qt 网络编程实战:UDP、TCP 与 HTTP 应用
  • OpenArm 开源机械臂技术框架与开发指南
  • Faster Whisper v1.7 本地语音转录与字幕生成教程(含 AMD 支持)

相关免费在线工具

  • 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