带你了解PCIE通信原理
01.PCIE简介PCI-Express(peripheral component interconnect express)简称PCIE是一种高速串行计算机扩展总线标准主要用于扩充计算机系统总线数据吞吐量以及提高设备通信速度。PCIE本质上是一种全双工的的连接总线传输数据量的大小由通道数lane决定的。一般1个连接通道lane称为X1每个通道lane由两对数据线组成一对发送一对接收每对数据线包含两根差分线。即X1只有1个lane4根数据线每个时钟每个方向1bit数据传输。依次类推X2就有2个lane由8根数据线组成每个时钟传输2bit。类似的还有X12、X16、X32。02.PCIE总线架构图PCIE体系架构一般包含根组件RCrootcomplex交换器switch终端设备EPendpoint等类型的PCIE设备组成。RC在总线架构中只有一个用于处理器和内存子系统与I/O设备之间的连接而switch的功能通常是以软件形式提供的它包括两个或更多的逻辑PCI到PCI的连接桥PCI-PCI Bridge以保持与现有PCI兼容具体功能类似现在的网络交换机。▲图2-1 PCIE总线架构拓扑当总线上存在多种PCIE设备时主机host会依照深度优先的算法对全部的设备树上的PCIE设备进行枚举查询统称PCIE设备枚举。一般来说当系统上电后host会自动查询PCIE设备枚举以获取总线拓扑结构。除一些特殊系统外普通的系统只会在开机阶段进行设备的扫描启动成功后即枚举过程结束后即使插入一个PCIE设备系统也不会再去识别它。在SkyEye仿真平台中我们使用相对应的接口连接来模拟实际的PCIE设备之间的总线连接以ft2000为例PCIE总线连接架构图2-2如下所示。▲图2-2 ft2000a连接PCIE设备示意图在SkyEye平台仿真PCIE总线设备时最少需要拖拽3个模块以ft2000a为例需要拖拽ft2000a_pcie和ft2000a_pcie_memory模块作为RC设备第二是需要拖拽pcie_linker作为总线连接器主要承担的是PCIE桥或者交换器的功能最后就需要添加PCIE终端设备根据实际需要来添加相应的模块可以存在多个终端设备。在使用接口连接RC设备和pcie_linker设备时需要选中两种接口如下图所示▲图2-3 RC连接linker的接口其中“pcie_bus_intf”主要用来实现PCIE总线的内存映射和读写功能。同时RC的设备属性上也需要设置PCIE的EP数量(不包括桥或者交换器)如下图所示▲图2-4 RC设备属性设置使用pcie_linker可以1对多的连接需要对接口连接中的索引值进行设定如下图需要注意的是索引值的设置需要与上面的“pcie_num”对应从0开始一直到“pcie_num” - 1且最大不超过64.▲图2-5 linker连接EP设备接口03.PCIE的BDF每个PCIE设备在系统总线上都有自己的标识符这个标识符就是BDFBusDeviceFunctionPCIE的配置软件即Root的应用层一般是PC应当有能力识别整个PCIE总线系统的拓扑逻辑以及其中的每一条总线Bus每一个设备Device和每一项功能Function。在BDF中Bus Number占用8位Device Number占用5位Function Number占用3位。显然PCIe总线最多支持256个子总线每个子总线最多支持32个设备每个设备最多支持8个功能如下图所示▲图3-1 BDF空间分配需要注意的是每Bus0总是分配给RC且每个设备必须要有功能0Fun0其他的7个功能Fun1~Fun7都是可选的。SkyEye仿真实现PCIE设备的BAR地址设置则是在PCIE设备建模时对其配置信息结构体中对BDF进行配置。▲图3-2 SkyEye仿真配置BDF04.PCIE的配置空间PCIE有三个相互独立的物理地址空间设备存储器地址空间、I/O地址空间和配置空间。配置空间是PCIE所特有的一个物理空间。由于PCIE支持设备即插即用所以PCIE设备不占用固定的内存地址空间或I/O地址空间而是通过配置空间来实现地址映射的。系统加电时BIOS检测PCIE总线确定所有连接在PCIE总线上的设备以及它们的配置要求并进行系统配置。所以所有的PCIE设备必须实现配置空间从而能够实现参数的自动配置实现真正的即插即用。PCI总线规范定义的配置空间总长度为256个字节配置信息按一定的顺序和大小依次存放。前64个字节的配置空间称为配置头一般有两种Type0和Type1分别对应桥设备和终端设备。配置头的主要功能是用来识别设备、定义主机访问PCI卡的方式I/O访问或者存储器访问还有中断信息Type0如图4-1所示Type1如图4-2所示。▲图4-1 终端设备Type0配置头​▲图4-2 桥设备Type1配置头其中配置头中的重要寄存器意义如下Vendor ID厂商ID。知名的设备厂商的ID。FFFFh是一个非法厂商ID可它来判断PCI设备是否存在。Device ID设备ID。某厂商生产的设备的ID。操作系统就是凭着 Vendor ID和Device ID 找到对应驱动程序的。Class Code类代码。共三字节分别是类代码、子类代码、编程接口。类代码不仅用于区分设备类型还是编程接口的规范这就是为什么会有通用驱动程序。IRQ LineIRQ编号。PC机以前是靠两片8259芯片来管理16个硬件中断。现在为了支持对称多处理器有了APIC高级可编程中断控制器它支持管理24个中断。IRQ Pin中断引脚。PCI有4个中断引脚该寄存器表明该设备连接的是哪个引脚。Status设备状态字具体每个BIT的意义见下图4-3Command设备状态字具体含义见图4-4Base Address Registers决定PCI/PCIE设备空间映射到系统空间具体位置的寄存器映射方式有两种分别是IO和Memory映射具体解析见图4-5​▲图4-3 status解析图▲command解析图​▲图4-5 BAR解析图所有的PCIE终端设备在系统初始化后会在得到对应的配置空间信息在SkyEye平台仿真也是如此。其中具体的配置信息需要手动设置参考下图4-6。一般需要配置的主要有设备对象指针objBDFvendor_id和device_id以及内存映射地址BAR和其映射长度可以按照需要配置多个BAR空间。其余一些配置寄存器也可以手动设置遵循Type0的配置空间格式具体的配置空间信息可参考《skyeye_dev_bus_intf.h》需要注意地是在设置配置空间信息的时候必须在new阶段这主要是由skyeye平台初始化顺序决定的。▲图4-6 PCIE终端设备初始化配置空间除去上面提到的64B空间外的其余的192个字节称为本地配置空间主要定义卡上局部总线的特性、本地空间基地址及范围等。而PCIE总线则继承了PCI总线的前256字节外即0x00~0xFF还额外扩充到了4K的配置空间即0x00~0xFFF其扩展形式是通过一种称为Capability的寄存器块来完成的下图是具体的布局。▲图4-6 PCIE配置空间扩展结构图在原来的配置空间中有一个寄存器指定了第一个Capability的位置而第一个Capability又指定下一个Capability构成了一串Capability具体如下图所示由于Capability的作用各不相同且目前SkyEye关于此功能设置还未完善这里不再赘述。▲图4-7 Capability寄存器关系图05.PCIE的建模仿真5.1注册接口对PCIE终端设备进行建模设备需要注册两个接口分别是memory_space和pcie_config_intf其中pcie_config_intf接口声明在文件《skyeye_dev_bus_intf.h》中主要用来传送其配置信息如下所示▲图5-1 PCIE终端设备接口注册注册接口实现后需要对配置空间信息进行设置具体操作参考第四节的内容。5.2 BAR内存空间读写在上一节设置完BAR的地址信息后就需要实现不同的BAR地址映射功能而我们主要通过memory_space接口实现参考如下结构读写同理。▲图5-2 PCIE终端设备BAR地址映射接口需要注意的是PCIE终端设备中的memory_space接口中的第二个参数addr代表实际的映射地址与以往的代表地址偏移不同。

相关新闻

谷歌SEO工具品牌推荐,外贸独立站引流必备

谷歌SEO工具品牌推荐,外贸独立站引流必备

谷歌seo工具品牌盘点 外贸独立站必备 投身于外贸独立站的运作之中, 流量无疑是堪称生命线般至关重要的存在。众多老板不惜斥以大价钱去构建网站, 然而最终呈现的结果却是在谷歌搜索引擎之中无法被搜索到, 如此就白白地将前期的投入予以了浪费。须知实际情况里问题常常是出在错误…

2026/8/21 3:32:59 阅读更多 →
当AI编码平台走向订阅制与多模型聚合:以Alaya Code为例的技术观察

当AI编码平台走向订阅制与多模型聚合:以Alaya Code为例的技术观察

2026年,AI编程工具已经从"代码补全插件"演进为贯穿需求拆解、代码生成、测试部署的智能体开发基础设施。在这一演进过程中,两类技术趋势正在重塑行业格局:一是商业模式从按Token计费向订阅制Coding Plan迁移;二是模型调…

2026/8/20 8:12:05 阅读更多 →
在自己的电脑建设空间网站:从0到1打造你的个人数字家园全指南

在自己的电脑建设空间网站:从0到1打造你的个人数字家园全指南

在这个数据如洪水般涌来的时代,我们每个人每天都在云端留下了无数的足迹。照片、文档、代码、博客,这些数字资产就像我们的记忆碎片,散落在各大社交平台和云存储服务商的服务器上。很多时候,我们享受这种便利,却忽略了一个可怕的事实:这些并不完全属于你。一旦平台封号、…

2026/8/22 0:24:23 阅读更多 →

最新新闻

把QQ空间历史说说完整备份到本地:GetQzonehistory导出工具上手指南

把QQ空间历史说说完整备份到本地:GetQzonehistory导出工具上手指南

把QQ空间历史说说完整备份到本地:GetQzonehistory导出工具上手指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory QQ空间网页版只能看到近年的内容,更早的说说翻…

2026/8/22 15:49:25 阅读更多 →
虚拟机详细图文教程系列9、VMware Workstation Pro16虚拟机解锁MacOS系统

虚拟机详细图文教程系列9、VMware Workstation Pro16虚拟机解锁MacOS系统

VMware虚拟机解锁MacOS系统 一、解锁VMware虚拟机MacOS系统 1、安装好的VMware虚拟机在默认情况下是没有Apple Mac OS X(M) 选项的;(已安装的虚拟机版本VMware Workstation 16 Pro)如下图所示:新建虚拟机向导→选择客户机操作系统…

2026/8/22 15:49:25 阅读更多 →
Element Tiptap富文本编辑器:Vue3项目5分钟接入带菜单的WYSIWYG编辑器

Element Tiptap富文本编辑器:Vue3项目5分钟接入带菜单的WYSIWYG编辑器

Element Tiptap富文本编辑器:Vue3项目5分钟接入带菜单的WYSIWYG编辑器 【免费下载链接】element-tiptap 🌸A modern WYSIWYG rich-text editor using tiptap and Element UI for Vue3 (1.0 for Vue2) 项目地址: https://gitcode.com/gh_mirrors/el/ele…

2026/8/22 15:49:25 阅读更多 →
vue3-antd-admin 后台管理框架快速上手:从克隆到构建的完整指南

vue3-antd-admin 后台管理框架快速上手:从克隆到构建的完整指南

vue3-antd-admin 后台管理框架快速上手:从克隆到构建的完整指南 【免费下载链接】vue3-antd-admin 使用vue3ant-design-vuevitets开发的通用后台框架,实现了权限系统、动态菜单、表格集成快速使用等功能,简洁干净开箱即用。 项目地址: http…

2026/8/22 15:49:25 阅读更多 →
Claude Code Auto Compact:AI代码压缩工具的原理、架构与实战指南

Claude Code Auto Compact:AI代码压缩工具的原理、架构与实战指南

1. 项目缘起:为什么我们需要一个“代码自动压缩”工具?最近在折腾各种AI代码助手时,我遇到了一个挺有意思的项目:Claude Code Auto Compact。光看名字,你可能会觉得这又是一个给Claude AI写的代码格式化插件。但实际扒…

2026/8/22 15:49:25 阅读更多 →
零基础学pcie--PCIe 是怎么“可靠传输”的?

零基础学pcie--PCIe 是怎么“可靠传输”的?

目录 第 9 篇:PCIe 是怎么“可靠传输”的? 一、Ack/Nak 机制(为什么 PCIe 不会悄悄丢数据) 一、先给结论(请刻在脑子里) 二、Ack/Nak 工作在哪一层? 三、核心思想:快递 + 签收单 正常流程(Ack) 异常流程(Nak) 四、Seq Num(序列号):Ack/Nak 的基础 五、…

2026/8/22 15:48:25 阅读更多 →

日新闻

沉金PCB工艺实战指南:从设计到SMT焊接的可靠性保障

沉金PCB工艺实战指南:从设计到SMT焊接的可靠性保障

在电子硬件开发领域,PCB(印制电路板)的沉金工艺是提升产品可靠性和焊接质量的关键环节。对于需要高密度互连、长期稳定运行或高频信号传输的板卡,如“黍姐仿通行证”这类可能涉及身份识别、数据交互的硬件项目,选择正确…

2026/8/22 0:00:11 阅读更多 →
电气考研电路八月强化四步法:从知识体系到真题实战的闭环攻略

电气考研电路八月强化四步法:从知识体系到真题实战的闭环攻略

这次我们来看一个针对电气考研电路科目的学习规划项目。它不是软件工具,而是一套聚焦于8月份关键节点的备考策略。对于电气工程考研的同学来说,电路分析是专业课的重中之重,也是拉开分差的关键。进入8月,复习进入强化阶段&#xf…

2026/8/22 0:00:11 阅读更多 →
消除AI代码的“AI味”:Claude Code设计优化技能配置与实战指南

消除AI代码的“AI味”:Claude Code设计优化技能配置与实战指南

大家好,我是专注于前端开发与AI工具实践的技术博主。在日常使用 Claude Code 等AI编程助手时,你是否也遇到过这样的困扰:生成的代码功能上没问题,但代码风格、组件设计、交互逻辑总透着一股“AI味”——布局单调、样式简陋、交互生…

2026/8/22 0:00:11 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/21 3:21:33 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/22 8:09:09 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/21 6:07:56 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/21 16:42:28 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/22 7:31:03 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/22 3:22:48 阅读更多 →