本文完成了以 FPGA 为主控、无 CPU 的固态硬盘存储控制器设计,可实现FPGA 对 PCIe SSD 的直接数据读写控制。该存储控制器由 PCIe Root Complex、PCIe 控制逻辑和 NVMe 控制模块组成,其中 PCIe Root Complex 模块为 Xilinx公司的 IP 核,本文在其基础上完成了用于配置 PCIe 配置空间和发送 TLP 报文的相关控制逻辑,以实现 RC 和 EP 两端的数据通信;NVMe 控制模块为本文依据 NVMe 协议设计的核心控制模块,其主要实现了 NVMe 初始化、指令提交和处理机制以及 Admin 和 I/O 指令的发送控制等功能。
经过实验验证,各主要功能模块逻辑正确,存储控制器功能无误。在 PCIe链路状态为 2.0 x4 的条件下,读数据速度可达约 842MByte/s,写数据速度可达约 1.17GByte/s。
随着 PCIe(Peripheral Component Interconnect express)接口被成功应用于固态硬盘,其上层应用层协议——NVMe(Non-Volatile Memory express)协议也应运而生。基于 NVMe 协议的 PCIe SSD(Solid State Drives)兼具体积小、重量轻、有读写速度超高等优势,其商业化产品的出现也为实现高速大容量嵌入式存储系统提供了新的方向。本项目研究设计基于 FPGA 的 PCIe SSD 存储控制器,为实现基于 PCIe SSD 的高速大容量存储系统奠定基础。PCIe 总线就是一种采用端到端连接方式的高速差分总线,它由 PCI 总线发展而来。
PCIe 总线采用端到端的连接方式,在一条 PCIe 链路的两端只能各自连接一个设备。这两个设备互为数据的发送端和接收端,发送端和接收端均包含发送(TX)和接收(RX)逻辑。
PCIe 总线的物理链路
PCIe 总线作为处理器系统的内部总线,其主要作用是为了连接处理器系统中的外部设备。在大多数 PCIe 体系结构实现方案中,都使用 RC、Switch 和 PCIe-to-PCI 桥这些基本模块连接 PCIe 或 PCI 设备。在 PCIe 总线系统中,基于 PCIe总线的设备也被称为 Endpoint(EP)。
基于 PCIe 总线的系统结构
PCIe 设备,如 PCIe SSD、PCIe 网卡等可通过 RC 上的 PCIe 端口直接与 RC相连,且每一个
PCIe 端口只能连接一个 EP。PCIe 端口可通过 Switch 进行链路扩展,它为 EP 提供了更多可连接的端口。Switch 中靠近 RC 的端口被称为上游端口,而分出来的其它端口被称为下游端口。通过 Switch 扩展出来的链路可以继续挂接其它 EP 或者 Switch。Switch 接收到上游端口发送而来