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黄色部分为用户需要完成的部分,主要包括参数的配置和数据的发送和接收。

  1. 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 PCIE IP协议解析相关推荐

  1. (网络)网络层:IP协议解析、地址管理(IP地址、子网掩码)、路由选择

    之前我们学习了传输层的TCP和UDP,今天我们就来看看网络层的IP协议,话不多说,直接开整. 文章目录 IP协议头 IP地址管理 IP地址组成 网段的划分 子网掩码的引入 特殊IP地址 NAT技术 路 ...

  2. 网络基础网络层--IP协议

    网络基础网络层--IP协议 一.IP协议解析 (一)4位版本 (二)4位报头长度 (三)8位服务类型 (四)16位数据报长度 (五)16位分片标识 (六)3位分片标志 (七)13位分片偏移 (八)8位 ...

  3. TCP/IP协议三次握手与四次握手流程解析

    原文链接地址:http://www.2cto.com/net/201310/251896.html TCP/IP协议三次握手与四次握手流程解析 TCP/IP协议的详细信息参看<TCP/IP协议详 ...

  4. python应用系列教程——python使用scapy监听网络数据包、按TCP/IP协议进行解析

    分享一个朋友的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!大家可以看看是否对自己有帮助:点击打开 docker/kubernetes入门视频教程 全栈工程师开发手册 (作者:栾鹏) pyth ...

  5. TCP/IP协议头部结构与解析

    参考  http://blog.sina.com.cn/s/blog_634d74310102vmfn.html IP协议 IP协议(Internet Protocol)是网络层协议,用在因特网上,T ...

  6. Vivado18.2 PCIE ip核IO协议详细介绍

    金手指原理部分不多介绍,网上有很多类似的文章,大家可以自行参考 我们直接上手使用IP核建立部分 文章目录 IP核建立 IP核利化代码介绍 PCIE 协议介绍 PCIE 时序图 PCIE 示例代码 介绍 ...

  7. TCP/IP协议深度解析

    TCP如何有序性的 ARP TCP的拥塞控制 TCP的半连接队列与全连接队列 TCP粘包与分包 网线断了, TCP怎么处理 TCP的长连接与短连接 TCP的11个状态迁移 send返回正数, 是不是成 ...

  8. TCP/IP四层模型重点协议解析

    文章目录 应用层 DNS协议 NAT NAPT 传输层协议 TCP UDP UDP协议段格式 UDP特点 基于UDP的应用层协议 ※ 经典面试题 网络层协议 IP协议 数据链路层协议 以太网 以太网帧 ...

  9. 【网络通信与信息安全】之深入解析TCP/IP协议的实现和原理

    一.计算机网络体系结构分层 计算机网络体系结构分层示例图: 计算机网络体系结构说明: 不难看出,TCP/IP 与 OSI 在分层模块上稍有区别.OSI 参考模型注重"通信协议必要的功能是什么 ...

最新文章

  1. 深度学习需要掌握的 13 个概率分布(附代码)
  2. 涨跌因子计算器下载哪里下载_网易超级计算器appv1-网易超级计算器v1下载
  3. 写给java初学者,从零开始学习java开发的完整学习路线
  4. linux下gdb使用core文件调试程序,解决“段错误核心已转储“的问题
  5. java jdk 观察者模式_java观察者模式实现和java观察者模式演化
  6. 记一次webpack4+react+antd项目优化打包文件体积的过程
  7. 佳能g2810打印机扫描怎么用_办公用这款佳能彩色激光打印机无线MF643CDW就够了!...
  8. 双十一流量洪峰 支撑阿里核心业务的云数据库揭秘
  9. Redis和数据库的结合
  10. 移动端页面0.5px border的实现
  11. 又是骗补贴的?清华虚拟学生华智冰翻车:AI换脸铸就人工智能
  12. mysql for update死锁_Mysql 数据库死锁过程分析(select for update)
  13. linux 挂起后无法唤醒屏幕
  14. 14.PHP核心技术与最佳实践 --- PHP 编码规范
  15. CocosCreator新手游戏开发指南(真小白)超详细 逐行注释
  16. 苹果电脑mysql_MacBook 安装 MySQL 5.7.29(新手都看得懂的安装教程)
  17. Beer Bill(签到题)
  18. fopen用java代码实现_C语言基础(20)-文件操作(fopen,getc,fclose)
  19. 京东大图在服务器哪个文件夹,京东图片管理在哪里?怎么使用?
  20. 什么是resultful 以及为什么要使用它

热门文章

  1. Myeclipse中项目没有代码错误提示,jsp页面无编译迹象?如何解决
  2. 2022-2028年中国抗盐粘土行业发展现状调查及前景战略分析报告
  3. 2022-2028年中国网络直播行业深度调研及投资前景预测报告
  4. Python 闭包、单个装饰器、多个装饰器、装饰器修饰类、应用场景
  5. 提升思辨能力和判断力
  6. python编程问题---第一次
  7. 将代码生成器带入TVM
  8. 图像超分辨率算法:CVPR2020
  9. Camera HDR Algorithms
  10. 2021年大数据ELK(二十七):数据可视化(Visualize)