用于 PCI Express* 的 英特尔® FPGA R-tile Avalon® Streaming IP用户指南

ID 683501
日期 6/26/2023
Public
文档目录

B. 根端口枚举

本章节通过流程图来解释Root Port枚举过程。

枚举的目的是找到系统中所有连接的器件,并为每个连接的器件设置必要的寄存器并进行地址范围分配。

在枚举过程结束时,Root Port (RP)必须设置以下寄存器:
  • Primary Bus, Secondary Bus and Subordinate Bus numbers
  • Memory Base and Limit
  • IO Base and IO Limit
  • Max Payload Size
  • Memory Space Enable bit
Endpoint (EP)还必须具有由RP设置的以下寄存器:
  • Master Enable bit
  • BAR Address
  • Max Payload Size
  • Memory Space Enable bit
  • Severity bit

下图显示了连接器件的树形示例图,也是后面流程图的参考基础。

图 74. 实例系统中已连接器件的树形图
图 75. Root Port枚举流程图

图 76. Root Port枚举流程图(续)

图 77. Root Port枚举流程图(续)

注释:
  1. 对于Header Type 0和Header Type 1,Vendor ID和Device ID位于偏移0x00h。
  2. 对于PCIe Gen4,Header Type位于偏移0x0Eh(第二个DW)。如果位0设置为1,则表示该器件是一个Bridge(桥接);否则,它是一个EP。如果位7设置为0,表示是一个单一功能器件;否则,它是一个多功能器件。
  3. RP和non-RP器件的capability寄存器清单:
    • 0x34h – Capabilities Pointers。使用该寄存器指向一个由Function实现的capabilities的链接列表:
      1. RP的Capabilities Pointer
        1. Address 40 -标识Power Management Capability ID
        2. Address 50 -标识MSI Capability ID
        3. Address 70 -标识PCI Express Capability结构
      2. non-RP的Capabilities Pointer
        1. Address 40 -标识Power Management Capability ID
        2. Address 70 -标识PCI Express Capability结构
  4. EP没有与Primary, Secondary和Subordinate Bus编号相关的寄存器。
  5. Bridge/Switch IO Base和Limit寄存器偏移0x1Ch。这些寄存器是根据PCIe 4.0 Base Specification而设置。请参阅Base Specification(基本规范)的第7.5.1.3.6章节了解更准确的信息和流程。
  6. 对于EP Type 0头,BAR地址位于以下偏移:
    1. 0x10h – Base Address 0
    2. 0x14h – Base Address 1
    3. 0x18h – Base Address 2
    4. 0x1ch – Base Address 3
    5. 0x20h – Base Address 4
    6. 0x24h – Base Address 5
  7. 对于Bridge/Switch Type 1头,BAR地址位于以下偏移:
    1. 0x10h – Base Address 0
    2. 0x14h – Base Address 1
  8. 对于Bridge/Switch Type 1头,IO Base和IO限制寄存器都位于偏移0x1Ch。
  9. 对于Bridge/Switch Type 1头,Non-Prefetchable Memory Base和Limit寄存器都位于偏移0x20h。
  10. 对于Bridge/Switch Type 1头,Prefetchable Memory Base和Limit寄存器都位于偏移0x24h。
  11. 对于Bridge/Switch/EP Type 0 & 1头,Bus Master Enable位位于偏移0x04h (Command Register)位2。
  12. 对于Bridge/Switch/EP Type 0 & 1头,
    1. IO Space Enable位在偏移0x04h (Command Register) 位0。
    2. Memory Space Enable位在偏移0x04h (Command Register)位1。
    3. Bus Master Enable位在偏移0x04h (Command Register)位2。
    4. Parity Error Response位在偏移0x04h (Command Register)位6。
    5. SERR# Enable位在偏移0x04h (Command Register)位8。
    6. Interrupt Disable位在偏移0x04h (Command Register)位10。