0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

电子设计 来源:赛灵思中文社区 作者:赛灵思中文社区 2020-11-29 10:29 次阅读

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)

编辑:hfy

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 存储器
    +关注

    关注

    38

    文章

    7116

    浏览量

    161894
  • 赛灵思
    +关注

    关注

    32

    文章

    1794

    浏览量

    130489
  • PCIe
    +关注

    关注

    13

    文章

    1078

    浏览量

    80694
  • GUI
    GUI
    +关注

    关注

    3

    文章

    605

    浏览量

    38754
收藏 人收藏

    评论

    相关推荐

    【正运动】高速高精,超高实时性的PCIe EtherCAT实时运动控制卡 | PCIE464

    充分利用PC的高效数据处理和开放性特性,以及控制卡高速PWM、多维位置比较输出PSO等功能,实现出色的多轴同步控制和高速点位以及复杂的轨迹运动控制等功能,确保了控制卡与上位机的无缝实时数据交互,极大
    发表于 01-24 09:48

    视频数据卡设计方案:120-基于PCIe的视频数据

    实验室数据采集 , 视频数据收发卡 , 信号采集、分析 , PCIe的视频数据卡 , 模拟输出
    的头像 发表于 12-22 09:40 168次阅读
    视频<b class='flag-5'>数据</b>卡设计方案:120-基于<b class='flag-5'>PCIe</b>的视频<b class='flag-5'>数据</b>卡

    AD采集卡设计原理图:630-基于PCIe的高速模拟AD采集卡

    一、产品概述 基于PCIe的一款分布式高速数据采集系统,实现多路AD的数据采集,并通过PCIe传输到存储计算服务,实现信号的
    发表于 12-11 11:36

    体验紫光PCIE之使用WinDriver驱动紫光PCIE

    的TLP协议,至于如何解析接收到TLP和组成发送TLP,需要往例程DMA模块深入解读。 如何利用起来官方例程中的DMA传输数据呢?下回分析
    发表于 11-17 14:35

    无线通信中的

    码实现方法 1. 数学模型 模块对每个数据块进行随机化处理,随机化序列和数据块同步,每个数据
    发表于 09-21 10:42

    PCIE采集系统:前端图像或ADC数据采集,通过PCIE传输至PC。可实现PCIE 2.0 x1/x4/x8。

    数据采集PCIe
    明德扬科技
    发布于 :2023年09月08日 11:56:14

    全爱科技Atlas200I A2 AI加速模块-FPGA PCIE接口验证平台

    Altas200 A2模块的调试串口、PCIE接口。提供的默认PCIE测试工程功能如下: 图 2-1PCIE接口demo说明 默认提供的PCIE
    发表于 09-05 14:39

    基于FPGA的PCIE I/O控制卡通信方案

    本文介绍一个FPGA 开源项目:PCIE I/O控制卡。上一篇文章《FPGA优质开源项目– PCIE通信》开源了基于FPGA的PCIE通信Vivado工程,用于实现上位机通过PCIE
    的头像 发表于 09-01 16:18 1455次阅读
    基于FPGA的<b class='flag-5'>PCIE</b> I/O控制卡通信方案

    项目承接案例:PCIE采集系统 前端图像或ADC数据采集,通过PCIE传输至PC。可实现PCIE 2.0 x#

    PCIeADC数据
    明德扬助教小易老师
    发布于 :2023年08月30日 12:25:38

    什么是PCIe

    PCIe是一种高速串行计算机扩展总线标准,自2003年推出以来,已经成为服务器(Server)和PC上的重要接口。今天为大家简单介绍一下PCIe的发展历史以及它的工作原理。 一、PCIe的由来
    的头像 发表于 07-04 18:15 1.1w次阅读

    VIAVI Xgig® 1000 PCIe 分析仪功能强大的 PCIe 应用程序监控和分析系统

    VIAVI Xgig® 1000 PCIe 和 NVM Express分析仪是领先的、功能最强大的 PCIe 应用程序监控和分析系统,它拥有先进的跟踪和
    的头像 发表于 05-30 14:28 701次阅读
    VIAVI Xgig® 1000 <b class='flag-5'>PCIe</b> <b class='flag-5'>分析</b>仪功能强大的 <b class='flag-5'>PCIe</b> 应用程序监控和<b class='flag-5'>分析</b>系统

    Zynq PCIe电路设计

    ZYNQ7045的PCIE电路设计,板卡使用插针式连接,引出了PCIE信号,未使用金手指。为了插入机箱设计了扩展版,插座与插针对应,带有PCIE金手指。目前遇到的问题是,当板卡连接扩
    发表于 05-16 11:07

    协议测试Open Lab分析底层PCIe的问题

    最近某开发嵌入式平台的客户到我们的协议测试Open Lab分析底层PCIe的问题。
    的头像 发表于 05-06 09:25 795次阅读
    协议测试Open Lab<b class='flag-5'>分析</b>底层<b class='flag-5'>PCIe</b>的问题

    可以将多个PCIe设备连接到一般的单个PCIe控制吗?

    我们可以将多个 PCIe 设备 (IC) 连接到一般的单个 PCIe 控制(在我们的案例中更具体地说是 NXP LS20xxA 处理)吗? 例如,将四个不同的
    发表于 05-05 07:35

    IMX7D使用内部PCIE_REFCLK,模块上的SoC无法启动怎么解决?

    嗨论坛,我们在我们自己的载板上使用 Variscite 的 i.MX7D SoM。模块上的 SoC 无法启动,因为我们的板子没有 100 MHz外部 PCIe 参考时钟,并且内核挂起并显示以下
    发表于 04-23 08:03