在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 35|回复: 0

[原创] NVMe高速传输之摆脱XDMA设计13:PCIe初始化状态机设计

[复制链接]
发表于 3 小时前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
PCIe配置初始化状态机实现PCIe设备枚举和配置空间初始化过程,在完成链路训练后,使用DFS(深度优先搜索)算法枚举PCIe总线上的设备,完成PCIe总线域的地址分配和设备的初始化。PCIe配置初始化是PCIe总线正常进行数据传输的前提,图1为PCIe配置初始化状态机状态转移图。
NVMe摆脱XDMA13之PCIe初始化.png
    图1 PCIe配置初始化状态机状态转移图

各状态说明如下:
IDLE:空闲状态,复位后的初始状态。当检测到初始化控制寄存器的PCIe初始化启动信号的上升沿时,启动初始化过程,进入GET_ID状态。
GET_ID:获取设备与供应商ID状态,该状态下通过配置TLP获取PCIe链路上的设备的配置空间的设备ID和供应商ID。如果获取的供应商ID号为0xFFFF,表示为无效的供应商ID,跳转到INC_DEV状态,否则进入GET_HEADER_TYPE状态。
GET_HEADER_TYPE:获取配置空间类型状态,该状态获取配置空间的Header Type字段,其中当该字段第8位值为1时,表示设备为多功能设备,而NoP逻辑加速引擎当前并不支持多功能设备,因此状态机跳转到ERROR状态,并设置错误代码寄存器表示检测到不支持的多功能设备。如果Header Type字段的第8位值为0,则将字段低7位的值更新到状态机中的header_type寄存器,并跳转到CFG_BAR状态。当header_type值为0时,表示该设备使用Endpoint设备的配置空间,当值为1时表示该设备使用桥的配置空间。
CFG_BAR:BAR寄存器组配置状态。type0类型的配置空间存在BAR0~5共六个BAR寄存器,type1类型的配置空间存在BAR0~1两个BAR寄存器,这些寄存器保存设备在PCIe总线域中使用的地址空间的基地址。在配置过程中,首先获取BAR寄存器类型,NoP逻辑加速引擎不支持的类型为I/O地址类型或为可预取的64位地址,当检测到这两种类型的BAR时跳转到ERROR状态,并设置错误代码寄存器表示检测到不支持的BAR类型;否则获取每个BAR寄存器的长度,然后再分配合适的基地址。当所有BAR寄存器配置完成后,进入CFG_PCIE_EXTENDS状态。

想进一步了解相关视频,请搜索B站用户:专注与守望
链接:https://space.bilibili.com/58513 ... st.card_title.click

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

X

小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-7-5 20:47 , Processed in 0.013839 second(s), 8 queries , Gzip On, MemCached On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表