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

FPGA 调试:PCIE XDMA 无 Link Up 状态使用 LTSSM 定位问题

FPGA 调试中 PCIE XDMA 无法 Link Up 时,通过检查时钟、复位及 LANE 约束排查。若仍失败,利用 LTSSM 状态机监控链路训练过程。常见故障点包括物理层就绪信号异常或 Lane 协商失败,如 AC 耦合电容缺失导致。最终通过替换电阻为电容解决链路问题,使驱动正常识别设备。

古灵精怪发布于 2026/4/9更新于 2026/5/2918 浏览
FPGA 调试:PCIE XDMA 无 Link Up 状态使用 LTSSM 定位问题

问题现象

与驱动联调:驱动无法扫描到 Xilinx 的 PCIE 设备

通过 ILA 抓取 pcie_link_up 信号:发现 Link Up 一直为低

问题分析

出现这种情况,在 FPGA 中搭建测试环境,使用 XDMA+BRAM 的形式,减少其它模块的影响,框架如下:

文章配图

1. 检查 PCIE 的时钟

时钟必须使用原理图上的 GT Ref 差分时钟,通过 IBUFDSGTE 转为单端时钟。

文章配图

文章配图

文章配图

2. 检查 PCIE 复位

复位:PCIE 复位信号有要求——上电后,PCIE_RSTN 信号需在电源稳定后延迟一段时间再释放,通常是 100ms 以上。

而这 100ms 的时间,系统主要做以下的事情:

  • 电源稳定时间
  • 参考时钟稳定时间
  • PCIe IP 核的复位和初始化时间
  • 链路训练时间

典型的 100ms 时间分配:

  • 0-10ms:电源稳定 (Power Stable)
  • 10-20ms:参考时钟稳定 (Refclk Stable)
  • 20-30ms:复位释放和 PLL 锁定 (Reset Release & PLL Lock)
  • 30-50ms:物理层初始化 (PHY Initialization)
  • 50-70ms:链路训练 (Link Training)
  • 70-100ms:设备配置 (Device Configuration)

为了避免这个问题,建议在程序中添加这么一段复位控制。但是有的时候你不添加也没有关系,因为有的时候硬件的复位时序可以满足这个 100ms 的要求,但是保险起见还是加上。

文章配图

3. LANE 检查

检查你的 LANE 约束,一般 XDMA IP 核生成的时候会自带一个约束文件,约束每个 LANE 的对外接口,但我们也可以自己约束,保证端口与原理图匹配即可。

文章配图

文章配图

这些确认无误,还是无法 Link Up 的,先将 PCIE 降速为 1.0 X1,看看情况。

4. PCIE 降速

文章配图

如果还是不行,那我们需要检测 PCIE 的相关的几个状态。

5. 具体问题定位(PCIE LTSSM 状态)

这里我们需要查看 PCIE 的 LTSSM 状态机,那什么是 LTSSM 状态机呢?

是一种常用于 PCI Express(PCIe)接口的状态机,它可以控制 PCIe 总线的传输流程。LTSSM 由多个状态组成,每个状态都代表了不同的总线传输阶段。

5.1 给 LTSSM 信号添加 Debug

首先:勾选配置界面的 Use Class Code Lookup Assistant 这个选项。

文章配图

此时还是无法在端口显示出 LTSSM 信号,不要着急,按照你的流程生成 IP 核,执行完 Run Syn 操作,然后点击 Set up debug。

文章配图

在这里搜索 LTSSM 的小写,就能找到 ltssm_state 的信号,将其添加到 Debug 里面正常的综合实现就可以了。

文章配图

5.2 LTSSM 状态说明

LTSSM 状态机根据厂商不同会有微小的差异,我们使用的是瑞芯微的,我的状态卡在了 08 即 Lane 顺序检测。意味着是 Lane 的问题。

文章配图

那我们通过这个方式监控的除了 LTSSM 信号以外,还有几个关键信号。

5.3 其余关键信号说明
  • phy_rdy_n:物理层就绪,一种存在性检查,0:表示物理层就绪,1:表示异常。检查时钟是否存在?复位序列是否正常?PLL 是否正常锁定?电源是否 Power Good?
  • cfg_current_speed_o:协商的速率,PCIE 1.0/2.0/3.0 分别对应 1/2/3。
  • link_width:协商的宽度。

6. 故障点说明及解决

我的故障就是:

  • phy_rdy_n 为 0,说明物理层就绪,时钟和复位是正常的。
  • LTSSM 卡在了 0x08,且 Link_Width 为 0,说明是 Lane 的异常导致的。

文章配图

重新检查电路,发现主机的 TX 端,没有放置电容,而使用的是电阻,导致的 AC 耦合问题,将电阻更换为电容,链路问题解决。

文章配图

可以看到 Link Up 拉起,驱动可以正常检测到 PCIE 设备。

目录

  1. 问题现象
  2. 问题分析
  3. 1. 检查 PCIE 的时钟
  4. 2. 检查 PCIE 复位
  5. 3. LANE 检查
  6. 4. PCIE 降速
  7. 5. 具体问题定位(PCIE LTSSM 状态)
  8. 5.1 给 LTSSM 信号添加 Debug
  9. 5.2 LTSSM 状态说明
  10. 5.3 其余关键信号说明
  11. 6. 故障点说明及解决
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

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

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

更多推荐文章

查看全部
  • Unity VR 全景视频高分辨率播放性能优化方案
  • 本地语音识别技术:Whisper 的隐私保护与多场景应用
  • 宜搭低代码开发师(高级)认证实操:待办列表管理
  • Minecraft 假面骑士 100 天整合包安装与环境配置指南
  • AI 大模型原理、应用与未来趋势
  • 全球情报监控平台 World Monitor 开源项目解析
  • 学生成绩管理系统实战:AI 辅助开发全流程解析
  • 医疗AI中的马尔科夫链深度应用与Python实现
  • Android 开发核心知识点笔记:从基础原理到算法面试实战
  • 量化金融领域主要职位解析:研究、开发与交易
  • 基于 Higress 将 REST API 转换为 MCP Server 工具
  • Stable Diffusion 大模型基础与选型指南
  • Stable Diffusion 的三款主流替代方案
  • 2026 年 AI 生成产品原型工具实测:墨刀、FigmaMake、Uizard 对比
  • 基于 MCP 协议辅助 JS 逆向分析与调试
  • C++ 搜索引擎实战:日志宏封装与 Server 交互逻辑
  • 企业级 Copilot 安全:权限配置与风险防控的 4 个核心要点
  • Seedance 2.0 对接飞书机器人:鉴权、会话管理与配置避坑指南
  • Windows 系统 Python 版本升级与管理实战
  • 6 层高速 PCB 设计实战:立创逻辑派 FPGA-G1 开发板笔记

相关免费在线工具

  • 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