PCI Express 与 FPGA
1 前言
PCI Express 是一种使用时钟数据恢复(CDR)技术的高速串行 I/O 互连机制。PCI Express Gen1 规范规定的线速率为每通道 2.5Gbps,可以建立具备单通道(x1)链路 2Gbps(经 8B/10B 编码)直至 32 通道 64Gbps 吞吐量的应用。这样,就能在保持或改进吞吐量的同时,显著减少引脚数量。另外,还可以减小 PCB 的尺寸、降低迹线和层的数量并简化布局和设计。引脚数量减少,也就意味着噪声和电磁干扰(EMI)降低。CDR 消除了宽并行总线中普遍存在的时钟-数据歪斜问题,简化了互连实现。
PCI Express 互连架构主要针对基于 PC(台式/膝上)的系统。但就像 PCI 一样,PCI Express 也很快转移到其他系统类型,如嵌入式系统。它规定了三种类型器件:根联合体(root complex)、交换器件和端点(图 1)。根联合体大致等同于 PCI 主机,CPU、系统存储器和图形控制器与之相连接。由于 PCI Express 的点对点特性,必须使用交换器件来增加系统功能的数量。PCI Express 交换器件将上游端的根联合体器件连接到下游端的端点。
端点功能类似于 PCI/PCI-X 器件。最常用的端点器件有以太网控制器或存储 HBA(主机总线适配器)。FPGA 最常用于数据处理和桥接功能,所以其最大目标功能就是端点。FPGA 实现非常适合于视频、医疗影像、工业、测试和测量、数据采集和存储应用。
PCI-SIG(PCI 特别兴趣小组)采用的 PCI Express 规范规定每个 PCI Express 器件使用三个不同的协议层:物理层、数据链路层和事务层。可以使用单芯片或双芯片解决方案来构建 PCI Express 端点。例如,使用 Xilinx® SpartanTM-3 器件之类的低成本 FPGA,可以用商用离散 PCI Express PHY(图 2)来构建数据链路和事务层。此选项最适合于 x1 通道应用,如:总线控制器、数据采集卡和提高性能的 PCI 32/33 器件。或者,可以使用类似 VirtexTM-5 LXT 或 SXT FPGA 的单芯片解决方案,它们具备集成的 PCI Express PHY。此选项最适合于通讯或高清晰度音频/视频端点器件(图 3)。它们对性能的要求更高:x4(8 Gbps 吞吐量)链路或 x8(16 Gbps 吞吐量)链路。
在选择一种技术来实现 PCI Express 设计之前,必须仔细考虑应用的 IP 选择、链路效率、兼容性测试及资源可用性。本文中,我们将简要介绍使用最新的 FPGA 技术构建单芯片 x4 和 x8 通道 PCI Express 设计的一些因素。
2 IP 的选择
作为设计人员,可以选择构建自己的软 IP 或者向第三方或 FPGA 供应商购买 IP。构建自己的 IP 的难题在于,不光得从零开始创建设计,还得担心验证、批准、兼容性和硬件评估等环节。向第三方或 FPGA 供应商购买的 IP,已经过所有严格的兼容性测试和硬件评估,可以即插即用。如果使用商用的、已验证的兼容性 PCI Express 接口,可以把精力集中在设计中最有附加值的部分:用户应用。使用软 IP 的难题在于应用的资源可用性。软 IP 核的 PCI Express MAC 层、数据链路层和事务层通过可编程架构实现,因此必须特别注意剩余 Block RAM、查找表和架构资源的数量。
另一选择是使用最新技术的 FPGA。Virtex-5 LXT 和 SXT 的专用门电路(图 4)中实现了集成 x8 通道 PCI Express 控制器。这种实现极具优势,因为设计是在硬硅片中实现的,所以需要的 FPGA 逻辑资源数量达到了最小。例如,在 Virtex-5 LXT FPGA 中,一个 x8 通道软 IP 核可占用多达 10,000 个逻辑单元,而硬实现只需要大约 500 个逻辑单元,多数用于接口。这样的资源节省有时候能允许选择更小的器件,而器件越小通常就会越便宜。集成实现通常具有更高的性能、更宽的数据通路,并且可通过软件配置。
软 IP 实现的另一难题是功能的数量。通常,此类核仅实现满足性能或兼容性目标规范所要求的最少功能。相反,硬 IP 可以支持基于客户要求的全面功能列表,并提供完全的兼容性(表 1),且不存在严重的性能或资源相关的问题。
表 1 Virtex-5 LXT FPGA PCI Express 功能
性能
通道宽度 接口数据宽度 接口速度 带宽(每个方向)
x1 64 62.5/125/250MHz 2Gbps
x2 64 62.5/125/250MHz 4Gbps
x4 64 125/250MHz 8Gbps
x8 64 250MHz 16Gbps
PCI Express 规范 v1.1 兼容性
要求 支持(是/否)
时钟容差 (300ppm) 是
扩展频谱时钟控制 是
电气空闲生成和检测 是
热插拔 是
去加重 是
抖动规格 是
CRC 是
自动重试 是
QOS 2VC/循环、
加权循环或严格优先级
MPS 128-4096 字节
BAR 存储器或 I/O 可配置为
6×32 位或 3×64 位
要求的电源管理状态 是
3 延迟
尽管 PCI Express 控制器的延迟不会对总体系统延迟有很大的影响,但却会影响接口的性能。使用较窄的数据通路有助于减少延迟。
对 PCI Express 来说,延迟就是发送包并穿过物理层、逻辑层和事务层接收包所需的周期数。典型的 x8 通道 PCI Express 端点的延迟为(20-25)周期。250MHz 下,转换为(80-100)ns。如果使用 128 位的数据通路实现接口来简化时序(如 125MHz),延迟会加倍为(160-200)ns。在最新的 Virtex-5 LXT 和 SXT 器件中,无论是软 IP 实现还是硬 IP 实现,都采用 250MHz 下的 64 位数据通路进行 x8 实现。
4 链路效率
链路效率是延迟、用户应用设计、有效载荷大小和额外开销的函数。随着有效载荷大小(通常称为最大有效载荷)的增加,有效链路效率也会增加。这是由包的额外开销固定不变这一事实造成的;如果有效载荷大,效率就提高。一般情况下,256 字节的有效载荷可提供 93% 的理论效率(256 有效载荷字节 + 12 头字节 + 8 帧字节)。尽管 PCI Express 允许的包大小可达 4KB,但如果有效载荷大小大于 256 或 512 字节,大多数系统的性能都无法提高。由于链路协议额外开销(ACK/NAK、重新发送包)和流程控制协议(授权报告),在 Virtex-5 LXT FPGA 中实现 x4 或 x8 PCI Express 的链路效率为(88-89)%。
利用 FPGA 实现可以更好地控制链路效率,因为它允许选择与端点实现对应的接收缓冲器尺寸。如果链接双方不是采用相同的方式实现数据通路,则二者的内部延迟会不同。例如,如果一号链接方使用 64 位、250MHz 实现,延迟为 80ns,而二号链接方使用 128 位、125MHz 实现,延迟为 160ns,该链路的组合延迟即为 240ns。现在,如果一号链接方的接收缓冲器设计成 160ns 的延迟(即期待其链接对方也是 64 位、250MHz 实现),那么链路效率就会降低。如果采用 ASIC 实现,就不可能改变接收缓冲器的尺寸,效率损失将是实实在在的,而且是永久性的。
用户应用设计也会对链路效率有所影响。用户应用必须设计成定期排空 PCI Express 接口的接收缓冲器,并保持发送缓冲器时刻充满。如果用户应用不立即使用接收的包(或者不立即响应发送请求),无论接口的性能如何,总链路效率都会受到影响。
使用某些处理器设计时,如果处理器不能执行大于 1 DWORD 的突发,则需要实现一个 DMA 控制器。这将造成链路利用不充分,效率不佳。大多数嵌入式 CPU 可以发送长于 1 DWORD 的突发,所以通过良好的 FIFO 设计就可以有效地管理这些设计的链路效率。
5 PCI Express 兼容性
兼容性是经常被遗漏和低估的重要细节。如果要构建必须与其他器件和应用结合使用的 PCI Express 应用,则必须确保设计的兼容性。
兼容性不只针对 IP,而是针对整个解决方案,包括 IP、用户应用、硅片器件和硬件板(图 5)。如果整个解决方案已经过 PCI-SIG PCI Express 兼容性研讨会(别号“plug fest”)验证,就基本保证了设计的 PCI Express 部分会一直有效。
6 结论
PCI Express 已替代 PCI 成为事实上的系统互连标准,并且已从 PC 转移到其他系统市场,包括嵌入式系统设计。
FPGA 非常适合于构建 PCI Express 端点器件,因为它允许创建带有用户所需的附加定制功能的兼容性 PCI Express 器件。
类似 Virtex-5 LXT 和 SXT 系列的新 65nm FPGA 完全符合 PCI Express 规范 v1.1,并为用户应用提供广泛的逻辑和器件资源。使用外部 PHY 的 Spartan-3 系列 FPGA 提供了低成本解决方案。这些因素,加上内在的可编程逻辑优势(灵活性、可再编程性和低风险)使 FPGA 成为 PCI Express 的最佳平台。
暂无评论