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

Vivado Aurora 8B/10B IP 核配置详解

Vivado Aurora 8B/10B IP 核配置涉及物理层、链路层、错误检测及调试设置。物理层需严格匹配板卡设计的线速率、通道宽度及参考时钟频率,确保 user_clk 计算正确。链路层需统一双工模式、接口类型(Framing/Streaming)及流控选项。物理引脚分配需依据原理图精确映射 GT 资源至 Quad 和 Channel。共享逻辑配置决定 PLL 归属,单核或多核复用场景下需分别选择包含或排除共享逻辑。配置时需保证通信两端参数一致,并遵循正确的复位顺序以避免时序问题。

花里胡哨发布于 2026/4/7更新于 2026/5/2734 浏览
Vivado Aurora 8B/10B IP 核配置详解

Aurora 8B/10B 是 Xilinx 开发的一种轻量级、链路层的高速串行通信协议。它比单纯的 GT(Transceiver)收发器更高级,但比以太网或 PCIe 更简单、延迟更低。

1. Physical Layer (物理层设置)

这一部分直接决定了底层的硬件连接和电气特性,必须严格按照板卡设计和对端设备来配置。

Lane Width (Bytes) [通道宽度]:2 或 4。决定了用户逻辑接口(AXI-Stream)的数据位宽,也直接影响 user_clk 的频率。

  • 2 Bytes:AXI 接口位宽为 16-bit。user_clk = 线速率 / 20。
  • 4 Bytes:AXI 接口位宽为 32-bit。user_clk = 线速率 / 40。

如果线速率很高(比如 > 5Gbps),建议选 4 字节,这样可以让 FPGA 内部逻辑时钟(user_clk)跑慢一点,更容易满足时序。如果是 3.125G 这种中低速,选 2 字节即可。

Line Rate (Gbps) [线速率]:光纤或铜线上实际跑的比特率。

取决于 SFP 模块能力、PCB 走线质量以及对端设备的速度。3.125 Gbps,是 Aurora 的一个经典速率(也是 XAUI 的标准速率)。

GT Refclk (MHz) [GT 参考时钟]:FPGA 外部输入的差分参考时钟频率。

必须与你 PCB 板子上连接到 FPGA GT Bank 的那个晶振频率完全一致。如果填错了,PLL 锁不住,整个核都起不来。

INIT clk (MHz) [初始化时钟]:用于驱动复位逻辑和初始化状态机的辅助时钟。在上电初始化阶段,可以使用该时钟来驱动一些逻辑。默认值:50Mhz。

通常给 50MHz 到 100MHz 之间的稳定时钟即可。这个时钟对抖动要求不高,可以用普通的逻辑时钟。

DRP Clk (in MHz) [动态重配置时钟]:用于驱动 DRP(Dynamic Reconfiguration Port)接口的时钟,允许你在运行时修改 GT 的参数。通常和 INIT clk 共用一个时钟源。

注意:关于时钟 上面这三个时钟,是 IP 核工作所需要的时钟,也是我们需要提供给 IP 核的。此外,还有一个时钟是 IP 核提供给我们的:user_clk。这个时钟,是 IP 核根据设置的线速率及 Lane 的位宽计算出来的用户时钟,用户需要传输的数据必须是该时钟域下的数据,否则会存在亚稳态风险。

image

2. Link Layer (链路层设置)

这一部分决定了数据如何打包、如何握手。通信双方(TX 和 RX)的配置必须完全一致。

Dataflow Mode [数据流模式]:

  • Duplex (双工):最常用,同时收发。
  • TX-only / RX-only (单工):只发或只收。
  • Simplex (单工):类似单工,但有特殊的边带信号处理。

Interface [用户接口类型]

Framing (帧模式):

  • 有'包'的概念。AXI 接口上有 tlast 信号,用来指示一个数据包的结束。
  • 发送类似以太网包、命令包等非连续、有边界的数据。Aurora 会自动处理两帧之间的空闲填充。

Streaming (流模式):

  • 特点:像一根水管,没有'包'的概念,也没有 tlast 信号。数据源源不断。
  • 适用:发送 ADC 采样数据、视频流等连续数据。传输效率最高,因为没有帧头帧尾的开销。

Flow Control [流控]

  • None:不使用流控(最常用,也最简单)。
  • UFC (User Flow Control):用户发命令来插队。
  • NFC (Native Flow Control):核心自动根据接收端缓冲区的满/空状态,给发送端发暂停信号(反压)。

初学者建议选 None。如果你需要防止接收端 FIFO 溢出,可以选 NFC。

Back Channel [回传通道]

  • Sidebands:通常用于单工模式,利用额外的 GPIO 线来告诉发送端'我准备好了'。在双工模式下通常不需要太关注这个。
  • Scrambler/Descrambler [加扰/解扰]:在发送前把数据打散(伪随机化),接收后还原。避免数据中出现长时间的连 0 或连 1,减少电磁干扰 (EMI),有利于时钟恢复。
  • Little Endian Support [小端序支持]:决定多字节数据的传输顺序。Aurora 默认是大端序(网络字节序)。除非你的处理器是强小端序且你不想在软件里倒腾字节,否则保持默认(不勾选)。小段模式对应 [31:0] 这种书写习惯,大端模式对应的是 [0:31] 这种书写习惯。

3. Error Detection (错误检测)

CRC [循环冗余校验]:在每一帧数据后面自动加一个校验码。

如果选了 Framing 模式,建议勾选。这样接收端收到数据时,如果发现 CRC 不对,会报错,保证数据完整性。如果是 Streaming 模式,通常不加 CRC。

4. Debug and Control (调试与控制)

Vivado Lab Tools

在 IP 核里自动插入 ILA(逻辑分析仪)。

调试阶段建议勾选。它会把 Aurora 的状态机、lane_up、channel_up 等关键信号抓出来,如果不通,你能看到卡在哪一步。量产时关掉以节省资源。

5. 物理引脚分配 (Physical Pin Assignment)

如果说上一页 'Core Options' 决定了'我们要传多快、传什么格式',那么这一页则是决定'这套协议要在 FPGA 的哪几根物理引脚上跑'。这是一个纯物理层的配置界面,必须结合 PCB 原理图和 FPGA 芯片手册来设置。

1. Lanes (通道数量)

Aurora 链路包含几条物理通道。

如果需要更高的带宽,可以将多条 Lane 绑定在一起(Bonding)。例如选 4,那么带宽就是单条 Lane 的 4 倍,且 Aurora 会自动处理通道间的对齐。

必须与原理图一致:如果你板子上只画了 1 对线连到光模块,这里就只能选 1。

2. Lane Assignment (通道分配表)

这是最容易晕的地方。这个表格代表了 FPGA 内部 GT (Gigabit Transceiver) 资源的物理位置分布。

  • 结构解析:

    • 左侧列 (GTXQ1, GTXQ2…):代表 Quad。Xilinx 的高速收发器是每 4 个一组,称为一个 Quad。
      • GTXQ1 通常指物理位置最靠下的那个 Quad(或者编号最小的)。
    • 右侧网格:代表每个 Quad 里的 4 个具体收发器通道 (Channel 0 - Channel 3)。
    • 下拉菜单 (X 或 数字):
      • X:表示这个物理通道不被当前的 Aurora 核使用。
      • 1, 2, 3…:表示将 Aurora 的第几条逻辑通道映射到这个物理位置。
  • 如何设置(关键步骤):

    1. 打开原理图:查看你的 SFP 光口或 SMA 接口连接到了 FPGA 的哪个 Bank,哪对引脚(例如 MGTHTXP_115)。
    2. 查找映射:去查 Xilinx 的封装文件(Package File)或在 Vivado 的 "I/O Planning" 视图里看,确定那对引脚属于哪个 Quad 以及该 Quad 里的第几个 Channel(例如 X0Y0, X0Y1)。
    3. 在表中勾选:找到对应的位置,选上编号。
  • 注意:这里的图形化界面只是一个生成网表的向导。最稳妥的做法是这里大概选对 Quad,然后在 XDC 约束文件中通过 set_property LOC GTXE2_CHANNEL_X0Y0 [get_cells ...] 来进行精确的物理约束。

image

3. GT Refclk1 / GT Refclk2 (参考时钟选择)

GT 收发器需要一个非常高质量的差分参考时钟(MGTREFCLK)才能工作。决定 Aurora 核使用板子上的哪一个差分晶振输入作为参考时钟。

如何设置:

  1. 看原理图:你的 125MHz(或 156.25MHz)差分晶振连接到了 FPGA 的哪两个引脚?(例如 MGTREFCLK0P_115 / MGTREFCLK0N_115)。
  2. 确认 Quad:确定这两个引脚属于哪个 Quad。
  3. 选择:在下拉菜单中选择对应的 Quad。

重要规则(时钟路由):通常建议参考时钟和你的数据通道在同一个 Quad,或者在相邻的 Quad(North/South)。如果距离太远,时钟抖动会变大,Vivado 可能会报错。

避坑提示: 如果你实在搞不清具体的物理坐标(X0Y?, X0Y?),可以在这里先随便选一个(比如都选在 Q1),生成 IP。但是在写 .xdc 约束文件时,必须严格加上 package_pin 约束和 LOC 约束,Vivado 会以 XDC 文件为准,强行把逻辑'拽'到正确的物理引脚上。如果这里选的和 XDC 冲突太大(比如跨了太多 Bank 导致时钟够不着),Implementation 阶段会报错。

image

6. Shared Logic (共享逻辑配置)

简单来说,这一页是在问:'在这个 IP 核内部,我要不要自带时钟发生器(PLL)和差分时钟缓冲器(IBUFDS)?'

什么是'Shared Logic'?

在 Xilinx FPGA 的高速收发器(GT)架构中,4 个通道(Channel)组成一个 Quad。这 4 个通道共享一些公共资源,最主要的就是 PLL(锁相环)和参考时钟输入缓冲(Diff Refclk Buffer)。

  • PLL:负责将参考时钟倍频,生成高速串行时钟。
  • Buffer:负责将板子上的差分时钟引入芯片内部。
1. Include Shared Logic in core (包含在核内) —— '我是房东'

这个 IP 核会把 PLL、参考时钟缓冲、复位逻辑全部包含在自己肚子里。它是全功能、自给自足的。生成的 IP 核对外接口比较简单,直接接板级引脚(refclk)即可。

什么时候选:

  • 工程里只有一个 Aurora 核。
  • 或者,在一个 Quad 里有多个 Aurora 核,这是第一个(主核)。它负责产生时钟,分给别人用。
2. Include Shared Logic in example design (包含在示例工程中/核外) —— '我是租客'

这个 IP 核内部不包含 PLL 和时钟缓冲。它是一个'空壳'或'从核'。它必须依赖外部送进来的 PLL 时钟信号才能工作。生成的 IP 核会多出一堆输入端口(如 gt_pll_clk、gt_refclk_out 等),你需要把别的核产生的时钟连进去。

为什么叫'在示例工程中': 如果你生成了 Example Design,Vivado 会把那些公共逻辑(PLL 等)放在 IP 核外面的顶层文件中。这样方便你修改或者将其去驱动其他的 IP 核。

什么时候选:

  • 多核复用:当你在同一个 Quad 里放了第 2、3、4 个 Aurora 核时。因为 PLL 只有一个,已经被第 1 个核(房东)占用了,剩下的核(租客)只能借用第 1 个核输出的时钟。
  • 高级共享:当你有一个以太网核和一个 Aurora 核共用同一个 Quad 的 PLL 时。

场景 A:最简单的情况(新手推荐)

  • 情况:你的设计里只需要 1 个 Aurora 接口,或者虽然有多个接口但它们分布在完全不同的 Quad 里(比如一个在 Bank 115,一个在 Bank 117)。
  • 设置:选择 Include Shared Logic in core。
  • 理由:最省事,不需要处理复杂的时钟互连,开箱即用。

场景 B:同一个 Quad 里有多个通道

  • 情况:你的板子上光口是 4 路的(QSFP),你想跑 4 个独立的 Aurora 单工/双工链路,它们都在同一个 Quad 里。
  • 设置:
    1. 第 1 个 IP 核:选择 Include Shared Logic in core。(它是 Master,负责开启 PLL)。
    2. 第 2、3、4 个 IP 核:选择 Include Shared Logic in example design。(它们是 Slave)。
    3. 连线:在顶层 Verilog 中,把第 1 个核输出的 gt_pll_out 等时钟信号,连到后面 3 个核的对应输入端口上。

场景 C:你想完全掌控时钟

  • 情况:你有非常复杂的时钟需求,或者你想在顶层自己实例化 IBUFDS_GTE 和 GT_COMMON 原语。
  • 设置:选择 Include Shared Logic in example design。这样 IP 核就是纯净的数据通路,时钟全靠你喂。

配置总结 & 避坑指南

  1. 时钟计算: 按照图中的配置:3.125 Gbps / 2 Bytes (16 bits) / 10 (8B/10B 编码效率) = 156.25 MHz。 user_clk 是 156.25 MHz。所有 AXI 接口逻辑(读写 FIFO、状态机)都必须在这个时钟频率下工作。
  2. 两端一致性: FPGA A 和 FPGA B 通信,它们的 Line Rate、Lane Width、Scrambler、Interface (Framing/Streaming) 必须一模一样,否则 channel_up 永远起不来。
  3. Refclk 必须准: 如果板子上的晶振是 156.25MHz,这里就必须填 156.25,不能填 125。
  4. 复位顺序: Aurora 也是基于 GT 的,对复位非常敏感。通常建议使用 IP 核自带的 reset_pb (信号) 或者按照官方 Example Design 的复位序列来操作。上电后,先 gt_reset,再 reset。

目录

  1. 1. Physical Layer (物理层设置)
  2. 2. Link Layer (链路层设置)
  3. 3. Error Detection (错误检测)
  4. 4. Debug and Control (调试与控制)
  5. 5. 物理引脚分配 (Physical Pin Assignment)
  6. 1. Lanes (通道数量)
  7. 2. Lane Assignment (通道分配表)
  8. 3. GT Refclk1 / GT Refclk2 (参考时钟选择)
  9. 6. Shared Logic (共享逻辑配置)
  10. 什么是“Shared Logic”?
  11. 1. Include Shared Logic in core (包含在核内) —— “我是房东”
  12. 2. Include Shared Logic in example design (包含在示例工程中/核外) —— “我是租客”
  13. 配置总结 & 避坑指南
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

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

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

更多推荐文章

查看全部
  • 大模型推理框架选型入门:Ollama、llama.cpp与vLLM对比
  • CMake 项目中 Vcpkg、Conan 与 Spack 的 C++ 依赖管理对比
  • 基于 SpringBoot 的电影院票务预定系统设计
  • 算法:长度最小的子数组(滑动窗口解法)
  • F5 刷新后浏览器前端发生了什么?
  • HTML 标签详解:网页结构、文本、表单与列表基础
  • 移动前端与 Web 前端开发的核心差异解析
  • VSCode GitHub Copilot 插件无模型问题解决方案
  • 安装 WSL Ubuntu 到 D 盘的方法
  • Mac 系统 Python 开发环境搭建:Pyenv + Virtualenv
  • 大模型分布式训练与高效调参技术实战
  • OpenClaw 启动后 Web 控制面板无法登录提示 Not Found
  • 6 款主流 AI 写作工具实测:网文创作效率对比
  • C++ STL 中 set 与 map 的实现原理及算法实战应用
  • Dify 工作流发布为 MCP Server 实践指南
  • OpenClaw 本地部署与 cpolar 公网访问配置指南
  • VSCode 插件 Git Graph 可视化 Git 提交记录教程
  • 递归与搜索算法实战:汉诺塔、链表操作及快速幂
  • C++ 模板编程基础:泛型编程入门与实践
  • Ubuntu 22.04 安装 NVIDIA Container Toolkit 配置 Docker GPU 加速

相关免费在线工具

  • 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