PCIE基础学习

PCIE

PIO模式:
一个CPU传输一个32bit给PCIE(IP)。CPU直接与PCIE做数据传输。
在这里插入图片描述

DMA模式:
CPU通过PCIE bridge 与多个PCIE设备连接,CPU发送命令给桥,桥控制PCIE与memory直接数据连接。
在这里插入图片描述

tlp报文

读报文

CPU发送Memory Read Request命令通过PCIE(IP)解析成tlp报文给APP
APP发送Completion with Data命令后接DATA通过IP解析成tlp报文传给CPU

Memory Read Request命令

在这里插入图片描述
TC:指令最高优先级,PC向PCIE发送多个命令,TC表示实时性。
TD:是否存在校验
EP:是否存在故障
Attr:灵活性,PCIE顺序
Length:读数据个数;1=1个DW(32bit);2=2个DW(2个32bit);
Requester ID:发起命令主机ID;ID=总线编号+设备编号+功能编号;
Tag:标签;一个报文一个标签号,自动累加,1、2、3、4…
Last BE;First BE:一共8bit,每个bit对应数据的4个bit是否有

### PCIE学习资源汇总 对于希望深入了解PCIE(Peripheral Component Interconnect Express)的读者来说,存在多种优质的学习材料可供选择。 #### 初学者友好型指南 一份专为初学者设计的指南——《PCIe总线入门知识扫盲》,能够通过深入浅出的方式全面解析PCIe总线的各个方面[^1]。该文档不仅适合硬件工程师和软件开发者,也适用于任何对计算机底层架构感兴趣的人士。它提供了从基础概念到实际应用的一条清晰学习路径,使读者可以从零开始逐步掌握PCIe总线的核心知识点。 #### 结构化学习笔记 另一份有价值的参考资料是名为“PCIE 学习笔记”的文档,其中介绍了PCIE系统的三个主要组成部分:RC(Root Complex)、Switch以及EP(Endpoint),并指出在一个PCIE树结构中最多可容纳256个这样的设备单元[^2]。此资料有助于理解整个PCIE网络是如何构建及其内部组件间的关系。 #### 实战操作手册 针对那些希望通过实践来加深理解的学习者,《Xilinx PCIe高速接口入门实战》系列文章是一个不错的选择。特别是第三部分讨论了有关电源管理和复位信号(PERST#)之间关系的内容,虽然具体数值未被标准化,但了解这些参数的意义对于调试和优化具有重要意义[^3]。 ```python # 示例Python代码用于演示如何枚举连接至根复合体下的所有端点设备 import pciexpress as pcie def list_all_endpoints(root_complex): endpoints = [] def traverse(node): if node.type == 'endpoint': endpoints.append(node) elif hasattr(node, 'children'): for child in node.children: traverse(child) traverse(root_complex) return endpoints root = pcie.get_root_complex() endpoints = list_all_endpoints(root) print(f"Found {len(endpoints)} endpoint devices.") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值