马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
1)PCIe事务层 PCIe的事务层连接了PCIe设备核心与PCIe链路,这里主要基于PCIe事务层进行详细讨论与分析。事务层采用TLP传输事务,完整的TLP由TLPPrefix、TLP头、Payload和TLP Digest组成。TLP头是TLP中最关键的部分,一般由三个或四个双字的长度,其格式定义如表1所示。 表1 PCIeTLP报文头格式
常用的PCIeTLP事务类型如表2所示。其中Non-Posted类型的事务请求需要 使用完成报文(CompletionPacket,Cpl)或带数据的完成报文(CompletionPacketwith Data,CplD)类型的响应包返回请求状态或数据,Posted类型的事务请求不需要使用 完成报文。 PCIe总线协议定义了基于地址的路由、基于ID的路由和隐式路由三种TLP路由 方式。其中,存储器读写和I/O读写TLP采用基于地址的路由,该类型的报文可由 RC 或EP发出,根据TLP中的Address字段进行路由选径。配置读写报文、Cpl和 CplD 完成报文使用基于ID的路由,配置读写报文只能由RC发出,而完成报文可由 任何设备发出,这些报文根据TransactionID进行路由选径,TransactionID则由PCIe 总线号、设备号、功能号和Tag字段构成。消息报文使用隐式路由,一般由RC发出 EP 响应,该类型报文的路由直接由下游端口到上游端口,或为RC向EP发出的广播。 表2 PCIeTLP事务类型
2)PCIe 配置空间 PCIe 设备具有和PCI设备相同的配置空间头类型,此外使用PCIe拓展配置空间 管理PCIe总线。PCI配置空间头分为Type0和Type1两种类型,Type0类型配置空间 头在PCIe总线中用于EP,Type1类型配置空间头用于Switch中的虚拟PCI桥。 Type0 类型的配置空间头结构如表3所示。其中主要的寄存器的作用如下: (1)设备ID和供应商ID:由PCI-SIG分配,当供应商ID为16’hFFFF时表示 无效的设备; (2)状态寄存器:保存PCIe设备的状态信息; (3)命令寄存器:初始值为0,需要合理配置该寄存器才能访问该设备的存储 器或者I/O空间; (4)头类型:当值为0时表示设备使用Type0的配置空间,值为1时表示设备 使用Type1的配置空间; (5)基地址寄存器(BaseAddressRegister,BAR):保存PCIe 设备使用的地址空间的基地址; (6)拓展功能指针:指向拓展配置空间的偏移地址。 表3 PCIeType0类型配置空间头
Type1类型的配置空间头如表4所示。其中主要寄存器的作用如下: (1)00h~14h的寄存器作用与Type0类型的相同; (2)下级最大总线号、下一级总线号、上一级总线号:下级最大总线号为该设 备下游的PCIe子树中最大的总线号,下一级总线号为直接连接在该设备下游端口的 总线号,上一级总线号为与该设备上游端口直接连接的总线号,三者共同确定了该设 备在PCIe树中的位置; (3)存储地址大小、存储基地址:两者共同表示分配到该设备的存储地址域; (4)拓展功能指针:指向拓展配置空间的偏移地址。 表4 Type1类型的配置空间头 对NVMe IP视频demo感兴趣的请上B站搜用户名: 专注与守望
或wx:zzbxidian
|