浅谈PCIe包分析解扰器模块的输出数据

pipe 接口上的数据在 gen3 的速度下被加密。当调试 pcie 问题时,能在 pcie 链接上查看各个包会很有帮助。
若要实现此目的,用户需拥有协议链接分析器。由于其成本较高,能接触到此等设备的用户不多。随协议链接分析器提供的包分析工具很广泛,可对链接流量进行深入分析。
赛灵思 ultrascale+ 器件的 pcie® express gen3 ip 集成块有一个功能,可让您集成一个解扰器模块,以便解密在 pipe 接口上被加密的数据。尽管它不能提供与协议链接分析器相同数量的分析数据,但它可以在识别潜在问题方面提供帮助,而且在大部分情况下可帮助追踪问题的根本原因。
本文将详细介绍如何通过识别来自链路并进入 pcie ip 的不同类型的 pcie 包来分析解扰器模块的输出数据。
解扰器模块在 pcie ip 配置 gui 中被使能,具体如下:
解扰器模块只在 gen3 模式中被支持。
如果复选框变成灰色,要确保配置 gui 的“basic”标签中的链接速度被设为 8.0 gt/s。如果该选项不可用,请将“basic”标签中的“mode”设为“advanced”。
为了追踪 pipe 接口上有效 pcie 包的起始点,该接口提供了两种信号:*_sync_header 和 *_start_block。
为了确认 rx_data 上的数据是否为有效包,请检查以下各项:
*_data_valid 已被有效 *_start_block 已被有效 *_sync_header 为“1”或“2”。
- 如果该值是“1”,则表示是“ordered set”的起始点。
- 如果该值是“2”,则表示是 tlp 或 dllp 包的起始点。 被解扰的数据分析也可在仿真中进行。
以下的波形图来自与 ip 一起生成的 gen3 示例设计的仿真。
退出“recovery.speed”ltssm 状态后的第一个包是 eieos(电气空闲退出有序集)。
上文波形图中所示的 ff00ff00 就是 eieos。
被解扰信号上的第一个包将是 eieos。
如前文所述,*_start_block 必须有效,而且下文波形图中所示的 *_sync_header 信号应为“1”。
一旦所有均衡状态都已完成,在进入 l0 状态之前,您应该看到 555555e1。
这就是 sds(数据流起始点)。一旦您看到了 sds,则意味着有序集交互已完成。接口上的下一个包类型将是初始流量控制信用,即,我们应在接口上看到 dllp 包。
下面的波形图即显示了 dllp 包。dllp 包以 sdp(dllp 包起始点 - acf0)开始。在多通道设计时,数据将被跨通道分布。
initfc1-p(posted data 的初始流量控制)以“40”开始。下文来自 lecory 分析器的捕获显示 initifc1-p 标识符。
在下文的波形图中,dllp 包为 initfc1-p。
dllp 包格式共有四种:
ack 或 nak dllp 包格式 功耗管理 dllp 包格式 流量控制 dllp 包格式 供应商特定 dllp 包格式 每一种 dllp 包的长度都是 6 个符号。 有关解码 dllp 包内容的信息,请参阅 pci express 规范。在下文的波形图中,“60”是 initfc-cpl(cpl 代表 completion)。“50”是 initfc-np(np 代表 non-posted)。
updatefc-p 以“80”开始。被解扰数据中的更新值为十六进制,因此需要将其转化为十进制,以便获得可用信用的准确数字。
有序集总是按通道来的。每条通道都有其自己的有序集。 dllp 和 tlp 被跨通道分配;每条通道一个字节。
dllp 只在 lane-0、lane-4 或 lane-8 中开始,即,f0 只能在 lane 0、4 或 8 上。tlp 可在任何通道上开始。
txrate 表示链路运行的速度。向 gen3 速度的过渡在“recovery.speed”(0c)ltssm 状态中发生,如以下波形图所示。
在 l0 状态之前以 gen1/gen2 速度运行的包未被加扰,它仅在 gen3 速度下被加扰。在 pipe 接口上以 gen1/gen2 速度运行的有序集可被直接读取。但是,所有速度的所有内容在 l0 状态中都会被扰码。下面的波形图显示了在 gen1 速度时的捕获。
在这里,“4a”系指其 ts1 有序集。只有在速度如 txrate 所示变化至 gen3 时才需要解扰器模块。
下列波形图中的 aaaaaaaa 表示一个 skp 有序集。
e1 表示 skp_end 符号的定义详见如下所示的 pcie 规范。
下面的波形图显示了在 gen3 链接上的一个 ts1 有序集。所示的“1e”表示在 gen3 速度时的一个 ts1 有序集。
下面的波形图显示了每条通道中的一个 ts1 有序集。它不会跨越多条通道。它在所有通道上都相同,只是通道号不同。在下面的波形图中,通道号分别为 00 和 01。
这里的“0e”是 symbol-4。symbol-4 在规范中的定义如下:
0e= 0000_1110。当我们将这些位映射到规范中的 symbol-4 描述上时,它表示 gen3 速度得到了支持。
symbol-6 在 ltssm 所处的不同状态中具有不同含义。在如下所示的波形图中,ltssm 为“28”,则意味着它位于 phase-0 中。
symbol-6 为 20,即 001_0000。由于它在 phase-0 中,则位 1:0 被设为“00”。
下面的波形图显示了一个完整的 ts1 有序集。
下面的波形图显示了设置为 gen3 速度的一个 ts2 有序集。“2d”表示它是一个 ts2 有序集
至此,我们已讨论了有关有序集和 dllp 的内容,那么现在我们来看一下如何在 pipe 接口上识别 tlp。
每个 tlp 都以 stp(tlp 包起始点)标识开始。因此,在解扰器中查找具有 *_start_block = 1 和 *_sync_header= 2 的任何“nf”。
每个 stp 标识都是 4 个符号并表示 tlp 的开始。
stp 字段的定义详见下图所示:
以下是 memwr(存储器写入 tlp)的示例。请注意,这是一个 x4 链接,因此所有内容都被跨越分配。下面的波形图取自示例设计仿真。
该波形图显示了来自主机测试平台而通过 pcie 硬块的 cq 接口进入用户逻辑的存储器写入传输事务。该传输事务在 pipe 接口上具体理解如下:
开始从 lsb 读取:
dw0 = clkcycle0-byte0 (lane-0 to lane-3) -> “6f-80-20-1d” -> stp token dw1 = header starts here -> clkcycle0-byte1 (lane-0 to lane-3) -> “40-00-00-01” -> indicates fmt/type = 0x40 which is a 3dw memwr request, length = 1 dw2 = clkcycle0-byte2 (lane-0 to lane-3) -> 00-00-00-0f” -> 0000- reqid, tag – 00, 1st dw byte enable = f dw3 = clkcycle0-byte3 (lane-0 to lane-3) -> “00-00-00-10” -> address = 'h10 dw4 = clkcycle1-byte0 (lane-0 to lane-3) -> “04-03-02-01” -> payload (byte0 to byte3, 01-> msb, 04-> lsb)


适用于工业和商业建筑的门禁系统解决方案,安全节能易安装!
Pico新品一体机在3月25日正式发售
基于云计算的校园信息化教学整体解决方案
单片机程序死机,可能是这几个原因
原本给运营商打工的华为,如今中国最大手机公司怎样练成的?
浅谈PCIe包分析解扰器模块的输出数据
三门湾,电气联接,接线端子,解决方案,智能制造及工业4.0
微压传感器的原理说明
大联大首届智能飞行器设计大赛正式开赛
云计算不够用 全球首个雾计算实验室落户
为加大电改力度打赢蓝天保卫战,国家电网组建26家省级综合能源服务公司
可编程USB转串口适配器开发板转UART I2C应用
“下一个百亿规模AIGC产品”揭晓,墨芯人工智能上榜
北斗的定位系统,相比以往的GPS会有哪些变化呢?
谷歌云目标2023年超越微软Azure和亚马逊AWS
FPC覆铜布线有哪些需要关注的点
粤芯半导体二期扩产项目成功签约 新增投资65亿元
分析发动机自动启停技术原理解读
海光国产x86处理器未来可能会在中芯国际生产
入选全球灯塔工厂 西部数据践行可持续发展承诺