• Linux ARM平台开发系列讲解(PCIE) 2.13.4 从软件的角度去学习PCIE硬件结构


    1. 概述

    对于软件而言,你只需要知道PCIE的各个引脚的含义即可,不需要知道它是如何实现的,所以这一节就介绍PCIE硬件结构,用软件的思维去分析它 。

    2. PCIE引脚定义

    • PCIE引脚大致分为两类,分别为PCIE通信和PCIE供电,具体如下:
      在这里插入图片描述
    • 如下为PCIE M.2接口
      在这里插入图片描述

    PCI接口的引脚是并行的,容易受到干扰,所以出现了PCIE接口,PCIE接口的是串行的,每个方向的数据使用2条差分信号线来传输,发送/接收两个方向就需要4条线,这被称为1Lane
    在这里插入图片描述

    • PCIe设备的接口上,可以有多个Lane

      • 两个PCIe设备之间有一个Link
      • 一个Link中有1对或多对"发送/接收"引脚,每对"发送/接收"引脚被称为"Lane"
      • 一个Lane:有发送、接收两个方向,每个方向用2条差分信号线,所以1Lane4条线
      • 一个Link最多可以有32 Lane

    在这里插入图片描述

    3. 从软件的角度去了解PCIE硬件接口

    3.1 PCI/PCIE地址空间转换

    在这里插入图片描述

    3.2 PCIe上怎么传输地址、数据

    • 既然PCIe是串行信号,那只能在里传输地址、数据了。

      • 需要定义包的格式:类型(Mem R/W) + 地址 + 数据
      • 包怎么传递给对方、怎么确保不出错?有重传机制、有检验码
      • 包怎么通过差分线传送出去?
    • 如下图,PCIE通信在每一个链路层都对Data数据进行了包处理,对于常见协议来说,几乎都是由三层结构组成:物理层,数据链路层,事务层,三层结构各司其职。

    • 事务层包(TLP),数据链路层包(DLLP),物理层(PLP)产生于各自所在层,最后通过电或光等介质和另一方通讯。这其中数据链路层包(DLLP),物理层(PLP)的包平常不需要关心,在 IP 核中封装好了
      在这里插入图片描述

    4. PCIe系统的硬件框图

    • PCI系统里,多个PCI设备是都链接到相同总线上。

    • PCIe系统里,是点对点传输的:

      • 一条PCIe总线只能接一个PCIe设备
      • 要接多个PCIe设备,必须使用Switch进行扩展

    在这里插入图片描述

    返回总目录

  • 相关阅读:
    李宏毅《DLHLP》学习笔记7 - Voice Conversion 1
    吗西香豆素,CAS号:17692-56-7
    白酒:中国的酒文化的传承与发扬
    聊聊httpclient的disableConnectionState
    扒一扒集成运放uA741的内部电路
    81.(前端)分配权限实现——用路由来接收参数实现展开行中选数据功能
    ES6 - 简单理解原型
    static关键字和final关键字
    SAP CO系统配置-产品成本控制
    idea maven构建.jar包镜像 发布到远程Linux docker 镜像
  • 原文地址:https://blog.csdn.net/DSMGUOGUO/article/details/126116504