FPGA_PCIE

1. PCIE概述

  1. PCI-Express(peripheral component interconnect express,外设组件超快连接)是一种高速串行计算机扩展总线标准,它原来的名称为“3GIO”,是由英特尔在2001年提出的,旨在替代旧的PCI,PCI-X和AGP总线标准。
  2. PCIe属于高速串行点对点双通道全双工差分高带宽传输所连接的设备分配独享通道带宽,不共享总线带宽,主要支持主动电源管理,错误报告,端对端的可靠性传输,热插拔以及服务质量(QOS)等功能。
  1. 针对的是可靠性传输
  2. 点对点互连表示链路上的电气负载有限,从而使发送和接收频率可扩展到更高
  3. 差分信号的介绍:
    1. D+和D-之间电压差为正表示1,D+和D-之间的电压差为负表示0。两者之间没有电压差意味着处于第三态-高阻态,这种状态称为链路的electrical-idle状态。
    2. 选择一个参考地后,差分信号两个电压的相对差值(D+ - D-)就是差模电压,两电压的绝对高度(也就是相对于参考地的电压)的平均值((D+ + D-) / 2)就是共模电压。PCIe差分信号峰峰值的电压范围是800mV1200mV,共模电压可以为0V3.6V之间的任何电压。也就是说,差分信号相交的地方(Vcm)不一定是绝对零。
    在这里插入图片描述
  1. PCI-Express的接口是PCIe 3.0接口,其比特率为8Gbps,约为上一代产品带宽的两倍,并且包含发射器和接收器均衡、PLL改善以及时钟数据恢复等一系列重要的新功能,用以改善数据传输和数据保护性能。
  2. PCIe端点分为原生PCIe端点(Native PCIe Endpoints)和传统PCIe端点(Legacy PCIe Endpoints)。 原生 PCIe 端点是从一开始就被设计用来在 PCIe 系统中使用的,是内存映射设备;而传统 PCIe 端点则是用于老式总线(例如 PCI-X)的设备,在PCIe系统中可能使用了在 PCIe 设计中被禁止的东西,例如 IO 空间、支持 IO 事务以及支持锁定请求,在此暂不讨论。

2. 相关术语介绍

  1. Lane
    一条链路在每个方向上可以有x1,x2,x4,x8,x16或者x32个信号对,这些信号对称为lane。每个信号对分为TX和RX,因为是差分信号,所以每个信号对总共有四根信号,分别为TX+,TX-,RX+,RX-。
    在这里插入图片描述

3. 性能指标

  1. PCIe带宽
    PCIe目前成熟的版本有GEN1,GEN2,GEN3,GEN4和GEN5,每一代相较上一代传输速率和传输带宽都有了很大幅度的提升。PCIe GEN1在链路上的传输速率为2.5Gb/s。PCIe在GEN1和GEN2采用了8b/10b编码方式,也就是说链路上传输10b数据,实际传输的有效数据只有8b。对于GEN1 x1的PCIe链路,传输的有效带宽为:

$$

2.5Gb/s\times2\times \frac{8b}{10b} \times \frac{B}{8b} = 0.5GB/s

$$

公式中的2是因为PCIE是全双工的

在这里插入图片描述

4. PCIE的拓扑结构

PCIe主要的组件有RC(Root Complex),SW(Switch),EP(Endpoint)

Root Complex|Switch|Endpoint

—|—|—

RC可以和所有device进行通信|协议规定SW需要支持Peer-to-Peer,但对于有多个port的RC并没有要求1。|一个EP也可以和一个PCIe系统中的EP来通信(Peer-to-Peer)。

RC是指连接CPU和存储器子系统以及PCIe结构的设备,可以支持一个或多个PCIe Port,下图中RC支持3个PCIe Port,每个Port连接EP或者SW,SW形成一个子层,又可以挂接其他PCIe设备。RC上的port可以进行数据交互,但协议并没有规定必须支持。|SW是PCIe链路上进行转接的一类设备,拥有一个upstream prot和多个downstream port。可以将SW当作多个PCIe桥组成的设备。|EP是PCIe链路的末端,有两种类型:Legacy Endpoint 和 PCIe Endpoint。Legacy EP支持IO事务,而且还需要能接收锁定事务。而PCIe EP不必支持IO事务和接收锁定事务,但必须支持MSI中断。

[1]也就是说下图中 PCIe4 和 PCIe5 可以进行数据通信,但 PCIE4 和 PCIE6 就不一定能进行数据传输。
在这里插入图片描述

  1. 几个接口说明:
    1. upstream port:在一个PCIe 设备上靠近RC方向的port。
    2. downstream port:在一个PCIe 设备上远离RC方向的port。
    3. Ingress port(入端口):接收数据包的端口。
    4. Egress port(出端口):发送数据包的端口。
  2. 根组件(Root Complex,RC)
    CPU与PCIe总线之间的接口可能包含一系列的组件(处理器接口,DRAM接口等等),甚至是包含多个芯片。将这些组件合起来,称这一组组件为根组件(Root Complex,RC,Root),位于树状拓扑的“根部”,并代表 CPU 与系统的其余部分通信。
  3. SW(Switches and Bridges)有类似与交换机的作用
    1. 交换机(Switches)使得单个 PCIe 端口上可以连接更多的设备,它作为数据包的路由器,可根据数据包提供的路由信息来识别其路由路径。Switch可以有若干个下行端口;
    2. 桥(Bridges)提供了一个通往其他总线的接口,例如 PCI 或者 PCI-X,或其他的 PCIe 总线。
  4. 端点(Endpoints)
    Endpoints是系统中即不是switches也不是bridges的设备,位于树状拓扑分支底部,只能有1个上行端口。Endpoints可以作为总线上事务的发起者或完成者。
  5. PCIe只允许树结构,不允许出现循环或其他复杂拓扑结构,这么做是为了保持与PCI软件的向后兼容性。CPU通常为PCIe层次结构的顶端。

在一个PCIe系统中,upstream port 和 downstream port是固定的,但是Ingress port 和 Egress port 是不固定的,和数据包的传输方向相关。

例如:图中RC发起 MWr 事务到PCI-XP 4,那么SW上的upstream就是Ingress port,downstream就是Egress port。而当PCI-XP4发起 MWr到 RC时,那么SW的downstream就是 Ingress port,upstream就是 Egress port。

5. 层次讲解

5.1. 设备核心层

设备核心层并不是 PCIe 协议规范中所定义的一个层级,但其位于事务层的上方是所有请求的源头或是目的地。设备核心层为事务层提供了需要发送的请求信息,其中的信息包括事务类型、地址、需要传输的数据量等等。

5.2. PCIE 事务层

Transaction指 requester 和 completer 之间完成一次信息传送时所需要完成的一系列或多个数据包传送的过程

5.2.1. PCIE事务的分类

PCIe事务可以分为Non-Posted 和 Posted。Non-Posted指 requester 发送TLP请求包给completer时,completer需要返回一个TLP完成数据包给requester。Posted指requester 发送TLP请求事务包给 completer时,completer不需要回复TLP完成数据包给requester。

在这里插入图片描述

PCIe的数据传输以数据包的形式进行传输,通信涉及一种称为处理层数据包(Transaction Layer packet, TLP)的数据包发送和接收。TLP包可以分为TLP请求的数据包和TLP完成的数据包。TLP请求的数据包依据PCIe事务的不同而不同,对于Non-Posted事务,需要completer 返回 TLP完成包给requester。TLP完成包带数据信息的称为CPLD,不带数据信息的称为CPL。

5.2.2. Non-Posted Read Transaction

requester | completer

—|—

RC , EP(EP不能发起CfgRd0,CfgRd1)|RC,SW,EP

当链路出现错误,completer不能获得requester所需要读取的数据信息,completer将会返回一个CPL包(没有数据信息)和一个错误状态指示。

在这里插入图片描述

5.2.3. Non-Posted Read Transaction for Locked Requests

requester | completer

—|—

RC | Legacy EP

在这里插入图片描述

5.2.4. Non-posted Write Transactions

requester | completer

—|—

RC,EP(EP不能发起CfgWr0,CfgWr1)| RC,SW,EP

在这里插入图片描述

5.2.5. Mwr

requester | completer

—|—

RC,EP | RC,SW,EP

在这里插入图片描述

5.2.6. Poster Message Transaction
  1. 消息请求TLP有两类:Msg 和 MsgD
  2. 消息的传播方式有三种:
    1. requester 发送给 completer
    2. RC广播给所有的EP requester:RC completer:所有EP
    3. EP发送给RC requester:EP completer:RC

在这里插入图片描述

5.3. 数据链路层(Data Link Layer)

数据链路层主要实现3个功能:错误纠正、流量控制以及一些链路电源管理,在此暂不赘述。

5.4. 物理层

物理层是 PCIe 协议层次中的最底层,TLP 和 DLLP(Data Link Layer Packet)都需要经过物理层后进行传输。PCIe协议规范中将物理层分为两个部分进行讨论:逻辑部分和电气部分。

  • 逻辑部分:包含一系列的数字逻辑,包含将数据包在链路上发送的串行传输逻辑以及接收输入数据包的处理逻辑。
  • 电气部分:包含模拟电路接口,与链路直接相连,为每个通道提供差分驱动器以及差分接收器。

6. 说明

  1. 5.3数据链路层(Data Link Layer)和5.4物理层没有详细展开
  2. PCIE的配置-PCIE拓扑与配置地址空间没有讲解,可以参考链接

7. 参考

  1. https://blog.csdn.net/membre_non/article/details/139029284
  2. https://blog.csdn.net/membre_non/article/details/139010399?spm=1001.2014.3001.5501
  3. https://blog.csdn.net/llxxyy507/article/details/114786875

  1. 1 ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值