FPGA Debug:PCIE XDMA没有Link up(驱动检测不到xilinx PCIE设备)使用LTSSM定位问题

FPGA Debug:PCIE XDMA没有Link up(驱动检测不到xilinx PCIE设备)使用LTSSM定位问题

问题现象:

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

通过ila抓取pcie_link_up信号:发现link up一直为低

问题分析:

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

1 检查PCIE的时钟

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

2 检查PCIE 复位

复位:PCIE复位信号有要求--上电后,PCIE_RESTN信号需在电源稳定后延迟一段时间再释放,通常是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_cuurent_speed_o:协商的速率,PCIE1.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设备。

Read more

AI大模型学习和八股文资料合集

AI大模型学习和八股文资料合集

关于 随着人工智能技术的飞速发展,AI大模型(如GPT、LLaMA、ChatGLM)已成为推动行业变革的核心力量。无论是开发者、研究者,还是产品经理,掌握大模型的核心技术与应用方法都至关重要。然而,面对海量学习资源,如何高效入门并深入实践,往往令人感到无从下手。为此,企鹅整理了这份AI大模型相关资料合集,涵盖从理论到实践、从入门到进阶的全方位学习资源,助你快速提升大模型领域的知识与技能! 0.资源分类介绍 1. AI产品经理书籍与面试 * 核心内容:AI产品经理的必备知识,包括系统化思维、数据标注、语音识别、数据挖掘等。 * 亮点资源: 《AI产品经理入门手册》(上下册):快速掌握AI产品设计方法论。 《AI产品经理面试高频100题》:助力面试准备,提升求职竞争力。 * 适用人群:AI产品经理、技术转产品岗的开发者。 2. 各种报告 * 核心内容:大模型行业的最新动态、技术趋势与应用案例。 * 亮点资源: 《2023大模型落地应用案例集》:深度解析大模型在政务、金融、教育等领域的成功实践。

llama-cpp-python上下文窗口扩展:突破长度限制技巧

llama-cpp-python上下文窗口扩展:突破长度限制技巧 【免费下载链接】llama-cpp-pythonPython bindings for llama.cpp 项目地址: https://gitcode.com/gh_mirrors/ll/llama-cpp-python 在处理长文档、多轮对话或复杂任务时,你是否经常遇到模型上下文窗口不足的问题?本文将介绍三种实用方法,帮助你突破llama-cpp-python的长度限制,轻松处理超长文本。读完本文,你将掌握:基础参数调优、滑动窗口实现和智能文本分块的完整解决方案。 核心参数解析:n_ctx与RoPE缩放 llama-cpp-python的上下文窗口大小主要由n_ctx参数控制,默认值为512 tokens。通过修改这个参数,可以直接调整模型能处理的最大上下文长度。以下是关键参数说明: 参数名类型描述默认值n_ctxint上下文窗口大小(tokens)512rope_scaling_typeintRoPE缩放类型LLAMA_ROPE_SCALING_TYPE_UNSPECIFIEDrope_freq_ba

Core ML Stable Diffusion调度器终极指南:DPM-Solver与PNDM深度解析

Core ML Stable Diffusion调度器终极指南:DPM-Solver与PNDM深度解析 【免费下载链接】ml-stable-diffusionStable Diffusion with Core ML on Apple Silicon 项目地址: https://gitcode.com/gh_mirrors/ml/ml-stable-diffusion 还在为图像生成速度慢而烦恼?想要在Apple设备上快速获得高质量AI图像?本文将从实战角度为你深度解析Core ML Stable Diffusion中两大主流调度器——DPM-Solver与PNDM的核心差异,帮助你在速度与质量间找到最佳平衡点。 从用户痛点出发:为什么调度器如此重要? 当你使用Stable Diffusion生成图片时,是否遇到过这些问题: * 生成一张512×512的图片需要等待几分钟 * 增加迭代步数后质量提升不明显,但耗时却大幅增加 * 在iPhone或MacBook上运行时内存占用过高 这些问题的根源往往在于调度器的选择。调度器就像是AI绘画的"导演",负责控制从随机噪声到

node-llama-cpp错误处理与调试:解决本地AI开发常见问题

node-llama-cpp错误处理与调试:解决本地AI开发常见问题 【免费下载链接】node-llama-cppRun AI models locally on your machine with node.js bindings for llama.cpp. Force a JSON schema on the model output on the generation level 项目地址: https://gitcode.com/gh_mirrors/no/node-llama-cpp node-llama-cpp是一款强大的工具,它提供了llama.cpp的node.js绑定,让你能够在本地机器上运行AI模型,并在生成级别强制模型输出JSON模式。对于新手和普通用户来说,在使用过程中可能会遇到各种错误和问题,本文将详细介绍常见错误的处理方法和调试技巧,帮助你顺利进行本地AI开发。 常见错误类型及解决方法 二进制文件未找到错误(NoBinaryFoundError)