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配置空间和扩展配置空间。不是所有都能用到。以后用到了再记录。

Xdma Pcie RC 是指支持 XDMA(Xilinx DMA)技术的PCI Express Root Complex。Xilinx DMA 是Xilinx 公司开发的种高性能数据传输技术,用于在FPGA 和计算机主机之间进行快速、高带宽的数据传输。而PCI Express(PCIe)是种高速串行总线标准,可用于将外部设备连接到计算机主机。因此,Xdma Pcie RC 就是个实现了Xilinx DMA 技术并具备PCIe 标准接口的根复杂型(Root Complex)。 Xdma Pcie RC 可以用于各种应用领域,特别是对于需要高带宽、低延迟数据传输的应用非常有用。例如,在图像和视频处理中,通过Xdma Pcie RC 可以实现实时高清视频的传输和处理;在网络交换和路由器领域,Xdma Pcie RC 可以提供高性能的数据包转发和处理能力;在科学计算和数据中心中,Xdma Pcie RC 可以加速计算任务和数据存储传输等。 除了高性能的数据传输能力,Xdma Pcie RC 还具备灵活性和可配置性。用户可以通过编程配置来定义DMA 通道数、DMA 宽度等参数,以满足不同应用的需求。此外,Xdma Pcie RC 还提供了些常用的软件库和驱动程序,简化了开发者的工作,降低了开发和集成难度。 总的来说,Xdma Pcie RC 是种基于Xilinx DMA 技术和PCIe 标准的高性能数据传输解决方案,适用于各种需要高速、高带宽数据传输的应用领域,具备灵活性和可配置性。它的出现为各种应用场景中的数据传输和处理带来了新的技术突破和便利。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

sissiyung

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

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

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

打赏作者

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

抵扣说明:

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

余额充值