如何在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操作;

相关推荐
皇华ameya1 小时前
AMEYA360:村田电子更适合薄型设计应用场景的3.3V输入、12A输出的DCDC转换IC
fpga开发
千穹凌帝4 小时前
SpinalHDL之结构(二)
开发语言·前端·fpga开发
一口一口吃成大V9 小时前
FPGA随记——FPGA时序优化小经验
fpga开发
贾saisai10 小时前
Xilinx系FPGA学习笔记(九)DDR3学习
笔记·学习·fpga开发
redcocal15 小时前
地平线秋招
python·嵌入式硬件·算法·fpga开发·求职招聘
思尔芯S2C1 天前
高密原型验证系统解决方案(下篇)
fpga开发·soc设计·debugging·fpga原型验证·prototyping·深度调试·多fpga 调试
坚持每天写程序1 天前
xilinx vivado PULLMODE 设置思路
fpga开发
redcocal2 天前
地平线内推码 kbrfck
c++·嵌入式硬件·mcu·算法·fpga开发·求职招聘
邹莉斯3 天前
FPGA基本结构和简单原理
fpga开发·硬件工程
悲喜自渡7213 天前
易灵思FPGA开发(一)——软件安装
fpga开发