• 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进行扩展

    在这里插入图片描述

    返回总目录

  • 相关阅读:
    如何定义set的比较函数?
    阿里云国际修改域名绑定的DDoS高防服务器
    基于JAVA的门禁管理系统【附源码】
    c语言练习题库
    GaussDB SQL基础语法示例-循环语句
    牛客网——杨辉三角
    2023上半年薪资报告出炉!人均月入过万?!
    今天又做了三个梦,其中一个梦梦里的我还有意识会思考?
    vue-tabel 中使用 el-autocomplete 出现的问题
    一次Mybaits查询的源码分析
  • 原文地址:https://blog.csdn.net/DSMGUOGUO/article/details/126116504