ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

synopsys PCIE IP协议解析

2021-11-04 06:31:05  阅读:260  来源: 互联网

标签:synopsys TLP Loopback IP 总线 接口 PCIE link posted


synopsys PCIE IP协议解析

1.Overview

Core支持单个Pcie内核的Loopback功能,该功能主要为了做芯片验证,以及在没有远程接收器件的情况下完成自己的回环。同时,Core也支持有远程接收器件的loopback,在该中情况下,远程接收器件称为loopback slave。该种模式可以用来完成板级的debug,BER测试,系统调试。

   在做Loopback的时候需要注意将“Link up”强制写成1(根据specification该位应该是0),造成系统处于L0状态的假象,以便系统完成link的initialize。

1.1    Local Digital Loopback (PIPE/RMMI)

本地的Loopback分为3个阶段:Entering Local Loopback、In PIPE Loopback、Exiting Local Loopback

 

 

 1.1.1    Entering Local Loopback

Loopback将PIPE/RMMI RX 与自身的PIPE/RMMI TX相连,在该种Loopback模式下,只能运行LTSSM(link training and statues statemachine),在该状态下无法进行自身的training和进入到L0状态。进入local loopback的流程如下:

Ø  先要disable“Gen3 Control Register GEN3_RELATED_OFF.

Ø  Set the PIPE_LOOPBACK bit in the PIPE_LOOPBACK_CONTROL_OFFregister.

Ø  Set the LOOPBACK_ENABLE bit in the PORT_LINK_CTRL_OFF register.

 

1.1.2    In PIPE Loopback

在该Loopback 模式下,通过虚拟系统进入L0状态,可以进行link initialize。在进入了Loopback mode以后,Core会为VC0的flow control进行初始化。当该初始化完成后,application就可以通过XALI0/1/2接口发送TLP。当TLP包 loopback回来后,application 需要发送complete以响应自身发的TLP包。当TLP和DLLP被发出同时被收回时,接口将对自身启动flow control。在L0阶段,当TLP因为link 错误而没有被接收到时,TLP包将会被重新发送。TLP的发送将会像正常的link一样进行credit 检测接收,也会在L0阶段进行正常的error check和filter check。

MessageConsiderations

当接口是一个上行接口(USP),必须保证没有使能生成的error message。当有错误发生在PCIelink时,同时使能了error message的生成,那么USP将会生成一个 Error Message。有接口生成的数据包将会loopback到自身USP不期望接收message,将会生成一个附加的message。

在进入L0阶段时,DSP接口必须自动的发送Set_Slot_Power_Limitmessage该message将会被自身发送并且接收回来。但是DSP接口是不期望接收到Set_Slot_Power_Limit message的,所有该message将会被作为无效的message,同时Device Status 中的unsupported requestdetected bit将会被置位。

    在DSP接口中,Core内部生成的message 将会与application通过XALI0/1/2生成的TLP混合在一起发送。

Enumeration and BAR Setup

必须配置BARS(USP),memory/IO rangs(DSP),将memoryspace 和 bus master 置位,以便可以接收filter accepts TLP。可以将filter rules关掉,以便一些本该被滤掉的TLP能够被接收。

在Loopback 模式下,可以通过DBI 初始化BAR。

Gen3 Operation

Youmust set the Gen3 Equalization Disable bit in the “Gen3 Control Register” GEN3_RELATED_OFF, as the PHY has no role in local loopback.

1.1.3     Exiting Local Loopback

Toexit loopback mode:

■ Clear the PIPE_LOOPBACK bit in the PIPE_LOOPBACK_CONTROL_OFF register.

■ Clear the LOOPBACK_ENABLE bit in the PORT_LINK_CTRL_OFF register.

1.2   配置流程

在loopback模式下,好像没有提到角色为RC或EP称为Loopback master 和salve,所以认为loopback的时候不区分RC和EP的,但是有USP和DSP的区别,不知道怎么设置?

这个流程是自己根据手册推敲的,不知道对不对:

1)SII app_ltssm_enable = 0  disablelink training;

2)DBI 配置系统基本信息

3)SII app_ltssm_enable = 1  enable  link training;

4)DBI “Link up”强制写成1,让系统认为link training 已经完成,并且进入了LTSSM  L0阶段

5)DBI 进入loopback

Ø  先要disable“Gen3 Control Register GEN3_RELATED_OFF.

Ø  Set the PIPE_LOOPBACK bit in the PIPE_LOOPBACK_CONTROL_OFFregister.

Ø  Set the LOOPBACK_ENABLE bit in the PORT_LINK_CTRL_OFF register.

6)设置BAR(USP)如果是DSP,设置memory/IO ranges,在前期可以turn off the filter rules。

7)开始传输TLP。

Overview

 

 

 图1

如上图为整个PCIE的框架,在C1中PIPE-CompliantPHY部分的SERDES模块,DWC PCIe Core为synopsys提供的IP黄色部分为用户需要完成的部分,主要包括参数的配置和数据的发送和接收。

 

2.  Architecture

 

 

 图2

该IP包含4个重要的模块,CXPL、RADM、XADM、CDM。

Ø  Common ExpressPort Logic (CXPL) Module:

整个协议的核心部分,包含了物理层、数据链路层的全部功能、同时包含了传输层大部分的功能。其中包含了一个重要的缩写,LTSSM(link training and statues state machine),在后面的文档中将重复出现,link training的目的在于完成链路的链接。

Ø  TransmitApplication-Dependent Module (XADM):

面向数据包发送的应用模块,主要包括以下3个功能:

1)TLP(Transaction Layer Packet)arbitration

2)TLP formation

3)Flow control creditchecking

   该模块内部为直接转发的结构,除了重发的缓存区外,内部没有发送的缓存区。

Ø  ReceiveApplication-Dependent Module (RADM):

面向数据包接收的应用模块,主要包括以下3个功能:

1)Sorting/filtering of received TLPs. The filtering rules and routing areconfigurable.

2)Buffering and queuing ofthe received TLPs.

3)Routing of received TLPto the core’s receive interfaces.

Ø  Configuration-DependentModule (CDM):

功能:

1)Standard PCI Express configuration space

2)Core-specific register space (Port Logic Registers)

相关的模块:

Ø  Power ManagementController (PMC)

Ø  Local BusController (LBC) and Data Bus Interface (DBI)

The LBC module providesa mechanism for a link partner (in EP mode only) or a local CPU (through the DBI) to access:

1)Internal registers (in the CDM)

2)External applicationregisters connected externally to the ELBI

Ø  MessageGeneration Module (MSG_GEN)

Ø  Hot Plug ControlModule (HOT PLUG)

内部各个模块间的关系作为用户,不需要与CXPL直接做数据交互需要关心的内容主要是与RADM、LBC、CDM、XADM、MSG_GEN、PMC的数据交换,以及与之交互的一大堆的接口。下面从图中的上往下介绍各个接口的作用和意义。

■“Receive Bypass Interface (RBYP)” on page 233

■“Receive Request Interface (TRGT1)” on page 234

■“Data Bus Interface (DBI)” on page 240

■ “External Local Bus Interface (ELBI)” on page 238

■ “Message Signaled Interrupt (MSI) Interface”on page 242

■ “MSI-X Interface” on page 243

■ “Transmit Interfaces (XALI0/1/2)” on page 22

■ “Vendor Message Interface (VMI)” on page 247

■ “System Information Interface (SII)” on page 248

作为用户,认为需要知道以上各个接口的作用和用法,并且知道每个接口需要在整个传输中扮演的角色在IP生成后,也许部分接口用户不需要知道,但是在C1 bring up阶段,每个接口的具体作用应该都是必须要明白的。

3.Core operation

3.1   Initialization

1)先disable link training

2)通过DBI(data bus interface)配置core的stickyregisters,需要配置什么目前不知道?

3)Enable link training

4)等待link完成。

5)root Complex枚举Downstream Device(什么是Downstreamdevice????)

Ø  读取 Downstream device的配置空间

Ø  配置device的capabilites(具体配置什么?)

Ø  配置switch ports  的base和limit寄存器,以反映devices enumerated downstream的BAR(Base Address Register)的范围。

Ø  配置endpoint的BAR。

(该部分是用户完成,还是IP自动完成?)

6)使能BME、MSE、ISE。

7)开始传输数据。

3.2  Link Establishment

LTSSM是IP core根据PCI Express Base 3.1标准完成的,(是否说linkestablishment不用用户关心???,IP已经搞定了),在link建立的阶段,用户需要关注的只有3问题:

Ø  “How to TieOff Unused Lanes” on page 1145.在系统中有没有用到的lane,需要进行tie off

Ø  “LaneReversal and Broken Lanes” on page 1149.对lanes进行颠倒或者翻转调整,主要是为了解决物理层上的连接错误问题。

Ø  Runtime Link Width Adjustment Through Detect。在传输过程中调整link路的位宽。

问题都属于pcie的高级功能,在bring up可以不予考虑,只有在系统跑起来后需要进一步考虑这些细致的问题。

3.3  Transmit TLP(Tansaction Layer Packet)Processing

主要涉及3个问题:

Ø  “Transmit TLPArbitration”   仲裁

Ø  “ACK/NAKScheduling”

Ø  “TransmitReplay”

3.3.1    Transmit TLP Arbitration

阅读本章节可以参考http://blog.sina.com.cn/s/blog_6472c4cc01018893.html相关的内容

需要注意的:

Ø  Core 不检测TLP是否有错误

Ø  Core不检测TLP是否超出有效负载的最大值

TLP(Tansaction Layer Packet)和DLLP(Data Link Layer Packet)在发送的仲裁中优先级相同。

 

 

 Selecting Transmit ClientArbitration Scheme

所有的发送端的接口XALI0/1/2(或者AHB/AXI master 或者slave)都遵循3中仲裁的方式,

(注:其实PCIe规定的内部仲裁规则作为用户,只有了解仲裁规则即可,在core内部已经完成,用作FPGA系统,在PCIe的总线体系中,一般扮演endpoint的角色较多作为RC,其组成的拓扑结构也会相对简单。)

1)VC(virtual channal) based,virtual channel的概念来自switch中,规定的是多个EP向一个设备发送数据包时的仲裁规则。

 

 

 2)round robin(RR)可以翻译为轮叫调度

3)strictpriority()

For moredetails, see “VC-BasedArbitration” on page1173.

Effects of Flow Control Credits On Transmit Client Arbitration(重要)

在允许远程的设备发送一个TLP(transation layer package )之前,core需要检测远程设备的特殊传输方式(posted, non-posted,completion)的flow control credit 是有效的。而TLPs是否通过credit check 取决于所提供的仲裁方案,内部生产的报文(completions)和消息(messages)同样需要经过仲裁,即使是最高优先级也不例外。

(注:其中posted和non-posted的解释如下,PCI总线规定了两类数据传送方式,分别是Posted和Non-Posted数据传送方式。其中使用Posted数据传送方式的总线事务也被称为Posted总线事务;而使用Non-Posted数据传送方式的总线事务也被称为Non-Posted总线事务。

其中Posted总线事务指PCI主设备向PCI目标设备进行数据传递时,当数据到达PCI桥后,即由PCI桥接管来自上游总线的总线事务,并将其转发到下游总线。采用这种数据传送方式,在数据还没有到达最终的目的地之前,PCI总线就可以结束当前总线事务,从而在一定程度上解决了PCI总线的拥塞。

而Non-Posted总线事务是指PCI主设备向PCI目标设备进行数据传递时,数据必须到达最终目的地之后,才能结束当前总线事务的一种数据传递方式。)

比如当使用RR仲裁方式,当posted数据传输(通过XALI1接口完成)紧跟在completion(通过XALI0进行)传输的后面此时如果credit通过,则posted传输将先于completion进行传输,但是如果posted的credit是无效的,那么completion可以绕过posted通过XALI0,发送出去,但是XALI1接口将会被posted阻塞之后的XALI1将无法通过任何的no-posted、posted、CPL(completion)的TLP(tansaction  layer packet)。也就是XALI1接口被完全阻塞了。而作为用户,需要合理的利用这3个数据接口,以避免阻塞。

当应用单一的接口发送多种类型的信息(posted、non-posted),但是当前的请求(如posted)如果因为缺失credit而导致阻塞,那么当前接口将会同时阻塞类型的信息传输(比如no-posted),即使其可以通过credit。为了避免这种情况,应用应该保证不同的接口发送不同类型的请求(如:XALI0 for postedrequests, XALI1 for non-posted requests, and XALI2 for completions)另外的方法就是保证每次只生成可以通过FC credit的request,具体的实现方式就是每次通过检查core输出的FC credit的标准位xadm_*_cdts。

当使用xadm_*_cdts检查credit是,应用程序需要考虑以下问题,core在生成一个message或者completion TLP 的同时,应用程序刚好需要生成一个request并正在检查xadm_*_cdts。

see “FlowControl” on page 139.

3.3.2  ACK/NAK Scheduling

应答机制由core内部完成,用户了解便可,涉及到的控制寄存器一般情况也不许要用户进行修改。

3.3.3  Transmit Replay

而应答机制一样,重发机制用户了解便可。

 

 

 

 

参考链接:

http://t.zoukankan.com/chengqi521-p-8777908.html

http://blog.sina.com.cn/s/blog_6472c4cc01018893.html

https://blog.csdn.net/yijingjijng/article/details/48028809

https://blog.csdn.net/yijingjijng/article/details/48029149

 

标签:synopsys,TLP,Loopback,IP,总线,接口,PCIE,link,posted
来源: https://www.cnblogs.com/wujianming-110117/p/15506535.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有