0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

NVMe IP高速传输却不依赖XDMA设计之八:系统初始化

高速传输与存储 来源:高速传输与存储 作者:高速传输与存储 2025-07-26 15:14 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

采用XDMA是许多人常用xilinx库实现NVMe或其他传输的方法。但是,XDMA介绍较少,在高速存储设计时,尤其是PCIe4.0模式下,较难发挥其最优性能,因此,直接采用PCIe实现NVMe功能。

这里主要分享基于PCIe3.0接口的NVMe IP设计简介。有需要更高性能需求的,请先了解其性能简介,在文末给出链接。它的系统初始化流程主要分为链路训练、PCIe 初始化和 NVMe 初始化, 分别实现 PCIe链路连接、 PCIe 设备枚举配置和 NVMe 设备配置功能。 其中链路训练由 PCIE 集成块实现, 初始化模块根据链路训练完成信号和初始化启动信号来执行 PCIe 初始化和NVMe 初始化。

wKgZO2iEf6eAdeGiAAE__TR8F7c902.png

wKgZO2iEgHGANiuRAACXbpkUXGk102.png

图1 系统初始化流程

系统初始化的主要流程如图 1 所示, 在系统供电后, 首先进入复位状态, 一旦退出复位状态, 由 PCIE 集成块执行链路训练, PCIE 集成块提供了 LinkUp 信号用于指示链路训练是否成功。 链路训练消耗时间为毫秒级别, 为了确保系统的稳定, 在系统复位退出后 1 秒时如果 LinkUp 信号仍为低电平, 则断言为链路训练失败, 初始化流程终止。

如果 LinkUp 为高电平, 此时用户可通过系统控制模块启动 PCIe 初始化,进入 PCIe 初始化状态。 PCIe 初始化状态机在执行完初始化流程后, 会报告初始化执行状态, 如果在初始化过程中出错, 进入初始化终止状态并将错误信息反馈到初始化状态寄存器。 当 PCIe 初始化正常完成后, 可以进入 NVMe 初始化状态, NVMe 初始化也由用户通过系统控制模块启动。 当 NVMe 初始化正常完成后, 系统的初始化完成, NoP 逻辑加速引擎进入正常工作模式。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 高速传输
    +关注

    关注

    0

    文章

    38

    浏览量

    9269
  • 高速存储
    +关注

    关注

    0

    文章

    15

    浏览量

    6061
  • nvme
    +关注

    关注

    0

    文章

    287

    浏览量

    23717
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    NVMe IP高速传输却不依赖便利的XDMA设计之一

    NVMe IP放弃XDMA原因 选用XDMANVMe IP的关键
    发表于 05-24 17:09

    NVMe IP高速传输却不依赖便利的XDMA设计之二

    NVMe IP放弃XDMA原因 选用XDMANVMe IP的关键
    发表于 05-25 10:20

    NVMe IP高速传输却不依赖便利的XDMA设计之三:系统架构

    NVMe 固态硬盘, 并提供 AXI4-Lite 接口用于系统控制, 以及 AXI4 接口用于数据传输。 在该IP内部, 根据功能划分为系统
    发表于 06-29 17:42

    NVMe IP高速传输却不依赖XDMA设计五:DMA 控制单元设计

    DMA 控制单元负责控制 DMA 传输事务, 该单元承担了 DMA 事务到 NVMe 事务的转换任务, 使用户对数据传输事务的控制更加简单快捷。 DMA 控制功能由 DMA寄存器组实现。DMA
    发表于 07-02 19:45

    NVMe高速传输摆脱XDMA设计七:系统初始化

    直接采用PCIe实现NVMe功能,它的系统初始化流程主要分为链路训练、PCIe 初始化NVMe 初始
    发表于 07-04 09:14

    NVMe高速传输摆脱XDMA设计十:NVMe初始化状态机设计

    在完成PCIe配置初始化后,PCIe总线域的地址空间都分配完毕,可以执行传出存储读写TLP,系统初始化进入NVMe配置初始化
    发表于 07-05 22:03

    NVMe高速传输摆脱XDMA设计33:初始化功能验证与分析

    都通过 NVMe系统模型来实现, 因此对初始化功能的测试用例的实现比较简单, 只需要配置初始化控制寄存器来控制初始化进程, 要实现不同应
    发表于 10-08 08:02

    NVMe高速传输摆脱XDMA设计34:初始化功能验证与分析2

    本文主要交流NVMe设计思路,在本博客已给出相关博文几十篇,希望对初学者有用。注意这里只是抛砖引玉,切莫认为参考这就可以完成商用IP设计。 2) PCIe 初始化功能测试结果 PCIe 初始化
    发表于 10-09 11:31

    NVMe高速传输摆脱XDMA设计35:初始化功能验证与分析3

    本文主要交流NVMe设计思路,在本博客已给出相关博文几十篇,希望对初学者有用。注意这里只是抛砖引玉,切莫认为参考这就可以完成商用IP设计。 在完成桥设备的初始化配置后, 应对桥设备下游设备进行配置
    发表于 10-10 18:21

    NVMe IP高速传输却不依赖XDMA设计之二:PCIe读写逻辑

    应答模块的具体任务是接收来自PCIe链路上的设备的TLP请求,并响应请求。由于基于PCIe协议的NVMe数据传输只使用PCIe协议的存储器读请求TLP和存储器写请求TLP,应答模块分别针对两种TLP设置处理引擎来提高并行性和处理速度。
    的头像 发表于 06-09 17:25 608次阅读
    <b class='flag-5'>NVMe</b> <b class='flag-5'>IP</b><b class='flag-5'>高速</b><b class='flag-5'>传输</b><b class='flag-5'>却不依赖</b><b class='flag-5'>XDMA</b>设计之二:PCIe读写逻辑

    NVMe IP高速传输却不依赖XDMA设计之三:系统架构

    。 在该IP内部, 根据功能划分为系统控制模块、 初始化模块、 NVMe 控制模块、 PCIe 加速模块、 PCIE 集成块。
    的头像 发表于 06-29 17:46 888次阅读
    <b class='flag-5'>NVMe</b> <b class='flag-5'>IP</b><b class='flag-5'>高速</b><b class='flag-5'>传输</b><b class='flag-5'>却不依赖</b><b class='flag-5'>XDMA</b>设计之三:<b class='flag-5'>系统</b>架构

    NVMe IP高速传输却不依赖XDMA设计四:系统控制模块

    系统控制模块负责实现 NVMe over PCI 逻辑加速引擎的控制功能, 其结构如图 1 所示。 用户通过系统控制模块实现对初始化功能、 队列管理功能、 DMA 功能等主要功能的控制
    的头像 发表于 06-29 17:52 344次阅读
    <b class='flag-5'>NVMe</b> <b class='flag-5'>IP</b><b class='flag-5'>高速</b><b class='flag-5'>传输</b><b class='flag-5'>却不依赖</b><b class='flag-5'>XDMA</b>设计<b class='flag-5'>之</b>四:<b class='flag-5'>系统</b>控制模块

    NVMe IP高速传输却不依赖XDMA设计五:DMA 控制单元设计

    DMA 控制单元负责控制 DMA 传输事务, 该单元承担了 DMA 事务到 NVMe 事务的转换任务, 使用户对数据传输事务的控制更加简单快捷。 DMA 控制功能由 DMA寄存器组实现。
    的头像 发表于 07-02 19:47 1892次阅读
    <b class='flag-5'>NVMe</b> <b class='flag-5'>IP</b><b class='flag-5'>高速</b><b class='flag-5'>传输</b><b class='flag-5'>却不依赖</b><b class='flag-5'>XDMA</b>设计<b class='flag-5'>之</b>五:DMA 控制单元设计

    NVMe IP高速传输却不依赖XDMA设计六:性能监测单元设计

    性能监测单元负责监测 NVMe over PCIe 逻辑加速引擎的运行状态和统计信息, 包括复位后 运行时间信息、 NVMe 指令数量统计信息、 数据操作数量统计信息、 IOPS 性能统计 信息、 指令延迟统计信息等。
    的头像 发表于 07-02 19:49 379次阅读
    <b class='flag-5'>NVMe</b> <b class='flag-5'>IP</b><b class='flag-5'>高速</b><b class='flag-5'>传输</b><b class='flag-5'>却不依赖</b><b class='flag-5'>XDMA</b>设计<b class='flag-5'>之</b>六:性能监测单元设计

    NVMe IP高速传输却不依赖XDMA设计九:队列管理模块(上)

    这是采用PCIe设计NVMe,并非调用XDMA方式,后者在PCIe4.0时不大方便,故团队直接采用PCIe设计,结合UVM验证加快设计速度。 队列管理模块采用队列的存储与控制分离的设计结构。
    的头像 发表于 08-04 09:53 595次阅读
    <b class='flag-5'>NVMe</b> <b class='flag-5'>IP</b><b class='flag-5'>高速</b><b class='flag-5'>传输</b><b class='flag-5'>却不依赖</b><b class='flag-5'>XDMA</b>设计<b class='flag-5'>之</b>九:队列管理模块(上)