PCIe学习记录(一)—— PCI Config Space Header

PCI Config Space Header

本问基于xilinx 的xdma IP核内容进行记录

header寄存器如图所示,RC port只有两个BAR可以配置。
header
以下按照先type0后type1的顺序描述,共同的内容不重复记录

  1. Vendor ID是PCIe设备的生产厂商,Device ID是这个厂商生产的某个具体设备

  2. statuscommond寄存器内容摘自《PCI Express体系结构导读》。stauts寄存器
    初始化时,commond寄存器为0,此时只能接收配置总线事务,必须妥善配置commond寄存器,该PCIe的存储或IO空间才能被访问。
    commond寄存器

  3. REV ID(Revision ID)是PCIe设备的版本号(这里是FPGA)。Class Code是PCIe设备的分类。该分类由三个部分组成,分别是base class code 、sub class code和interface。硬件逻辑根据该寄存器识别不同的设备。具体设备对应表见PCIE的Class Code表
    xdma ip核设置页面中选择如下图所示的选项后,第二页默认出现Vendor ID、Device ID、Revision ID、Subsystem Vendor ID、Subsystem ID(下文描述)以及class code配置。
    xdma设置页面basic
    EP
    第一页选择Root Port of PCI Express Root Complex后,第二页的参数有所变化。可以看出作为不同的端点,具有不同的Device ID。并且Class ID也不同。下拉框中选择了不同的class,箭头所指的参数也会有相应的变化,和上文链接Class Code表对应。但是箭头所指的填写框也可以自行更改,更改后下拉框并不会变动。
    RC

  4. BIST:自检功能开启。

  5. header type
    该寄存器只读,bit7为1表示当前PCIe设备为多功能设备,为0时表示单功能设备。其他bit在PCIe 3.1中没有描述,可以参考《PCI Express体系结构导读》。

  6. Lat Tim(Latency Timer):不适用于PCIe设备

  7. CacheL(Cache Line Size): 不适用于PCIe设备

  8. Cardbus CIS Pointer:只读,用于表明访问CIS(card info structure)的地址空间, 通常不会涉及

  9. Subsystem Vendor IDSubsystem ID
    如果使用多个fpga,则仅使用 Vendor ID和Device ID无法区分这些FPGA,所以增加Subsystem Vendor ID和Subsystem ID。

  10. Expansion ROM BAR
    有些PCIe设备在处理器运行操作系统之前,就要完成基本的初始化设置。该寄存器保存这段初始化ROM程序的基地址。

  11. CapPtr:Capabilities Pointer基地址

  12. Max_LatMin_Gnt:不适用于PCIe设备

  13. IntrPin(Interrupt Pin):只读,只用于INIT类型的中断。01 ~ 04对应INITA ~ INITD类型的中断

  14. IntrLine(Interrupt Line):记录PCIe设备当前使用的中断向量号(绝大多数处理器系统中不使用)

  15. SecLTim(Secondary Latency Timer): 不适用于PCIe设备

  16. SubBus#(subordinate Bus Numbers):当前PCIe子树中,最大的PCIe总线号

  17. SecBus#(secondary Bus Numbers): 下一级总线号

  18. PrimBus#(Primary Bus Number): 上一级总线号

  19. Secondary Status:与starus寄存器相似,记录secondary Bus的状态

  20. I/O LimI/O Base:访问外部设备寄存器的地址区域,Limit和base一起设置了io空间的地址区域

  21. Memory LimiMemory Base:访问内存的地址空间

  22. PrefetchMemLimit、PrefetchMemBase:可预读的空间,具体机制可参考《PCI Express体系结构导读》

  23. Prefetchable Base Upper 32 BitsPrefetchable Limit Upper 32 Bits:可预读地址高位

  24. I/O Limit Upper 16I/O Base Upper 16:IO地址高位

  25. Bridge Control
    bridge control

  26. BAR0~5 :基地址寄存器
    当选择XDMA为RC模式时有关BAR的界面如图所示,PCIe:BARs应该是设置fpga的BAR,而AXI:BARs应该是设置与之相连的内存分配BAR。这里PCIe只有一个BAR0,是xilinx的ip核限制。而AXI最多有6个BAR可以配置,符合type0的寄存器格式。
    RC BAR设置
    当选择XDMA为EP模式时有关BAR的界面如图所示,因为FPGA属于type0模式,所以可以有6个BAR空间。但此时AXI还是有6个BAR空间可以配置,不太理解,有可能对AXI的bar理解有误。
    EP BAR设置
    第一页设置中去掉勾选Enable AXI Slave Interface,AXI:BAR这一栏就会消失,应该可以由另外一端PCIe设备自己配置。

除了基础的header配置空间以外,还有Capabilitiy配置空间和扩展配置空间。不是所有都能用到。以后用到了再记录。

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: PCI(Peripheral Component Interconnect,外围组件互联)和PCIe(Peripheral Component Interconnect Express,外围组件互联快速)都是现代计算机中常见的硬件接口标准。 PCI是早期的硬件接口标准,广泛应用于早期的个人计算机和服务器中。它为计算机提供了扩展插槽,可以通过插入各种不同的卡来添加额外的功能,如显卡、声卡、网络卡等。PCI接口的数据传输速度相对较低,最高可达到133MB/s,且每个插槽需要共享带宽。 PCIePCI的升级版本,它是一种更快、更高带宽的接口标准。与PCI相比,PCIe支持更高的数据传输速度,最高可达到16GB/s,也提供更大的带宽和更好的性能。PCIe接口通过将数据传输通道划分为多个独立的通道,不同设备之间的数据传输不会相互干扰,这样可以更好地支持多设备同时工作。 PCI和PCIe都有各自的插槽类型,如PCI插槽和PCIe插槽,它们在物理尺寸和接口形状上有所不同,因此不能互相兼容。PCIe插槽通常比PCI插槽更小,用于支持更高速率的数据传输。 学习PCI和PCIe可以帮助我们了解计算机硬件的发展和演变。在选择和安装硬件设备时,了解PCI和PCIe的特性和性能参数可以帮助我们根据需求选择合适的接口和设备。此外,理解PCIe的工作原理和配置可以帮助我们更好地优化计算机性能和解决硬件兼容性问题。 综上所述,PCI和PCIe是计算机硬件接口标准,PCIe是对PCI的升级和改进,提供更高的带宽和性能。学习PCI和PCIe可以帮助我们更好地理解计算机硬件,并在硬件选择和配置时做出合适的决策。 ### 回答2: PCI和PCIe是计算机硬件中常用的总线接口标准。PCI(Peripheral Component Interconnect)是一种用于连接计算机内部扩展卡的接口规范,它通过插槽连接到主板上,可以连接各种设备,如显卡、声卡、网卡等。PCI接口的带宽以32位为基本单位,理论上最高可达133MB/s。PCI接口的优点是使用广泛,兼容性好,适用于较老的计算机系统。 而PCIePCI Express)是PCI的更新版本,它是一种高速、高性能的串行总线接口。PCIe接口通过槽口插槽连接到主板上,可以提供更高的带宽和更快的数据传输速率,适用于更高性能的设备。PCIe接口可以分为不同的版本,如PCIe 1.0、PCIe 2.0、PCIe 3.0等,每个版本的带宽和速度不同。此外,PCIe还支持热插拔功能,可以在不关闭电脑的情况下更换扩展卡。 随着技术的发展,PCIe逐渐取代了PCI接口成为主流标准,因为它拥有更高的带宽和更好的性能,适用于现代计算机系统和高性能设备。但是对于较老的计算机系统或者不需要太高性能的设备,PCI接口仍然有其使用价值。 综上所述,PCI和PCIe是计算机硬件中的两种常用接口标准,PCI适用于较老的计算机系统和一些不需要高性能的设备,而PCIe则适用于现代计算机系统和需要更高带宽和性能的设备。 ### 回答3: PCI(Peripheral Component Interconnect,外围设备互连)和PCIe(Peripheral Component Interconnect Express,外围设备互连快速通道)都是计算机硬件中重要的总线标准。 PCI是一种较早的总线标准,旨在为计算机主板上安装的各种外围设备提供传输数据的通道。它使用并行数据传输方式,定义了总线带宽和插槽规范,支持多个设备之间的数据传输。PCI总线采用了统一的插槽设计,使得各种不同类型的设备可以在同一个主板上自由插拔。然而,由于传输速度和带宽的限制,PCI总线已逐渐被更高速和更强大的PCI-Express取代。 PCIePCI的后继者,是一种更快的、高性能的总线标准。它基于串行数据传输技术,可以提供更高的传输速度和更大的带宽。PCIe总线拥有更多的数据通道,可以同时传输多个数据流,提高了系统吞吐量。与PCI相比,PCIe支持热插拔设备,可以在不关机的情况下插拨设备。PCIe总线也具有向后兼容性,可以在PCIe插槽上插入PCI设备,但性能会受到限制。 在学习PCI和PCIe时,我们需要了解它们的工作原理、传输速度和带宽的差异、插槽规范以及设备兼容性等方面的知识。了解这些内容可以帮助我们选择适合自己需求的硬件设备,并且在组装和配置计算机时能够正确安装和连接各种外围设备。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sissiyung

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值