如何在XDMA中查看LTSSM状态机

简介

经常会遇到PCIe不能识别的问题,到底怎么去定位。本文以XDMA 为例,一方面复习下LTSSM状态机,一方面描述下如何通过FPGA的XDMA查看这个状态机

技术名词

LTSSM是一种常用于PCI Express(PCIe)接口的状态机,它可以控制PCIe总线的传输流程。LTSSM由多个状态组成,每个状态都代表了不同的总线传输阶段。在PCIe通信中,通过状态转移来实现数据的传输和接收。具体来说,LTSSM可以控制PCIe设备之间的握手、数据传输、错误处理等操作,保证数据在传输过程中的稳定性和完整性。

XDMA指的是跨领域内存访问(Cross Domain Memory Access),它是一种基于硬件实现的内存共享技术,可以在不同的设备之间实现高速、低延迟的数据传输。相比于传统的数据传输方式,XDMA可以大大减少数据传输的时间和成本,并且可以支持多种不同的设备之间的数据传输,包括FPGA、GPU、CPU等。

通过使用XDMA,可以将不同设备之间的数据传输延迟降至最低,同时也可以实现高速数据传输,提高系统性能和响应速度。此外,由于XDMA是一种硬件实现的技术,因此它可以保证数据传输的稳定性和安全性,本文特质xilinx的IP核。、

如何查看

首先打开vavodo,选择XDMA 的IP核。点击

需要勾选PCIe ID标签页中的Use Class Code Lookup Assistant之后才能搜索到相关itssm信号。

在编译之后。搜索LTSSM,添加debug信号。

LTSSM-Detect

Detect:检测远端阻抗以确定是否有设备

a) Detect.Quiet时,Tx处于Electrical Idle状态,LinkUp清0,以及其他复位动作

b) 只要有lane退出Electrical Idle,就进入Detect.Active,此时双方检测对端阻抗,确定对端是否有设备

c) 只要有某条/几条lane的双方均检测到对端有Rx,则进入Polling,其他没有检测成功的lane进入Electrical Idle,一条lane也没有则回到Quiet

LTSSM-Polling

Polling:发送和回复TS,bit lock,symbol lock,lane 极性在此阶段确定

TS(Training Sequences)用于初始化bit align,symbol align,交换参数。TS1主要检测PCIe链路配置信息,TS2确认TS1的检测结果

a)Polling.Active,Tx向对端发送TS1,对端Rx接收到TS1后通过其Loopback发送回来

b)当Rx收到8个连续的TS1或者收到8个TS2,这种情况下进入Polling.Configuration

c)Polling.Configuration:此时TX发送TS2(lane/link number为PAD,linkup为0)

d)当在Polling.Configuration时收到8个连续的TS2,并且在收到一个TS2之后再发出去16个TS2之后进入Configuration状态

LTSSM-Configuration

Configuration:Rx/Tx协商link number,lane number,(这步骤可以确定link width)当recovery出现错误没有进入L0也可能先进Configuration

首次从Polling进入Configuration时LinkUp=0,从recovery进入该状态是LinkUp=1

Configuration.Idle时,PCIe链路设置完毕,当收到对端8个Idle序列并且向对端发送16个Idle序列之后将LinkUp值1,数据链路层从DL_Inactive进入DL_Init,物理层进入L0

LTSSM-Recovery

Recovery:用于切换data rate,或者从L0经过Recovery.Rcvrlock再到Configuration去切换link width,此时bit lock(位锁),symbol lock(符号锁) 会重新建立

当PCIe链路需要重新训练时,进入Recovery状态。主要有以下几种情况:

(1) PCIe链路信号发现error,需要调整Bit Lock和Symbol Lock;

(2) 从L0s或者L1低功耗电源状态退出;

(3) Speed Change。因为第一次进入L0状态时,速率是2.5GT/s. 当需要进行速率调整5.0GT/s或者8.0GT/s时,需要进入Recovery状态进行Speed Change. 这个阶段,Bit Lock、Symbol Lock等都需要重新获取;

(4) 需要重新调整PCIe链路的Width;

(5) 软件触发retrain操作;

相关推荐
松小白song9 小时前
FPGA架构解密:为何要用750kHz低频时钟驱动二级缓存?
fpga开发
Riwuarua13 小时前
从近似0基础开始FPGA开发 -- part.2 仿真
fpga开发
unicrom_深圳市由你创科技1 天前
国产FPGA的芯片选型应该考虑哪些因素?
fpga开发
明德扬1 天前
高速采集选 Direct RF 还是外置 ADC/FMC?从采样率、JESD204B 和开发周期对比
fpga开发·fpga
明德扬1 天前
机器人为什么需要“感知—控制—计算”一体化?FPGA 多传感器底板设计要点
fpga开发·机器人·fpga
zlinear数据采集卡1 天前
数据采集卡从入门到精通(46):趋势展望——软件定义硬件、AI分析与开源生态
arm开发·stm32·单片机·嵌入式硬件·fpga开发·开源
落chen2 天前
基于FPGA的SDRAM开发-进阶篇
fpga开发
飞猫的边缘AI2 天前
边缘AI-5: 了解最灵活的计算芯片FPGA
人工智能·fpga开发·ai芯片·边缘ai·计算芯片·边缘ai芯片·titanium edge
badboy1212 天前
Xilinx Vitis Core Development Kit 2025.2.1_Win+Linux
linux·fpga开发·xilinx
海盐nnn3 天前
面向 AI 的 FPGA 开发流程:别急着让它写代码,先把方向定好
fpga开发