马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
简介
该IP设计主要解决一些应用场合既需要满足对特定对象的大数据实时高速采集, 也需要满足对多路临床数据的收集的难点。 本IP具备通用性强,性能优越,且具备易集成和 易操作的优势。 系统框架设计 NVMe over PCIe(NoP) 逻辑加速引擎如下图 所示。 NoP 逻辑加速引擎通过 PCIe 3.0x4 接口连接 NVMe固态硬盘, 并提供 AXI4-Lite 接口用于系统控制, 以及 AXI4 接口用于数据传输。 在NoP 逻辑加速引擎内部, 根据功能划分为系统控制模块、 初始化模块、 NVMe 控制模块、 PCIe 加速模块、 PCIE 集成块。 以下为各功能模块的定义: 系统控制模块是实现 NoP 逻辑加速引擎控制功能的关键组件。 NoP 逻辑加速引擎内部集成了各种功能, 包括初始化、 NVMe 队列管理以及 DMA 等多种功能, 统一由系统控制模块进行管理。 为了有效管理这些功能, 系统控制模块设计了对应的功能控制单元, 并提供了 AXI4-Lite 从机接口, 使得 NoP 逻辑加速引擎能够轻松地与用户环境集成。 通过 AXI4-Lite 接口, 用户可以方便地访问各个功能控制单元, 实现对系统功能的控制。 这种设计使得用户能够直接与 NoP 逻辑加速引擎进行交互, 灵活地配置和管理系统的各项功能, 从而更好地满足特定的应用需求。 初始化模块负责控制系统的初始化流程, 其中包括 PCIe 初始化和 NVMe 初始化两个主要步骤。 在系统上电复位后, 首先由 PCIE 集成块执行物理层的链路训练和速度协商, 建立有效的 PCIe 通信链路。 随后, 由初始化模块进行 PCIe 设备的枚举与配置, 并执行 NVMe 的初始化流程。 初始化过程是确保系统能够在正确状态下运行的前提条件, 也为后续操作提供了必要的支持。
NVMe 控制模块是实现 NVMe 的命令提交和完成机制的核心模块。 首先, 该模块负责将来自系统控制模块的功能请求转换为 NVMe 命令请求, 并执行 NVMe 指令提交与完成机制。 其次, 该模块实现 NVMe 队列管理功能, 除了基本的队列存储、门铃控制、 请求仲裁、 条目解析等, 还包括了动态创建和删除队列功能。 最后, 该模块还负责实现 PRP 寻址机制, 根据指令管理和计算 PRP 偏移, 实现数据的寻址并降低 PRP 读取延迟。
PCIe 加速模块负责处理 PCIe TLP, 将 PCIe 事务与 NVMe 紧密结合。 一方面,该模块将来自初始化模块或 NVMe 控制模块的事务请求转换为 PCIe TLP 请求, 然后发送到 PCIE 集成块, 同时接收 PCIE 集成块的 TLP 响应包, 将其转换为内部事务响应发送到对应内部模块。 另一方面, 该模块负责处理来自 NVMe 存储设备的 TLP 请求, 根据请求内容将请求转发到 NVMe 控制模块或转换为 AXI4 总线事务, 同时将来自 NVMe 控制模块和 AXI4 总线的响应组装为 CplD, 经由 PCIE 集成块发送给 NVMe存储设备。
PCIE 集成块实现 PCIe 的数据链路层和物理层。 PCIE 集成块是 Xilinx 提供的用于 PCIe 的高带宽、 可扩展和灵活的通用 I/O 核, 在 NoP 逻辑加速引擎中使用 PCIE集成块的 RC 模式实现 Root Complex 的数据链路层与物理层。 PCIE 集成块提供了四组 AXI stream 接口用于传递 PCIe TLP, 通过这些接口实现 TLP 与 PCIe 链路信号的相互转换, 此外还包含一组配置接口用于访问 PCIE 集成块的配置空间。
|