本文介绍了存储器接口设计的性能要求、设计难题以及 Xilinx 的解决方案,从使用 Spartan-3 系列 FPGA 的低成本实现到使用 Virtex-5 FPGA 的最高带宽接口,无所不包。
性能要求和 Xilinx 解决方案
20 世纪 90 年代后期,存储器接口从单倍数据速率 SDRAM 发展为双倍数据速率 (DDR) SDRAM,而如今的 DDR2 SDRAM 运行速率已达每引脚 667 Mbps 或更高。
应用通常可分为两类:
● 低成本应用,器件成本最重要
● 高性能应用,获得最高带宽最重要
运行速率低于每引脚 400 Mbps 的 DDR SDRAM 和低端 DDR2 SDRAM 已能满足大多数低成本系统存储器的带宽需求。对于这类应用,Xilinx 提供了 Spartan-3 系列 FPGA:Spartan-3、3E、3A 和
3AN 器件。
对于将存储器接口带宽推至极限的应用,如每引脚 667 Mbps 的 DDR2 SDRAM,Xilinx 提供了 Virtex-5 FPGA。
带宽是与每引脚数据速率和数据总线宽度相关的一个因素。Spartan-3 系列和 Virtex-5 FPGA 均提供了不同选项,从数据总线宽度小于 72 位的较小的低成本系统,到宽度达 576 位的较大的 Virtex-5 封装(图 1)。
这些速度下的较宽总线使芯片对芯片接口的实现更为困难,因为要求的封装更大,电源到信号和地面到信号比更佳。Virtex-5 FPGA 的开发使用了先进的稀疏锯齿形 (SparseChevron) 封装技术,能提供优良的信号到电源和地面到引脚比。每个 I/O 引脚周围都有足够的电源和接地引脚和板,以确保良好的屏蔽,使由同步交换输出 (SSO) 所造成的串扰噪音降到最低。
使用 Spartan-3 FPGA 的存储器接口
对于每引脚 400Mbps低成本应用,Spartan-3 系列FPGA与 Xilinx 软件工具结合即可提供易于实现且经济的解决方案。
在一个基于FPGA的设计中,三个基本构建模块组成一个存储器接口和控制器:读写数据接口、存储器控制器状态机,以及将存储器接口设计桥接到 FPGA 设计其余部分的用户接口。这些模块在架构中实现由数字控制管理器 (DCM) 的输出信号对其进行时钟驱动,在 Spartan-3 系列实现中,数字控制管理器还对查找表 (LUT) 延迟校准监视器(可确保正确设置读数据采集时序的逻辑块)进行驱动。
在Spartan-3系列实现中,使用可配置逻辑块 (CLB) 中的LUT实现读数据采集。在读事务过程中,DDR2 SDRAM器件将读数据选通脉冲 (DQS) 及相关数据按照与读数据 (DQ) 边沿对齐的方式发送给FPGA。在源同步接口中采集DQ是一项颇具挑战性的任务,因为数据在非自由运行DQS选通脉冲的每个边沿上都会改变。读数据采集的实现使用了一种基于 LUT 的 tap 延迟机制。
写数据命令和时序由写数据接口生成并控制。写数据接口使用输入/输出模块(IOB)触发器和DCM的90度、180度和270度输出端以与命令和数据位刚好对齐的方式发送DQS选通脉冲。
DDR2 SDRAM 存储器接口的实现已在硬件中全面经过验证。设计是在使用了 16 位宽 DDR2 SDRAM 存储器器件和 XC3S700A-FG484 器件的 Spartan-3A 入门套件板中实现的。此参考设计仅利用了 Spartan-3A FPGA 可用资源的一小部分:13% 的 IOB、9% 的逻辑 Slice、16% 的全局缓冲器 (BUFG) 多路复用器 (MUX) 和八个 DCM 中的一个。
可以使用存储器接口生成器 (MIG)软件工具轻松定制Spartan-3系列存储器接口设计,使其符合应用。
使用 Virtex-5 FPGA 的存储器接口
随着数据速率的提高,满足接口时序方面的要求变得愈加困难了。追求更高数据速率的趋势使得设计人员面临巨大挑战,因为数据有效窗口(此为数据周期内的一段时间,其间可获得可靠的 DQ)比数据周期本身缩小得快。这是由于与系统和器件性能参数关联的多种不确定因素会影响数据有效窗口的大小,而这些因素的缩减速率与数据周期不同。
若对比以 400 Mbps 运行的 DDR SDRAM 和运行速率为 667 Mbps 的 DDR2存储器技术的数据有效窗口,这种趋势尤其明显。数据周期为2.5ns的DDR器件的数据有效窗口为0.7ns,而周期为1.5ns的DDR2器件仅为 0.14 ns。
Virtex-5 FPGA采用I/O模块中的专用延迟和时钟资源(称为ChipSync技术)解决了这一难题。内置到每个I/O中的ChipSync模块均包含一串延迟单元(也称作tap延迟),称为 IODELAY,其分辨率为75ps。
此实现的架构基于若干构建模块。用户接口负责把存储器控制器和物理层接口桥接到FPGA设计的其余部分,它使用的是FIFO架构。FIFO保存着命令、地址、写数据和读数据。主要控制器模块控制读、写和刷新操作。其他两个逻辑模块(初始化控制器和校准逻辑)围绕读操作执行时钟到数据的操作(图 2)。
用于地址、控制和数据的物理层接口在 IOB 中实现。采集 DQ 时,存储器 DQS 会采集相应 DQ 并以此 DQS 的延迟形式将其寄存。此数据然后在触发器的第二级与系统的时钟域同步。I/O 模块中的输入串行器/解串器功能用于读数据采集,第一对触发器将数据从延迟 DQS 传输至系统时钟域。该技术涉及到 75 ps tap 延迟 (IODELAY) 单元的应用,在由校准逻辑实现的校准程序中,这些延迟单 元会有所变化。系统初始化期间会执行此校准程序,以设置 DQS、数据和系统时钟之间的最佳相位,从而使时序余量达到最大化。
此设计还包括其他方面,如整体控制器状态机的逻辑生成和用户接口。为方便 FPGA 设计人员轻松实现整个设计,Xilinx 开发了存储器接口生成器。
设计及与 MIG 的集成
将包括存储器控制器状态机在内的所有构建模块集成到一起,对于设计的完整性具有重要意义。控制器状态机因存储器架构和系统参数的不同而异。状态机代码也可能很复杂,取决于许多变量,如架构、数据总线宽度、深度、存取算法和数据与选通脉冲比等。
使用 MIG 可生成完整的设计,该软件工具作为 ISE软件 CORE Generator参考设计和知识产权作品套件之一部分,可从 Xilinx 免费获取。MIG 的设计流程与传统 FPGA 的设计流程非常相似。对于设计人员,MIG 的优点是不必再为物理层接口或存储器控制器从头生成 RTL 代码。
可以使用MIG 的GUI设置系统和存储器参数(图3)。例如,选定FPGA器件、封装和速度级别后,可以选择存储器架构并挑选实际的存储器器件或双列直插存储器模块 (DIMM)。同是这一个GUI,还可用于选择总线宽度和时钟频率。其他选项可对时钟控制方法、CAS延迟、突发长度和引脚分配进行控制。
MIG 工具可在数分钟内生成 RTL 和 UCF 文件,二者各为 HDL 代码和约束文件。这些文件是用一个经过硬件验证的参考设计库生成的,并根据用户输入进行了修改。
有进一步修改 RTL 代码的完全的灵活性。与提供“黑匣子”实现方法的其他解决方案不同,此设计中的代码未经加密,设计人员可对设计随意修改并进一步定制。输出文件按模块分类,适用于此设计的不同构建模块:用户接口、物理层或控制器状态机。例如,可定制对存取算法进行控制的状态机。修改可选代码后,可再次进行仿真,以验证整体设计的功能。
MIG 还可生成具有存储器校验功能的可综合测试平台。该测试平台是一个设计示例,用于 Xilinx 基础设计的功能仿真和硬件验证。
设计的最后阶段是导入 ISE 项目中的 MIG 文件,将其与 FPGA 设计的其余文件合并,然后进行综合、布局和布线,必要时还会运行其他时序仿真,最后进行硬件验证。MIG 软件还会生成一个批处理文件,包括相应的综合、映射以及布局和布线选项,以帮助优化生成最终的 bit 文件。
开发板和套件
参考设计的硬件验证是确保解决方案严密可靠的最终重要步骤。Xilinx 已验证了 Spartan-3 系列和 Virtex-5 FPGA 的存储器接口设计。表 1 所示为各种开发板所支持的存储器接口。
开发板的范围涵盖从低成本 Spartan-3 系列 FPGA 实现到 Virtex-5 FPGA 系列所提供的高性能解决方案。